Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

atmega8[c] - Menu swietlne instrukcja break

hans880 01 Maj 2013 22:55 888 4
  • #1 01 Maj 2013 22:55
    hans880
    Poziom 6  

    Jestem w trakcie tworzenia sobie menu swietlnego, pomysl gdzies tam podpatrzylem w internecie , spodobal mi sie i chcialem go zrealizowac a przy okazji lepiej poznac C. Ale napotkalem pewien problem. Otoz program ma dzialac tak by po przycisnieciu s1 mozna by bylo wybrac konkretna funkcje programu. Przycisk s2 mialby uruchamiac i zatrzymywac dana funkcje (zapalanie i gaszenie diod). Problem polega na tym ze po przycisnieciu switcha s2 program za pomoca funkcji while odpala mruganie diodami, chcialem uzyc intrukcji break i switcha s2 do zatrzymania mrugania. Jednak cos mi nie wychodzi. Moze cos ktos poradzic tutaj kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 4
  • #2 02 Maj 2013 08:02
    tmf
    Moderator Mikrokontrolery Projektowanie

    Nie wychodzi ci, bo pętla while testuje ten sam warune, co warunek przy if (KEY_DOWN2), w efekcie praktycznienatychmiast się kończy. Użytkownik musiałby nacisnąć K2, a następnie w odpowiednim momencie (w ciągu kilku us) go puścić, żeby program został w pętli.
    BTW, takie przeczy prościej jest realizować na przerwaniach. Np. w jednym od debouncingu sprawdzasz stan klawiszy i go zapisujesz w jakiejś zmiennej globalnej, a w innym realizujesz funkcje podprogramów. W ten sposób nic się wzajemnie nie blokuje. PRzy tak prostym programie nie ma to może aż tak dużego znaczenia, ale warto wyrabiać nawyki.

    0
  • #3 02 Maj 2013 12:56
    hans880
    Poziom 6  

    a mozna to jakos zrealizowac bez tych przerwan bo narazie tak daleko nie jestem

    0
  • #4 02 Maj 2013 13:46
    matigi12
    Poziom 12  

    Ja to sobie wykonałem w taki sposób ale zredukuj tutaj timer 0 bo jest on zbędny, możesz wykonać go w pętli timera2.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 02 Maj 2013 14:00
    tmf
    Moderator Mikrokontrolery Projektowanie

    hans880 napisał:
    a mozna to jakos zrealizowac bez tych przerwan bo narazie tak daleko nie jestem


    Można, chociaż na http://mikrokontrolery.blogspot.com/p/spis-tresci.html masz ładnie wyjaśnione jak to zrobić w oparciu o przerwania.
    Co do problemu - po prostu zrób tak, aby przed wyjściem z tej pętli było wymagane najpierw puszczenie przycisku, a dla wyjścia jego ponowne naciśnięcie.

    0