Stabilita ESP8266

mhi

  • ****
  • 474
    • Zobrazit profil
Re:Stabilita ESP8266
« Odpověď #75 kdy: 19. 11. 2019, 19:48:27 »
Upresnim to - stalo se to, ze zarizeni nebylo dostupne na siti (ping neodpovidal, router nemel v arp tab zaznam).

Ntb celou dobu pinkal na APcko a logoval to.

Pomohl restart APcka (predtim jsem uspesne ale naasocioval jine zarizeni, takze to nebylo tim, ze by AP vytuhlo).

Kod je v podstate demo http_simple obohacene o init a prenastaveni PWMky (prevzato z jineho dema). Je tam minimalni invence, bez toho aby clovek lezl na tu stranku to nema duvod bezi jen kod v ESP-IDF.

Pridam kondiky a nejakou debug WWW stranku. Az si udelam cas udelat plosnak bez USB<->UART hodim tam jeste bluetooth modul a budu logovat celou konzoli.


Re:Stabilita ESP8266
« Odpověď #76 kdy: 19. 11. 2019, 22:42:58 »
Upresnim to - stalo se to, ze zarizeni nebylo dostupne na siti (ping neodpovidal, router nemel v arp tab zaznam).
ARP zaznam nema duvod mit, pokud s tim zarizenim nekdo pravidelne nekomunikuje.

Pomohl restart APcka (predtim jsem uspesne ale naasocioval jine zarizeni, takze to nebylo tim, ze by AP vytuhlo).
To, ze slo asociovat jine zarizeni neni taky moc dukaz niceho. Videl jsem situace, ze APcko jednoho klienta v klidu pripojilo, jineho ne. To se muze stat. Zvlast u levnejsich APcek.

Kod je v podstate demo http_simple
To je co?

Pridam kondiky a nejakou debug WWW stranku. Az si udelam cas udelat plosnak bez USB<->UART hodim tam jeste bluetooth modul a budu logovat celou konzoli.
Debug www stranka moc nedava smysl, pokud to nemuzes pingnout :) Konzoli by bylo lepsi logovat pres uart, bluetooth tam jenom prida dalsi clanek, kterej se muze podelat.

Re:Stabilita ESP8266
« Odpověď #77 kdy: 20. 11. 2019, 07:13:06 »
Ano, u ESP32 se mi to děje taky. Mám tam kus kodu, který jednou za  minutu pošle telemetrii na web server a pokud při tom registruje nedostupnost, tak restartuje připojení.  Za týden tam nasbírám tak 70 restartů. A i tak se občas stane, když to chci ovládnout přes web rozhraní, že je nedostupné. Přitom lokální tlačítka fungují.
Na ESP8266 se mi tohle nikdy nedělo.

Re:Stabilita ESP8266
« Odpověď #78 kdy: 29. 11. 2019, 17:12:23 »
Taky přispěju svou zkušeností do mlýna...Mám ESP8266 v jedné aplikaci, kdy jednou za hodinu se probudí, zaktualizuje e-ink displej a uspí se. Jednou za den si načte čas z NTP přes wifi. Napájeno z dvou 18650 článků(parlaleně) s 3.3V stabilizátorem a od zapnutí jsem na to nesáhnul. Dokonce jsem to ještě ani nenabíjel a jede to už přes 2 roky

mhi

  • ****
  • 474
    • Zobrazit profil
Re:Stabilita ESP8266
« Odpověď #79 kdy: 05. 02. 2020, 14:29:26 »
Delal jsem dalsi experiment s ESP32, resp. doufal jsem, ze bude generovat solidni 12MHz hodinovy signal na vystupu pro nejakou dalsi komponentu . Udelal jsem jednoduchy kod s LEDC timerem, nastavil jsem vse, generuje mi to zhruba to co bych ocekaval. Problem je, ze frekvence lita mezi 11.4 a 13.3 MHz ! Prijde mi to uplne desive, jako kdyby to resili pres nejaky interrupt, ktery ma silenou latenci. Neverim tomu, ze interni PLL jim takhle lita, to by prece ta wifi nemohla vubec fungovat ?! Tusite co je shnileho ve state cinskem?


