logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega8 - Nieprawidłowe działanie klawiszy po edycji kodu ISR TIMER0_OVF_vect

st4chuu 29 Lis 2013 12:04 1059 2
  • #1 13005274
    st4chuu
    Poziom 15  
    Dzień dobry,
    Mam problem z klawiszami.
    Zedytowałem do własnych potrzeb fragment kodu znaleziony na http://mikrokontrolery.blogspot.com/
    Kod: text
    Zaloguj się, aby zobaczyć kod


    A tutaj przykładowy fragment z obsługi przycisków

    Kod: text
    Zaloguj się, aby zobaczyć kod



    W wielu miejscach schemat wygląda podobnie. Wszystko tak działało. Dodałem delay w pętli głównej po przyciskach ponieważ bez tego klawisz był liczony dwukrotnie. Nie przywiązałem do tego większej wagi. Ale teraz gdy zaczyna brakować miejsca okazało się, że usuwając delay'e mogę zaoszczędzić sporo miejsca.
    Teraz się głowie dla czego wciśnięty klawisz raz reagował dwa razy.

    Atmega jest taktowana kwarcem 12MHz preskaler timera który obsługuje klawiaturę ustawiony jest na 1024. Przerwanie występuje co około 0.02 s.
    zmienna stan klawiszy reaguje tylko na zbocze, ostatnie 2 przerwania klawisz musiał być nie aktywny czyli niecałe 0.04 s.

    Czy możliwe jest, że przerwania są zbyt częste i czas nie jest wystarczający do "uspokojenia" drgań? Preskaler już jest ustawiony maksymalnie. Sytuacja ta jest tylko przy naciskaniu przy puszczaniu jest ok.
  • #3 13007187
    st4chuu
    Poziom 15  
    http://mikrokontrolery.blogspot.com/2011/03/epp-eliminacja-drgan-stykow-omicronns.html

    Jest to ten artykuł.

    Cały kod? On ma ponad 700 linii. Czy oszczędzić czasu i wyciąć konkretne fragmenty i je wrzucić te które mogą zawinić. Typu inicjalizacja timerów itp.

    Dodano po 3 [godziny] 59 [minuty]:

    Ok problem rozwiązany

    Kod: text
    Zaloguj się, aby zobaczyć kod



    Mała edycja kodu pomogła, zmieniony jest status tylko wtedy kiedy ostatnie 2 przerwania jest logiczna 1.
REKLAMA