Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Megvolt elölről is meg hátulról is, keresztbe meg kasba dugtam én már mindenfelől
Egyenlő a sizeof(flash_esp_mqtt) és a sizeof(esp_mqtt) értéke?
hozzászólni most sem tudok hosszan...
A hozzászólás módosítva: Márc 21, 2024
Azért nem tudsz hozzászólni, mert az "un_ion" szóra (aláhúzás nélkül) fúj a fórum motorja, írd így aláhúzással a közepén...
A struct maga nem foglal helyet.
A flash 32 bitenként (4 byte-onként) írható, a fordító mindig igazítja a struct kezdetét 4 byte-os határra. Ugyanígy a structban lévő adatot is igazíthatja határra, például szerintem az első 64 byte-os tömböt is 4 byte határra teszi, ezért az előtte lévő 6 byte valójában 8 byte helyet foglal. A ramnál nincs ilyen megkötés, ezért ott nem feltétlen ugyanígy helyezkedik el a struct. Írasd ki a sizeof(flash_esp_mqtt) és a sizeof(esp_mqtt) értékét is. Kíváncsi vagyok azonos-e. A sizeof(flash_esp_mqtt) == 200, de mennyi a sizeof(esp_mqtt).
Tényleg nem lehet leírni, hogy union?
szerk: Próbáltam, tényleg... micsoda marhaság, hiszen pl. arduino-ban is használt kulcsszó. A hozzászólás módosítva: Márc 22, 2024
Tegnapi felállás szerint:
sizeof(flash_esp_mqtt) és sizeof(esp_mqtt) is 200-at kapok. Módosítások: Teszt 1. Beraktam reserved (rsvd) változókat, hogy 4-el osztható "tömböket" kapjak.
Ekkor: sizeof(flash_esp_mqtt) és sizeof(esp_mqtt) is 202-őt kapok. Teszt 2: Mivel az első változó is egy typedef ezért kipróbáltam hátha alá helyezve mást kapok:
Ugyan az 202 mindkét értékre. Teszt 3:
Eredménye: Idézet: „RAM == FLASH” További info: Ha mindent csak RAMban tárolok, akkor az MQTT elindul, de! Ha már fut és a HTTP felületen ismét elindítom, engedélyez/fut checkbox pipálva és a Save (submit)-re kattintok, akkor ESP rebootol. Akkor is, ha előtte leállítom, checkbox kivesz majd save, nincs reboot, de ha ismét bekapcsolom, akkor ESP reboot jön. Amik eddig az ESP8266-ban vannak: OTA TWI - MCP23017 RTC - belső interrupton fut egy saját egyszerű UDP csatorna WiFi Multi WiFiAP HTTP Web felület HTTPs OTA HTTPs MCP23017 kezelőfelület MDNS LLMNR DDNS NTP MQTT - HomeAssistant SB
PWM jelből szeretnék DC-t csinálni - ez megy is, azonban jó lenne 16 bitnél nagyobb felbontás: 18...20 bit. Ha az MCU-ban csak 16 bites timerek vannak, akkor van-e valamilyen egyszerű megoldás, akár hardveres (pl. kapukkal, tárolókkal, stb..), hogy mondjuk 2db 16bit felbontású PWM jelből legyen egy nagyobb felbontású? Nyilván a legegyszerűbb lenne olyan MCU amiben van 32 bites timer... de hátha van más megoldás is.
Próbálj meg nagyobb fogyasztót is rákötni,én lefeljebb 2 hét múlva jutok próbához.
Ebből mi lesz??
Idézet: „PWM jelből szeretnék DC-t csinálni - ez megy is” Mekkora hullámossággal??
[off][/off]Mivel nem ide való,csak röviden,van egy 10 m3-es víz tartályom,ezzel fogok kísérletezni.A nyári felesleggel lehetne ősszel, tél elején rásegíteni fűtésre.Talán kellene egy ilyen topik,a 10 év gyorsan fogy,hamar lesznek érdeklődők.
Én úgy csinálnám, hogy 2 darab 16 bites timert használnék a célra. Az egyik menne az alap frekin, ami a 16 bites jelet szolgáltatná. A másik timer (akár 8 bites is lehet), fele akkora frekin, de 50%-os kitöltési tényezővel. Ezekből összekapuznám. A 16 bites timernek minden második periódusát kapuznám csak be. Így, ha elszámol a végéig, akkor van a "felénél" Majd ezután a kihagyott periódus helyébe bekapuzom a lassabb timer 50%-át és a 16 bites megint kezdi az elejéről.
Talán érthetően írtam.
Sőt, a 16 bitig számlálónak minden negyedik periódusát használod, a masik timer annak a frekinek a negyedével ketyeg és a kihagyott periódusok helyére bekapuzod a hiány 25, 50 és 75 százalékát.
Ha jól éretelmezem az esp32-ben 64 bites timer van
https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32/api-refer...r.html Szeretem ezt a procit
Átviszem a jsy-mk-194 árammérős témát, inkább ide való
https://www.hobbielektronika.hu/forum/topic_post_2603974.html#2603974
Egyik PWM megy alaphangon, 16 biten. Másik PWM megy a maradék bit felbontással. A második PWM párhuzamosan az első ellenállásával, ugyanarra a kondira dolgozik, de 64kx akkora értékkel, mint az első PWM-é.
Ennél a megoldásnál csak az a nehéz, hogy olyan precíz ellenállás kell, hogy ez miatt a beállítása körülményes lehet. Talán, még a két ellenállás különböző hőfok függése is beleszólhat.
Ha több bites a számlálód, akkor a periódusidő is növekszik ugyanazon számlálási gyorsaság mellett. Például az ATMegás Arduino UNO 16MHz órával megy, nem állítunk be osztót, akkor ha a 16 bitet hagyjuk végigpörögni, akkor kb 244 periódus (16000000/65536) fér bele egy másodpercbe. Ha még tovább számolna a számláló, akkor még hosszabb lenne a periódus? Biztosan ezt akarod?
A felbontást nem lehet az alap órajelnél kisebb lépésben állítani. Azt a lépést pedig el lehet érni, illetve minden periódusban új értéket is be lehet állítani, ha a periódus hosszabb mint egy interrupt futás ideje. Több órát kombinálni szerintem nem sok értelme van, nem is értem mire lenne jó. A hozzászólás módosítva: Márc 22, 2024
>Mennyi időt is vesz fel egy pin lekapcsolása HIGH-röl LOW-ra az ESP32-nél ?
Mérni kell. Lehet becsülni az ASM kód+órajel+utasításkészlet alapján, de a 32 bites ARM-eknél már van cache is, ami miatt az utasítások futásideje sem állandó. Szóval a becslés nem lesz pontos. (Ellentétben a 8 bites MCU-kkal ahol ki lehet számolni a futásidőt pontosan.) A cache miatt a mért értéknek is lesz szórása, plusz számolni kell azzal is, hogy ha egyszerre történek az interruptok akkor egymást is lassítják. A triak doksijából ki kell, hogy derüljön mikorra kell legkésőbb a jel. Vagy ezt is mérni kell (próbálgatással megkeresni a határt például), és a mért értékhez adni egy biztonsági tartalékot. Azzal is számolni kell még, hogy ha a periódusidő kicsit rövidül, akkor is jól működjön. (Ezt szabványok specifikálják szerintem.) Tehát kell egy kis biztonsági tartalék idő ebből sok okból összeadva. De ez összesen se lesz sok, nem sokat fog rontani a teljesítmény vezérlésen, pláne, hogy a hullám kisebb feszültségű részére esik a hiba. Én úgy csinálnám, hogy folyamatosan mérném a periódusidőket és a fázisok egymáshoz képesti időzítését, és ha valami nem stimmel egy határértéken túl, akkor leállítanám az összes kimenetet a biztonság kedvéért. A hozzászólás módosítva: Márc 22, 2024
Idézet: „a 32 bites ARM-eknél” Az ESP nem ARM. Vagy Tensilica Xtensa vagy újabban RISC-V. Cache az van bennük.
Labortáp D/A konvertereinek kiváltásával próbálkozunk. Szimulátorban 1kHz-es PWM esetén 0,2µVpp alatti volt a hullámosság, és 50msec körüli beállási idő 1µV-on belülre. A gyakorlatban valamivel rosszabbak a paraméterei (pl. az opamp zaja nagyobb), de már tervezem a módosított verziót, ami remélem jobb lesz.
Felmerült hasonló, csak szoftveresen: a periódusok végén irq, és két érték között váltogatja a kitöltési tényezőt. Az első megoldásod egyszerű, de csak +1 bitet jelent. A második érdekesebb, lehet hogy megpróbálom lemodellezni, hogy működne
Igen vannak olyan procik amelyekben van jobb timer, meg vannak nagyon-nagyon olcsó, de megbízható procik 16 bites timerrel Lehet, hogy ilyesmi kompromisszum lesz, van "jelölt" másik procira is, 32 bites timerrel.
Igen ez a lehetőség is felmerül, itt az ellenállások pontosságán múlik, hogy mennyire lesz jó a végeredmény.
Bluepill (STM32), vagy más, ennél olcsóbb, de magasabb órajelű proci használatán, gondolkozunk. Pl. 64MHz clock, és 16bit esetén 1kHz körül PWM-et lehet csinálni, 18 bitnél negyede lenne a freki, hacsak nem egy gyorsabb procit használunk fel. De még 250Hz PWM esetén is beállna a szűrő kimenete kb. 200msec alatt, ami ugyan nem túl gyors, de még elfogadható (mivel a mérés sem gyorsabb ennél).
Nem használnék megszakítást. A megszakításba nem fog mindig ugyanannyi idő alatt kilépni, és az a hiba észrevehető lenne. 4053-as kapcsolóval összedrótoznám. A DAC-hoz amúgy is referencia fesz kell és ez miatt elodázhatatlan az analóg kapcsoló. Szerintem.
Néztem pár procit, de felmerült bennem valami. Amikor én PWM-el operáltam, akkor a felbontás jelentsen csökkent a PWM frekvenciájával. Nálad ez nem játszik? Azaz mekkora az alap frekvenciája a PWM-nek, mekkora az óra freki, és az mellett kell még 18-20 bit felbontás? Elérhető ez?
Az igen!
|
Bejelentkezés
Hirdetés |