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   733 / 839
(#) pipi válasza GPeti1977 hozzászólására (») Márc 24, 2022 / 1
 
Esetleg nézd meg a droidscript app-ot a play áruházban
(#) gaspa hozzászólása Márc 30, 2022 /
 
Régebbi napelem forgatómat alakítom át,fotoelemmel működött,az árnyék néha megzavarta.
Most Nanóval időpontra forgatok,ezt viszont külső zaj zavarja néha(úgy tűnik csak az LCD-t),de szeretnék watchdog visszaállítás beletenni,de nem ismerem igazán.Nem tudom while és delay alatt mit csinál,az alábbiakban próbálkoztam,de nem látom,hogy működne,az alább próbálkoztam:

#include <WatchDog.h>
void setup() {
// put your setup code here, to run once:

}

void loop() {
WatchDog::setPeriod(OVF_4000MS);
WatchDog::start();

while (x > y)//Lehet több órás ciklus
{ delay(1000);
}//További programok 1 sec alatti delay lehet benne


WatchDog::stop();

}
(#) Kovidivi válasza gaspa hozzászólására (») Márc 30, 2022 /
 
Inkább érdemes lenne néha lekötni a tápról az LCD-t, majd újrainicializálni (persze a korrekt megoldás, ha oda-vissza kommunikáció van az LCD és az AVR között). Ha az adatátvitelt bármilyen megszakítás kicsit hosszabb ideig szakítja meg, az LCD egyszerűen megáll vagy nem ad képet.
Ha watchdogot akarsz használni, ahhoz a fuse bit-et is állítanod kell, valószínűleg alapból ki van kapcsolva. Ha beállítottad (fuse bit-eknél, az AVR írásakor tudod beállítani, esetleg programból is lehetséges engedélyezni? Ebben nem vagyok biztos.)
Aztán csak a főprogramban lenullázod a watchdogot, bizonyos időközönként. Ha megakad a programod, akkor a watchdog sem lesz bökdösve (nullázva), és resetel. De ha amit írtál igaz, miszerint csak az LCD fagy le, ott a watchdog nem fog segíteni, mert a programod az AVR-ben fut tovább...
A hozzászólás módosítva: Márc 30, 2022
(#) Bakman válasza gaspa hozzászólására (») Márc 30, 2022 /
 
Milyen LCD-ről van szó? Próbálj az adatvezetékekre fel vagy lehúzóellenállásokat kötni, hátha ennyi is elég lesz.
(#) gaspa válasza Kovidivi hozzászólására (») Márc 30, 2022 /
 
Az LCD aggaszt a legkevésbé csak ezen vettem észre a zavart ,tulajdonképpen a bekalibrálás miatt van benne,vagy ha az órát állítani kell,vagy elemet cserélni.A ledjét le is tudom kapcsolni,akár ki tudom venni belőle,nem kell a vezérléshez.A táblákat 10 percenkét fordítja és minden alkalommal csinál egy resetet,ezt a problémát megoldja,de a program elszállást már nem.Ezért gondoltam a watchdogra,nem szeretném ha ezeket a nagy táblákat össze-vissza forgatná.Gondoltam,ha letöltöm a watchdog könyvtárat ,csak a funkcióit kell használnom a többit elintézi,fuse bitet nem emlegették.
(#) Kovidivi válasza gaspa hozzászólására (») Márc 30, 2022 /
 
Lehet, hogy megy a könyvtárral is, én régen használtam, és fuse bit-tel állítottam be, ha jól emlékszem (kb. 6 éve...).
Bolond biztos akkor lesz, ha beraksz egy második Arduinot, ami felügyeli az egész rendszert.
A hozzászólás módosítva: Márc 30, 2022
(#) GPeti1977 válasza Kovidivi hozzászólására (») Márc 30, 2022 /
 
Lehet kapni watchdog ic t is külön, ha nincs a bemenetén négyszögjel akkor egy idő után ad egy reset impulzust. Nekem az arduino alatt nem mindig ment a wdt lehet a bootloader miatt .
(#) gaspa válasza Kovidivi hozzászólására (») Márc 31, 2022 /
 
AZ <avr/wdt.h> könyvtárral több példát is lehet találni,de letölteni sehol nem tudom,talán ezzel tudna működni,nem említenek fuse-bitet.
(#) GPeti1977 válasza gaspa hozzászólására (») Márc 31, 2022 /
 
Nem kell letölteni alapból benne van az arduino (avr) könyvtáraiban.
#include <avr/wdt.h>
(#) gaspa válasza gaspa hozzászólására (») Márc 31, 2022 /
 
A setupba beletettem a " WatchDog::init(WACHD, OVF_4000MS);" utasítást,ez 4sec múlva meghívja a benne lévő függvényt.Ebben a függvényben van egy led jelzés,ezt meg is hívja,ha letelik a 4 sec,de a programon nem látni változást megy tovább.Vajon csak az AVR-t állítja alaphelyzetbe?Viszont a függvénybe beleraktam egy szoftver resetet is ami fizikailag a nanot reseteli,így láthatóan valóban újra kezdi a programot,csak a hosszabb ciklusokba kellett beletenni watchdog resetet.Ez nekem így megfelel,csak szeretném tudni a szoft reset nélkül is működik-e watchdog?
(#) Kovidivi válasza gaspa hozzászólására (») Márc 31, 2022 /
 
Ennek így kellene működnie:
fut a programod, és amilyen sűrűn csak tudod, meghívod a watchdog reset függvényt, ez nulláza a watchdogot, vagyis nem fog az AVR újraindulni. Ha megáll a programod, akkor ez a reszetelés nem történik meg, az AVR-ben a watchdog órája ketyeg tovább (ez független hardware), és mikor lejárt a beállított 4mp (tehát nem reszeteltél), akkor a watchdog újraindítja az AVR-t (azt hiszem ezt elintézi magától).
Ki tudod próbálni így:
setup részbe rakj egy delay(10000);, hogy lásd, ha újraindult az AVR, inicializálod a watchdogot (2mp-re), a main részben meg legyen mondjuk egy sima LED villogatatás 0.5mp-ként, tehát LED be, vár 0.5mp, LED ki, vár 0.5mp, ide szúrd be a watchdog reszet függvényt, majd kezdődik az egész elölről.
A watchdog akkor fog működésbe lépni, ha a LED ki- és bekapcsolás közti időt megnöveled, legalább 1mp-re. Pl. 1500ms várakozással elindítva az AVR-t ezt fogod látni: 10mp-ig semmi, majd 1.5mp-ig LED be, majd 0.5mp múlva LED ki, ekkor a program futása megszakad és reszetelődik az AVR, és 10mp múlva ismét LED be, ez pedig ismétlődik örökké.
A hozzászólás módosítva: Márc 31, 2022
(#) gaspa válasza Kovidivi hozzászólására (») Márc 31, 2022 /
 
Oké köszi,nagyjából értem és én is csináltam bizonyos visszajelzést erre.Még 40 éve mikrogép szinten programoztam(8080,Z80),annak még mindig van hatása.Most arduinot programozok amatőr szinten,de a hardvert nem igazán ismerem.Ezért kérdeztem,hogy az AVR watchdog visszaállítása esetén az elejéről indul-e a program a nano-n.Az említett szofver/hardver esetén valóban nulláról indul.
(#) Kovidivi válasza gaspa hozzászólására (») Márc 31, 2022 /
 
Ha a watchdog visszaállítása alatt a watchdog resetet érted, akkor kevered a dolgokat. A watchdog egy visszaszámláló, 4mp-ről indul. Amikor reszeteled, 4mp-re áll vissza. Ha lejár, akkor avatkozik közbe, és indítja újra az AVR-t.
A hozzászólás módosítva: Márc 31, 2022
(#) gaspa válasza Kovidivi hozzászólására (») Márc 31, 2022 /
 
Megesik,hogy félreértem.Ezért kérdezem,ha a watchdog "avatkozik közbe, és indítja újra az AVR-t", a nano-n elejéről indul-e a program?
(#) Kovidivi válasza gaspa hozzászólására (») Márc 31, 2022 /
 
A 0. címről indul, vagyis a programod legelejéről. Lefut az összes definíció, változók inicializálása, stb, a setup, majd elkezdődik a main folyamatos ismétlése. Nem egyenértékű egy tápelvétellel, de majdnem.
A hozzászólás módosítva: Márc 31, 2022
(#) gaspa válasza Kovidivi hozzászólására (») Márc 31, 2022 /
 
Oké kösz,ez így már tiszta.
(#) GPeti1977 válasza Kovidivi hozzászólására (») Ápr 1, 2022 /
 
Tehát nem a bootloader kezdőcíméről indul?
(#) Kovidivi válasza GPeti1977 hozzászólására (») Ápr 1, 2022 /
 
Igaz. A programmemória 0. címéről, ami a bootloader, utána meg a programod 0. sorától. Így korrektebb. Mondjuk ez jó kérdés! Szerintem a bootloader is lefut ilyenkor. Ha a watchdog kivált egy AVR resetet, akkor a cím, ahonnan beolvasódnak az utasítások, visszaáll 0-ra. Hogy ilyenkor lesz-e RAM törlés, azt kétlem. Elég komplex dolog ez.
A hozzászólás módosítva: Ápr 1, 2022
(#) GPeti1977 hozzászólása Ápr 1, 2022 /
 
Tettem egy kísérletet arduino nanoval, új azaz nem old arduino nano bootloader:
  1. #include <avr/wdt.h>
  2. int i; // = 0; direkt nincs érték adva
  3. void setup() {
  4.   Serial.begin(115200);
  5.   Serial.println("Start");
  6.   Serial.print(i, DEC);
  7.   Serial.print(" ");
  8.   wdt_enable(WDTO_8S);
  9. }
  10. void loop() {
  11.   for (int j = 0; j < 10; j++) {
  12.     i++;
  13.     Serial.print(i, DEC);
  14.     Serial.print(" ");
  15.     delay(1000);
  16.     wdt_reset();
  17.   }
  18.   for (int j = 0; j < 20; j++) {
  19.     i++;
  20.     Serial.print(i, DEC);
  21.     Serial.print(" ");
  22.     delay(1000);
  23.   }
  24. }


A serial monitoron az értékek, a reset gomb megnyomásakor a LED 2x felvillan, innen lehet tudni hogy a bootloader futott le, a 2. sorban megnyomtam a reset gombot i = 8 értékné, LED 2x felvillan, i változó 0-ról indul, a 2. és 4. sorban a wdt reset történt, i változó 0 - ról indul viszont a LED nem villant fel így a program nem a bootloadertől (ahogy az arduino fuse bitjei vannak beállítva) hanem a 0. címről indult. Mintha lenne olyan mikrokontroller is ami elmenti egy regiszterbe hogy miért történt a reset, viszont az avr status regiszterében ilyen bit nincs ami ezt mutatná.

Start
0 1 2 3 4 5 6 7 8 Start
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Start
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Start
0 1 2 3 4 5 6 7 8 9 10
A hozzászólás módosítva: Ápr 1, 2022
(#) Kovidivi válasza GPeti1977 hozzászólására (») Ápr 1, 2022 /
 
Az MCUSR tárolja a reset okát.
Azt is írják, hogy nem minden bootloader kezeli jól a watchdogot. de az optiboot már jó (lehet, hogy leellenőrzi az újraindulás okát, és ha watchdog okozta, átugorja a bootloader részt?).
(#) GPeti1977 válasza Kovidivi hozzászólására (») Ápr 1, 2022 /
 
  1. Serial.begin(115200);
  2.   Serial.print("M");
  3.   Serial.println(MCUSR);


Beszúrtam az előző programba két sort, de független honnan jött a reset mindig 0 kapok vissza.
(#) Kovidivi válasza GPeti1977 hozzászólására (») Ápr 1, 2022 /
 
Valami törölheti? Pl. a bootloader?
(#) GPeti1977 válasza Kovidivi hozzászólására (») Ápr 1, 2022 /
 
Nem tudom, valószinűleg ilyenkor nem a bootloadertől indul mert nem villan fel a led. Ha leforditunk egy üres arduino fájlt akkor is keletkezik egy viszonylag hosszú programkód de azt pontosan nem tudom mit csinál.
(#) meddu hozzászólása Ápr 3, 2022 /
 
Sziasztok!

Van arra lehetőség hogy kb 24 óránként újra induljon az arduino?

Meglévő codba szertnék egy ilyet beilleszteni. Mert 2-3hetente valamiért lefagy.

Hő különbségeket figyel és szivattyúkat indít leállít.
(#) Jonni válasza meddu hozzászólására (») Ápr 3, 2022 /
 
Szia

Van a kódba millis(); ? Az ha túlcsordul esetleg lefagyást is okozhat.
(#) Jonni válasza meddu hozzászólására (») Ápr 3, 2022 /
 
Talán még az fontos lehet hogy ne akkor reseteljen amikor egy szivattyú pont be van kapcsolva.
(#) meddu válasza Jonni hozzászólására (») Ápr 3, 2022 /
 
Szia.
" delay(2000); " használok
(#) pittyu2 hozzászólása Ápr 3, 2022 /
 
Bővebben: Link
Csináltam egy szép kis órát, csak az RTC modul pontatlansága miatt az időt át kellene írnom.
Itt az a gond hogy nincs már meg a "virtuabotixRTC.h"
Mi a megoldás ?
(#) sargarigo válasza meddu hozzászólására (») Ápr 3, 2022 /
 
Én egy kamerát indítottam újra úgy, hogy kapcsoló órát tettem a tápjára. Éjszaka mikor ugyse használom, kikapcsolom negyed órára.
(#) Jonni válasza pittyu2 hozzászólására (») Ápr 3, 2022 / 1
 
A githubon van egy olyan könyvtár amit keresel

ez
Következő: »»   733 / 839
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