Ez alapjan kotottem ossze a mega-t es az uno-t. 2:12-nel van az, amikor inditja a bootloader feltoltest, nekem akkor hibat ir ki, amire ezt talaltam itt: "2. When getting this error: avrdude: stk500_getsync(): not in sync: resp=0x00 You did not put an 100nF capacitor between +5v and RESET pin on the Arduino Mega 2560". Szo szerint nem ez a hibauzenet amit kapok, de ugyaningy kezdodik. Szoval a jovo heten vmikor kiprobalom 100n-s kondit a +5 es a reset koze, ahogy irjak.
Ezt en sem ertem, azert (is) vettem nano/uno/megat, hogy valamelyiken csak jo lesz, de nem. A masik ok pedig az, hogy igy egyikkel tudjam a masikon frissiteni a bootloadert.
A bootloader-t verziojat ki lehet valahogyan olvasni, vagy pl. ezzel a wdt-s teszttel lehet tudni hogy nem a legutolso verzio?
Alapvetően az a véleményem, hogy az MCU státuszregiszterei vannak némileg elbarmolva (ez nem a te hibád, de csak te tudod rendbeszedni őket). Javaslom még azt, hogy a wdt_enable() mellett a wdt_reset() is legyen meghívva még a setup vége felé.
eddig barmivel probaltam, mindig az volt a vegeredmeny, hogy latszolag probal ujraindulni, de ott mindig lefagy.
Most ezzel probalom.
A setup-ban eloszor letiltom, utana varok 1000ms-ot, a led-et kikapcsolom, utana engedelyezem ujra a wdt-t.
Az indulaskor meg is csinalja szepen, 3x gyorsan villogtatja a ledet, majd kb. meg 2x 1mp-es kesleltetessel, utana indulna ujra, de mar a led-et sem tudja lekapcsolni, odaig sem jut el.
Probaltam ugy is, hogy az ujraindulaskori led kikapcsolast tettem rogton a setup elso soraba, de ugyanez tortent akkor is.
===
#include <Arduino.h> #include<avr/wdt.h> const int onboardLED = 13;
void setup() { wdt_disable();
digitalWrite(onboardLED, LOW); delay(1000); wdt_enable (WDTO_4S); pinMode(onboardLED, OUTPUT); int k; pinMode(13,OUTPUT); pinMode(onboardLED, OUTPUT); for (k = 1; k <= 3; k = k + 1) { digitalWrite(onboardLED, HIGH); delay(250L); digitalWrite(onboardLED, LOW); delay(250L); } }
A felállást úgy kell érteni, hogy hogyan van a projektbe építve a watchdog. Milyen időközönként avatkozik be, mennyi ideig vár ki stb.
Ezzel a kóddal valószínűleg mindenen meg fog állni induláskor. A korábban általad küldött mintában elég egyértelműen le van írva pár szabály, amit érdemes betartani:
-- setup alatt ki kell kapcsolni (ha a void setup nem fut le, ott azért súlyos bajok vannak),
-- kivárás az élesítés előtt (wathdog, hogy ne forduljon végtelen reset-körbe a kártya és kelljen bootloadertől újra húzni),
-- megfelelő időközönként nullázni kell a watchdogot.
Igen, erre gondoltam, hogy mit csinálsz éppen a kontrollerrel.
Ami a kódot illeti. A loop-on belüli while(1) nem tudom, honnan jött, de teljesen felesleges. A loop() az Arduino keretrendszerben while(1)-ként funkcionál. A kódnak kb. 8 mp-ig kellene futnia, utána reset. Én elvetném egyelőre a Serial.print-et, és helyette a ledet villogtatnám (mint a példaprogramban). Ahogy azt nálam hozzáértőbbek néhányszor már alaposan kitárgyalták a Serial (így a Serial Monitor megnyitása) nem várt hatásokhoz vezethet.
E mellett még megpróbálnám a példaprogramban írt megoldást (wdt_disable(); a setup-ban), illetve ha már ragaszkodsz hozzá, több és informatívabb kiírást (Serial.print) mindenféle helyeken, különös tekintettel az időre ( millis() ). Ha reset után történik a baleset, tisztázni kellene, hogy mikor és mi történik, valóban van-e reset (tehát elindul újra a program a setup-tól vagy sem).
> Az jó, ha most nem számít. De mit is jelent? És ezt a Nanoból kapta vissza? Akkor valami kommunikáció már van, vagy ez még nem jelenti azt?
A nano, mint minden Arduino, két fő részből áll. A cél mikrokontrollerből, ami itt ATmega 328P-PU, és a soros USB illesztő mikrokontrollerből, ami itt CH340. Tehát ez az információ semmi mást nem jelent, mint azt, hogy sikeresen lekérdezte USB kapcsolaton az illesztő VID/PID párosát.
Nincs rajta bootloader. Megoldás: Tegyél rá. (Van működő Arduinod?)
UNO bootloader van rajta. Megoldás: Válaszd az UNO-t a board listából.
Zárlatos / szakadt a panel. Megoldás: Javítsd meg.
Döglött az MCU. Megoldás: Dobd ki.
> Programmer-nek "USBasp"-t
Ez itt nem játszik, mindegy.
Egyet rendeltél? 2 dolláros termékről van szó, érdemes többet rendelni, mint újra várni hetekig, ha hibás. Mondjuk én eddig még nem találkoztam hibással.
Rendeltem egy Nano V3.0 ATmega328 16M kínai klónt CH340G USB vezérlővel, hogy ismerkedjem az Ardunio rendszerrel. Első próbálkozásként letöltöttem és telepítettem hozzá az IDE-t (v. 1.8.1), és a CH430 USB driver-t. XP alatt látszik mint COM6, ezt, és a Nano-t, processzort (328) beállítottam az IDE-ben. Programmer-nek "USBasp"-t.
A panelen a zöld Power LED világít, egy piros villog. (Ez azt jelzi, hogy a Boot loader várja az infót az USB-n?)
Elsőként a minták közül kiválasztottam a "Blink"-et. A fordítás lefutott, de a letöltés nem:
"Arduino: 1.8.1 (Windows XP), Board: "Arduino Nano, ATmega328" Sketch uses 2068 bytes (6%) of program storage space. Maximum is 30720 bytes. Global variables use 186 bytes (9%) of dynamic memory, leaving 1862 bytes for local variables. Maximum is 2048 bytes. avrdude: stk500_recv(): programmer is not responding avrdude: stk500_recv(): programmer is not responding avrdude: error reading signature data for part "ATmega328P", rc=-1 avrdude: error reading signature data, rc=-1 avrdude: error reading signature data, rc=-1
A "Get board info"-ra ezt kaptam:
"BN: Unknown board VID: 1A86 PID: 7523"
Rossz lehet a panel, vagy valami még hiányzik a beállításokból?