Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   837 / 850
(#) pipi válasza KoblogPerGyok hozzászólására (») Márc 21, 2024 / 1
 
Megvolt elölről is meg hátulról is, keresztbe meg kasba dugtam én már mindenfelől
(#) majkimester válasza Sick-Bastard hozzászólására (») Márc 21, 2024 /
 
Egyenlő a sizeof(flash_esp_mqtt) és a sizeof(esp_mqtt) értéke?
(#) Sick-Bastard válasza majkimester hozzászólására (») Márc 21, 2024 /
 
hozzászólni most sem tudok hosszan...
A hozzászólás módosítva: Márc 21, 2024
(#) pipi válasza Sick-Bastard hozzászólására (») Márc 22, 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...
(#) majkimester válasza Sick-Bastard hozzászólására (») Márc 22, 2024 /
 
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).
(#) Skori válasza pipi hozzászólására (») Márc 22, 2024 /
 
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
(#) Sick-Bastard válasza majkimester hozzászólására (») 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.

  1. struct{
  2.   td_u16b_register mqtt_reg;
  3.   uint8_t mqtt_flags;
  4.   uint16_t mqtt_port;
  5.   uint8_t mqtt_device_count;
  6.   uint16_t rsvd;                          // empty
  7.   char mqtt_server_name[64];
  8. ...


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:
  1. struct{
  2.   td_u16b_register mqtt_reg;
  3.   uint16_t rsvd;                          // empty
  4.   uint8_t mqtt_flags;
  5.   uint16_t mqtt_port;
  6.   uint8_t mqtt_device_count;
  7.   char mqtt_server_name[64];
  8. ...

Ugyan az 202 mindkét értékre.

Teszt 3:
  1. String SimpleLoop()
  2. {
  3.   String result = "RAM == FLASH";
  4.   uint32_t i = 0;
  5.   uint8_t equal = 1;
  6.   for(; (i < sizeof(flash_esp_mqtt) && (equal == 1)); i++)
  7.   {
  8.     if(esp_mqtt.b[i] != pgm_read_byte(flash_esp_mqtt.b + i))
  9.     {
  10.       equal = 0;
  11.     }
  12.   }
  13.  
  14.   if(equal == 0)
  15.   {
  16.     result = "RAM != FLASH at " + String(i) + "address";
  17.   }
  18.   return(result);
  19. }

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
(#) Skori hozzászólása Márc 22, 2024 /
 
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.
(#) gaspa válasza pipi hozzászólására (») Márc 22, 2024 /
 
Próbálj meg nagyobb fogyasztót is rákötni,én lefeljebb 2 hét múlva jutok próbához.
(#) dB_Thunder válasza Skori hozzászólására (») Márc 22, 2024 /
 
Ebből mi lesz??
Idézet:
„PWM jelből szeretnék DC-t csinálni - ez megy is”

Mekkora hullámossággal??
(#) gaspa válasza antikzsolt hozzászólására (») Márc 22, 2024 /
 
[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.
(#) mateatek válasza Skori hozzászólására (») Márc 22, 2024 /
 
É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.
(#) mateatek válasza mateatek hozzászólására (») Márc 22, 2024 /
 
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.
(#) pipi válasza Skori hozzászólására (») Márc 22, 2024 /
 
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
(#) pipi válasza pipi hozzászólására (») Márc 22, 2024 /
 
Á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
(#) sdrlab válasza Skori hozzászólására (») Márc 22, 2024 / 1
 
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-é.
(#) vargham válasza Skori hozzászólására (») Márc 22, 2024 / 1
 
Már lehet. Kértem rá moderálást.
(#) mateatek válasza sdrlab hozzászólására (») Márc 22, 2024 /
 
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.
(#) asch válasza Skori hozzászólására (») Márc 22, 2024 /
 
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
(#) asch válasza andyka hozzászólására (») 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
(#) vargham válasza asch hozzászólására (») Márc 22, 2024 / 1
 
Idézet:
„a 32 bites ARM-eknél”

Az ESP nem ARM. Vagy Tensilica Xtensa vagy újabban RISC-V.
Cache az van bennük.
(#) Skori válasza dB_Thunder hozzászólására (») Márc 22, 2024 /
 
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.
(#) Skori válasza mateatek hozzászólására (») Márc 22, 2024 /
 
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
(#) Skori válasza pipi hozzászólására (») Márc 22, 2024 /
 
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.
(#) Skori válasza sdrlab hozzászólására (») Márc 22, 2024 /
 
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.
(#) Skori válasza asch hozzászólására (») Márc 22, 2024 /
 
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).
(#) mateatek válasza Skori hozzászólására (») Márc 22, 2024 /
 
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.
(#) KoblogPerGyok válasza Skori hozzászólására (») Márc 22, 2024 /
 
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?
(#) benjami válasza Skori hozzászólására (») Márc 22, 2024 / 1
 
Néhány stm32 típusban van úgynevezett nagyfelbontású timer (HRTIM). Ennek az órajele egy belső PLL-el a GHz tartományba van feltornázva. Lehet, hogy érdemes szétnézned tudod-e használni. Itt egy pdf róla.
(#) KoblogPerGyok válasza benjami hozzászólására (») Márc 22, 2024 /
 
Az igen!
Következő: »»   837 / 850
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem