Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Ez jó részletes válasz volt.
Idézet: Nem vagyok benne biztos de nem itt is arról van szó mint a millis-nél? Hogy átfordul és 32767 után azért jön -32768 mert átfordult és itt a -32768 lesz a legkissebb szám?„Ezt a legtöbben nem is tudják, nekem is mellbevágó volt amikor először hallottam, annyira triviális, hogy a 32767 után a -32768 jön” Idézet: Akkor ez lehet az egyik oka , hogy mikor lefordítja a kódot alúl olyan szürreálisan magas számot ír? Pl: A vázlat 42912 bájt (65%)-ot használ a program tárhelyből. „Pláne, hogy 32 bites vezérlőkre is van Arduino, ahol szerintem az int már 32 bites, a long pedig 64 bites szokott lenni.”
Ez nem profi környezet kérdése, volt már hogy napokat töltöttem ilyen aritmetikából adódó bug vadászásával hobbi projektben is. Ráadásul volt a programhoz egy szimulátorom PC-n, amin lefutott ugyanaz a kód és persze helyesen. Csakhogy sikerült pont egy platformfüggő sort leírnom, ami a mikrovezérlőn viszont rosszul működött. Ha mondjuk interrupt kontextusban követsz el egy ilyet, akkor nem egyszerű debuggolni.
Ezért ésszerű megközelítés hobbi környezetben is betartani ilyesmi szabályokat, összességében olcsóbban jön ki az ember, mintha napokig kell keresni a bugokat. Illetve hiába hobbi, az eszközöket akkor is érdemes jól ismerni a korlátaikkal együtt. Azért is neveztem meg a szabványt, mert nyilván nem fogom leírni az egészet, hogy milyen buktatók vannak, de akit érdekel az rákereshet ez alapján. A hozzászólás módosítva: Nov 22, 2022
Idézet: „Nem vagyok benne biztos de nem itt is arról van szó mint a millis-nél? Hogy átfordul és 32767 után azért jön -32768 mert átfordult és itt a -32768 lesz a legkissebb szám?” De, erről van szó. Minden általam ismert platformon így van, a negatív számokat kettes komplemens ábrázolás szerint kezeli, és ebben így működik az átfordulás. De a C szabvány szerint ennek nem kötelező így lennie, és ha erre építve működik a programod, akkor nem garantált, hogy minden platformon helyes lesz. Idézet: „Akkor ez lehet az egyik oka , hogy mikor lefordítja a kódot alúl olyan szürreálisan magas számot ír? Pl: A vázlat 42912 bájt (65%)-ot használ a program tárhelyből.” Nem, ennek összetettebb oka lesz. Milyen MCU-ra írja ezt? Egy UNO-ra már rá se férne ez a kód, mert annak 32KB program memóriája van. Általában a használt könyvtári függvények szoktak nagyok lenni. Például ha printf-et és társait használod, az rengeteg dolgot magával ránt. Illetve a fixpontos osztás, és a lebegőpontos műveletek könyvtára is számítani szokott. Ezzel a paranccsal lehet csinálni map filet, és abban meg lehet nézni, hogy mik kerülnek a programba (AVR esetén, az elf fájlt és az avr-objdump programot meg kell keresni, hogy hová teszi az Arduino): avr-objdump -t project.elf Idézet: „Ezzel a paranccsal lehet csinálni map filet, és abban meg lehet nézni, hogy mik kerülnek a programba (AVR esetén, az elf fájlt és az avr-objdump programot meg kell keresni, hogy hová teszi az Arduino): avr-objdump -t project.elf” Ezt elteszem magamnak, köszi! Idézet: „Milyen MCU-ra írja ezt? Egy UNO-ra már rá se férne ez a kód” Na most lebuktam Nem arduinót használok hanem NUCLEO-F302R8 -at de az arduino IDE-vel töltőm fel a megirt kódot.
Egyébként ez volt az eggyik oka hogy NUCLEO-F302R8 at vettem mert abba ARM®32-bit Cortex®-M4 CPU van és ez állitólag elég jól elboldogul a lebegőpontos számitásokkal.
Van benne FPU, amit csak akkor használ, ha a fordítót a megfelelő paraméterrel hívod.
Idézet: „Nem arduinót használok hanem NUCLEO-F302R8 -at de az arduino IDE-vel töltőm fel a megirt kódot.” Ha nem használod az Arduino keretrendszert, akkor miért pont azzal töltöd fel a programodat? Nem túl felhasználóbarát. Hogyan debuggolsz? Amúgy milyen libeket használsz? HAL, LL? CubeIDE nem vált be?
Pontosabban ARDUINO IDE-be irom a programot is és azzal töltöm fel .
A debugolást még soha nem próbáltam... Arduino-s libeket pl: #include <Wire.h> #include <TimeLib.h> #include "RTClib.h" #include <LiquidCrystal_I2C.h> CubeIDE-t letöltőttem de még nem használtam (ahhoz még nem értek).
Igen de cube-t is meg akarom tanulni majd.
Sziasztok!
Felraktam az Arduino IDE 2.0-t, STM32 BluePill a cél eszköz. Először a java-t hiányolta, felraktam neki EZEN videó alapján. Ezután már nem dobja a hibaüzenetet, viszont kitalált mást:
Mit csináljak ? Köszi. A régebbi Arduino meg egyébként működik mellette, fura... A hozzászólás módosítva: Nov 25, 2022
Más is panaszkodott már az Arduino IDE 2.0 -ra. Talán jobban jársz a régebbi verzióval
Idézet: Akkor használd a régebbit! Ha az is tud jó kódot fordítani, akkor nem látom mi az előnye az újabbnak, pláne, hogy nem is akar rendesen működni. Majd akkor tedd fel az újat megint, ha javítják a hibáit. „Mit csináljak ? Köszi. A régebbi Arduino meg egyébként működik mellette, fura...”
Azt, hogy mi az előnye még én sem tudom. Ki szerettem volna próbálni. De akkor ez még túl friss és nyűgös....
Felejtsd el az arduino ide-t és válts platformiora, azzal még debugolni is fogsz tudni ha van stlink vagy egyéb debugger és nem az usb (vagy egyéb) bootloadert használod.
Rákerestem a hibára a dll neve és a hibakód alapján. Rengeteg találat van, sokan szívtak már ezzel a jSSC soros port kezelő lib hibája. A logod alapján 2.8-as jSSC van az Arduino-ba csomagolva, és itt azt írja egy felhasználó, hogy a 2.9-esre váltás megoldotta a problémáját: https://github.com/java-native/jssc/issues/65#issuecomment-1112601566
Nem mondom, hogy biztosan ugyanez a hiba jön elő nálad is és hogy ugyanígy megoldaná, de ha ki lehet cserélni a dll-t és a hozzá tartozó jart az Arduino-n belül, akkor ezt meg lehet próbálni. Nagyon érdekes, mert letöltöttem a 2.0.2-es Arduino IDE-t Windowshoz, és ebben semmilyen Java csomagot nem találtam. Nem telepítettem, csak leszedtem a zip-et és megnéztem mi van benne. Lehetséges, hogy a jSSC-t board supportként tölti le és használja? Kipróbáltad, hogy a 2.0.2-re előremész megnézni, hogy az működik-e?
Szia!
2.0.2 van fent. Én is a zip-et szedtem le, először tök más volt a hiba, arra rákerestem és meg is oldódott, de jött helyette más. Mit és hol cseréljek ki ? (ennyire nem vagyok expert) Köszi a segítséget. Idézet: „Ha az is tud jó kódot fordítani, akkor nem látom mi az előnye az újabbnak, pláne, hogy nem is akar rendesen működni.” Ezzel én is egyet értek.
ESP01-el próbálok e-mailt küldeni az EMailSender segítségével gmail fiókon keresztül ... Bővebben: Link
Részben megy is a dolog ... csak egy kis probléma van. Ha az ESP-ben be akarom állítani az IP címet, akkor nem sikerül az e-mail küldés, ha a router oszt ki IP címet az ESP-nek akkor meg megy. Ha a routerben állítok be fix IP-t az ESP-hez akkor is küldi a levelet.
Az ESP-nek fix IP cím kell mert azt is el kell tudnom érni, mivel fut rajta egy webserver Ez mitől lehet?
Szerintem DNS-t is kéne állítanod a fix ip esetén...
Köszi! Úgy néz ki, valóban az hiányzott neki!
Nekem is minden saját dolognak fix IP-je, mert a routeren be lehet állítani, hogy adott MAC címhez adott IP-t adjon. Ez a legegyszerűbb, egyszer kell a routert beállítani, többi minden alap DHCP, és nincs gond. (látom megoldódott, csak mint alternatíva)
Így van, ennek kellene lennie az alapnak minden IP hálózatban. Fix IP csak speciális esetben (fix IP-jű eszközök számára elkülönített tartományból), dinamikus (véletlenszerű) IP kiosztás pedig az alkalomszerű kliensek számára (pl. mobil eszközök, vendég hálózat stb...).
Azért felettébb érdekes, hogy az én DHCP halozatomban a router szinte kivétel nélkül ugyanazokat a cimeket adja a készülékeknek. Nemrégen egy nyomtatot cseréltem és csodalkoztam hogy a gép ugyanazt cimet kapta, mint mas markaju elödje. (27 gép van a halozatban)
Ez egy "többlépcsős" dolog. Ha valaki nem foglakozik különösebben a konfigurálással, (vagy olyan a router, hogy nincs is benne elérhető erre vonatkozó részletes beállítás) akkor valamilyen belső logika alapján összerendeli a MAC címeket, egy-egy kiosztható IP címmel. A legegyszerűbb logika amikor sorban kiosztja a szabad IP-ket. A DHCP-vel kiosztott IP-nek van egy lejárati ideje (elvileg beállítható) ennyi időre kapja meg az IP-t az eszköz, utána újat kell kérnie (de lehet, hogy újra ugyanazt kapja). Van amelyik router alaphelyzetben is variál, hogy a szabad IP-ket milyen logika alapján osztja ki, és hogy éppen a tartomány elejéről, vagy a végéről ad ki IP-t. Jó esetben ez a kiosztás felülbírálható, és pl. össze lehet rendelni fixen egyes MAC és IP címeket.
Így az eszköz bár DHCP-vel kér magának IP-t, mindig ugyanazt a címet fogja megkapni. A saját hálózatomban a lejárati időt 150 napra növeltem, így ha új eszköz kerül be a hálózatba, akkor az kb. fél évig biztosan mindig ugyanazt az IP-t fogja megkapni, és ha akarom akkor bőven van időm fix-re beállítani. Illetve minden MAC cím ott van a listában ami fél éven belül csatlakoztatva volt. Amit írsz, az egyszerűen attól is lehet, hogy a korábbi eszköz IP címe felszabadult (elérte a lejárati időt) és amikor az új eszköz IP-t kért magának, akkor ezt a szabad IP-t kapta meg.
Valoszinűleg igazad van, annyira nem akartam elmerülni a dologban.
Valamikor sok évvel ezelött voltak ilyen gondjaim, és akkor megcsináltam a cimek kiosztását. Azota szolgáltatot cseréltem és azok meg már a 4. modemet/routert küldték, de azota nem volt ilyen gondom, csak a nyomtato cseréjénél tünt fel, hogy ugyanazt az IP-t kapta, és a PC-k stb. a hálozaton meg is találták. A hozzászólás módosítva: Nov 27, 2022
Idézet: „Idézet: „Nem vagyok benne biztos de nem itt is arról van szó mint a millis-nél? Hogy átfordul és 32767 után azért jön -32768 mert átfordult és itt a -32768 lesz a legkissebb szám?” De, erről van szó. Minden általam ismert platformon így van, a negatív számokat kettes komplemens ábrázolás szerint kezeli, és ebben így működik az átfordulás. De a C szabvány szerint ennek nem kötelező így lennie, és ha erre építve működik a programod, akkor nem garantált, hogy minden platformon helyes lesz.” Jó, hogy ez előjött, mert pont most futottam bele micros()-t használva. Van erre elegáns megoldás? Nem elegánsat találtam, de nem vagyok elégedett vele.
Pár hozzászólással visszább ott volt a megoldás: bővebben link, nem gond a túlcsordulás: Bővebben: Link
Én még nem próbáltam, de elegánsnak mindenképpen mondanám A hozzászólás módosítva: Dec 2, 2022
Üdv
Egy nyomógombos feladatot kéne valahogy összehozni. Csak annyi, hogy ha megnyonyomom mondjuk button 1-et akkor léptessen egy változót egyel fölfele, de ha nyomva tartom mondjuk 2 másodpercig a nyomogombot akkor ne egyessével hanem százassával léptesse a változót amig el nem engedem. (14000 és 30000 közt akarom állitani nyomogombbal) Lehet , hogy tele van a net ilyen mintapéldákkal de most nem találok egyet se |
Bejelentkezés
Hirdetés |