Fórum témák
» Több friss téma |
webrádiót csinálnak esp32vel és ott még a wifiről leis kell fejteni a UDP csomagokban lévő adatokat és rátolni az DAC-ra és egyébb mást is kell csinálni, ott beleférnek az ESP sebességébe.
De lehet külső DAC vagy mp3 encoder van mellé rakva.(mélyebben nem lestem meg miként de van róla topic)
Ahogy látom, ez Arduino kód. Felejtsd el.
Igen, de a most és a micros() az nem a kiírások előtt és után vannak. Azok a tényleges mérendő proci időhöz tartoznak.
A LEDC orajele 80Mhz. A felbontastol fuggoen a maximalis elerheto PWM freki:
80000000/2^bit_num Vagyis 10 biten kb. 75kHz, 8 biten kb. 315kHz, stb. "ELMELETILEG" De talaltam egy ilyet. Hatha segit megerteni.
Tulajdonképpen mit akarsz ezzel a programmal megvalósítani?
Először számolni érdemes, hogy amit akarsz, az elméletileg lehetséges-e? Mindenekelőtt az adatlapból kell kiindulni. Péládul: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-ref...c.html Ez kell neked innen: "Outputting continuous analog signal by DMA. The DAC will convert the data in a buffer at a specified frequency." Tehát tud olyat, hogy beteszel mintákat egy pufferbe és DMA segítségével egy adott frekivel kitolja. Olvasd el, hogy milyen frekvenciára képes az adatlap szerint. Utána ha találsz hozzá megvalósítást, akkor az a nyerő, ha nem, akkor az adatlap alapján meg kell valósítani.
A szimulátorod a lassú!
Nekem valódi ESP32 Dev Modulal ezek az eredményeket kaptam: Idézet: „ 08:34:33.269 -> 240 08:34:33.315 -> Feltöltési idő micro sec: 43837 08:34:33.315 -> DAC-ra írás ideje micro sec: 60 08:34:33.315 -> Elérhető max frekvencia KHz: 500 08:34:33.315 -> PWM kitöltési tényezőjének 2x változása micro sec: 21 ” Ha kinagyítod a képet láthatod az arduino beállításokat. A hozzászólás módosítva: Máj 13, 2023
IRAM-ba raktam a rutinjaidat:
És az eredmény javult: Idézet: „ 09:21:18.056 -> 240 09:21:18.103 -> Feltöltési idő micro sec: 43838 09:21:18.103 -> DAC-ra írás ideje micro sec: 59 09:21:18.103 -> Elérhető max frekvencia KHz: 1000 09:21:18.103 -> PWM kitöltési tényezőjének 2x változása micro sec: 22 ”
Még a HW. amin futtatam: Bővebben: Link
Sziasztok mesterek!
Belemerültem nagyon egy modell számításba, meg le is robbantam 1-2 napra. Köszi a válaszokat, nagyon hasznosak, kipróbálom őket! A hozzászólás módosítva: Máj 14, 2023
Ezzel még semmit sem, csak tesztelem mit bír. A beépített DAC ezek szerint nekem nem elég. Tudom, hogy van beépített cos generátora, de pl nem tudom annak mekkora a frekije maximum, adott 8 bit felbontás mellet, időben pedig úgy, hogy egy periódusra 10 érték essen. A port írási sebessége éppen ezért lenne fontos, mert parallel DAC simán lehet ilyen gyors, ami nekem kell, az ESP tudná etetni. A portokat definiálhatnám úgy is, hogy 8bit + a DAC egyéb vezérlő lábai. A PWM-el való jétékot a korábbi tapasztalataimból tettem bele, mert azzal is lehet jelet előállítani.
De közben előállítottam egy algoritmust, ami a sin függvény tárolt elemeiből a frekit meghatározza a fázis viszonyokkal. Teljesen jól működik, most éppen a gyorsításán ügyködöm. Szerintem ez az ESP tudni fogja ezt, de kell egy parralel DAC. 400KHz lenne aza tempó, amivel etetni kellene a DAC-ot, de nem tisztán szinuszos jellel, ezért kell némi számítás is, aminek 2.5mikro sec alatt le kellene futnia. Ez nem kis teljesítmény azért. (egy összeadás és egy szorzás, majd ennek értéke ki a port-ra ennyi idő alatt.
Ok, a 400 tényleg az álom, de 200 mindenképpen kellene.
Nekem kerek 1MHz mért a port írásra, 100 adattal tesztelve!
Ez szerintem bőven felette van a vágyaidnak! És még a CORE0-ást nem is használtam! Nézd csak meg a Szo, 9:25 hozzá szólásomat!
Szeritem járható az út. Azért tesztelgetek, kérdezek, mert már több eszközt váároltem, jó lenne csökkenteni kiadásokat. Valaki kérdezte miért nem számolok. Hát éppen azt teszem, meg zimulálok is Proteus-ban, de épp Arduino és ESP-t nem tudok. Kifagy folyton...
A számolást úgy kell érteni, hogy el kellene olvasni az adott periféria adatlapját, és abban benne kell lennie, hogy milyen módon készül az órajel, hogyan működik a DAC kimenet, stb. Ebből ki kell derülnie, hogy mi a kimeneti oldal legnagyobb elérhető sebessége. Ez szerintem a te házi feladatod lenne megnézni. Persze ha volna valaki aki fejből tudná itt, az biztos beírta volna.
A másik oldalról pedig etetni kell adattal. Ki lehet indulni abból, hogy amilyen periféria be van építve azt képes kiszolgálni adattal a proci, első megközelítésben nem kell számolni, hanem elég ezt elhinni. De ha biztosra akarsz menni, akkor ezt is lehet számítással becsülni, hogy mennyire lesz képes a gép. A vezérlő néhánytíz megahertz környékén szokott ketyegni, általában néhány órajel egy érték kiírása, tehát bőven 1MHz felett kellene lenni a mintakiírás sebességének, nem lehet ez a szűk keresztmetszet. Linkeltem, hogy elvileg van DMA, ami még gyorsabb kell hogy legyen, mint mintánként programozottan etetni. A DMA adatlapjából ki kell derülnie, hogy mi a beállítható órajel.
Számolj az adatlap alapján.
Arduino-t felejtsd el, túl sokat lassít rajta.
Timer overflow flag
Én más okból de naponta egyszer lefuttatom. extern unsigned long timer0_millis; extern unsigned long timer0_overflow_count; void timer_reset(void) { //---------------------------------------------- timer_reset ---------------------------------------------- timer0_overflow_count = 0; timer0_millis = 0; //---------------------------------------------- timer_reset ---------------------------------------------- } Erre gondolsz?
Sziasztok Mesterek!
Arduinoban írok egy programot egy ESP8266 modulra. Egy webszervert futtatok ESP8266WebServer.h és LittleFS.h használatával. A feladat az lenne, hogy a settings.html állományt a fájlrendszerből kell küldeni a kliensnek. A gond az, hogy elég nagy az említett html. Extraként még küldés közben módosítani is kell a html-t. Eddigi próbálkozások: 1. Ez jó lenne, ha nem kellene módosítani az adatokat menet közben:
2. Ez jó ís kicsi méretű html adatoknál, sajnos jelenleg nem fér bele a page változóba a szükséges adatmennyiség:
3. Ez jó lenne, de nem küldi ki végig a settings.html fájlt (nem tudom miért). Ami érdekes, hogy teszt céljából serialra is küldöm ugyan azt amit a kliensnek és ott végig küldi az adatot:
nem sikerült a "\ n"-t a kódba írni a settings.readStringUntil függvényhez Próbáltam itt a témában visszakeresni az infót, mert mintha már lett volna erről szó régebben. Sajnos nem találtam meg az ide vonatkozó hozzászólásokat. Illetve a google sem volt a barátom, mert nagyjából ugyan ezeket a megoldásokat találtam csak. Mit csinálok rosszul? Hogyan lehetne megoldani a problémámat? Köszönöm!
Nem tudom, hogy segít-e, de SPIFFS "fáljrendszerrel" én csak így csinálnám:
Ha vannak változó részek, akkor azt meg az AJAX technikával oldanám meg. Ennek az oldalnak a legalján az utolsó két előadásban foglalkoztam hasonlókkal. Van előadásvázlat, mintapélda és videó is. Az utolsó előadásból a ESP8266_WS_bme280_SPIFFS.ino mintapéldát ajánlom megtekintésre. Az egyszerűbb (JSON nélküli) AJAX technika ismertetése pedig az utolsóelőtti előadás végén található. Amit nem tudok, hogy mekkora a legnagyobb fájl, amivel még működik, mert én csak nyúlfarknyi programokkal próbáltam. A hozzászólás módosítva: Máj 22, 2023
Ilyesmibe én is belefutottam, úgy érzem kinőttem a 8266-ot, gyorsan váltottam ESP32-re, nem bántam meg, stabilabbnak tűnik, és hegyekben áll a flash meg a ram, a 8266-hoz képest.
Köszönöm a segítő szándékot.
Az SPIFFS helyett ma már inkább a LittleFS használata a javasolt. Szerencsére nem túl nehéz az átállás és a programok átírása. Ugyan azok a függvények vannak a LittleFS-nél is. Egyedül talán az Arduino IDE átszabása volt valamilyen szinten problémás nálam, de már erre is vannak jó leírások a neten. Ezeket az előadásokat már nézegettem régebben is. Nagyon jól összeszedett és hasznos tananyag. Köszönjük! Terjedelmi okokból nem raktam ki az egész kódot a kérdésemnêl, de hasonló módon vannak megoldva a programban lévő változók értékeinek kiírása és frissítése kliens böngészőben. A kérdésem nem igazán erről szólt, csak nem voltam egészen egyértelmű. Amikor küldöm a settings.html fájlt, akkor az ott található szövegbeviteli mezők, listák alapértelmezett értékeit/feltöltését szeretném elvégezni a programban. Ezeket a html részleteket kell kicserélni küldés közben. Ez nem megy. Illetve megy a serialra de nem a kliensek. Ott egy idő után megszakad az adatküldes és félbe marad a html oldal.
Ez a küldés közbeni cserebere szerintem kicsit átláthatatlanabbá teszi a kódot ... Tisztább szárazabb érzés, ha dinamikus a weboldal.
Ahonnan én indultam ESP8266-al (https://www.john-lassen.de/en/projects/esp-8266-arduino-ide-webconfig) sajnos már megszűnt, de itt az 5.oldalon van a https://www.esp8266.com/viewtopic.php?f=29&t=4060&start=16 ESP_WebConfig_Master.zip meg a további oldalakon(9) (irrigation1..5.zip) Az biztos hogy át kell rágni kicsit a kódot, de könnyen megérthető a mikroajax hogyan tölti ki a weboldalt "utólag". Amit ebből barkácsoltam, utána nem volt nagy cucc áttenni esp32-re sem. Webszerkesztővel szépen megszerkeszthető a html, utána mehet egy konstans stringbe, vagy akárhová.... Szerintem.... A John-ra rákeresve: Találtam egy yt videót: https://www.youtube.com/watch?v=3lBCmOHnF3w Sokan felhasználták: https://www.instructables.com/Desktop-Ring-Clock/ https://github.com/ancalex/Desktop_Ring_Clock https://github.com/thunderace/ESP_WebConfig A hozzászólás módosítva: Máj 22, 2023
Köszönöm, megnézem a linkelt oldalakat. Elsőre nem tűnik egyszerűnek...
De szerintem megéri rászánni az időt. A minta programban sokféle html "mező" megtalálható, amiket ki tud tölteni, arról nem is beszélve, hogy akár (időzítve) változó cuccot is meg tud jeleníteni...
Az hogy egy progi a html-t majd hogy soronként küldi egyesével, meg közben berakja a megjelenítendó adatot, igencsak macerás feldarabolni a html fájlt, beírogatni a kismillió küldést, egy párs soros weboldalnál, mintában elmegy, de komolyabb weboldalnál..... pl rossz ránézni, a gyári mintára: \hardware\esp8266com\esp8266\libraries\ESP8266WebServer\examples\HelloServer\HelloServer.ino szerintem...
Végül sikerült az eredeti elképzelés szerint megoldani a soronkénti küldést.
A működő kódrészlet a következő lett:
Persze az általad javasolt megoldást is vizsgálom még és alkalmazni fogom a későbbiekben, de ez már így fog maradni. Köszönöm a segítséget!
Sikerült az eredeti elgondolás szerint megoldani.
Ez természetesen nem feltétlenül a legszebb megoldás, de működik. A tananyagot mégegyszer köszönöm szépen, továbbra is hasznos.
Üdv!
Megjött az ESP32s, amivel játszhatok is. Feltettem az Arduino IDE 2.01-vagy melyik változatot. El sem indult a rendszer, mert nem volt USB driver. Letöltöttem egyet, felismeri, minden ok-nak tűnik de: Idézet: „A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode. For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html Failed uploading: uploading error: exit status 2” Azt tudom, hogy letöltési módban kell lennie, meg valamelyik gombot nyomni kellene, de nem tudom melyiket, illetve nem is szeretném. Van erre megoldás? Másik driver kellene? Win 10 64 bit,Arduino IDE 2.1.0, Driver: Bővebben: Link És onnan a: CP210x Windows Drivers v6.7.6 9/3/2020 lett letöltve. Köszönöm! A hozzászólás módosítva: Jún 5, 2023
Az előző hozzászolásomnál az ESP32S-re klikkelve előjön amit rendeltem innen. Az Arduino IDE-ben pontosan melyik Board-ot kell kiválasztanom? Mert a Chipen wroom is szerepel.
Köszönöm!
Szerintem ez alapján el tudsz indulni: Bővebben: Link
Nem olyan vészes azt a két gombot megnyomni mielőtt elindítod a feltöltést, kis gyakorlattal menni fog! |
Bejelentkezés
Hirdetés |