Ложное прерывание

ncyclon
Offline
Зарегистрирован: 27.11.2013

Добрых суток.

Имеется такой код:

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

Может кто помочь решить проблему.

Спасибо.

Looka
Offline
Зарегистрирован: 24.04.2012

А как кнопки подключаете?  Каким проводом?  Какой длинны?   Подтягивающие резисторы где соят и какого номинала?

ncyclon
Offline
Зарегистрирован: 27.11.2013

> А как кнопки подключаете?

Не совсем понял вопрос. Кнопки, провода и резисторы у меня воткнуты в макетную плату.

> Каким проводом?  Какой длинны?

Провода от 5 до 15 см.

> Подтягивающие резисторы где соят и какого номинала?

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

Looka
Offline
Зарегистрирован: 24.04.2012

А номиналы одинаковые?  
попробуйте измерить тестером.

Думаю проблема с помехами/наводками связана.    

 

Я бы попорбовал к + притянуть, изменится картина или нет

ncyclon
Offline
Зарегистрирован: 27.11.2013

Спасибо, попробую. Поставлю резисторы, которые точно по 10к и поставить к плюсу.

П.С. проблема в том, что и тестера нормального сейчас нет, а там где есть, там и резисторы есть по 10к :-)

ncyclon
Offline
Зарегистрирован: 27.11.2013

Поставил резисторы на 10к, кнопки вообще перестали срабатывать, точнее работала только одна. Поставил резисторы на плюс и вроде работает как надо. Спасибо.

П.С. может есть какие нибудь предположения почему так?