eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR - przerwania zewnętrzne, usypianie i budzenieRe: AVR - przerwania zewnętrzne, usypianie i budzenie
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!wsisiz.edu.pl!.POSTED!not-for-mail
    From: Atlantis <m...@w...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: AVR - przerwania zewnętrzne, usypianie i budzenie
    Date: Sat, 23 Feb 2013 08:59:43 +0100
    Organization: http://www.wit.edu.pl
    Lines: 67
    Message-ID: <kg9stn$6pq$1@portraits.wsisiz.edu.pl>
    References: <kg3hur$15n$1@portraits.wsisiz.edu.pl> <kg3kbm$97a$1@news.dialog.net.pl>
    <kg5mhs$6ag$2@portraits.wsisiz.edu.pl> <kg6aul$tba$1@mx1.internetia.pl>
    <kg8bo1$f64$1@portraits.wsisiz.edu.pl> <kg8j7e$fqk$1@mx1.internetia.pl>
    NNTP-Posting-Host: bse195.neoplus.adsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: portraits.wsisiz.edu.pl 1361606391 6970 83.29.124.195 (23 Feb 2013 07:59:51
    GMT)
    X-Complaints-To: a...@w...edu.pl
    NNTP-Posting-Date: Sat, 23 Feb 2013 07:59:51 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130215
    Thunderbird/17.0.3
    In-Reply-To: <kg8j7e$fqk$1@mx1.internetia.pl>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:643042
    [ ukryj 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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: