-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!go
blin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt
-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: Marek <f...@f...com>
Newsgroups: pl.misc.elektronika
Subject: Re: Stabilność ESP8266
Date: Wed, 28 Jan 2015 16:23:52 +0100
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
In-Reply-To: <54c8c776$0$23533$65785112@news.neostrada.pl>
References: <54c75516$0$2653$65785112@news.neostrada.pl>
<a...@n...neostrada.pl>
<54c88f4f$0$2653$65785112@news.neostrada.pl>
<a...@n...neostrada.pl>
<a...@n...neostrada.pl>
<54c8b171$0$2651$65785112@news.neostrada.pl>
<a...@n...neostrada.pl>
<54c8c776$0$23533$65785112@news.neostrada.pl>
Message-ID: <a...@n...neostrada.pl>
User-Agent: Groundhog 2.02 Newsreader for Android.
Lines: 51
Organization: Telekomunikacja Polska
NNTP-Posting-Host: apn-31-1-62-209.dynamic.gprs.plus.pl
X-Trace: 1422458635 unt-rea-b-01.news.neostrada.pl 2155 31.1.62.209:39746
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.misc.elektronika:677578
[ ukryj nagłówki ]On Wed, 28 Jan 2015 12:26:50 +0100, Atlantis <m...@w...pl>
wrote:
> Hmm... Możesz napisać coś więcej?
Oj to dużo pisania, trochę nie na temat grupy. Ale tak ogólnie to są
dwie ważne sprawy, pierwsza to prawidłowa obsługa bufora cyklicznego
fifo, do którego pisze przerwanie uarta po odebraniu znaku. Bardzo
fajnie jest to opisane w tym dokumencie (od strony 36)
http://cache.freescale.com/files/microcontrollers/do
c/app_note/AN2120.pdf
(nota bene dokument opisuje fajną minimalistyczną implementację
ppp/tcp/udp na 8 bit mcu, sprawdzone, działa). Drugi bufor, to
podręczny bufor api (aplikacyjny), do którego są "wyciągane" z fifo
kolejne znaki i na podstawie jego zawartości api przełącza się w
odpowiednie stany, obsługujące dane zdarzenie. Druga sprawa to
opisanie wszystkich możliwych stanów maszyny. Najważniejszym stanem
jest SM_IDLE, w której się oczekuje na "unsolicited codes". Kolejnym
stanem może być np. SM_RECEIVE_SMS, w który się przełączamy ze stanu
SM_IDLE po odebraniu np. +CMTI i powrót z powrotem do SM_IDLE, gdy
zakończyliśmy procesowanie odebranego smsa. Zaletą takiego modelu
jest to, że każdy stan jest nieblokujący mcu: gdy nie ma żadnego
znaku do pobrania z fifo to nie ma nic do roboty i można wrócić do
"main_loop". Gdy jest znak to go wyciągamy z fifo i sprawdzamy czy po
"dołożeniu" go do lokalnego bufora mamy już kompletną odpowiedź
modemu, jeśli nie znowu wracamy do "main_loop". Natomiast gdy mam już
kompletną odpowiedź to ją identyfikujemy i przełączamy się na
odpowiedni stan aby ją przeprocesować. Gdy api jest dłużej w jakimś
stanie procesującym (nie sprawdza czy coś jest "nowego" w fifo),
nieoczekiwane dane z modemu nie zginą bo są buforowane przez
przerwanie piszące do fifo. Te dane zostaną odebrane z fifo po
powrocie do stanu SM_IDLE.
"Unsolicited codes" nie pojawiają się np. w połowie odpowiedzi na
jakieś polecenie AT, stąd nie ma zagrożenia, że popsują kontekst tej
odpowiedzi (innego polecenia). Na uarcie musi być chwilowa cisza
między komendami AT aby modem zwrócił taki kod. Sposób wysyłania tych
kodów konfiguruje się poprzez AT+CNMI, najbezpieczniejsze jest
AT+CNMI=3,1,0,0,0 bo to własnie włącza buforowanie sygnalizacji
zdarzenia (gdy wystąpi w trakcie odpowiedzi na inne polecenie lub gdy
modem jest w trybie data a nie command). W takim przypadku kod
zostanie przesłany po zakończeniu transmisji poprzedniej odpowiedzi
(pod warunkiem chwilowej "ciszy", o której wspomniałem wyżej).
To tak bardzo ogólnie. Oczywiście każdy stan może mieć swój "lokalny"
idle, w których czeka np. na OK\r\n po jakimś poleceniu. Jak się
podgląda taka komunikację "nodelay" na uarcie to bardzo ładnie ona
wygląda, jest szybka i płynna.
--
Marek
Następne wpisy z tego wątku
- 28.01.15 20:28 Atlantis
- 29.01.15 01:13 Grzegorz Niemirowski
- 29.01.15 08:36 Atlantis
- 29.01.15 14:13 Marek
- 29.01.15 17:55 Atlantis
- 29.01.15 18:27 Marek
- 29.01.15 18:37 Atlantis
- 30.01.15 09:33 Atlantis
- 30.01.15 11:22 Atlantis
- 30.01.15 13:50 Marek
- 30.01.15 15:34 Atlantis
- 30.01.15 15:57 jacek pozniak
- 30.01.15 16:07 Atlantis
- 30.01.15 16:08 Atlantis
- 30.01.15 16:43 jacek pozniak
Najnowsze wątki z tej grupy
- Klip testowy, jak sie to używa
- Jak sie smazy elektronike z odleglosci kilkuset metrów?
- William Shockley, co-inventor of the transistor
- Gazowy kocioł CO regulacja cyklingu i regulacja pogodowa
- Zamek elektroniczny
- szablon do pasty DIY
- Głośnik potrzebny
- Silikonowy przewód ekranowany
- Wtyk bananowy ekranowany
- Co może być gorsze od pożaru elektryka?
- daltonizm
- Mały Linux
- Superkondensator. Czy to się uda?
- Stare filmy o technice
- Zasilanie własnych konstrukcji przez PoE
Najnowsze wątki
- 2025-11-13 SO postępowanie cywilne rejestrowe
- 2025-11-13 miesiąc z 5G i wifi calling
- 2025-11-13 Warszawa => APM/Observability Engineer (Presales Engineer) <=
- 2025-11-12 Strefa Schengen
- 2025-11-12 #Motodziennik 352 - STRACH SIĘ BAĆ - Zombi VS radio AM, prawo do naprawy i niemiecki pomysł...
- 2025-11-12 Aparatu szukam
- 2025-11-12 Azylant na Węgrzech donosi prokuraturze na ministra sprawiedliwości/prokuratora generalnego
- 2025-11-12 Wrocław => Specjalista ds. Marketingu Online (PPC) <=
- 2025-11-12 Gdańsk => Delphi Programmer <=
- 2025-11-12 Białystok => Generative AI Engineer <=
- 2025-11-12 Białystok => Gen AI Engineer <=
- 2025-11-12 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-11-12 Gdańsk => Programista Delphi <=
- 2025-11-12 => Senior Algorithm Developer (Java/Kotlin) <=
- 2025-11-12 Warszawa => Engineering Manager <=




Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei