Keresés

Részletes keresés

323i Creative Commons License 2017.01.22 0 0 2779

Nalam mega/uno szinten ugyanugy fagy.

Ha megvagyok a bootloader update-tel, jelzem es bizom benne hogy mukodni fog a wdt.

Előzmény: Törölt nick (2778)
Törölt nick Creative Commons License 2017.01.22 0 0 2778

https://bigdanzblog.wordpress.com/2014/10/23/installing-the-optiboot-loader-on-an-arudino-nano-to-fix-the-watch-dog-timer-wdt-issue/

https://bigdanzblog.wordpress.com/2014/10/24/arduino-watchdog-timer-wdt-example-code/

https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader

Ezek alapján a nanon sikerült bekapcsolni a wdt funkciót, a nano uno-ként viselkedik.

Nem lettem előrébb, a lefagyás wdt-vel is teljes, az az elektronikai rész is lefagy, csak a tápfeszültség ki-be kapcsolás oldja meg az újra indítást.

Az igen erős mágneses zavar, pl. egy induktív kapcsolás üti ki a magyarázatok szerint, azt kerülni kell.

A kódban is lehetnek hibák, nálam a delay(); időzítés elmaradása határozott stabilitás javulást eredményezett.

Előzmény: 323i (2776)
323i Creative Commons License 2017.01.22 0 0 2777

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.

Előzmény: titusz99 (2775)
323i Creative Commons License 2017.01.22 0 0 2776

Ezek sajnos nem segitettek, marad a bootloader csere.

Előzmény: Prof (2772)
titusz99 Creative Commons License 2017.01.22 0 0 2775

Van egy usbasp-om ilyen esetekre.

A bootloader, ami az arduino ide része.

Annyi, hogy kicsit át kell írni a boards.txt-t.

Az interneten rengeteg anyag van ezzel kapcsolatban.

Arról is, hogy hogyan lehet egyik arduinoval a másik bootloaderét cserélni vagy egyszerűen csak programozni.

Előzmény: 323i (2774)
323i Creative Commons License 2017.01.22 0 0 2774

Masik Arduino-val frissitetted a bootloadert?

Honnan toltotted le hozza az optiboot-ot?

 

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?

Előzmény: titusz99 (2773)
titusz99 Creative Commons License 2017.01.22 0 0 2773

Ha bármelyik wdt tesztet futtatva lefagy, akkor bootloadert kell cserélni.

Csere után, lehet tesztelni.

Miattad a NANO-mat teszteltem.

Lefagyott, optiboot-ra lecseréltem.

A teszt sikereses futott.

 

Én csak azt nem értem, hogy ennyi év után még most is a régi bootloader-rel árulják a modulokat.

Egyébként az alap bootloader tartalmazza a wdt kezeléséhez szükséges kódsorokat.

Csak ahhoz úgy kell lefordítani.

A legújabb arduino ide is csak a régi bootloadert tartalmazza. Kiprobáltam.

Előzmény: 323i (2771)
Prof Creative Commons License 2017.01.22 0 0 2772

Szia!

Try-and-error...

http://forum.arduino.cc/index.php?topic=176329.0

És innen hivatkozva:

http://www.fiz-ix.com/2012/11/low-power-arduino-using-the-watchdog-timer/

 

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é.

Előzmény: 323i (2771)
323i Creative Commons License 2017.01.22 0 0 2771

Szia,

 

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);
  }
}

void loop(){
  delay(1000);
  digitalWrite(onboardLED, HIGH);
  delay(1000);
  digitalWrite(onboardLED, LOW);
}

===

 

Az elozo kodot (while(1)) amit kuldtem, az in-en talaltam, azert probaltam ki azt is, mert amit eredetileg probaltam es kuldtem, azzal sem mukodott.

A serial.print azert kerult bele az egyik peldaba, hogy lassam meddig jut el a wdt utan.

 

Itt talaltam egy reset teszet: https://github.com/Optiboot/optiboot/tree/master/optiboot/examples/test_reset -et, aminek van egy ilyen resze:

 

===

 if (resetFlags != 0x00)
  {
    // It should never enter here
    Serial.print(" Unknown");
  }

===

 

nalam persze rafut ide es ki is irja a serial.monitoron. Szoval nem vagyok meg elobbre.

 

Valamiert azt gondolom (ill. inkabb csak megerzes), hogy az optiboot-os bootloader update oldana meg a problemamat...

 

Zaraskent kiprobaltam meg millis-sel:

 

