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   838 / 838
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Márc 22, 2024 /
 
Ok, látom már leírtad.
(#) vargham válasza benjami hozzászólására (») Márc 22, 2024 / 2
 
Attiny85-ben is van belső 64 MHz órajel a PWM-nek.
(#) sdrlab válasza Skori hozzászólására (») Márc 22, 2024 /
 
Annyira nagy szórástól nem kell szerintem tartani! A segéd PWM ráadásul simán skálázható, így az ellenállás konkrét értékéhez jusztólható szoftveresen is...
Cserébe bármelyik procin megy alapfrekvencián a 2x akkora felbontás, amiben van 2 PWM erre a célra!
(#) cua válasza Skori hozzászólására (») Szo, 0:40 /
 
Pontosan mi a problema a gyari D/A konverterekkel? Milyen feltetelnek/elvarasnak nem felelnek meg? Csak kivancsi vagyok mi miatt eri megennyi energiat es plusz fejlesztest belerakni
(#) Skori válasza cua hozzászólására (») Szo, 8:34 /
 
Jelenleg egy gyári 16bites D/A van benne, +1 bittel kiegészítve (arányos ellenállásokkal). Arra jutottunk, hogy a labortáp kimenetén jelen levő alacsony frekvenciás zajt (1..2mV) ez a D/A okozza... Viszont a tesztként bekötött PWM-es megoldással, és 6,5 digites multiméterrel mérve a táp kimenetet a 100µV-os érték stabilan állt.
(#) Skori válasza benjami hozzászólására (») Szo, 8:34 /
 
Köszi, nézem..
(#) Skori válasza sdrlab hozzászólására (») Szo, 8:35 /
 
Lehet, hogy ez lesz, de kíváncsi vagyok a lehetséges alternatívákra.
(#) cua válasza Skori hozzászólására (») Szo, 9:20 /
 
Milyen D/A-at hasznaltok?
Tavaly en jatszottam 12 es 16 bitessel is. A Microchip 12 bitesnel mondjuk nem is a felbontas volt a lenyeg hanem a nyolc kimenet (oreg, nagyon ritka, Digivisor Mark 2 analog kijelzot vezerelt)
Viszont a 16 bites LTC1655 az egesz jol muzsikalt. Zajra kihegyezve nem mertem, de nem is nagyon lattam a szkopon (Egy keszulo muterhelesben probalgattam, a zaj meg nem volt kerdes ebben a fazisban)
Az arakra nem emlekszem, az LT talan nem a legolcsobb valtozat.
(#) majkimester válasza Sick-Bastard hozzászólására (») Szo, 10:13 /
 
Akkor lehet, hogy csak a 8 bites adatokat igazítja 16 bites határra, de ezt egyformán teszi mindkét esetben, szóval ez rendben van. Az újraindulás viszont gyanus, esetleg nem elég nagy a stack mérete?
(#) Skori válasza cua hozzászólására (») Szo, 14:37 /
 
DAC8552 van benne.
(#) cua válasza Skori hozzászólására (») Szo, 20:17 /
 
Az adatlapja eleg alacsony zajt iger. Azt irtad, hogy alacsony frekije volt a zajnak, ez mit jelent ?
(#) Skori válasza cua hozzászólására (») Szo, 21:08 /
 
Néhány Hz-es tartomány lehet, gyakorlatilag a multiméteren nézve imbolyog 1...2 mV-ot a táp kimenő feszültsége. Először azt hittük hogy a táp hibája, de kiderült, hogy a D/A ból jön...
(#) cua válasza Skori hozzászólására (») Szo, 21:41 /
 
Ez egy eleg erdekes problemanak latszik, kivancsi vagyok sikerul-e megoldanotok. A 100uV azert eleg ambiciozus es szep eredemeny lenne. Az R&S tapom (HMP2030) is billeg neha 1mV-on.
(#) Sick-Bastard válasza majkimester hozzászólására (») Vas, 10:00 /
 
Úgy néz ki, hogy igen. 8ról 16 bitesig igazit.
Az MQTT typeefben 2db uint8_t változó van, a DDNS-ben meg csak 1, és ott csak 1-el több byte-ot foglal a kiszámítotthoz képest.

A stack méretét, hol ellenőrizhetem/módosíthatom?

Teszt:
Az eszközök fülön, az MMU-t 32/32(balanced)ről 16/48(IRAM)-ra állítva nincs változás.

Amit épp "javítok":
Egész sok Serial.print()-eket használok, ezeket cserélem Serial.println( F("")); és Serial.printf_P( PSTR(""),);-ekre ezzel a ╠══ RODATA xxxxx constants-okat csökkentve.

Hogy ezzel pontosan mit teszek nem tudom, csak dióhéjban, úgy gondolom, hogy RAM-ból rakok át adatot, amik konstansok (text/string) és mennek a Flash-be. Igaz valamivel lassabb a kód, de egy-egy String-et Serialon kiírni pár másodpercenként vagy akár csak percenként bőven megéri.

Jelenlegi memória (RAM/FLASH) használat:
. Variables and constants in RAM (global, static), used 55144 / 80192 bytes (68%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 2704 initialized variables
╠══ RODATA 21176 constants
╚══ BSS 31264 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 45679 / 65536 bytes (69%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 16384 reserved space for flash instruction cache
╚══ IRAM 29295 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 370480 / 1048576 bytes (35%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 370480 code in flash

SB
(#) andyka hozzászólása Vas, 15:15 /
 
Sziasztok
Ma, volt időm probálgatni a triak vezérlést, egyelőre müködik is
Ha valaki érdekelt a témába és tökéletesítené, az jól jönne
Ime a kódók
MeLYiket ajáljátok használni ?
A hozzászólás módosítva: Vas, 19:28
Moderátor által szerkesztve
(#) majkimester válasza Sick-Bastard hozzászólására (») Vas, 15:18 /
 
Szia, ahogy látom a stack mérete itt fix 4k, azt nem tudod növelni, viszont a konfigurációban be lehet kapcsolni a stack protection-t, ami stack overflow esetén exception-t generál. Az exception-ből kiderül, hogy a stack volt kevés.

De ha már exception, megnéztem az első üzenetedben lévő exception-t és annak a oka :
9 = Unaligned read/write operation addresses
excvaddr=0x00000001

Ennek értelmezésében a Tools / ESP Exception Decoder segíthet, hogy a melyik kódrészlet végrehajtása során keletkezett az exception.
(#) Skori válasza cua hozzászólására (») Vas, 20:45 /
 
Ezt a procit nézegettük: STM32H503.
250MHz-en megy, van benne 32 bites timer, és az ára sem horribilis.
Ezzel 18 biten kb. 1kHz, 19 biten kb. 500Hz lenne a PWM frekvencia. Ez utóbbi elvileg kb. 0,25mV körüli lépéseket tenne lehetővé a 120V kimenő feszültségig. Persze lehet, hogy a gyakorlatban nem, de majd kiderül.
(#) cua válasza Skori hozzászólására (») Vas, 21:53 /
 
Mar regebben is nezegetem ezt a tap projectet, amin dolgoztok, mar az eddigi eredemeny is kivalo.
Ezert mondtam, hogy ambiciozus a terv, 120V-os max kimeno mellett az a felbontas nagyon szep lenne.
(#) Sick-Bastard válasza majkimester hozzászólására (») Hé, 9:22 /
 
A tegnapom ráment a Serial.print()-ek módosítására.
Ezen felül sok HTML oldalt, oldal részletet, tudtam Flash-be lementeni...

A végeredmény... WTF?

Első érdekesség ami feltűnt induláskor a Serial terminálban, hogy a 3.dik NTP szerver neve helyett, ami amúgy is üresen szerepel, azt írta ki, hogy: ESP8266HTTPClient

Cntrl+F keresés az összes fülön, de sehol semmi. Ezt a text-et nem irtam be sehova, szóval ez is honnan jön?
Most már a Webes felület nem nagyon megy, hacsak a Flash-ből vissza nem rakom a RAM-ba.
Pedig már megpróbálkoztam a Serial.print()ek kikommentelésével is (kb 80%), de semmi.
Sőt, már olykor a Serial is krix-kraxokat is kiköp, de nem csak 1-1 string/text között, hanem szövegen belül...

Idézet:
„2 networks found:
00: [CH 06] [Én töröltem ki] -90eBm * V 802.11b/g/nH�� �K��&{R� a01: [�H 50_ [Én töröltem ki] -37dBm * V 802�11b/g�
���$�(�%�IPV����$닁�������)
�����ѥ�

mDNS respo�YY.�.W�ѽ�5)�LLMNR responder started for: ESP82��00
���-�
�����ѥ���5)���Q���=��͕������jR���}����ѕ}����rval: 3600000
startNtPFoo() has Started�RBEEڹ�.W�.WVH�H�OTA Ready
Init_HW_Timer0() I�ѥ���镑5)�D5� ds362��E����MՍ���́��Ɂ�����]��ṑ��͹���5)J�����L���r���r�ʢjR�Epoch Time: 171��ӓ'�O�Curren]HQX]�H&�.25 1 9:1:20:835
Current DateTime: 2024.03.25 1 09:01:20:836
Scanning...
I2C devڬ�֫����с���ɕ�́����
jR�done

ESP8266 Compiled: Mar 25 2024 08:42:04”



Most két dologra tippelek.
1. ESP8266 flash kezdi megadni magát...
2. Compiler hiba.

Az Flash-re azért gyanakszom, mert ezt az ESP-t nyúzóm amióta megvan (2-3éve), most kezdtem el az EEPROM könyvtárat is használni és lehet, hogy nem csak 1-2x futott le a EEPROM.commit(); parancs.
Megnézem másik ESP-vel hátha...

SB
(#) majkimester válasza Sick-Bastard hozzászólására (») Hé, 10:48 /
 
A ESP8266HTTPClient text szerepel ITT:

  1. static const char defaultUserAgentPstr[] PROGMEM = "ESP8266HTTPClient";
  2. const String HTTPClient::defaultUserAgent = defaultUserAgentPstr;


Innen jön valószinüleg, de hogy kerül oda.

ESP-n a PGM_P és PGM_VOID_P sima typedef:

  1. #define PGM_P       const char *
  2. #define PGM_VOID_P  const void *


Emiatt amikor egy _P végű függvényt felhívsz, nincs fordításkor ellenőrizve, hogy ott valójában flashre vagy ramra mutat a pointer, de nyílván csak a megfelelővel működik.

Végig kellene nézned, hogy mindenhol korrekt a paraméter, azaz a megfelelő helyen használod a flash változókat.
(#) Sick-Bastard válasza majkimester hozzászólására (») Hé, 16:06 /
 
Erre megvan a válasz...
  1. Serial.print(F("ntp_server_name1 :")); Serial.println(ntp_server[0]);
  2.   Serial.print(F("ntp_server_name2 :")); Serial.println(ntp_server[1]);
  3.   Serial.print(F("ntp_server_name3 :")); Serial.println(ntp_server[3]);


Szimplán idióta vagyok... 3-mat írtam be 2 helyett a tömbbe...

Ez megoldva.
Viszont a weboldalak flashből egyáltalán nem mennek. Pedig tegnap még jók voltak.

Visszaraktam mindent a RAM-ba és most megy. Persze az MQTT hiba is még fennáll, ami miatt kezdtem bele a Flash használatába.

Én igy olvastam be az adatokat:
  1. static const char FlashStr_LogIn_Page[] PROGMEM =
  2.   R"(
  3.  Please LogIn to your device to get Access to it's functions.
  4.  If you forgot your UserName/Password, then you need to Reset the device to Factory settings.
  5.  <form method='POST' action='/login'>
  6.  <label for='usrnm'>User Name:</label>
  7.  <input type='text' id='usrnm' name='USERNAME' placeholder='user name'><br><br>
  8.  <label for='pwrd'>Password:</label>
  9.  <input id='pwrd' type='password' name='PASSWORD' placeholder='password'><br><br>
  10.  <input type='submit' name='SUBMIT' value='LogIn'>
  11.  </form>
  12.  You also can go <a href='/inline'>here</a>
  13.  )";
  14.  
  15. String HTTP_LOGIN_Form(String str)
  16. {
  17.   // Debug Line
  18.   Serial.println(F("HTTP_LOGIN_Form() start"));
  19.  
  20.   #if WEB_CODE_FROM_FLASH & LOGIN_PAGE_FROM_FLASH               // Ha Flashből olvasom
  21.   str += FlashStr_LogIn_Page;
  22.   #else                                                                                                 // Ha RAMból olvasom
  23.   str += "Please LogIn to your device to get Access to it's functions.
  24.  If you forgot your UserName/Password, then you need to Reset the device to Factory settings.
  25.  <form method='POST' action='/login'>
  26.  <label for=\"usrnm\">User Name:</label>
  27.  <input type=\"text\" id=\"usrnm\" name='USERNAME' placeholder='user name'><br><br>
  28.  <label for=\"pwrd\">Password:</label>
  29.  <input id=\"pwrd\" type='password' name='PASSWORD' placeholder='password'><br><br>
  30.  <input type=\"submit\" name='SUBMIT' value='LogIn'></form>
  31.  You also can go <a href='/inline'>here</a>";
  32.   #endif
  33.  
  34.   return(str);
  35. }
  36.  
  37. // Használat közben
  38. ...
  39. else if(page_sel == HOME_PAGE)
  40. {
  41.   http_string = HTTP_HOME_Page(http_string);
  42.   // Igy is próbáltam
  43.   //http_string += FlashStr_LogIn_Page;
  44. }
  45. ...


A Serial.printf_P()-eket megy így helyettesítettem, ahol lehetett:

  1. Serial.printf_P( PSTR("ESP8266 Compiled: %s"), compile_date);
  2. Serial.print(F("ESP8266 Compiled: %s")); Serial.println(compile_date);


SB
(#) majkimester válasza Sick-Bastard hozzászólására (») Hé, 17:53 /
 
Ez így biztosan nem jó:

  1. str += FlashStr_LogIn_Page;

Honnan tudná szerencsétlen fordító, hogy a flash-ből kellene kiolvasnia. Kap egy char* pointert amivel a flash helyett a RAM azonos címéről ad hozzá valamit, amit ott talál. Ez kellene:
  1. str += FPSTR(FlashStr_LogIn_Page);


vagy ez

  1. str.concat(FPSTR(FlashStr_LogIn_Page));
(#) Rober_4 hozzászólása Sze, 8:32 /
 
Sziasztok!

Az Legacy Arduino IDE 1.8.19 alá szeretnék valamilyen dark témát feltenni, mert nagyon bántó a világos szín. Sajnos nekem az többszöri nekifutásra sem sikerült. Próbálkoztam a "Appdata" könyvtárba is tenni a témát, illetve a ProgramFiles(x86)-ba, az eredmény mindig az volt, hogy az egész IDE-t újra kellett húznom, és újratelepíteni az összes bővítményt, mert sérültnek mondta a fájlokat. Ezt már negyedik alkalommal tettem meg. Van valakinek ötlete, ahhoz, hogyan tudnám mégis sötétté tenni az IDE-t, úgy, hogy ne kelljen pilóta vizsgát sem tennem közben? (Már arra is gondoltam, hogy invertálom a színeket a monitoron valahogy...)
Segítségeteket köszönöm!
A hozzászólás módosítva: Sze, 8:34
(#) lalca válasza Rober_4 hozzászólására (») Sze, 9:52 / 1
 
Gugli "arduino theme", pl. Bővebben: Link
(#) Rober_4 válasza lalca hozzászólására (») Sze, 11:04 /
 
Elvileg akkor a documents könyvtárba kell egy arduino könyvtárat létrehoznom és ott megtalálja? Kipróbálom hátha így.
(#) pipi válasza Rober_4 hozzászólására (») Sze, 11:25 /
 
Szerintem nézz utána hogyan kell portable módba telepíteni az arduinót, akkor egyszerre több egymástól független verzó is lehet telepítve, nálam pl a c: meghajtón ezek az arduinók vannak feltéve:
c:\Arduino167\
c:\Arduino169_230\
c:\Arduino184_ESP32_\
c:\Arduino185_8266_241\
c:\Arduino185_8266_242\
c:\Arduino185_8266_old\
c:\Arduino185_ESP32_ANET\
c:\Arduino188_8266_263\
c:\Arduino188_ESP32\
c:\Arduino188_ESP32_20200126\
c:\Arduino18p13_8266_202101\
c:\arduino18p13_ESP32_20200531\
c:\Arduino18p13_ESP32_202101\
c:\Arduino18p15_ANET\
c:\Arduino18p15_ESP32_202112\
c:\Arduino18p15_ESP32_20220224\
c:\Arduino18p15_ESP32_20220224_lcd\
c:\Arduino18p15_STM32\
c:\Arduino18p19_8266_202303\
c:\Arduino18p19_ESP32_202305\
c:\Arduino18p19_ESP32_20230905\
A projektjeimbe meg mindig beleírom melyik verzióval lett fordítva.
Ezek a könyvtárak sima másolással archiválhatók, visszatölthetők az összes libraryjával sallangjával együtt. Egyszerűbb egy ilyenen kisérletezni...
Sajnos az arduino2*-ba tudtommal még nem csinálták meg a normális portable változatot
Egy macera van az .ino fájlon "nem illik" kattogni, mert ugye csak egy arduino verzió rendelhető hozzá, javasolt a megfelelő arduino exe verzió parancsikonját tenni a project mappába...
A hozzászólás módosítva: Sze, 11:27
(#) Sick-Bastard válasza majkimester hozzászólására (») Sze, 11:42 /
 
Köszönöm szépen a javaslatokat! Így már megy a Flash-ből való betöltés.
Ami furcsa, hogy az én (nem jó) kódom is ment egy darabig, azért sem gondoltam, hogy hibás lenne.

A másik Flash-el kapcsolatos problémámra. Default változók Flash-ből RAM-ba betöltése.


  1. // Hibás megoldás:
  2. td_mqtt_vars esp_mqtt;
  3.  
  4. const td_mqtt_vars flash_esp_mqtt PROGMEM = {
  5.   {
  6.   {},
  7.   //0,
  8.   USER_PREDEF_MQTT_FLAGS,
  9.   USER_PREDEF_MQTT_PORT,
  10.   USER_PREDEF_MQTT_DEVICE_COUNT,
  11.   USER_PREDEF_MQTT_SERVER_NAME,
  12.   USER_PREDEF_MQTT_USER_NAME,
  13.   USER_PREDEF_MQTT_PASSWORD,
  14.   },
  15. };
  16.  
  17. // A RAM változó inicializálása megoldotta
  18. td_mqtt_vars esp_mqtt = {
  19.   {
  20.   {},
  21.   //0,
  22.   USER_PREDEF_MQTT_FLAGS,
  23.   USER_PREDEF_MQTT_PORT,
  24.   USER_PREDEF_MQTT_DEVICE_COUNT,
  25.   USER_PREDEF_MQTT_SERVER_NAME,
  26.   USER_PREDEF_MQTT_USER_NAME,
  27.   USER_PREDEF_MQTT_PASSWORD,
  28.   },
  29. };
  30.  
  31. const td_mqtt_vars flash_esp_mqtt PROGMEM = {
  32.   {
  33.   {},
  34.   //0,
  35.   USER_PREDEF_MQTT_FLAGS,
  36.   USER_PREDEF_MQTT_PORT,
  37.   USER_PREDEF_MQTT_DEVICE_COUNT,
  38.   USER_PREDEF_MQTT_SERVER_NAME,
  39.   USER_PREDEF_MQTT_USER_NAME,
  40.   USER_PREDEF_MQTT_PASSWORD,
  41.   },
  42. };


Viszont még az MQTT csak 1x tud elindulni... Ha egy úja indítássá (ReInit)-el próbálkozom, akkor az ESP rebootol.

Ezért bekapcsoltam a ArduinoHADefines.h könyvtárban a #define ARDUINOHA_DEBUG -ot.

Így megkapom induláskor ezt Serial-ban:
Idézet:
„AHA: init server tesztnet.ddns.net:1883
mqtt_flags: 7 // saját dedug
MQTT is Inited // saját dedug
AHA: MQTT state changed to -5, previous state: -1
AHA: MQTT connecting, client ID: XXXXXXXXXX
AHA: MQTT state changed to 0, previous state: -5
AHA: MQTT connected”


Viszont sehol sem kapok ilyesmit:
AHA: MQTT state changed to -1, previous state: 0
AHA: MQTT disconnected[/quote]

Tehát jelenleg úgy néz ki, hogy az HAMqtt könyvtár az ami nem fut le jól és a rossz state változó miatt omlik össze.

SB
Következő: »»   838 / 838
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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