打印

初用Atiny13遇定时器问题

[复制链接]
2191|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mfkyygt|  楼主 | 2014-3-10 16:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mfkyygt 于 2014-3-10 16:51 编辑

用ICCAVR的Application Builder向导获得10ms的定时,用proteus仿真时得到的却不是10ms,请问问题会出在哪儿?谢谢
/*---------------------------------
主控芯片:Tiny13
晶震频率:内部RC 9.6M
---------------------------------*/
#include <iot13v.h>
#include <AVRdef.h>
#define sCNT  100    //10ms*100=1S
volatile unsigned int power,keys,zero,zt;

/*---- 初始化定时器T0为10ms定时 ----*/
void timer0_init(void)
{  
  CLI();          //关中断
  //----以下为ICCAVR向导生成
  TCCR0B = 0x00; //stop
  OCR0A = 0x5D;
  OCR0B = 0x5D;
  TCNT0 = 0xA3; //set count
  TCCR0A = 0x00;  //启用通道A强制比较功能
  TCCR0B = 0x05; //start timer 定时器采用1024分频
  MCUCR = 0x00;
  TIMSK0 = 0x04; //timer interrupt sources
  GIMSK = 0x00; //interrupt sources
  SEI(); //re-enable interrupts
}

/*---- T0定时器10ms中断 ----*/
#pragma interrupt_handler timer0_compa_isr:iv_TIM0_COMPA
void timer0_compa_isr(void)
{
  COM_BIT(PORTB,PB4);    //定时到,取反PB4
}

proteus仿真得到的比10ms大很多,参照的100Hz过零信号是准确的,请教是何原因?


QQ图片20140310164735.jpg (100.67 KB )

QQ图片20140310164735.jpg

相关下载

相关帖子

沙发
mfkyygt|  楼主 | 2014-3-11 23:51 | 只看该作者
百度了好几个例子,又对照datasheet关于定时寄存器的说明,终于弄明白什么原因了,哈哈,原来是在ICCAVR生成向导时,没有选择OC0A 的output mode为Toggled(OC0A输出取反)

QQ图片20140311234730.jpg (59.86 KB )

QQ图片20140311234730.jpg

使用特权

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

本版积分规则

11

主题

65

帖子

0

粉丝