打印
[AVR单片机]

各位达人,有个 AVR 单片机的问题,想求教一下,麻烦啦。

[复制链接]
1395|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdcxy|  楼主 | 2012-7-13 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我最近在做一个案子,就是利用TCS3200 检测 LED 的颜色,TCS3200 检测到不同的颜色会输出不同的频率,也就利用单片的做一个检测频率的程序,我已经利用51单片机初步实现频率检测的程序,但是51能检测的最大频率为:30~40 KHz,不能满足更高频率的测量要求,所以我就选用 AVR 单片机(ATMEGA8L)来做,算法也是参照51写的,一个测量过程的算法是这样:配置 AVR 单片的 INTO 的中断方式为上升沿触发,中断程序中有个计数器,第一次触发时,打开定时器1(定时器1用的是16位的计数方式)开始 50ms 的定时, 中断每触发一次,计数器加1,直到50ms定时中断到了,关闭 INT0 和定时器1 ,然后调用数据处理函数,根据计数器的值算出检测到的频率值。可是 AVR 单片机在运行的时候程序好像跑飞了一样,一个测量过程,定时器1好像中断了好几次,我分析了一下,应该是中断嵌套的时候出错了,我做了一些修正算法,但是程序还是不能正常的运行测量。我附上我写的程序和 TCS3200 的 datasheet ,请各位达人,帮我看看,谢谢啦!

TCS3200.pdf

165.81 KB

color test.pdf

3.47 MB

相关帖子

沙发
NE5532| | 2012-7-14 12:11 | 只看该作者
呵呵,其实楼主犯迷糊了,51一样可以做滴,你把定时器当成计数器,对外部信号计数,用定时器测量N(比如100个)脉冲的时间就知道了。不要说30k,300k都没问题的。

使用特权

评论回复
板凳
sdcxy|  楼主 | 2012-7-14 19:20 | 只看该作者
这个我没想到,我去试试,谢谢啊!

使用特权

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

本版积分规则

2

主题

9

帖子

1

粉丝