mmcc

Re:Stabilita ESP8266
« Odpověď #80 kdy: 06. 02. 2020, 10:18:25 »
Tiez mam z ESP.. rozpacity pocit. Doma na stole funguje, v zahltenej wifi sieti, s velkym trafficom to ide nespolahlivo, modul zamrza. ESP8266 aj ESP32, rozny kod (Arduino), rozne projekty. Pomohlo az spravit samostatne AP a schovat ich za NAT.
Mate niekto skusenosti s alternativami k ESP...? npr Realtek RTL8710, RDA5981, Air602 (W600) ?

Re:Stabilita ESP8266
« Odpověď #81 kdy: 06. 02. 2020, 10:39:44 »
Netrpím ve svých projektech tím co zde čtu, používám na domácí hraní ESP32 i starší ESP8266 s Sigfoxem i s LORA a činské MCU napájím jak z usb tak z baterií a ze solárů běží to měsíce a jdu tam jen když mám v grafech vybitou baterii.

Podobné chování co tu čtu bylo u mě způsobeno vždy tím že sem moc optimisticky psal svůj kód, zezačátku v arduino frameworku kde bylo dost chyb v knihovnách tak jsem přešel na ESP-IDF a IDE platformIO, přepsal ty kousky do tohoto frameworku a problém už nemám, ale například wifi spojení je už zde v příkladech rozepsáno na jednotlívé kroky tak že error handling se dá napsat o dost lépe než jsem měl tu možnost v arduino a jeho IDE.

mhi

  • ****
  • 474
    • Zobrazit profil
Re:Stabilita ESP8266
« Odpověď #82 kdy: 06. 02. 2020, 13:47:12 »
Ja to programuju vsehno v C, v ESP-IDF, zadny balastni kod tam neni, muzu sem dat zdrojak. Vlastne to je volani par .*ledc.* fci ktere nastavi jeden PWM kanal a pak je while(1) sleep(...); Defacto je to prevzaty ledc example ocesany o balast asi na 1/3 kodu. Muzu jit zacit zkoumat ledc periferii, no na rovinu moc se mi do toho nechce.

Muzu sem dat kod i object file, pokud byste si to nekdo chteli nahrat do sveho ESP32 a zmerit osciloskopem.

Z celeho ESP* mam pocit, ze to je typicky cinsky produkt, ubastleno rychle a levne, ale nic moc se od toho nemuze chtit. Fakt ale nechapu kde soudruzi udelali chybu, protoze Wifi jim prece NEMUZE CHODIT spolehlive jestli jim takhle ujizdi hodiny !

Re:Stabilita ESP8266
« Odpověď #83 kdy: 06. 02. 2020, 14:27:09 »

mhi

  • ****
  • 474
    • Zobrazit profil
Re:Stabilita ESP8266
« Odpověď #84 kdy: 06. 02. 2020, 15:06:28 »
Powermanagement mam zakazany, procesor mi bezi na 80 MHz.

Re:Stabilita ESP8266
« Odpověď #85 kdy: 06. 02. 2020, 23:24:57 »
mhi: Jak chcete dosahnout generovani 12 MHz pri clocku mcu 80 MHz, kdyz 80/12 neni cele cislo? Pokud vim, tak toto je mimo moznosti hw timeru (ledc high speed mode).

Re:Stabilita ESP8266
« Odpověď #86 kdy: 07. 02. 2020, 15:59:48 »
No, abych nezustal pri sve puvodni strohe odpovedi.

mhi: "Problem je, ze frekvence lita mezi 11.4 a 13.3 MHz ! Prijde mi to uplne desive, jako kdyby to resili pres nejaky interrupt, ktery ma silenou latenci. Neverim tomu, ze interni PLL jim takhle lita, to by prece ta wifi nemohla vubec fungovat ?! Tusite co je shnileho ve state cinskem?"

