Problem: undefinierter Zustand Mega 2560 nach Einschalten

Vorab einige Informationen zu meinem Projekt, danach meine eigentliche Frage ... Ich möchte letztlich 144 LED-Module (12 Volt, 2 Watt) einzeln mittels Arduino Mega 2560 R3 schalten. Den Arduino wie auch die Schaltung speise ich über ein PC-Netzteil (BeQuiet Straight Power 10, 400W), den Mega mit 12 Volt über Vin. Momentan arbeite ich mit einem abgespeckten Testaufbau mit 144 einfachen LEDs, die ich mit 8 kaskadierten Schieberegistern 74HC595 nach Belieben schalten kann. Die Schaltbefehle laufen über die serielle Schnittstelle oder Lan auf. Das läuft bereits, aber:

Jetzt das Problem: Schalte ich das Netzteil an ("Kaltstart"), muss ich ersteinmal zusätzlich den Arduino resetten, damit alles wunschgemäß läuft (Taste). Ohne Reset reagiert der A. nicht und die Schaltung scheint ohne Kontrolle. Wie kann ich diesen manuellen Anfangsreset automatisieren?

2 Varianten fallen mir spontan ein: 1. Den Brownout per Fuses auf maximum setzen. 2. Einen Kondensator zwischen Reset und GND

Wahrscheinlich ist der Versorgungsspannungsanstieg beim Einschalten zu langsam und darum funktioniert der Reset nicht. Kondensator wie Vorgeschlagen oder externe Resetschaltung die x zeit nach dem Einschlten einen Impuls liefert.

Grüße Uwe

Vielen Dank für Eure Hilfe. Ein Kerko (100 nF) zwischen Reset und GND bringt eine sichtbare Verbesserung. Sofern zwischen Aus- und erneutem Einschalten min. eine Minute gewartet wird, klappt alles wunschgemäß. Bei kürzeren Taktzeiten sperrt der (noch) geladene Kondensator und alles ist wie vorher. Ich habe dann noch einen Elko parallel geschaltet, in dieser Kombination funktioniert es sowohl als auch. Die Variante Fuse Settings klingt plausibel. Wenn ich das richtig verstehe mit (meinen) Bordmitteln nicht einfach umzusetzen aber immer noch ein Plan B. Danke nochmals.

Etwas zu früh gefreut:
Durch die o.a. Lösung taucht wider Erwarten ein neues Problem auf. Der Upload eines Sketches scheitert, es erscheint die Fehlermeldung avrdude: stk500v2_ReceiveMessage(): timeout.
Immerhin eindeutig reproduzierbar: Ohne Kondensatoren Upload erfolgreich aber undefinierter Startzustand, mit Kondensatoren definierter Start aber kein Upload möglich:confused:

Ich würde es jetzt mit der Brownout-Änderung versuchen und gemäß AVR Fuse Calculator es zunächst mit BODLEVEL 101 (2,7 V) testen. Hat das schon einmal jemand von Euch gemacht? Kann ich die Fuse-Bytes vom PC aus manipulieren, also ohne zusätzlichen Programmer?

Hallo,

dazu benötigt man zwingend einen Programmer. 2,7 ist übrigens Standard. Du müßtest das auf 4,3 ändern.

Kauf Dir am besten den AVR ISP mkII. Reichelt, Pollin, Amazon, Watterott, ist aber z.Z. schlecht verfügbar. Bin sicher der läuft aus seitens AVR.

also ohne zusätzlichen Programmer?

Nöö…
Du brauchst einen ISP Programmer.
Wenigstens ein UNO, zweiter Mega, oder so, muss sein.

BODLEVEL 101 (2,7 V)

In der boards.txt sind die Fuses definiert.
2,7V könnte schon original Arduino sein.
Prüfe das doch erstmal… (bevor du deinen Mega totfused.)

  • In der boards.txt sind die Fuses definiert.
  • 2,7 ist übrigens Standard. Du müßtest das auf 4,3 ändern.

In der boards.txt sind die Fuses (wie folgt) definiert:

  • low_fuses=0xFF
  • high_fuses=0xD8
  • extended_fuses=0xFD

Gebe ich diese Werte in den AVR-Fuse-Rechner ein, wird BODLEVEL 101 (2,7 V) rückgemeldet. Bei Sollwert 4,7 V ändert sich nur efuse auf 0xfc.

Du brauchst einen ISP Programmer. Wenigstens ein UNO, zweiter Mega, oder so, muss sein.

Ich habe noch einen UNO rumliegen. Werde mal mein Glück versuchen.