Új hozzászólás Aktív témák

  • ekkold

    Topikgazda

    válasz Aryes #20079 üzenetére

    Pergésmentesítésre sokféle megoldás van.
    - Hardveres megoldás: külső felhúzó ellenállás a gombon, majd RC szűrő
    - Megszakításból: állapotváltásra le kell tiltani a további megszakítást kb. 1...2msec-re, amíg a prellezés lezajlik.
    - 0.1...1ms-os timer megszakításból: azt kell figyelni, hogy a gomb állapota néhány megszakításon át változatlan-e, ha igen akkor van vége a prellezésnek, és felhasználható az új állapot.
    - loop()-ban: az állapotváltás időpontját menteni kell (millis() vagy micros() függvény), ha az utolsó változás óta eltelt több mint 1...2msec, akkor már nem prelleg, felhasználható az aktuális állapot.

    Én a legutóbbit haszánlom leggyakrabban, mert ehhez nem kell megszakítás, és ha a loop() nem katasztrofálisan lassú akkor stabil és jó megoldás. (még enkóder is kezelhető így, gyakorlatilag hibamentesen). Arra pedig mindíg érdemes törekedni, hogy a loop a lehető leggyorsabb legyen, (azaz pl. amennyire csak lehet kerüljük a delay()-t, és az egyéb lassú függvényeket).

Új hozzászólás Aktív témák

Hirdetés