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

[Atmega32] Atmega32, avr-gcc - problem z obsługą przycisku KEY3 i zmienną w main.c

maniek0005 03 Mar 2014 13:51 1704 4
REKLAMA
  • #1 13365320
    maniek0005
    Poziom 9  
    Witam serdecznie mam mały kłopot z obsługa przycisku KEY3
    jeśli nacisnę klawisz sw3 to zmienna powinna zmienić wartość na 1,a warunek do obsługi klawiszy KEY2 i KEY1 powinien być spełniony, niestety nie działa :(
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13365399
    BlueDraco
    Specjalista - Mikrokontrolery
    1. Sformatuj przyzwoicie kod, tak, aby wcięcia pokazywały jego strukturę. Obecnie nie daje się tego czytać.

    2. Co to znaczy "nie działa"? Po czym to poznajesz?

    3. Ponieważ warunkiem wejścia pod
    if( klawisz_wcisniety( KEY1_PIN ) && zmienna == 1 )

    Jest wartość zmiennej równa 1, to dalsze jej sprawdzanie w pętli while nie ma sensu.

    4. Jak masz podłączone przyciski? Czy masz włączone rezystory podciągające w uC albo zewnętrzne rezystory podciągające na płytce?

    5. Zredukujmy kod testu przycisków nie zmieniając jego działania:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 13367935
    maniek0005
    Poziom 9  
    Porty mam podciągnięte do GND przez rezystor 10k

    W programie chodzi o stopowanie i uruchamianie licznika za pomocą KEY1 I KEY2
    KEY3 To przycisk włączający funkcje odblokowania KEY1 i KEY2 jeśli KEY3 nie zostanie wciśnięty to
    Zablokuj KEY1 i KEY2

    Problem polega na tym, że po włączeniu KEY1 lub KEY3 licznik chwilowo się zatrzymuje, po czym uruchamia się ponownie
  • REKLAMA
  • #4 13368035
    BlueDraco
    Specjalista - Mikrokontrolery
    Ten program tak nie działa - przyjrzyj rozplątanej się postaci powyżej.
    Jak widać z programu, odliczanie powinno się zatrzymać tylko wtedy, gdy K1 i K3 zostaną równocześnie naciśnięte (20 ms tolerancji - trudno to osiągnąć ręcznie) i pozostaną naciśnięte.
    Nie da się w ten sposób dobrze zrobić reakcji na zbocze, czyli na moment naciskania przycisku (a nie na jego przytrzymanie).

    Już chyba raz Cię odsyłałem:
    http://mikrokontrolery.blogspot.com/2011/02/o-drganiach-stykow-bez-bajek-przykad.html
  • #5 13376910
    maniek0005
    Poziom 9  
    ok dzięki za pomoc, problem był w drganiach styków :)
REKLAMA