Каков источник этого шума в моем генераторе Arduino?

Я экспериментировал с методами быстрого включения и выключения цифровых выходных контактов в Arduino. Это код, который я использую:

#define PIN3_ON PORTD |= 0x8
#define PIN3_OFF PORTD &= ~0x8
#define NOP __asm__ __volatile__ ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t")

void setup() {
    pinMode(3, OUTPUT);
}

void loop()
{
    cli();
    while (1) {
        PIN3_ON;
        NOP;
        NOP;
        PIN3_OFF;
        NOP;
        NOP;
    }
}

Когда я наблюдаю за выходом под прицелом, я вижу какое-то быстро затухающее колебание после выключения штифта:

введите описание изображения здесь

Я наблюдал это на Arduino Uno и Nano328. В чем причина этого колебания?

Интересно, что это происходит только в негативном направлении. На таких скоростях это может быть артефакт того, как ваш прицел подключен, а вовсе не реальная вещь, но тот факт, что это происходит только на заднем фронте, делает это менее вероятным. Попробуйте закрепить заземляющий провод на контакте заземления, который физически находится ближе всего к контакту, на который вы смотрите. Если это ничего не меняет, и если можете, устраните провисание провода заземления вашего прицела, обернув его вокруг щупа.
Аааа, да, подсоединение заземляющего провода было хитростью! Пожалуйста, напишите ответ на этот счет, и я приму. Спасибо за ваше понимание.
20 пФ и 2 мкГн будут резонировать на частоте 25 МГц или периоде 40 наносекунд. Таким образом, предсказуемой причиной может быть длинный путь заземления [2 метра или около 2 мкГн] для обратного пути зонда-прицела.

Ответы (1)

Попробуйте закрепить заземляющий провод на контакте заземления, который физически находится ближе всего к контакту, на который вы смотрите. Если это ничего не меняет, и если можете, устраните провисание провода заземления вашего прицела, обернув его вокруг щупа.

Я не могу сразу найти хорошую статью (я уверен, что она есть у каждого производителя прицелов) — вот несколько советов, которые я знаю:

  • Всегда заземляйте датчик. Если сигнал наименее быстрый или важный, заземлите каждый пробник рядом с сигналом.
  • Вы можете сделать трюк с обертыванием земли, чтобы немного улучшить ситуацию.
  • Если это сигнал с очень резкими краями, и вам нужно быть уверенным, заземлите пробник прямо на кончике. Если вы потянете пружинный крючок с конца типичного зонда O-scope, вы увидите металлическую втулку вокруг наконечника. Это зондовая земля. Вы можете обернуть его проводом и заземлить как можно ближе к измеряемому сигналу (или вы можете заглянуть в материал, прилагаемый к пробнику, и посмотреть, нет ли там чего-то похожего на веточку — вот что это для).
  • Убедитесь, что ваши датчики компенсированы и откалиброваны, если важна точность.

(Если кто-то, читающий это, знает хорошую статью или презентацию на YouTube, пожалуйста, опубликуйте ссылку — это одна из тех вещей, которые я собирал по крупицам на протяжении многих лет, но мне никогда не приходилось четко формулировать).