Arduino Polska Forum

Pełna wersja: Przerwanie zewnętrzne
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Mam problem z przerwaniem zewnętrznym. Przerwanie jest odczytywane z wciśnięcia guzika tylko że czasem to działa tak jakby w trybie falling a czasem w trybie rising, a znowu kiedy indziej program reaguje na przycisk dopiero za drugim przyciśnięciem, o co chodzi?

https://youtu.be/5UJ-7BT8uJ0

Kod:
void setup() {
  pinMode(pot_waga, INPUT);
  pinMode(wyjscie_konwerter, OUTPUT);
  pinMode(wyjscie_silownik_dol, OUTPUT);
  pinMode(przycisk_kiprowanie, INPUT);
  attachInterrupt(0, przerwanie, FALLING);
  pinMode(opoznienie_silownika, INPUT);
}

Kod:
  while (x){
   nawazone_1kg = 1;
   lcd.home();
   lcd.print("RAZEM -");
   lcd.write(byte(0));
   lcd.setCursor(9,0);
   lcd.print(counter + 1);
   lcd.print(" KG");

  }

Kod:
   void przerwanie(void) {
  x = !x; // neguje x, jeśli wcześniej było 0 to teraz jest 1 ...
}
Drgania styków...
O to to, dokładne to, w połączeniu z negowaniem zmiennej takie cyrki się robiły. Rozwiązałem to w ten sposób, że zamiast negować zmienną x, zmienia jej wartość z 0 na 1, a w innym miejscu kodu z powrotem wracam do wartości 0 dla tej zmiennej. Ale faktycznie drgania styków to powodowały, dzięki.
Mimo to przydało by się zastosować filtr RC na niepotrzebne przerywania...