Arduino Polska Forum
Przerwanie zewnętrzne - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Przerwanie zewnętrzne (/watek-przerwanie-zewn%C4%99trzne--3336)



Przerwanie zewnętrzne - kellyq - 24-01-2020

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 ...
}



RE: Przerwanie zewnętrzne - Jarewa0606 - 24-01-2020

Drgania styków...


RE: Przerwanie zewnętrzne - kellyq - 25-01-2020

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.


RE: Przerwanie zewnętrzne - Jarewa0606 - 25-01-2020

Mimo to przydało by się zastosować filtr RC na niepotrzebne przerywania...