搜索
bottom↓
回复: 7

请教关于M8的TC2的CTC模式的问题

[复制链接]

出0入0汤圆

发表于 2016-10-20 10:51:50 | 显示全部楼层 |阅读模式
本帖最后由 rjx 于 2016-10-20 10:58 编辑

想弄一个256US的定时器,用M8的TC2,采用CTC模式,比较中断自动清零。用ICC自带的程序生成器生成代码。
以我的理解,此时,TNCNT2=0X00,OCR2=0X80,也就是说TCNR0从0开始加到0X80时产生一次比较中断, 但代码生成器给出的TNCNT2=0X80,不懂是怎么回事,是我对CTC模式的理解不对吗?还是代码生成器的操作不对?
请高手解惑。先谢谢了。
下面是生成的代码和代码生成器的图。

//TIMER2 initialize - prescale:8
// WGM: CTC
// desired value: 256uSec
// actual value: 258.000uSec (0.8%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
ASSR  = 0x00; //set async mode
TCNT2 = 0x80; //setup
OCR2  = 0x80;
TCCR2 = 0x0A; //start
}

#pragma interrupt_handler timer2_comp_isr:iv_TIM2_COMPB
void timer2_comp_isr(void)
{
//compare occured TCNT2=OCR2      、//这句可以不要,对吗?
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2016-10-21 10:45:47 | 显示全部楼层
没人愿意指导一下啊?

出390入22汤圆

发表于 2016-10-21 11:20:26 | 显示全部楼层
可能是TCNT2要到最大值0xFF才中断,中断后重载数值0x80

出0入0汤圆

 楼主| 发表于 2016-10-22 08:05:25 | 显示全部楼层
继续求准确的回答。

出0入0汤圆

 楼主| 发表于 2016-10-27 10:27:44 | 显示全部楼层
是没有人知道,还是不肖回答?没人理会?

出200入2554汤圆

发表于 2016-10-27 22:20:43 | 显示全部楼层
试了试 ICCAVR v7.22,的确有这个类似 BUG 的东西。其实换个数值(例如200us)就能看出来 BUG 的原因了:
TCNT2 的数值是用于在指定时间后产生首个 OVF 中断的;
OCR2 的数值是用于 CTC 模式下设置计数上限的,这种情况下理应将 TCNT2 设为0;

另外你这个程序用的是 4M 主频生成的吧,感觉这个晶振并不很常用。

看来 AVR 真是被放弃的主,连 ICCAVR 都这么不上心。
其实你记事本打开看看 ICCAVR 的项目文件(*.prj)就知道这软件有多山寨了,这么多控件都是 1、2、3... 命名的

出0入0汤圆

 楼主| 发表于 2016-10-28 11:38:08 | 显示全部楼层
谢谢楼上的解答,我也觉得这是ICCAVR7.22的BUG,我曾写好代码,在AVR Studio 中跑过,如果TCNT2=80,定时时间根本就不对,若TCNT2=0时,定时时间才对。
我用的是内部4M,但在使用内部振荡器时如何校正频率误差,还没有搞懂。楼上说4M不常用,是否用8M好些?

出0入0汤圆

发表于 2016-10-28 14:38:11 | 显示全部楼层
rjx 发表于 2016-10-28 11:38
谢谢楼上的解答,我也觉得这是ICCAVR7.22的BUG,我曾写好代码,在AVR Studio 中跑过,如果TCNT2=80,定时时 ...


大多数单片机的缺省 RC 校正字节在复位时自动从签名中载入,并复制到 OSCCAL 寄存器中。例如,ATmega8 的默认时钟设置是内部 1MHz RC 振荡器;对应的 1MHz 校正字节在复位后自动载入。如果熔丝改变为 4MHz 振荡器,校正字节就需要手工载入 OSCCAL 寄存器了。编程工具可以从签名中读取 4MHz 校正字节并强制存放到 Flash 或 EEPROM 中,然后由用户程序在运行时读取出来再复制到 OSCCAL 寄存器中。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-17 04:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表