打印
[AVR单片机]

AVR中关于定时器的问题,需要设置熔丝位吗?

[复制链接]
1748|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mars.CN|  楼主 | 2013-6-12 18:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
晶振11.0592MHz,熔丝位CKSEL0-3设置都为1,测试串口已经可以正常通讯
但貌似用led测试定时器的时候问题依旧


#include <avr/io.h>
#include <avr/interrupt.h>

int main(void)
{
        unsigned int i=0;
        DDRA |= (1<<3);
        DDRB = 0XF0;
        PORTB = 0XF0;
        TCCR0 = 0X00;                        //关闭计数器
        TIFR |= 1<<OCF0;                //清楚中断标志位
        TIMSK != OCIE0;                        //允许计数器的比较中断
        TCNT0 = 148;                        //装入初值(cpu频率/分频1024/100)
        TCCR0 |= (1<<CS00) | (1<<CS01) | (1<<CS02);                //设置分频系数
       
    while(1)
    {
                PORTB ^= 0XFF;
                for (i=0;i<10000;i++)
                {
                        while (!(TIFR & (1<<TOV0)));
                        TCNT0 = 148;
                }                       
    }
       
        while(1);
}

相关帖子

沙发
Mars.CN|  楼主 | 2013-6-12 19:04 | 只看该作者
貌似是while (!(TIFR & (1<<TOV0)));根本就没起作用

使用特权

评论回复
板凳
qin552011373| | 2013-6-12 21:24 | 只看该作者
哪款AVR?

使用特权

评论回复
地板
宇容创行| | 2013-6-12 21:36 | 只看该作者
用查询方式,必须增加中断清0代码

使用特权

评论回复
5
1061zou| | 2013-6-13 07:29 | 只看该作者
需要设置晶振频率的熔丝位,并且确定使用内部晶振还是外部晶振。

使用特权

评论回复
6
Mars.CN|  楼主 | 2013-6-13 09:59 | 只看该作者
宇容创行 发表于 2013-6-12 21:36
用查询方式,必须增加中断清0代码

具体怎么做?TIFR &= ~(1<<TOV0)
是这样吗?

现在运行的速度明显比11.0592的要快
我用的是ATMega128

使用特权

评论回复
7
Mars.CN|  楼主 | 2013-6-13 10:07 | 只看该作者
搞定了,多谢 宇容创行
请中断用的是 TIR |= 1<<TOV0
不过感觉好像还是稍微有点误差呀

使用特权

评论回复
8
zzzyyyxxx| | 2013-6-13 10:09 | 只看该作者
:)thank!

使用特权

评论回复
9
qin552011373| | 2013-6-13 12:59 | 只看该作者
Mars.CN 发表于 2013-6-13 10:07
搞定了,多谢 宇容创行
请中断用的是 TIR |= 1

结贴散分吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

43

帖子

0

粉丝