搜索
bottom↓
回复: 3

求教[马老师讲义第8章例8.3]:使用定时器0中断实现N分频的原理是什么?

[复制链接]

出0入0汤圆

发表于 2006-11-24 22:32:55 | 显示全部楼层 |阅读模式
马老师好:

    我在做您编写的讲义第8章《8位计数器的应用》上的例8.3“N分频系统设计”时遇到了不明白的地方,特向您请教。

    该例程采用定时器0的普通方式和CTC(比较匹配时清零定时器)方式结合的办法来对外部输入的脉冲进行任意频率的分频(当然分频也是有范围的)。

    要求是进行5分频,程序中有如下一段定义:

    TCNT0=0xFB;   //设置T/R寄存器值

    OCR0=0xFD;    //设置OCR0的比较值,>TCNT0 的初始值,<0xFF

    我的理解是在外部脉冲作用下,TCNT0加1,直到和OCR0相等,则进入比较匹配中断服务程序;而后TCNT0继续在外部脉冲条件下加1,直到加到0x00时进入溢出中断服务程序。(在中断服务程序中设置输出电平高低以控制输出波形)。

    我的疑问是:当TCNT0和OCR0相匹配时,按照器件手册上的说法,似乎应该是将TCNT0清0了,如果确实是这样,那在执行完比较匹配中断服务程序后TCNT0又怎么能够溢出呢?程序不是永远执行不了溢出中断服务程序了吗?

    这个疑问百思不得其解,望老师赐教!不胜感激!

出0入0汤圆

发表于 2006-11-27 02:07:38 | 显示全部楼层
你还没有彻底了解T/C0的工作方式。

在例8.3中采用的是T/C0工作方式为普通模式(不可能同时还工作在CTC方式的),结合比较匹配中断实现的。



当TCNT0与与OCR0相等时,T/C0不会清另(不是CTC方式),但会进入比较匹配中断服务的。



理解了这个例子,就容易知道利用T/C如何实现PWM了。



下面是T/C0的初始化代码,你怎么要漏掉一句呢?



// T/C0 初始化

TCCR0=0x07;                        // T/C0工作于普通模式,T0上升沿触发

TCNT0=0xFB;

OCR0=0xFD;                        // 设置OCR0的比较值,>TCNT0的初始值,<0xFF

出0入0汤圆

 楼主| 发表于 2006-11-27 23:40:29 | 显示全部楼层
呵呵,太谢谢马老师了。我对T/C0的工作方式确实没有真正理解。

    一语值千金啊,让我茅塞顿开:)

    再次诚挚感谢马老师的悉心指导*_*
-----此内容被yorkwilliam于2006-11-27,23:44:14编辑过

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-3 09:21

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

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