Fórum témák
» Több friss téma |
internet idő másodperc:75804 óra: 21:3:24
gyanús hogy az év 1900..., vagyis rossz, próbáld a fentivel lekérdezni, ellenőrizni, valós-e az évszám... meg szerintem kell a time(&now);
Ha jól értem, akkor az évet kellene nullázni (timeinfo.tm_year) és akkor mindenképp az sntp időt fogja adni?
Korábban próbáltam ezt: "settimeofday(0, NULL);" de nem segített, persze lehet nem is így kell nullázni
A dátum jó:
"21:02:40.765 -> NTP time: Sunday, June 25 2023 21:02:40" nekem csak az óra kell, mert ez egy lapozóórát állít be pontos időre, így a 75804 az a másodpercek száma azaz a pontos idő másodpercben...
Azt hiába nullázod... Ellenőrizni kell, ha rossz akkor újra lekérdezés... nézted amit küldtem linket, van még ott más is, pl ez is számíthat: sntp_set_sync_mode()
Amit küldtél soros monitort, az reset után van szerintem, mi van ébredés után mikor "rossz" az óra?
Olvasom, közben már 20 óránál jár a lapozás... lassan kiderül a késleltetés segít-e, addig nem nyúlok a kódba csak próbálok okosodni közben.
Ha jól értelmezem, akkor ha van net kapcsolat és eléri az sntp szervert, akkor frissíti az RTC-t ha letelt a beállított frissítési idő (ami legkevesebb 15mp lehet), amennyiben nem telt le vagy nem éri el a szervert (erre 5mp-e van), akkor csak visszaadja a belső RTC időt. Valahol itt lehet a hiba nálam, hogy ébredés után ezek a feltételek nem teljesülnek, így kapásból az RTC időt adja vissza csak...
Van net.Nem tudok rálépni a neten a webkonfigurácios felületen mert nem talál semmit róla.Beütöm a wifin kiadott nevet nem talál semmit róla.
Bakman: A ruterben sincs az eszköz,
Igen az reszet utáni, mivel az elalvás előtt ellapoztat a pontos időre (egy perc kb. 7 másodperc alatt lapozódik), most ezt várom...
Működik, köszönöm a segítséget mindnyájatoknak!
A késleltetés kellett (azaz idő kell hozzá, hogy a háttérben az RTC-be írja át az sntp időt, amit az én kódom nem várt meg, így még a nem frissített RTC időt adta vissza), majd kiderül melyik a kettő közül: "21:37:48.922 -> internet idő másodperc:77868 óra: 21:37:48 , lapozó óra idő másodperc:77765 óra: 21:36:5 21:37:48.922 -> 103 másodperc az eltérés... 21:37:48.922 -> 103 másodperc a lemaradás...lapozz 21:37:50.448 -> lapoztam... 21:37:56.446 -> internet idő másodperc:77875 óra: 21:37:55 , lapozó óra idő másodperc:77825 óra: 21:37:5 21:37:56.446 -> 50 másodperc az eltérés... 21:38:04.461 -> 50 másodperc a lemaradás...lapozz 21:38:05.941 -> lapoztam... 21:38:11.956 -> internet idő másodperc:77891 óra: 21:38:11 , lapozó óra idő másodperc:77885 óra: 21:38:5 21:38:11.956 -> 6 másodperc az eltérés... 21:38:12.002 -> 6 másodperc az eltérés...lekapcsol 21:38:13.971 -> lekapcsol: idő beállítva, ébredés 1 óra múlva 21:44:12.694 -> ets Jun 8 2016 00:22:57 21:44:12.694 -> 21:44:12.694 -> rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 21:44:12.694 -> configsip: 0, SPIWP:0xee 21:44:12.694 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 21:44:12.694 -> modeIO, clock div:2 21:44:12.734 -> load:0x3fff0030,len:1184 21:44:12.734 -> load:0x40078000,len:12776 21:44:12.734 -> load:0x40080400,len:3032 21:44:12.734 -> entry 0x400805e4 21:44:13.494 -> 21:44:13.494 -> 21:44:13.494 -> Connecting to fenyveshegy 21:44:13.614 -> ..................... 21:44:15.614 -> WiFi connected. 21:44:15.614 -> IP address: 21:44:15.614 -> 192.168.1.103 21:44:20.614 -> Connecting to sntp server 21:44:20.614 -> NTP connected: milliszekundum = 0 21:44:20.654 -> NTP connected: milliszekundum = 0 21:44:20.654 -> NTP time: Sunday, June 25 2023 21:44:20 21:44:20.654 -> WiFi lekapcsol 21:44:20.654 -> Várom a lapozóóra adatokat... 21:45:12.274 -> internet idő másodperc:78311 óra: 21:45:11 , lapozó óra idő másodperc:78305 óra: 21:45:5 21:45:12.274 -> 6 másodperc az eltérés... 21:45:12.274 -> 6 másodperc az eltérés...lekapcsol 21:45:14.274 -> lekapcsol: idő beállítva, ébredés 1 óra múlva "
Sziasztok!
Már megint bajban vagyok. Késztettem egy R-2R ellenállás létrát, működik, azaz majdnem... Hiba: Ha feltesszük, hogy 8 bites a létra, és pl. az első legkisebb bitre írok, akkor csak akkor működik, ha a megfelelő bit bemenet megkapja a logikai feszt, míg a többi GND-re van húzva. Ellenkező esetben negatv fesz és sok-sok hibás adat. Sima teszteléskor ment, ha a 0-s biteket GND-re kötöttem, simán hozza a kívánt értéket. ESP-re kötve simán negatív feszt kapok..... Az ESP32S mikor a létrehozott port-ra írom a megfelelő értéket, akkor szerintem nem húzza a nem használt bit-nek használt lábakat a Földre. Mi lehet erre a megoldás? Input pull down-ra van szoftverees megoldás, de outputnál? Köszönöm!
Az ESP32-n a kimenet 1 vagy 0. Azt hiszem Open drain-t is tud de azt be kell kapcsolni. Nem tudom mekkora ellenallasokbol epitetted, de ha nem tudja le vagy felhunzni a megfelelo ertekre akkor a meghajtott aramkor bemeneti impedanciaja tul kicsi. Valamint kimenetenkent 20mA-nal nem celszeru tobbel terhelni. 40mA az ABSZOLUT maximum.
Az adott 8 bit-nyi kimenetet, konstansan kimenetnek kell konfigurálni!!
Erre van megfelelő utasítás. Ha bemenetként funkcionál, akkor Z állapotot vesz fel, azaz magas impedanciát fog mutatni.
Sziasztok!
Köszi a válaszokat! 1.13, 2.26K precíziós ellenállásokkal építettem meg. Remélem nem nyírtam még ki az ESP-t.. Arduino: Arduinoval tökéletesen működik. Mivel a soros porton keresztül vezérlem, csak 6 bit felbontásom van 0-5V-on. De még az is szép különben még a szűrés nélkül is. ESP: Erre az Open drain-re gondoltam én is, de nem tudom hogyan kell megoldani ezt. Hogyan kell bekapcsolni? Valakinek egy példa, ami pol GPIO12-19-ig outputra állítva, mint egy port, és ez a Open drain is be van kapcsolva? Eddig nekem ez van:
Ilyen kódot dobtam gyorsan össze. Kicsit soknak tűnik, de a port létrehozása a lényegi része, azt nem tudom hogyan kellene átalakítani. Vagy ha nem lehetséges, akkor mi kellene még pluszban? Ha lehúzó ellenállásokat teszek bele, az befolyásolja a DAC-ot, legalábbis egyelőre gy gondolom.
Idézet: „Ha lehúzó ellenállásokat teszek bele, az befolyásolja a DAC-ot, legalábbis egyelőre gy gondolom.” Biztos is, hogy a lehúzó ellenállások, beleszólnak a R-2R létrába! Legalább egy nagyságrenddel kisebb ellenállás kellene, de az meg túlterheli a kimenetet!
Az esp32-hal-gpio.h -ban definiált GPIO port módok:
Szerintem elég bő a választék! Lehet kísérletezni. A hozzászólás módosítva: Júl 3, 2023
Köszi a választ, de még nem világos ez. Arduino, DSPIC,PIC -ben már sokat olvastam, meg használom is, de tudom, hogy sok időmbe telt, mire kibogarásztam a felépítését, ezért fordulok ide, mert aki sokat használta az ESP32-t az gyorsabban tudja kihámozni a megoldást.
A dokumentációban(727 oldalasban) a 76. oldalon ezt találtam a "Register 4.34. IO_MUX_x_REG (x: GPIO0GPIO39) (0x10+4*x)" fejezetben: Idézet: „FUN_WPD Pull-down enable of the pad. 1: internal pull-down enabled, 0: internal pull-down disabled. GPIO pins 34-39 are input-only. These pins do not feature an output driver or internal pullup/pull-down circuitry, therefore, their FUN_WPD is always 0. (R/W)” Szóval elképzelhető, hogy az adott pin-re ezekel kell beállítani? Szóval mondjuk a GPIO12-nek ezen regiszterében a FUN_WPU -t nullára, míg a FUN_WPD-t 1 re kell állítani? Mert ha jól értem, akkor a 34-39 pinre nem vonatkozik ez a driver. Ha lehúzom nullára az output lábakat a beéptett ellenállással, majd írok rá szoftverből, akkor megjelenik a logikai 3.3V? Ez nem ezt csinálja? És alapból 0 a regiszter értéke, azaz nem használ sem le, sem felhúzó ellenállást. A Z állapot nekem nem jó szerintem, mert az éppen logikai 0-n lévő lábaknak a földön kell lenniük. Melyik regisztert kell még néznem, hogy egy adott pin output legyen? Köszönöm a türelmeteket! A hozzászólás módosítva: Júl 3, 2023
Neked a DAC létrához nem kell semmilyen húzogató ellenállás!!
Sima egyszerű kimenetre kell állítani az adott lábakat! Azt nem értem miért álligatod át bemenetre is??? Idézet: „ void parallel_set_inputs(void) { REG_WRITE(GPIO_ENABLE_W1TC_REG, 0xFF << PARALLEL_0); } void parallel_set_outputs(void) { REG_WRITE(GPIO_ENABLE_W1TS_REG, 0xFF << PARALLEL_0);”
Ezt lestem egy oldalról, hogy hogyan lehet más-más portokat is készíteni, és írni olvasni rá. Benthagytam a kódban, elvileg csak egyet hívok meg, ha nem tévedek, így ez nem fut le. Tévedek?
De, nekem így nem működik. Meg sok sok hiba, meg áram az ESP-be, remélem nem ment még tönkre. De olvasgatom a leírást, egyelőre nem értem, nagyon idegenek a regiszterek nevei és funkciói. Nem lehet, hogy az IO MUX-ot kell beálltani, meg a GPIO mátrix-ot? Még zavar van rendesen. A leírásban van pull donw is a IO MUX-ban, esetleg annak a regiszterét is kell állítani. Vagy nem jó a kód? Lehet bementere állnak a nem haszált lábak? Azaz 1 biten megjelenik a 3.3V, míg a többi láb meg nem jó? Nem értem pontosan mi a hiba. Arduino-kóddal tökéletes.
De itt már nem szoktunk regiszter szinten programozni (csak a nagyon fakír menők!) Ezért vannak a kész lib-ek: Bővebben: Link
Hordozható C és C++ kódok. Esetleg ezekből is sokat tanulhatsz. Már olyan jók a fordítok, hogy kezdő létedre úgysem tudsz jobb eredményt elérni regiszter szinten. Esetleg a hiba ellenőrzések kihagyásával, de ez meg nem éri meg mert később a hibakeresésekkel rengeteg időt elfogsz tölteni.
Idézet: „De itt már nem szoktunk regiszter szinten programozni” De el kell jutni az ittig! Kisebb kódoknál jól jöhet kezdőknek, ha megírják az alapoktól! Én sokat tanultam mikor tök egyedül egy ATiny45-re írtam C-ben programot! Az elsőt.. Át kellett párszor nyálaznom az adatlapot. mire minden szükséges hardware elemet működésre bírtam!
Hát, ha nem kell regiszter szinten belenyúlni, akkor miért nem megy? Nem elég output-ra állítani, azt is elrontom? Amit bemásolt kapu48 define-okkal megadott hexa értékek csak számok nekem. Gondolom valamelyik regisztereknek ad megfelelő értékeket mindegyik. A probléma gyökeréhez meg szerintem éppen ezeknek a pontos ismerete kellene, hogy open drain, meg kell-e pull down, vagy sem, lehet-e egyáltalán vagy sem. Én nem tudom, ezért kérdezem.
GPIO12-pint hogy kell 1-2 sorban beállítani, hogy ha 0-t írok rá, akkor jó legyen? Mert így nem jó. Elhiszem, hogy itt már nem kell regisztereket birizgálni, de akkor melyik az az egy sor, ami megoldja a problémámat, már ha létezik rá megoldás egyáltalán. A hozzászólás módosítva: Júl 3, 2023
Kezdjük a programod elejétől 26, 27. sor nem jó a long típus: Bővebben: Link
Idő méréshez unsigned long kel! Hibát keresni a legidőpazarlóbb dolog, ezért én a továbbiakat rád hagyom! Van még bőven mit tanulni. Én nem regiszter szintű programozással kezdeném! Keres arduinos példákat és azokat próbáld megérteni, alkalmazni. A hozzászólás módosítva: Júl 4, 2023
Nem igazan tudom megmondani ESP32-n mennyire mukodik ez a portmanipulacio. De az ESP foruman leirtak szerint nem minden kimeneten. Szoval lehet, hogy mashogy kell megoldanod.
A regiszter szintű programozás megy, igaz DSPIC-en, és egyéb PIC-en. Azt is írtam, hogy nincs sok időm sokat bogarászni, mert tudom mennyi időbe telik. Tapasztaltam a PIC-nél. ASM is megy de az nehezebb. A program működik, legalábbis akkor ha nem kötöm rá a DAC-ra. wokwi.com -on tesztelgettem, mert nem akartam kinyírni az ESP-t. Nem is akartam tökéletesre, csak kapcsolgasson megfelelő lábakat tesztelésre, éppen azért, mert egy R-2R létra nem működik rendesen, ha a nem használt lábak lógnak a levegőben, és nincsenek lehúzva földre. Ezt lehet tesztelni mindenféle mikrokontroller nélkül.
Arduino-n meg volt vagy 10 perc összehozni a kódot ami tökletesen működik, gyakorlatilag tökugyanez a kód. A hiba az eltérő fizikai feléptésben lesz, amit nem értek, de majd megértem. Ha ennyire nem tudok programozni, akkor egy setup, loop, alap program, amiben a 12-s GPIO úgy működik ahogy kell, vagy 12-19-ig és írni rá példa kódot amit talán még megértettem volna. Vagy használni tudtam volna, hogy teszteljem a sebességet. De valójábn kértem is, így csak egy rövid példa kellet volna, amit bemásoltam lehet hibás, nem azt kell javítani. Arduino-n tökéletesen fut. De tanulok inkább.
Idézet: „Hát, ha nem kell regiszter szinten belenyúlni, akkor miért nem megy?” Mert rosszul van megírva program! Idézet: „Nem elég output-ra állítani, azt is elrontom?” Nem mind1 hogy és mikor állítod kimenetre! Nem vagyok programozás guru, de a mostani felállásban van rá esély, hogy az adott pinek bemenetek legyenek! Ezért javasoltam, hogy az szükséges kimeneteket már a setup részben definiáld! Úgyis csak a DAC létra van ezekre kötve (gondolom) Idézet: „define-okkal megadott hexa értékek csak számok nekem. Gondolom valamelyik regisztereknek ad megfelelő értékeket mindegyik.” Ez így van! Az adott hardver rész, jelen esetben az IO-k beállításait tartalmazza. Idézet: „meg kell-e pull down, vagy sem, lehet-e egyáltalán vagy sem. Én nem tudom, ezért kérdezem.” Jó lenne ha ismernéd µC-k "I/O Pin Equivalent Schematic"-ját, magyarul az egyszerűsített kapcsolási rajzát! És értenél az elektrotechnikához, akkor már tudnál mindent! ESP-hez nem találtam, de AtMega-hoz igen: https://www.arnabkumardas.com/arduino-tutorial/gpio-register-description/ A DAC létra pontos működésékez kis impedanciás (max. pár ohm) logikai 1, vagy 0 kell! Ezt fel-, vagy lehúzó ellenállásokkal, "Open Drain" kimenettel nem lehet megcsinálni! A fel- vagy lehúzó ellenállások használatának csak akkor van értelme, ha az adott pin-t bemenetként használjuk!
A setup-ban vannak kimenetre állítva. Elvileg annak jónak kellene lennie. DE ha nem, akkor kértem egy max 10-15 soros példát, vagy 2x.
Igen, a pic-et és az Arduino pin-kapcsolását értem, az ESP-t NEM értem, de le is írod, hogy nem találod. ÉN SEM!!! Ez a kérdésem! Nem tudom, hogy milyen a GPIO -pin. Ez lett volna a kérdés! A másik, hogy még mindig a bemásolt kódon lovagoltok. Miért? Írtam vagy 2x, hogy simán elég egy kis példa program tőletek. Ha hibás lenne a program. Bár a szimulációban azért fut. Egyszer azért nem jó mert vannak meg nem hívott függvények, attól mennie kell, de kitörlöm nem gond. Máskor egy változó a hiba, ami különben működik, csak max nem annyira nagy értékig jó, de NINCS is használatban. De ok. Szóval az ESP32S NEM alkalmas R-2R létra meghajtására.
Idézet: „A fel- vagy lehúzó ellenállások használatának csak akkor van értelme, ha az adott pin-t bemenetként használjuk!” Igen. Ha megnézed az első kérdéseimet, ott le is írom kérdőjellel, hogy ez inputra ok, no de outputra???? A hozzászólás módosítva: Júl 4, 2023
Idézet: „A DAC létra pontos működésékez kis impedanciás (max. pár ohm) logikai 1, vagy 0 kell! Ezt fel-, vagy lehúzó ellenállásokkal, "Open Drain" kimenettel nem lehet megcsinálni!” Ok, ezt értem. Ez is lett volna a kérdésem! Szóval a kód a hibás, VAGY az ESP32S fizikai kivitelezése miatt nem lehet? Vagy ha az ESP engedi és van olyan beállítása/pin driver kapcsolása fizikailag kiépítve a GPIO-pin-re ami végül megoldaná, hogy olyan pin-t lásson az áramköröm, mint az Arduino-nál, akkor azt hogy kell definiálni. Mint mondtam, nem tudom, csak azt látom, hogy egyiknél ok, a másiknál nem. Ezért kérdezek.
Itt van egy példa: ESP32 digitális bemenetek és digitális kimenetek
Ennyi az egész nem kel bonyolítani! Még ezt is javaslom: Bővebben: Link A hozzászólás módosítva: Júl 4, 2023
Ok, kipróbálom mégegyszer, hátha elnéztem valamit. De le ellenörzöm mikrokontroller nélkül is mégegyszer.
Ha az R-2R létrát 8 biten hasznlom, akkor ha az MSB bitre küldök logikai feszt, és a többi szabadon lóg a levegőben akkor a felét kellene a kimeneten mérnem. De nem ez a helyzet. Pár perc és összearakom megint, küldök képet. |
Bejelentkezés
Hirdetés |