===

#include <Arduino.h>
#include<avr/wdt.h>
const int onboardLED = 13;

void setup() {
  wdt_disable();
  Serial.begin(9600);
  digitalWrite(onboardLED, LOW);
  delay(1000);
  wdt_enable (WDTO_8S);
  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);
  }
}

void loop(){
  unsigned long Time1 = 0;
  unsigned long Time2 = 0;

  Time1 = millis();
  delay(500);
  Time2 = millis();
  Serial.print(Time1);
  Serial.print("       ");
  Serial.println(Time2);
  delay(100);
 
  delay(1000);
  digitalWrite(onboardLED, HIGH);
  delay(1000);
  digitalWrite(onboardLED, LOW);
}

===

 

7700 es 8200-ig jut el az egyik es a masik szamlalo, akkor jon(ne) a reset es onnaltol semmi sem tortenik.

Előzmény: Prof (2770)
Prof Creative Commons License 2017.01.21 0 0 2770

Szia!

 

Igen, szoftver.

 

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 eredeti példaprogram működik?

Előzmény: 323i (2769)
323i Creative Commons License 2017.01.20 0 0 2769

Szia,

 

hogy a kerdeseidre valaszoljak:

- gondolom szoftver

- ezt a kerdest nem ertem

- ezzel a koddal Unon ugyanugy megall ujraindulaskor:

- milyen hw-es kornyezetre gondolsz? Nincs semmi az Unon.

 

Nalad milyen koddal mukodik?

 

===

#include<avr/wdt.h>
int i=0;

void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
wdt_enable (WDTO_8S);
}

void loop(){
while(1){
i++;
delay(500);
Serial.println(i);
}
}

===

Előzmény: Prof (2706)
Vargham Creative Commons License 2017.01.20 0 0 2768

Szerintem ennél többet távgyógyításban nehéz mondani.

 

Kimérheted még multiméterrel:

  • rx-tx láb között nincs-e zárlat
  • rx, tx és GND, Vcc között nincs-e zárlat
  • CH340 rx, tx lába és az AVR rx, tx lába között nincs-e szakadás

 

+1 ötlet:

Próbáld meg másik gépen, amin nem XP van. (Az XP-t amúgy is érdemes lecserélni.)

Előzmény: szla0056 (2767)
szla0056 Creative Commons License 2017.01.20 0 0 2767

Rendben, akkor "ezzel" nem foglalkozom.

De azt azért továbbra is jó lenne tudni, hogy miért nem megy.

Előzmény: Vargham (2766)
Vargham Creative Commons License 2017.01.20 0 0 2766

> Gondolom a BN-re is illene valamit kapnia, ezt már a kontrollertől, igaz?

Nem, az marad unknown. Ne foglalkozz vele. Mondtam már, hogy nem jelent semmit.

Előzmény: szla0056 (2765)
szla0056 Creative Commons License 2017.01.20 0 0 2765

Igazad van, gugliban tényleg megtaláltam a VID/PID-et.

Gondolom a BN-re is illene valamit kapnia, ezt már a kontrollertől, igaz?

 

A reset-nyomós indítást is próbáltam már, eredmény ugyanaz.

 

Előzmény: Vargham (2764)
Vargham Creative Commons License 2017.01.20 0 0 2764

> Bocs az értetlenkedésért, de ezek szerint ez a kommunikáció csak az illesztővel történt eddig?

Igen

 

> És mit takar a VID, a PID és a BN?

Google? (USB hardver azonosító: Vendor ID és Product ID. A BN-t pedig Arduino Board Namenek tippelem.)

 

> A bekapcsolás után folyamatosan villogó L led azt jelzi hogy fut egy bootloader?

Azt hiszem, de most nem találom az információ forrását.

 

> És a hibaüzenet szerint a kontroller nem válaszol?

Pontosan

 

Tartsd lenyomva a reset gombot, és csak akkor engedd el, amikor kiírja, hogy "Uploading..."

Előzmény: szla0056 (2763)
szla0056 Creative Commons License 2017.01.20 0 0 2763

Bocs az értetlenkedésért, de ezek szerint ez a kommunikáció csak az illesztővel történt eddig?

És mit takar a VID, a PID és a BN?

A bekapcsolás után folyamatosan villogó L led azt jelzi hogy fut egy bootloader?

És a hibaüzenet szerint a kontroller nem válaszol?

Előzmény: Vargham (2762)
Vargham Creative Commons License 2017.01.20 0 0 2762

> 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.

Előzmény: szla0056 (2761)
szla0056 Creative Commons License 2017.01.20 0 0 2761

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?

Előzmény: Vargham (2760)
Vargham Creative Commons License 2017.01.20 0 0 2760

"BN: Unknown board
VID: 1A86
PID: 7523"

 

Jelen esetben ez nem számít semmit.

Előzmény: szla0056 (2758)
szla0056 Creative Commons License 2017.01.19 0 0 2759

Próbáld meg teljesen másik USB portról!

Úgy érted, hogy dugjam át a PC-n egy másik USB portra? Megtettem. A COM port száma más lett, (erre átírtam,) de az eredmény nem változott.

Előzmény: Prof (2757)
szla0056 Creative Commons License 2017.01.19 0 0 2758

1. Az L LED villog, ez nem azt jelenti, hogy van bootloader? Ha mégsincs rajta, hogy tudok tenni rá? Nincs másik Arduinom.

 

2. Kipróbáltam UNO-ra állítva. Így sem ment, de a hibaüzenet más volt:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x60

És ezt ismételte 10-szer. Az Rx leden pici felvillanások látszanak is.

Nano-t választva 2 programmer is not responding próbálkozás után ezt teszi hozzá:

avrdude: error reading signature data for part "ATmega328P", rc=-1
Mi itt a signature data? Ad ez valami infót? Nekem sajnos nem.

 

3. Nem látszik a panelen se zárlat, se szakadás.

 

4. Ezzel még várnék. :-)

 

Inkább 3$, de igazad van, most már én sem egyet rendelnék.

A "Get board info" válasz mond valakinek valamit?

"BN: Unknown board
VID: 1A86
PID: 7523"

 

Tudok rajta még tesztelni, ellenőrizni valamit?

Előzmény: Vargham (2755)
Prof Creative Commons License 2017.01.19 0 0 2757

Próbáld meg teljesen másik USB portról!

Előzmény: szla0056 (2754)
Prof Creative Commons License 2017.01.19 0 0 2756

Nekem volt eddig egy (kb. 15-ből), meg egyet én téglásítottam. Mondjuk nem a 2 dolláros, hanem az 5 dollárosok között válogattam inkább.

Előzmény: Vargham (2755)
Vargham Creative Commons License 2017.01.19 0 0 2755
  1. Nincs rajta bootloader. Megoldás: Tegyél rá. (Van működő Arduinod?)
  2. UNO bootloader van rajta. Megoldás: Válaszd az UNO-t a board listából.
  3. Zárlatos / szakadt a panel. Megoldás: Javítsd meg.
  4. 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.

Előzmény: szla0056 (2754)
szla0056 Creative Commons License 2017.01.19 0 0 2754

Sziasztok!

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?

 Előre is köszönöm a választ.

 

titusz99 Creative Commons License 2017.01.17 0 0 2753

A Dallasok kiolvasása még nem az igazi.

Feleslegesen sokáig tart.

Előzmény: Törölt nick (2752)
Törölt nick Creative Commons License 2017.01.17 0 0 2752

Így már tökéletes.

Kezd hasonlítani egy programra.....

A stabilitás eldöntheti végre, szoftveres, vagy hardveres oka van a teljes lefagyásnak.

Stabil működés esetén jöhet a megás, due fejlesztés.

Előzmény: titusz99 (2751)
titusz99 Creative Commons License 2017.01.17 0 0 2751

Pedig mennie kellene.

 

Helyette:

void lcd0()

{

static int c = 0;

if (c==0) lcd_idopont();

if (c==1) lcd_puffer();

if (c==2) lcd_teljesitmeny();

if (c==3) lcd_fusthofok();

c=(c+1) % 4;
}


és 4*1000*4 -ből vedd le az egyik "*4"-et.

Előzmény: Törölt nick (2750)
Törölt nick Creative Commons License 2017.01.17 0 0 2750

void lcd0() {
lcd_idopont();
t.after(INTERVAL_LCD , lcd1);
}
void lcd1() {
lcd_puffer();
t.after(INTERVAL_LCD , lcd2);
}
void lcd2() {
lcd_teljesitmeny();
t.after(INTERVAL_LCD , lcd3);
}
void lcd3() {
lcd_fusthofok();
}

A kód ezen része részlegesen fut, lcd2 és lcd3 megjelenik az lcd-n,

lcd0 és lcd1 nem fut le.

Előzmény: Törölt nick (2749)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!