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   656 / 845
(#) Bakman válasza wbt hozzászólására (») Okt 9, 2020 /
 
Mit értesz lebegés alatt?
(#) sdrlab hozzászólása Okt 10, 2020 /
 
Valahol fellelhető erről az LGT8F328P csodáról valami elektromos paramétereket felvonultató doksi? Az ékes kínai weboldalon nem találtam semmit se erre vonatkozóan...
(#) mapetek hozzászólása Okt 11, 2020 /
 
Üdvözlet
Segítséget szeretnék kérni.
Adott programot meg lehet-e változtatni úgy hogy "fordítva" működjön. (vezérléskor alap állapotban világítson a led)?
(#) vargham válasza mapetek hozzászólására (») Okt 11, 2020 /
 
Azt rögtön kiszúrtam benne, hogy a loop-ban van egy végtelen ciklus. Arduino esetén ez tilos, mert a keretrendszer két loop hivás között elvégezne néhány feladatot. Mikrokontroller függő, hogy miket, például USB vagy hálózat kezelést.
(#) mapetek válasza vargham hozzászólására (») Okt 11, 2020 /
 
Ez egy karácsonyi világítás vezérlése arduinóval.
Tavaly egy "üstököst" vezérelt, és működött szépen.(ws2821 led szalag)

A többi efektet eddig (sima grb led szalag) arduino pwm lábai vezérelték más programmal.
Ezt szeretném kiváltani hogy ne 8db arduino Megalegyen, csak 1
( arduino + ws2811 ic + fet tranzisztor)
A hozzászólás módosítva: Okt 11, 2020
(#) Kovidivi válasza vargham hozzászólására (») Okt 11, 2020 /
 
"Arduino esetén ez tilos" - nem találtam még erre utalást. A mikrokontroller elvégez néhány beállítást (timer-ek, interruptok), de ezeket még a programunk indulása előtt. A loop() egyébként is egy sima while(1), vagy for(;; ), mint ahogy a programban is szerepel. Nem tudok róla, hogy a loop() végén bármi is történne. Én a sima Atmega328-ról írtam, de más uC-nél is fura lenne, ha a loop() után olyan történne, amiről a felhasználónak nincs tudomása. Mennyi ideig tart, mit csinál, mivel és miért? Ezeket tudni kellene, különben hibásan futhatna a programunk. De szerintem nem csinál a uC semmit ilyenkor.
A hozzászólás módosítva: Okt 11, 2020
(#) usane válasza mapetek hozzászólására (») Okt 11, 2020 /
 
Idézet:
„Adott programot meg lehet-e változtatni úgy hogy "fordítva" működjön. (vezérléskor alap állapotban világítson a led)?”

Lehet, hogy én vagyok értetlen, de ez nekekm kicsit ködös. A fordítva működést azt értem, de most vezérléskor, vagy alapállapotban világítson?
A másik, meg belenéztem a programba, soros porton kapja az adatot, avagy a LED-ek színkódját. Mi adja az adatot a soros portra? Mit szeretnél azon megfordítani? Ha kap adatot ne világítson, de ha nem kap adatot akkor milyen színű legyen?
(#) usane hozzászólása Okt 11, 2020 /
 
Van valakinek tapasztalata a Porteta H7 lappal?
(#) mapetek válasza usane hozzászólására (») Okt 11, 2020 /
 
A számítógépen a Vixen program ami soros porton küldi az adatot.
Az arduino feldolgozza és küldi a ws2811 icéknek.
Az icnek r g b lábain negatív fesz jelenik meg, ha aktivak.

De nekem n-es fettranzisztorokat kellene kapcsolniuk(nem pedig ledeket), amihez pozitív fesz kellene.
(csatornánként egy optokapuval megoldható lenne, de ezt szeretném elkeröülni)

Ha a program a g r b lábakon nem 0-tól 255-ig szabájozná a fényerőt, hanem 255-től 0-ig akkor egy felhúzó ellenállással meg is oldanám.
(#) Kovidivi válasza mapetek hozzászólására (») Okt 11, 2020 /
 
A számoláshoz neked ez kell: "invertaltujvaltozo=255-valtozo"
kell.
Ha a változó 0, akkor 255-öt kapsz, ha 255, akkor 0-t.
(#) usane válasza Kovidivi hozzászólására (») Okt 11, 2020 /
 
Ha meg egyik sem akkor hibás színt kap. A kimenetet a FastLEd lib adja, abban kéne matatnia, de a kérdésből ítélve ehhez nem elég felkészült.
(#) usane válasza mapetek hozzászólására (») Okt 11, 2020 /
 
Ezzel csak az a baj, hogy nem 0 és 1 amit a WS2811 kap, hanem 24 bit. És mivel nem te írtad a kimeneti funkciót, hanem a FastLED könyvtárat használod, abban kellene a változtatás eszközölni. Nem ismerem én másikat használok, lehet, hogy van benne kimenet invertálás. Utána kell nézni a Githubon.
(#) usane válasza usane hozzászólására (») Okt 11, 2020 /
 
Visszavonom. Hardveresen kimenet esetén biztosan működik, de több mint valószínű a bitbillegtetés esetén is. Azon gondolkodttam, hogy esetleg az elején vagy a végén hiányozhat egy fel vagy lefutó él, de mivel bájtra van megírva így biztosan nem fog.
(#) vargham válasza Kovidivi hozzászólására (») Okt 11, 2020 /
 
Idézet:
„Nem tudok róla, hogy a loop() végén bármi is történne.”

Attól még történik.

Idézet:
„más uC-nél is fura lenne, ha a loop() után olyan történne, amiről a felhasználónak nincs tudomása. Mennyi ideig tart, mit csinál, mivel és miért? Ezeket tudni kellene, különben hibásan futhatna a programunk.”

Változó ideig tart. Ez nem amikrokontroller hibája, vagy sajátossága. Az Arduino egy kezdőknek szánt keretrendszer, ami elrejt egy csomó mindent a mélyebb működésből. Pont emiatt nem alkalmas valósidejű alkalmazásokhoz.

Linkelem néhány variáns main loopját. Minimum egy serial event handling van benne. Ezen kívül megszakításokat is kezel, például a millis-t növeli, stb. De az ESP esetén egészen sok minden történik két loop hívás között.

https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduin...in.cpp
https://github.com/esp8266/Arduino/blob/master/cores/esp8266/core_e...in.cpp
https://github.com/stm32duino/Arduino_Core_STM32/blob/master/cores/...in.cpp
https://github.com/arduino/ArduinoCore-sam/blob/master/cores/arduin...in.cpp

Ha magad akarod kontrollálni a mikrokontrollert, akkor ne használj Arduino környezetet.
(#) sdrlab válasza Kovidivi hozzászólására (») Okt 11, 2020 /
 
Én is így tudom, és tapasztaltam is, hogy nem szabad a loop rutint blokkolni, abból mindig ki kell lépni! Azt hiszem pl az időzítő függvények sem működnek jól ellenkező esetben, de még jó pár dolog van, ami problémás lehet, ha ezt nem tesszük meg!
(#) wbt válasza Bakman hozzászólására (») Okt 11, 2020 /
 
Kb. 4-6 értéket izeg-mozog a kiolvasott érték.
(#) usane válasza vargham hozzászólására (») Okt 11, 2020 /
 
Lehet, hogy csinál dolgokat a main végén, de az időzítésnek mi köze hozzá? Azok gondolom megszakításból futnak. Simán megy egy végtelen ciklusban. Soros kommunikáció is. Gáz is lenne ha nem így lenne. Nem lehetne írni x ideig tartó szubrutinokat.
(#) wbt válasza sdrlab hozzászólására (») Okt 11, 2020 /
 
Szia!
Gépi fordítású van, kicsit kesze-kusza, de jobbat nem találtam. Kb 8 mega pdf.
(#) mapetek válasza usane hozzászólására (») Okt 11, 2020 /
 
Köszönöm mindenkinek a válaszokat.
Futok vele egy kört, de úgy érzem ez nem az én kategóriám.
(#) usane válasza mapetek hozzászólására (») Okt 11, 2020 /
 
Nem olyan nehéz ez.
  1. while(!Serial.available());
  2.         leds[cnt].r = Serial.read();
  3.       while(!Serial.available());
  4.         leds[cnt].g = Serial.read();
  5.       while(!Serial.available());
  6.         leds[cnt++].b = Serial.read();

Ez adja a színeket. Ezt kell módosítanod erre:
  1. while(!Serial.available());
  2.         leds[cnt].r = 255-Serial.read();
  3.       while(!Serial.available());
  4.         leds[cnt].g = 255-Serial.read();
  5.       while(!Serial.available());
  6.         leds[cnt++].b = 255-Serial.read();
(#) usane válasza usane hozzászólására (») Okt 11, 2020 /
 
Na várjál, most olvasom el mégegszer. A WS2811 lábait akarod invertálni? Azt szoftveresen nem lehet. Abból PWM jel jön ki.
A hozzászólás módosítva: Okt 11, 2020
(#) Kovidivi válasza vargham hozzászólására (») Okt 11, 2020 /
 
Maradjunk csak az Atmega328-nál, azt ismerem behatóbban is.
"Minimum egy serial event handling van benne. Ezen kívül megszakításokat is kezel, például a millis-t növeli, stb." - érdekes ez a serial event run, most olvasom, hogy a loop után mindig lefut. De ez csak a soros kommunikációval van kapcsolatban. Akkor vesz el sok prociidőt, ha van is kommunikáció.
A millis az interruptból van meghívva, a loop-tól független. Atmega328-nál más nem történik. Tehát ha nincs bejövő soros porti adat/kommunikáció, akkor a loop megakasztható, és a loop végén pár utasítás után visszatérünk a loop elejére.

ESP és STM32-nél nincs tapasztalatom ilyen téren, de láttam a linked.
(#) Kovidivi válasza usane hozzászólására (») Okt 11, 2020 /
 
A soros kommunikáció szerintem is megy függvényen belül a loop vége nélkül is, szóval nem tudom, ez a serial event run mihez kellhet. Azt írják a Serial.read-nak adja át a bejövő adatot, meg buffert kezel. Viszont a soros port az mehetne interruptból is. Minek kellene a loop végén pollozni, ha csak beállítom a regisztert, és jön a megszakítás, amikor kell.

Ezt találtam:
"The Serial port itself continues to be interrupt driven, but SerialEvent() is not called from interrupt level.
(which is a really good thing.)

The current Tutorial example is really stupid, IMO.

SerialEvent gives you "baby multitasking." You have the "loop" task, and you have the "serialEvent" task(s) that only gets called when there has been Serial data received. If you are reading sensors and controlling stuff in loop(), you could put a command/response function in SerialEvent so that you could "check" on things in the event code without interfering with the logic of loop() As long as "commands" are infrequent and short (fit in the serial ISR buffer: usually 64 bytes), you can even do significant delay() calls in your loop.

Here's a slighly less silly example. "Blink with Serial Event." A typical "Blink" program, with a serialEvent handler added to modify or report on the state of blinking..."
Tehát ez egy kombó, megszakításos soros port kezelés, és egy loop utáni függvény.
A hozzászólás módosítva: Okt 11, 2020
(#) usane válasza Kovidivi hozzászólására (») Okt 11, 2020 /
 
Nem tudom. Kimenő adathoz biztos nem kell. 2 órája fut az ESP32-n a millis() serial portra írása végtelen while ciklusban. De minek kellene olvasáshoz is? Én még nem hallottam, nem is tapasztaltam. Igaz Arduino nem nagyon volt a kezemben, ESP-hez használom az IDE-t. A teszthardveren futó programom szubrutinja most is végtelen ciklusban hajtja a neopixle LED-eket az ESP32-n úgy hogy közben wifit is figyel gond nélkül 3-4 hónapja. Nem ismerem az Arduino belső lellkivilágát, ,de az a Core nem csak az indításkor fut le?
(#) sargarigo válasza Kovidivi hozzászólására (») Okt 11, 2020 /
 
ESP-nél az van, hogy a stack-et akarja frissíteni, és mivel ez nem történik meg időben, elkezd ugatni a watchdog. Ebből is van két féle, mindkettő ugat. Van egy utasítás amit meg kell hívogatni ha megakasztod a loop-ot, és akkor eltűri.
Szerk.: NodeMCU-n próbáltam, ott biztos ez van.
A hozzászólás módosítva: Okt 11, 2020
(#) usane válasza sargarigo hozzászólására (») Okt 11, 2020 /
 
Ez 8266-on van? Mert az ESP32-n én nem tapasztalom.
(#) sargarigo válasza usane hozzászólására (») Okt 11, 2020 /
 
Igen. ilyen kimenetet produkál ilyenkor.
(#) sargarigo válasza sargarigo hozzászólására (») Okt 11, 2020 /
 
Csórikám etetné a wifit, de ha tiltjuk, akkor beáll mint a gerely.
(#) usane válasza sargarigo hozzászólására (») Okt 11, 2020 /
 
Hmm. Kipróbáltam, és tényleg. 5 másodpercenként soft resetel a stack miatt. Az UNO-t most nem veszem elő emiatt. Szerencsére az ESP32-nek semmi baja a loop blokkolással.
(#) mapetek válasza usane hozzászólására (») Okt 11, 2020 /
 
Nagyon ügyes vagy .Teljesen jól működik.
Köszönöm.
Következő: »»   656 / 845
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