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.

BASCOM AVR - Przyskisk ON/Stand-by

B-Rey 21 Sie 2012 19:04 1632 11
  • #1 21 Sie 2012 19:04
    B-Rey
    Poziom 7  

    Witam. Mam napisany program do obsługi silników krokowych. Chcę aby taki sterownik posiadał przycisk ON/Stand-by ponieważ będzie on wyposażony w podświetlane przyciski i LCD. Próbowałem przed pętlą główną (w której są badane stany wejść portów) zastosować komendę bitwait po której znalazła by się komenda ustawiająca stan wysoki na porcie, który steruje poprzez tranzystor zasilaniem LCD i podświetlenia przycisków. Natomiast w pętli głównej zastosowałem JMP 0, ale mam mieszane odczucia co do tego sposobu. Może lepiej wykorzystać watchdoga? Zależy mi na tym aby podczas stand-by, mikrokontroler nie sprawdzał przycisków do sterowania silnikami tylko czekał na naciśnięcie i przytrzymanie przez 3s przycisku ON/Stand-by i wtedy załączał LCD, podświetlenie i sprawdzał stan przycisków sterujących silnikiem (a także przycisku ON/Stand-by) w pętli głównej. Oczywiście przejście do stanu stand-by także ma się odbyć po przytrzymaniu przycisku ON/Stand-by przez 3s. Mikrokontroler na jakim pracuję to ATtiny2313.

    0 11
  • Pomocny post
    #2 22 Sie 2012 07:54
    aligatormp
    Poziom 14  

    1. Można wykorzystać przerwanie sprzętowe.
    2. Umieścić pętlę w pętli głównej, która sprawdza tylko jeden klawisz w zależności od flagi, którą ustawisz on/off , jeśli on pętla wykonuje się jeden raz a tym samym wykonuje się pętla główna, jeśli off pętla wykonuje się dopóki nie naciśniesz klawisza i ustawisz flagę na on

    0
  • Pomocny post
    #3 22 Sie 2012 16:11
    30402
    Użytkownik usunął konto  
  • #4 22 Sie 2012 18:31
    B-Rey
    Poziom 7  

    Saabotaz, wszystko rozumiem, tylko jak podczas normalnej pracy w pętli głównej (sprawdzanie przycisków sterujących silnikiem) wprowadzić z powrotem mikrokontroler w powerdown za pomocą INT?

    0
  • Pomocny post
    #5 23 Sie 2012 12:33
    30402
    Użytkownik usunął konto  
  • #6 23 Sie 2012 15:58
    B-Rey
    Poziom 7  

    Jest jakiś błąd w obsłudze przerwania. Program nie chce wejść do pętli głównej i obsłużyć przycisków silnika.

    PS: Aha, i te ok.3s to ma być minimalny czas przytrzymania przycisku on/off aby urządzenie włączyć lub wyłączyć.

    Pomóż mi, bo już się gubię.

    0
  • Pomocny post
    #7 23 Sie 2012 20:21
    30402
    Użytkownik usunął konto  
  • #8 23 Sie 2012 21:28
    aligatormp
    Poziom 14  

    Mam uwagę:
    1. ideą jest aby klawisz on/off był trzymany przynajmniej 3s, w obsłudze przerwania jest zwłoka 3s a to nie to samo - powinno być po 3s sprawdzenie czy klawisz on/off jest nadal wciśnięty;
    2. nie znam dokładnie tego procesora, czym jest wyzwalane przerwanie: zboczem opadającym, stanem niskim czy zboczem narastającym, czy jest możliwość konfiguracji tego;
    3. co z iskrzeniem styku, na symulatorze programowym to działa a czy tak będzie w rzeczywistości?

    0
  • #9 23 Sie 2012 22:33
    30402
    Użytkownik usunął konto  
  • #10 24 Sie 2012 09:27
    aligatormp
    Poziom 14  

    2. Odpowiedź na moje 2 pytanie.
    3,4. nie chodziło mi o znak w warunku if, a o sprawdzenie stanu klawisza po czasie 3s, który tu jest spełniony (co przeoczyłem) w warunku wyjścia z pętli w korelacji z Licz.
    5. przerwanie zostanie wykonane po zwolnieniu klawisza.

    Moje ostatnie pytanie dotyczyło pracy układu, czy w czasie wykonywania przerwania INT1 kolejne opadające zbocze (wynikające z iskrzenia) nie wyzwoli następnego przerwania INT1, które zostanie wykonana po zakończeniu pierwszego (kolejka)?

    0
  • #11 24 Sie 2012 10:24
    30402
    Użytkownik usunął konto  
  • #12 24 Sie 2012 11:58
    B-Rey
    Poziom 7  

    Saabotaz, wszystko działa aż miło. Dzięki Ci bardzo. Sam bym tego nie ogarnął.

    0