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!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!news.internetia.pl!
    not-for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: AVR - przerwania zewnętrzne, usypianie i budzenie
    Date: Sat, 23 Feb 2013 12:54:08 +0100
    Organization: Netia S.A.
    Lines: 125
    Message-ID: <kgab43$b1v$1@mx1.internetia.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>
    <kg9stn$6pq$1@portraits.wsisiz.edu.pl>
    NNTP-Posting-Host: 83.238.197.12
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1361620931 11327 83.238.197.12 (23 Feb 2013 12:02:11 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sat, 23 Feb 2013 12:02:11 +0000 (UTC)
    In-Reply-To: <kg9stn$6pq$1@portraits.wsisiz.edu.pl>
    X-Tech-Contact: u...@i...pl
    User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.11) Gecko/20121123
    Icedove/10.0.11
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:643047
    [ ukryj nagłówki ]

    On 23.02.2013 08:59, Atlantis wrote:
    > W dniu 2013-02-22 21:00, Michoo pisze:
    >
    >> Ale czemu atmega miała się zresetować?
    >
    > W powodu watchdoga?

    To jest skutek równoważny z - "dlaczego watchdog zadziałał" - bo coś go
    nie zresetowało, ale dlaczego?

    > Może inaczej. Czy przypadkiem mikrokontrolerowi nie zdarza się czasem
    > (choćby niezmiernie rzadko) zawiesić się, tak po prostu zaprzestać
    > pracy?

    Po odliczeniu błędów zasilania - nie. [1] To by oznaczało, że nie można
    go bezpiecznie używać.


    [1] W teorii możesz mieć przypadek w którym jakiś błąd jest zależny od
    czasu i temperatury, ale prawdopodobieństwo jest minimalne. W praktyce
    zdarza się czasami jakiś błąd w przerwaniach (na krzemie) i w określonym
    przypadku procesor się nie budzi, ale to będzie raczej tylko missed
    interrupt a nie zwis, w bardzo specyficznych warunkach (no i trafi do
    erraty). Może też oberwać cząstką wysokoenergetyczną, ale to raczej na
    orbicie.

    > Jeśli tak, to chodzi mi właśnie o ochronę przed taką sytuacją.

    Taka sytuacja byłaby nielogiczna - na co komu urządzenie, które się
    losowo zawiesza?

    Załóżmy, że masz szansę na zadziałanie w cyklu 6? - to by oznaczało, że
    procesor lecący na 20MHz zawiesza się średnio co 25 sekund...

    > 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.

    Błędnie - to jest jedyne z czym się będziesz musiał mierzyć w typowych
    przypadkach.

    >
    >
    >> 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.

    Oczywiście. Weź tylko pod uwagę, że moduł to też jakiś uC z jakimś
    oprogramowaniem.

    >
    > A co do twardego resetu, to modem D15 nie ma nawet odpowiedniego pinu.

    PMOS na zasilaniu.

    > Jedynym rozwiązaniem z tego co widzę jest odcięcie zasilania, a to mogę
    > zrobić ręcznie.

    W sprzęcie bateryjnym trochę z tym gorzej - dlatego robi się obwód
    resetu na długim przytrzymaniu włącznika.


    >
    >
    >> 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.

    A co robi jeżeli uC zwisł w trakcie komunikacji? (Wysłał pół polecenia,
    przyszło przerwanie, gdzieś nie było volatile i resetuje się w momencie
    gdzie moduł dostał jakieś śmieci?)

    > Jeśli coś jest
    > nie tak, zgłasza kod błędu migając diodą.

    Jest to jedno z podejść "skontaktuj się z serwisem". Drugim jest
    "spróbujemy się zrestartować".

    >
    > 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? ;)

    Moduł. Moduł składa się z:
    - radia
    - modemu
    - uC, który nim steruje
    (czasami w jednym scalaku)

    A spora część współczesnych SoC ma odrębne bloki funkcjonalne z
    niezależnym wejściem zegara i asynchroniczne moduły komunikacyjne po to,
    żeby cała reszta mogła spać.

    >
    >> A jeżeli zgłosił 1,2,5?
    >
    > Jeszcze niezagospodarowane, ale to kwestia dodania kolejnego "case"
    > wewnątrz instrukcji switch().

    No tak, ale właśnie w ten sposób - przez zostawienie nieobsłużonych
    przypadków - tworzy się zawieszające się urządzenia. Dobra praktyka -
    zawsze dajesz default a jak nie wiesz co tam wstawić to wstawiasz
    logowanie błędu + reset.

    > 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.

    A co w momencie gdy przyjdzie zakłócenie i zamiast cyferki przyjdzie coś
    niezrozumiałego?

    --
    Pozdrawiam
    Michoo

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: