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

BASCOM AVR - Implementacja przycisku ON/Stand-by z opóźnieniem 3s

B-Rey 21 Sie 2012 19:04 2103 11
  • #1 11231197
    B-Rey
    Poziom 9  
    Posty: 8
    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.
  • Pomocny post
    #2 11232658
    aligatormp
    Poziom 14  
    Posty: 99
    Pomógł: 10
    Ocena: 7
    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
  • Pomocny post
    #3 11234104
    Konto nie istnieje
    Konto nie istnieje  
  • #4 11234565
    B-Rey
    Poziom 9  
    Posty: 8
    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?
  • Pomocny post
    #5 11237131
    Konto nie istnieje
    Konto nie istnieje  
  • #6 11237852
    B-Rey
    Poziom 9  
    Posty: 8
    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ę.
  • Pomocny post
    #7 11238787
    Konto nie istnieje
    Konto nie istnieje  
  • #8 11239147
    aligatormp
    Poziom 14  
    Posty: 99
    Pomógł: 10
    Ocena: 7
    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?
  • #9 11239500
    Konto nie istnieje
    Konto nie istnieje  
  • #10 11240266
    aligatormp
    Poziom 14  
    Posty: 99
    Pomógł: 10
    Ocena: 7
    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)?
  • #11 11240405
    Konto nie istnieje
    Konto nie istnieje  
  • #12 11240669
    B-Rey
    Poziom 9  
    Posty: 8
    Saabotaz, wszystko działa aż miło. Dzięki Ci bardzo. Sam bym tego nie ogarnął.

Podsumowanie tematu

✨ W dyskusji poruszono implementację przycisku ON/Stand-by z opóźnieniem 3s w programie do obsługi silników krokowych na mikrokontrolerze. Użytkownik zaproponował użycie przerwania sprzętowego oraz pętli głównej do monitorowania stanu przycisku. Ostatecznie zasugerowano podłączenie przycisku do nóżki INT, skonfigurowanie go jako wejście z podciągnięciem oraz użycie przerwania do sprawdzania, czy przycisk był wciśnięty dłużej niż 3 sekundy. Wskazano również na konieczność obsługi potencjalnych problemów z iskrzeniem styku oraz na możliwość kolejkowania przerwań. Użytkownik potwierdził, że rozwiązanie działa poprawnie.
Wygenerowane przez model językowy.
REKLAMA