AVR/Arduino:读取定时器切换端口引脚
Posted
技术标签:
【中文标题】AVR/Arduino:读取定时器切换端口引脚【英文标题】:AVR/Arduino: reading timer toggled port pin 【发布时间】:2011-06-16 19:29:58 【问题描述】:我已将定时器 2 配置为 CTC 模式并在比较匹配时切换端口引脚 (TCCR2A=0x42, TCCR2B=0x02, OCR2A=0x20) 并将 DDR3 设置为输出。因此,根据 ATmega328P 文档(第 158-163 页)。 OC2A(又名 PB3)应在每次比较匹配时切换。不幸的是,我无法读取 PORTB 的引脚状态。这是预期的吗?我假设,即使将端口配置为输出,我也可以读取设置值。
【问题讨论】:
【参考方案1】:有两个问题:
在 AVR Studio 4.18 中,我不能使用模拟器 1,因为它有一个定时器 2 的错误,因此无法正确切换端口引脚。我需要使用 Simulator 2 或 AVR Studio 5。
我需要读取 PINB 而不是 PORTB(尽管切换是一种输出操作)。
【讨论】:
【参考方案2】:我不知道具体的微控制器,但在某些架构中,在更改端口引脚和更新锁存器之间至少需要一个NOP(以便您可以读取更改)。
还有一个引脚可以切换的最大频率(比微控制器 CPU 时钟慢很多倍)。确保不要超过这个频率。
【讨论】:
ATmega 处理器可以通过定时器直接切换端口引脚。不必手动执行此操作,也无需等待 nops。以上是关于AVR/Arduino:读取定时器切换端口引脚的主要内容,如果未能解决你的问题,请参考以下文章