打印
[AVR单片机]

新买的avr开发板,定时器不准确

[复制链接]
1148|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前不久买的arduino uno r3开发板,我更换了一片atmega328p 单片机,想把它做普通avr开发板用,但我发现程序的定时器不准确,而且时间错得特别多,想请兄弟们帮我分析一下。

/* ************************************************************************ *\
  Author : XiaoLoong
  Date   : 2015/09
  IDE    : Atmel Studio 6.0
Comments: 用ATmega328P写的测试程序。
\* ************************************************************************ */

#define F_CPU  16000000UL  // 16 MHz   
#include <avr/io.h>
#include <avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int

#define LED_BLINK() ( PORTB ^= _BV(PB5) ) //LED闪烁
uchar T0_count=0;                                //用于延时累加计数

int main(void)
{
        DDRB |= _BV(PB5);        // PB5=19引脚为输出
        PORTB |= _BV(PB5);        //输出上拉
       
        cli();                        //关全局中断
        TCCR0A = 0X00;
        TCCR0B = 0X05;        //1024预分频
        TCNT0 = 0X64;        //定时10毫秒 256-16M/1024*0.01=100=0X64
        TIMSK0 =0X01;        //定时器0 溢出中断使能
        sei();                        //开全局中断
        while(1);
}

ISR(TIMER0_OVF_vect)        //定时器0中断服务程序
{       
        TCNT0 = 0X64;               
        if (++T0_count == 100 )        //定时1秒钟
        {
                T0_count=0;
                LED_BLINK();               
        }
        else return ;       
}


开发板用的外接16M晶振,我熔丝位配置如下:
E:\11.png

相关帖子

沙发
我是祝大叔|  楼主 | 2015-9-16 10:56 | 只看该作者

使用特权

评论回复
板凳
JY-DX-JY| | 2015-9-17 18:22 | 只看该作者
你用的晶振是16M吗?

使用特权

评论回复
地板
findidiot| | 2015-9-18 11:58 | 只看该作者
不懂,路过帮顶

使用特权

评论回复
5
jazzyfox| | 2015-9-23 17:05 | 只看该作者
晶振很准,肯定还是硬件或者设置有问题

使用特权

评论回复
6
SD10A| | 2015-9-23 19:02 | 只看该作者
熔丝位应该没对

使用特权

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

本版积分规则

5

主题

77

帖子

2

粉丝