Ложное прерывание
- Войдите на сайт для отправки комментариев
Ср, 27/11/2013 - 17:54
Добрых суток.
Имеется такой код:
ISR(INT0_vect) { Serial.println("button 1"); } ISR(INT1_vect) { Serial.println("button 2"); } ISR(INT2_vect) { Serial.println("button 3"); } void setup(){ asm("cli"); DDRD = B00000000; EICRA |= B00111111; EIMSK |= B00000111; asm("sei"); Serial.begin(9600); } void loop(){ while(1){ } }
Схема подключения такая:
Порядок подключения, я думаю не сильно важен.
Столкнулся с такой проблемой, когда нажимаю кнопки 1 и 3, паралельно срабатывают прерывания от кнопки 2. При этом, если я нажимаю кнопку 2, то прерывание срабатывает, только её.
button 2 // нажал кнопку 2
button 1 // нажал кнопку 1
button 2 // паралельно кнопке 1
button 3 // нажал кнопку 3
button 2 // паралельно кнопке 3
Может кто помочь решить проблему.
Спасибо.
А как кнопки подключаете? Каким проводом? Какой длинны? Подтягивающие резисторы где соят и какого номинала?
> А как кнопки подключаете?
Не совсем понял вопрос. Кнопки, провода и резисторы у меня воткнуты в макетную плату.
> Каким проводом? Какой длинны?
Провода от 5 до 15 см.
> Подтягивающие резисторы где соят и какого номинала?
Как на схеме, со стороны земли. Про номинал не скажу (по цвету не могу определить, сложно отличить его на китайских резисторах) взял первые попавшиеся, просто других нет под рукой.
А номиналы одинаковые?
попробуйте измерить тестером.
Думаю проблема с помехами/наводками связана.
Я бы попорбовал к + притянуть, изменится картина или нет
Спасибо, попробую. Поставлю резисторы, которые точно по 10к и поставить к плюсу.
П.С. проблема в том, что и тестера нормального сейчас нет, а там где есть, там и резисторы есть по 10к :-)
Поставил резисторы на 10к, кнопки вообще перестали срабатывать, точнее работала только одна. Поставил резисторы на плюс и вроде работает как надо. Спасибо.
П.С. может есть какие нибудь предположения почему так?