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

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

radek_ 28 Mar 2011 21:56 2655 9
REKLAMA
  • #1 9334792
    radek_
    Poziom 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ść
  • REKLAMA
  • #2 9334834
    dondu
    Moderator na urlopie...
    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 9335213
    radek_
    Poziom 10  
    Już poprawiam:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dziękuje za punkty może i kiedyś ja się odwdzięcze
  • REKLAMA
  • #5 9335253
    radek_
    Poziom 10  
    Tak "DelayMS(20)" to ma za zadanie eliminowac drgania styków
  • REKLAMA
  • #7 9335655
    navaro
    Poziom 12  
    Poczytaj o przerwaniach.
  • #8 9337737
    radek_
    Poziom 10  
    Wstawiam większą część kodu
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    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
  • REKLAMA
  • Pomocny post
    #9 9369071
    kokos306
    Poziom 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 10057949
    radek_
    Poziom 10  
    Temat zakończony powyższe rozwiązanie pomogło
REKLAMA