attachInterrupt не влияет на Industruino SAMD21

interrupt samd21g

Я использую Industruino D21G (версия SAMD21G) с расширением Visual Studio Code для Arduino. attachInterrupt, похоже, не имеет никакого эффекта. Я пробовал Industruino CH1, CH6 и CH7 с тем же результатом. Когда я опрашиваю эти каналы в цикле, я обнаруживаю изменение уровня сигнала, как и ожидалось. Вот код:

#include <Arduino.h>
#include <Indio.h>  

constexpr int PROXIMITY_SENSOR_NC = 6;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Indio.digitalMode(PROXIMITY_SENSOR_NC, INPUT);
  attachInterrupt(digitalPinToInterrupt(PROXIMITY_SENSOR_NC), blink, FALLING);    
  digitalWrite(LED_BUILTIN, HIGH);
}


void blink() {
  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));              
}


void loop() {
}

Есть идеи, что может быть не так?

, 👍1

Обсуждение

**Комментарии были [перемещены в чат](https://chat.stackexchange.com/rooms/145801/discussion-on-question-by-paul-jurczak-attachinterrupt-has-no-effect-on-industru); пожалуйста, не продолжайте обсуждение здесь. ** Перед публикацией комментария под этим, пожалуйста, ознакомьтесь с [целями комментариев](/help/привилегии/комментарий). Комментарии, которые не требуют пояснений или предложений по улучшению, обычно относятся к [ответу](/help/how-to-answer), [мета] или [чату]. Комментарии, продолжающие обсуждение, могут быть удалены., @Nick Gammon


1 ответ


1

Ввод-вывод промышленного уровня на Industruino, который включает в себя каналы CH1, CH6 и CH7, которые я пробовал, не подключен напрямую к микроконтроллеру. Он использует буфер и обменивается данными через I2C в режиме pull. Вот почему прерывание при изменении ввода-вывода не имеет никакого эффекта.

,