-
Data: 2013-02-22 00:26:44
Temat: Re: AVR - przerwania zewnętrzne, usypianie i budzenie
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 21.02.2013 18:46, Atlantis wrote:
> W dniu 2013-02-20 23:56, DJ pisze:
>
>> Tak musisz program przemyśleć żeby miał okazję resetować watchdoga, jako
>> objaw normalnej pracy. Np przerwaniami z timerów, czy czegokolwiek
>> innego co występuje zawsze częściej niż okres watchdoga.
>> Jeśli chcesz uśpić uC na amen na 30 minut, bo np po takim czasie
>> przjdzie Ci INT0/1, to watchdoga w tym czasie użyć nie możesz.
>
> Czyli tak jak myślałem... Czy w takim razie duże jest zagrożenie
> zawieszeniem się uC w trybie uśpienia?
Jeżeli projekt jest poprawnie zaprojektowany to nie istnieje ryzyko
"zawieszenia".
Przykład 1 - Czytasz dane z GPS po UART i zapisujesz na kartę.
- Procesor po starcie resetuje zewnętrzne urządzenia i przeprowadza
inicjalizację.
- Procesor przechodzi w tryb IDLE.
- Przerwania UART powodują pakowanie bajtów do bufora i sparsowanie
wiadomości po \n.
- Przerwanie zegarowe rozpoczyna zapis na kartę po SPI.
- Przerwania obsługują transmisję po SPI.
- Jeżeli nie będzie przez dłuższy czas komunikacji od GPS, albo zamrze
komunikacja z kartą watchdog wywoła reset pozwalając.
Szablon wygląda +- tak:
main(){
if(watch_dog_reset){
report_error();
GPS->force_reset();
CARD->force_reset();
}
GPS->setup();
CARD->setup();
//...
for(;;)
sleep();
}
Przykład 2 - czekasz na naciśnięcie przycisku i otwierasz zamek jeżeli
się zgadza karta.
- Procesor po starcie resetuje zewnętrzne urządzenia i przeprowadza
inicjalizację.
- Procesor przechodzi w tryb STANDBY.
- Jedynym zdarzeniem na które czeka procesor jest przycisk, więc wd jest
wyłączony.
- W czasie kiedy następuje komunikacja z kartą włączasz wd.
Szablon wygląda +- tak:
main(){
if(watch_dog_reset){
report_error();
cleanup();
}
BTN1->setup();
for(;;){
sleep();
wd_enable();
CARD->setup();
if(CARD->verify_access()){
DOOR->open();
busy_wait();
DOOR->close();
}
wd_disable();
}
}
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 22.02.13 19:00 Atlantis
- 22.02.13 21:00 Michoo
- 23.02.13 08:59 Atlantis
- 23.02.13 12:54 Michoo
- 23.02.13 17:50 Atlantis
Najnowsze wątki z tej grupy
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
Najnowsze wątki
- 2025-07-05 Shrek, wzrośnie cena prądu :-)
- 2025-07-05 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-07-06 Płacić za wodę ze studni
- 2025-07-06 Kolejny inżynier...
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-04 od kiedy można obrażać Plastusia i do kiedy Batyra?
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=