Pages: [1]   Go Down
Author Topic: Arduino + Watchdog Fehler = unbenutzbar  (Read 595 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallöchen =)

Ich bin noch ganz neu in der Arduino- & Mikrocontrollerwelt. Mir ist ein Fehler beim Programmieren meines Arduinos unterlaufen, ich habe etwas mit dem Watchdog herum gespielt, dabei ist mir scheinbar ein Fehler unterlaufen. Jetzt startet der Arduino alle paar Mikrosekunden neu. Wäre an sich ja nicht weiter schlimm, aber ich kann dass Sketch nicht überspielen, da gar keine Verbindung zum Board (Mega 2560) hergestellt wird.

Wie kann ich jetzt am besten vorgehen?
->Ich meine irgendwo gelesen zu haben, dass man mit meinem 220µF Kondensator das Bord vom Neustart abhalten kann, stimmt das und gilt das auch in diesem Fall? (Nebenfrage hierzu: wofür steht die Voltangabe der Kondensatoren? Ich nehme an, dass ist das Maximum, welches sie aushalten, für mich mit meinen 5V also egal, oder gibt es dort auch ein Mimumum?)
->Ein zweites Bord oder spezielle Hardware um den Bootloader neu zu brennen besitze ich aktuell auch nicht, ohne geht es aber (meiner Recherche nach) nicht, also kann ich den Chip auch nicht "einfach löschen"?

Ich hoffe ihr könnt meine Anfängerfragen beantworten,  smiley-red
vielen Dank dafür schon einmal!

Edit:
Also ich habe einen Code der etwa so war drauf geladen, wobei da irgend ein Fehler drin sein muss, da der Watchdog eigentlich erst nach dem Setup(was ein paar Sekunden dauern sollte) eingeschaltet werden sollte.
Code:
#include <SPI.h>
#include <Ethernet.h>
#include <avr/wdt.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network.
// gateway and subnet are optional:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 99);
IPAddress gateway(192,168,1, 1);
IPAddress subnet(255, 255, 255, 0);


// telnet defaults to port 23
EthernetServer server(23);
boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {
  // initialize the ethernet device
  Ethernet.begin(mac, ip, gateway, subnet);
  // start listening for clients
  server.begin();
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
  Serial.print("Chat server address:");
  Serial.println(Ethernet.localIP());     
  wdt_enable(WDTO_15MS); 
}

void loop() {
 ...
}
« Last Edit: January 04, 2013, 08:00:59 am by Verim » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
ich habe etwas mit dem Watchdog herum gespielt
Quote
spezielle Hardware um den Bootloader neu zu brennen besitze ich nicht

Weiss nicht wie du es ohne Programmer geschafft hast, aber den Watchdog Timer in den Fuses solltest du wieder abschalten
http://www.engbedded.com/fusecalc

Der Kondensator hilft meines Wissens nach nur, den Reset via DTR Signal ( Serial Monitor, Upload ) zu unterdrücken.
Logged

AREA COLOGNE
Online Online
Edison Member
*
Karma: 21
Posts: 1141
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du hast eine watchdog mit 15ms!!!!! gesetzt was bei dem Bootloader ja schon mal das absloute k.o. ist.
Das heisst die watchdog resetet deinen Arduino immer dann wenn innerhalb 15ms kein wdt_reset() aus der loop gekommen ist. Der Bootloader Verzug dauert schon mindestens 1s, also kommst du aus deinem Dilemma ohne externe Hardware (ISP Programmer) nicht raus. Watchdogs sollte man wirklich nur dann einsetzten wenn man
1. weiss was man da tut
2. es wirklich notwendig ist.

Gruß
Der Dani
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jojo, habes es gelernt  smiley-cry  smiley-zipper

Ich habe mir jetzt einen USBasp besorgt, alles korrekt angeschlossen (MOSI/MISO/SS/SCK/5V/Gnd Pins von hier genommen).
Jedoch "läuft" mein Board jetzt natürlich "ganz normal" und resetet sich munter weiter. Wenn ich mit avrdude  versuche eine Verbindung auf zu bauen kommt immer die Ansagt, dass das Board nicht antworten würde, bzw mit -Force, dass es eine ungültige Signatur (nämlich keine!) sendet.

Du wirktest mir so kompetent, dass du mir bestimmt verraten kannst, wie ich auch dieses Problem umschiffen kann =)

avrdude mit -F
Code:
>avrdude -c usbasp -p m2560 -U 2560.hex -F

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA2560 is 1E 98 01
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.

avrdude done.  Thank you.
« Last Edit: January 11, 2013, 02:42:42 pm by Verim » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21840
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also letzte Rettungsring: HV-Programmierung.
http://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-programmer/
http://atmega32-avr.com/avr-high-voltage-programmer-using-arduino-avr-microcontroller/
So kannst Du den ATmega zurücksetzen.
grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: