Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer AVR/Arduino:读取定时器切换端口引脚_Timer_Arduino_Avr - Fatal编程技术网

Timer AVR/Arduino:读取定时器切换端口引脚

Timer AVR/Arduino:读取定时器切换端口引脚,timer,arduino,avr,Timer,Arduino,Avr,我已将计时器2配置为CTC模式,并在比较匹配(TCCR2A=0x42,TCCR2B=0x02,OCR2A=0x20)上切换端口引脚,并已将DDR3设置为输出。因此,根据ATmega328P文件(第158-163页)。OC2A(又名PB3)应在每个比较匹配上切换。不幸的是,我无法读取端口B的pin状态。这是预期的吗?我假设,即使将端口配置为输出,我也可以读取设置值。我不知道特定的微控制器,但在某些架构中,您至少需要在更改端口引脚和正在更新的闩锁之间留出一段时间(以便您可以读取更改) 此外,还有一个

我已将计时器2配置为CTC模式,并在比较匹配(TCCR2A=0x42,TCCR2B=0x02,OCR2A=0x20)上切换端口引脚,并已将DDR3设置为输出。因此,根据ATmega328P文件(第158-163页)。OC2A(又名PB3)应在每个比较匹配上切换。不幸的是,我无法读取端口B的pin状态。这是预期的吗?我假设,即使将端口配置为输出,我也可以读取设置值。

我不知道特定的微控制器,但在某些架构中,您至少需要在更改端口引脚和正在更新的闩锁之间留出一段时间(以便您可以读取更改)


此外,还有一个引脚可以切换的最大频率(比微控制器CPU时钟慢很多倍)。请确保不要超过该频率。

有两个问题:

  • 在AVR Studio 4.18中,我不能使用模拟器1,因为它有计时器2的错误,因此无法正确切换端口引脚。我需要使用模拟器2或AVR Studio 5

  • 我需要读取PINB而不是PORTB(尽管切换是一个输出操作)


  • ATmega处理器可以通过定时器直接切换端口引脚。没有必要手动执行此操作,并使用nops等待一点。