我编写了一个简单的程序 - 它以4 MHz的Port D
生成信号:
#include <Arduino.h>
int main(void) {
DDRD = B11111111;
PORTD = B00000000;
while (true) {
PORTD = 0;
PORTD = 5;
PORTD = 10;
PORTD = 15;
PORTD = 20;
PORTD = 25;
PORTD = 30;
PORTD = 35;
PORTD = 40;
}
return 0;
}
这是D4上发出的信号:
我在每次分配到POTRD
后插入NOP修改了程序:
#define NOP __asm__ __volatile__ ("nop\n\t")
int main(void) {
DDRD = B11111111;
PORTD = B00000000;
while (true) {
PORTD = 0;NOP;
PORTD = 5;NOP;
PORTD = 10;NOP;
PORTD = 15;NOP;
PORTD = 20;NOP;
PORTD = 25;NOP;
PORTD = 30;NOP;
PORTD = 35;NOP;
PORTD = 40;NOP;
}
return 0;
}
现在信号看起来很好,但频率限制在800 MHz:
4 MHz干扰的原因是什么?数字输出的最大频率是否有限制?对于某个特定项目我并不需要它,只是想知道它。
答案 0 :(得分:0)
我已经在arduino.stackexchange.com上发布了这个问题,它得到了答案: