我已将定时器2配置为CTC模式,并在比较匹配时切换端口引脚(TCCR2A = 0x42,TCCR2B = 0x02,OCR2A = 0x20)并将DDR3设置为输出。因此,根据ATmega328P文档(第158-163页)。 OC2A(又名PB3)应该在每次比较匹配时切换。不幸的是,我无法读取PORTB的引脚状态。这是预期的吗?我假设,即使端口配置为输出,我也可以读取设定值。
答案 0 :(得分:3)
有两个问题:
在AVR Studio 4.18中,我不能使用模拟器1,因为它有定时器2的错误,因此无法正确切换端口引脚。我需要使用模拟器2或AVR Studio 5.
我需要读取PINB而不是PORTB(虽然切换是输出操作)。
答案 1 :(得分:1)
我不知道具体的微控制器,但在某些架构中,在更改端口引脚和更新锁存器之间至少需要NOP(因此您可以阅读更改)。
还有一个引脚可以切换的最大频率(比微控制器CPU时钟慢很多倍)。一定不要超过这个频率。