Прерывание продолжает стрелять

Я подключил 6502, чтобы запустить программу, и чтобы проверить, что происходит на адресной и шине данных, я построил настройку монитора с Arduino Mega2560. Монитор должен считывать с шин каждый раз, когда тактовый сигнал поднимается. (Это в основном из видео Ben Eaters YouTube.)

Проблема, которую я испытываю сейчас, заключается в том, что Arduino, кажется, обнаруживает восходящие края. Иногда он несколько лишний, иногда он просто продолжает стрелять, в то время как таковой сигнал устойчиво высок. Я подключил логический анализатор, чтобы увидеть, где и если сигнал подпрыгивает. Но даже поднимаясь до 48 МГц, я не вижу никакого подпрыгивания.

Вот код, который я использую для подключения тактового фронта:

#define CLOCK 2

void setup() {
  pinMode(CLOCK, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(CLOCK), onClock, RISING);
} 

static void onClock() {
  // считывание сигналов из данных и адреса
  // отправьте эту информацию через последовательный порт
}

Обновление Я подключил светодиод с резистором 220 Ом к заземлению. При удалении проблема, кажется, исчезла.

, 👍0

Обсуждение

Какова ценность " ЧАСОВ`?, @Edgar Bonet

@EdgarBonet 2; Я обновлю этот вопрос., @Bart Friederichs

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

"отправить эту информацию через последовательный порт" в контексте ISR немного беспокоит, но здесь детали были удалены., @timemage

@timemage Я читал это где-то еще. Я понимаю, что это не умно, и я изменю его. Однако я могу подумать о том, как это может заставить его пропустить прерывание, но как это может привести к тому, что процедура прерывания будет запущена более одного раза?, @Bart Friederichs

Если бы у меня была хоть какая-то уверенность в том, что так оно и будет, я бы представил это как ответ, а не как комментарий., @timemage

Покажите реальный код и реальную проводку, и ваши шансы получить полезный ответ возрастут., @timemage