-
Data: 2013-02-23 08:59:43
Temat: Re: AVR - przerwania zewnętrzne, usypianie i budzenie
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2013-02-22 21:00, Michoo pisze:
> Ale czemu atmega miała się zresetować?
W powodu watchdoga?
Może inaczej. Czy przypadkiem mikrokontrolerowi nie zdarza się czasem
(choćby niezmiernie rzadko) zawiesić się, tak po prostu zaprzestać
pracy? Jeśli tak, to chodzi mi właśnie o ochronę przed taką sytuacją.
Bo rozumiem, że czasem jakiś niuans w samym kodzie (np. pętla, która w
określonych okolicznościach zacznie się wykonywać w nieskończoność) może
spowodować zawias, ale to na razie pomijam.
> Oznacza to:
> a) błąd w programie. należy go wyeliminować
> b) błąd w module albo zakłócenie w komunikacji. stan systemu jest
> prawdopodobnie niespójny. Twardy reset jest w takiej sytuacji
> najbezpieczniejszym wyjściem.
Dla jasności: nigdy takiej sytuacji nie miałem. Nie zdarzyło mi się,
żeby moduł albo uC się zawiesił. Wszystkie przypadki, kiedy coś działało
nieprawidłowo okazywały się efektem jakiegoś drobnego błędu w programie.
A co do twardego resetu, to modem D15 nie ma nawet odpowiedniego pinu.
Jedynym rozwiązaniem z tego co widzę jest odcięcie zasilania, a to mogę
zrobić ręcznie.
> Ja bym w takim wypadku zrobił sprawdził na ile stan wygląda "dobrze" i w
> rzie czego zrobił power-cycle. Skoro był reboot to znaczy, ze coś się
> poważnie spieprzyło. Nic ci nie gwarantuje, że moduł będzie po czymś
> takim pracował poprawnie.
Proces inicjacji modułu GSM oczywiście przeprowadza elementarną
diagnostykę, nawet jeśli zastanie go w stanie włączonym. Jeśli coś jest
nie tak, zgłasza kod błędu migając diodą. Trochę "diagnostyki" jest też
po podniesieniu słuchawki - pytanie o status, sprawdzenie poziomu
sygnału itp. Słowem raczej można się połapać, gdy coś nie działa.
> foo:
> Czekasz na
> +:CPAS: 00
> a dostajesz
> +:CPAS: 01 (albo jeszcze lepiej 05, bo wybudzenie się nie powiodło)
> watchdag robi reset, goto foo.
Tak swoją drogą co zwraca "+CPAS: 001" gdy modem jest niedostępny albo
"+CPAS: 005" gdy znajduje się w stanie uśpienia, skoro przecież jest
niedostępny albo znajduje się w stanie uśpienia? ;)
Tutaj chyba chodzi o jakieś bardzo specyficzne sytuacje?
W funkcji sprawdzającej o stan modemu umieściłem po prostu licznik.
Funkcja zwraca odpowiednią wartość, gdy program nie otrzyma odpowiedzi
przed upływem 500 ms. Jeszcze tego nie zagospodarowałem, ale myślałem o
zwykłym komunikacie błędu.
> A jeżeli zgłosił 1,2,5?
Jeszcze niezagospodarowane, ale to kwestia dodania kolejnego "case"
wewnątrz instrukcji switch(). Jak już mówiłem funkcja odpowiedzialna za
obsługę CPAS czeka po prostu aż przyjdzie stała część komunikatu (+CPAS:
00) a potem czeka na pojawienie się ostatniej cyferki, pobiera ją,
konwertuje z ASCII na liczbę i zwraca programowi.
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Dzisiaj Bentlejem czyli przybieżeli sześciu Króli do Rysia na kasie
- ciekawy układ magnetofonu
- Mikroskop 3D
- Jak być bezpiecznym z Li-Ion?
- Szukam monitora HDMI ok. 4"
- Obcinaczki z łapaczem
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
Najnowsze wątki
- 2024-12-27 Rzeszów => System Architect (background deweloperski w Java) <=
- 2024-12-27 Kraków => Application Security Engineer <=
- 2024-12-27 Gorzów Wielkopolski => Konsultant wdrożeniowy Comarch XL/Optima (Ksi
- 2024-12-27 Wrocław => Solution Architect (Java background) <=
- 2024-12-27 kladka Zagorze
- 2024-12-27 Poznań => Key Account Manager (ERP) <=
- 2024-12-27 Gdańsk => Full Stack .Net Engineer <=
- 2024-12-27 Katowice => Programista Full Stack .Net <=
- 2024-12-27 Opole => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-27 Gdańsk => Delphi Programmer <=
- 2024-12-27 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-27 zasniecie
- 2024-12-27 Kraków => Key Account Manager <=
- 2024-12-26 zapora Zagorze
- 2024-12-26 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=