在Arduino NANO上4Mhz的数字输出受到干扰

时间:2015-05-12 21:01:04

标签: arduino

我编写了一个简单的程序 - 它以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上发出的信号: Max Frequency

我在每次分配到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: enter image description here

4 MHz干扰的原因是什么?数字输出的最大频率是否有限制?对于某个特定项目我并不需要它,只是想知道它。

1 个答案:

答案 0 :(得分:0)

我已经在arduino.stackexchange.com上发布了这个问题,它得到了答案:

https://arduino.stackexchange.com/questions/11821/disturbed-digital-out-at-4mhz-on-arduino-nano/11830