Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Stm8 obsługa przycisku. Zmiana wartości po naciśnięciu przycisku.

radek_ 28 Mar 2011 21:56 2577 9
  • #1
    radek_
    Level 10  
    Witam potrzebuje obsłużyć przycisk za pomocą mikrokontrolera Stm8 tak aby po pierwszym naciśnięciu ustawiał pewną wartość na 1 a przy następnym na 0 i stan tej wartości zmieniał niezależnie od miejsca w którym jest program
    Napisałem taką funkcje, ale podczas gdy program trafia na wywołanie funkcji zatrzymuje się i oczekuje na spełnienie warunku a chodzi mi o to żeby warunek „stan=0, stan=1” zmieniał się po każdym przyciśnięciu klawisza niezależnie która część kodu się wykonuje
    Stm8 obsługa przycisku. Zmiana wartości po naciśnięciu przycisku.
    Próbowałem zapętlić i wywołać funkcje na początku main ale bez rezultatu
    Dopiero zaczynam zabawę z mikrokontrolerami wiec wyrozumiałość
  • #2
    dondu
    Moderator on vacation ...
    No to na początek (za to, iż C używasz) ode mnie 20pkt, boś biedny (4.93), a mogą się przydać :D
    Te DelayMS() wykorzystujesz w celu eliminacji drgań styków?

    I wklejaj kod za pomocą znacznika
    [syntax=c] Twój kod [/syntax]

    a nie w formie obrazka, gdyż to ułatwi nam modyfikowanie Twojego kodu (na przepisywanie nie mamy czasu).
  • #3
    radek_
    Level 10  
    Już poprawiam:
    Code: c
    Log in, to see the code


    Dziękuje za punkty może i kiedyś ja się odwdzięcze
  • #5
    radek_
    Level 10  
    Tak "DelayMS(20)" to ma za zadanie eliminowac drgania styków
  • #8
    radek_
    Level 10  
    Wstawiam większą część kodu
    Code: c
    Log in, to see the code

    Chciałbym aby podczas kolejnych przyciśnięć klawisza wartość stan zmieniała się w w zakresie 1,0
    Problem polega na tym jak obsłużyć przerwanie pochodzące od klawisza na porcie PA3
  • Helpful post
    #9
    kokos306
    Level 11  
    ściągnij sobie ze strony www.st.com manual rm0016
    poczyaj o obsłudze portów GPIO masz tam 3 rejestry które trzeba ustawić oraz ITC 1 rejestr do ustawienia

    ustaw wykrywanie przerwania na porcie A na opadającym zboczu

    EXTI_CR1 |=0x02

    ustaw port PA3 jako wejscie
    PB_DDR = 0x00

    ustaw pull-up jesli potrzeba

    PB_CR1 |= 0x04

    ustaw aktywne przerwanie na porcie PA3

    PB_CR2 |= 0x04


    włącz przerwania

    do tego musisz napisać obsługę przerwania i tyle

    Dodano po 1 [minuty]:

    sorry ma być PA_xxx zamiast PB :)
  • #10
    radek_
    Level 10  
    Temat zakończony powyższe rozwiązanie pomogło