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.

MSP430 - Prosty program w C. Rozpoznawanie długiego lub krótkiego kliknięcia

Mientek007 24 Mar 2016 21:01 609 4
  • #1 24 Mar 2016 21:01
    Mientek007
    Uczeń

    Witam.
    Mam prosty program napisany w C do mikrokontrolera MSP430 (MSP430G2553 ---> LaunchPad).

    Program ma za zadanie rozpoznać rodzaj kliknięcie (długie lub krótkie)


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Po przesłaniu programu na MSP nie ma żadnej reakcji na wciśnięcie przycisku (dla różnych wartości warunku dla a.
    Niestety nie wiem dlaczego nie działa, dlatego prosiłbym i pomoc w znalezieniu nieprawidłowości

    0 4
  • #2 24 Mar 2016 21:30
    vonar
    Poziom 28  

    Przede wszystkim żaden z warunków nigdy nie będzie spełniony, bo użyłeś operatora iloczynu bitowego zamiast logicznego. Do tego po zwolnieniu przycisku nie zerujesz a ani nie gasisz diod.

    Poza tym wypadałyby jednak odmierzać czas timerem...

    0
  • #3 24 Mar 2016 21:37
    Mientek007
    Uczeń

    vonar napisał:
    Przede wszystkim żaden z warunków nigdy nie będzie spełniony, bo użyłeś operatora iloczynu bitowego zamiast logicznego. Do tego po zwolnieniu przycisku nie zerujesz a ani nie gasisz diod.

    Poza tym wypadałyby jednak odmierzać czas timerem...


    Po zwolnieniu przycisku nie zeruję i nie gaszę diód, bo póki co one nawet nie chcą mi sie zapalić. Jak sie zaczną zapalać to później dołożę komendy żeby je gasić.

    Nie używam timera, bo dopiero co się uczę programować i jak na razie próbuje ogarnąć obsługę wejść

    Przeanalizowałem działanie programu poprzez krokową pracę programu w kompilatorze.

    kiedy ustawiłem warunek

    Kod: c
    Zaloguj się, aby zobaczyć kod


    TO program nie wchodzi do pętli (mimo iż warunek jest spełniony) i nie zwiększa wartości zmiennej a.
    Zresztą, z tego co zauważyłem to program zawsze pomija komendę "a++". Niezależnie czy jest to w pętli czy w programie.
    Dlaczego?

    0
  • #4 24 Mar 2016 22:30
    vonar
    Poziom 28  

    Odniosłeś się do rzeczy o których wspomniałem przy okazji, a najważniejsze zignorowałeś.

    Mientek007 napisał:
    program nie wchodzi już do pętli i nie zwiększa wartości zmiennej a.
    Dlaczego?
    vonar napisał:
    żaden z warunków nigdy nie będzie spełniony, bo użyłeś operatora iloczynu bitowego zamiast logicznego

    (właściwie nie żaden, tylko dwa ostatnie - pierwszy jest w porządku)

    0
  • #5 25 Mar 2016 01:27
    2675900
    Użytkownik usunął konto