PWM generator na ESP32 se chova naprosto spravne.
Jitter vystupniho signalu je zpusoben tim, ze ackoliv je v periferii TIMER, jakozto zdroji hodinovych impulzu pro PWM periferii, pouzita frakcni synteza (10bitovy N registr a 8bitovy F registr), tak tato neni schopna generovat impulzy mimo rastr zdrojoveho hodinoveho signalu TIMERu (to umi az sofistikovane digitalni systemy zalozene na DLL apod., coz u periferie na ESP32 cekat nelze). Pri pozadavku na generovani 12MHz signalu z PWM periferie musi byt tato taktovana impulzy s opakovacim kmitoctem 24 MHz a strida vystupniho signalu nastavena na 1:1 (kazdy taktovaci impulz od timeru potom preklapi vystup PWM periferie mezi log. 0 a 1). Frakcni synteza TIMERu beziciho na 80 MHz je toho schopna docilit pouze tak, ze generuje nasledujici sekvenci taktovacich impulzu (v rastru 80MHz hodin):
...0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0..., tj. repetice pulzu se meni mezi 3 a 4 periodami 80MHz hodin, ale v prumeru je to 3,333.. periody, tj. 80 MHz/3.333... = 24 MHz.
Vystupem PWM periferie je potom tato posloupnost (opet v rastru 80MHz hodin):
...0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1...
Dostavame tedy signal, ktery ma nektere periody kratsi (6 taktu 80MHz hodin, tj. 75 ns -> 13.33... MHz) a nektere delsi (7 taktu 80MHz hodin, tj. 87,5 ns -> 11,428... MHz), a jelikoz pomer zastoupeni kratsi a delsi periody v generovanem signalu je 1 : 2, tak vysledna prumerna peroda je (1* 75 + 2 * 87,5) / 3 = 83,333... ns -> prumerny kmitocet 12 MHz.
Pokud byste chtel dosahnout stabilniho vystupu 12 MHz bez jitteru zpusobeneho frakcni syntezou, musite ji vyradit, tj. zajistit podminku, kterou jsem uvedl v predchozim prispevku:
zdrojovy hodinovy kmitocet TIMERU [MHz] / 12 = cele cislo.
Napr. pri pomeru 7 (zdrojovy kmitocet TIMERu = 84 MHz), bude TIMER generovat sekvenci pulzu:
...0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0...
a PWM signal pri stride 1:1 bude vypadat napr. takto
...0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1...
=> signal bude mit fixni periodu 7 hodinovych cyklu 84 MHz (tj. kmitocet 12 MHz), ale se stridou 3:4 (nebo 4:3).
Pri pozadavku na stridu 1:1 se podminka zprisnuje na
zdrojovy hodinovy kmitocet TIMERU [MHz] / (2*12) = cele cislo,
takze by to chtelo hodiny napr. 72 MHz.

Re:Stabilita ESP8266
« Odpověď #87 kdy: 07. 02. 2020, 16:13:06 »
Moc pěkné, díky za objasnění. A lze ESP32 nastavit na takto libovolné hodiny?

Re:Stabilita ESP8266
« Odpověď #88 kdy: 07. 02. 2020, 17:31:20 »
Nejsem nejak detailne obeznamen s parametry interniho PLL v ESP32, ale tusim minimalne tyto dve moznosti:
1. Zmenit kmitocet externiho krystalu. Pro 12 MHz PWM by byl vhodny 24MHz Xtal, kmitocet APB lze pote stale nastavit na 80 MHz (pro Wi-Fi) a LEDC PWM hodiny prepnout na XTAL_CLK. Je na to i nejaka podpora v knihovnach.
2. Pouzit APLL_CLK primarne dedikovane pro Audio. Kmitoctovy rozsah APLL je relativne velky a pravdepodobne by bylo mozne z PWM dostat pozadovanych 12 MHz. Problem vsak vidim v tom, ze APB kmitocet jiz nebude 80 MHz -> odstavena Wi-Fi, a za urcitych podminek i jine hodnoty v delickach pro UART, SPI...

Re:Stabilita ESP8266
« Odpověď #89 kdy: 07. 02. 2020, 18:18:50 »
ESP32 podporuje 80/160/240MHz - a u 240 MHz by s dělitelností 12 nebo 24 neměl být problém.