Официальный сайт компании Arduino по адресу arduino.cc
Обработка прерываний
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Возникли проблемы с обработкой внешних прерываний.
Висит щелевой оптодатчик в качестве счетчика. Его выход подключен к 2 пину Arduino Mega 2560.
Необходимо посчитать сколько было импульсов от этого счетчика.
Делаю простейший скетч
void userFunc(void){ digitalWrite(40, HIGH); digitalWrite(40, LOW); } void setup() { pinMode(40, OUTPUT); attachInterrupt(digitalPinToInterrupt(2), userFunc, RISING); } void loop() { // put your main code here, to run repeatedly: while(1){} }
Настраиваю внешнее прерывание на второй пин по переднему фронту.
И делаю отладочную ножку 40. Когда вызывается обработчик прерывания на 40 ножке создается импульс.
Теперь беру осциллограф, один канаг вешаю на 2 ножку ардуины (выход от датчика), а второй канал на отладочную ножку 40. И вижу, что обработчик прерывания вызывается далекоо не каждый раз при положительном фронте импульса.
Кто знает в чем дело? Как с этим бороться? Необходимо добиться работы, при которой ни один импульс не будет потерян.
Осциллограмму прилагаю
На мой взгля у Вас нет никакой задержки между
поэтому высокий очень редко появляется, если ставить задержку китично тогда поставить 2 прерывания, один на подъем другой на спад.