Forum: Mikrocontroller und Digitale Elektronik ATMEGA256 startet ab und zu nicht


von Martin _. (martin__)


Lesenswert?

Hallo Leute!

Ich habe eine Platine mit dem ATMEGA256 designed und bestückt. Das Teil 
lief recht gut, bis wir es in ein Gehäuse eingebaut haben. Darin 
befinden sich mehrere Netzteile und auch andere Platinen, die für 
Anwendungen einige Ampere zur Verfügung stellen. Auch zwei große Lüfter 
(230V), einer links und der andere rechts von meiner erstellten Platine.

Schaltet man nun das Gerät ein, läuft der Prozessor nicht weg, obwohl er 
versorgt wird, die Brown-Out-Detektion ist aktiviert.
Auch ein Reseten bringt nicht den Erfolg. Der Prozessor rührt sich 
nicht.

Schaltet man das Gerät nun aus und nach kurzer Zeit wieder ein, 
funktioniert plötzlich alles einwandfrei. Der Fehler tritt nur dann auf, 
wenn das Gerät mehrere Stunden nicht eingeschaltet war.

Eigenartig finde ich, dass man den Prozessor nichtmal mit einem Reset 
zurückholen kann!?!

Um Tests durchzuführen habe ich nun den externen Quarz mal deaktiviert, 
um zu schauen, ob vielleicht dieser nicht wegläuft, wenn eine 
entsprechende Störspannung oder Ähnliches induziert wird.

Den Spannungseingang der Platine habe ich recht gut mit Ferriten und 
Kondensatoren gesichtert, sodass hier keine Störungen eindringen 
dürften. Zusätzlich ist die Platine auch noch mit zwei anderen Platinen 
verbunden, wodurch es hier laut meiner Ansicht auch zu entsprechenden 
Einwirkungen kommen könnte.

Ich weiß, dass es unmöglich ist, eine Ferndiagnose zu stellen. Die Tests 
bleiben uns nicht erspart.
Tipps und andere Anregungen würden mich jedoch sicher weiterbringen.
Was auch sehr interessant ist, warum der Prozessor nichtmal dann 
startet, wenn man den Reset-Taster drückt.
Der Prozessor wurde auf Verdacht schon getauscht, aber das Problem ist 
immer noch da.

Vielen Dank für eure Anregungen.


Schöne Grüße

Martin

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Stell den Controller auf längste Startup-Zeit ein. Wahrscheinlich kommt 
die Spannung zu langsam hoch, so daß der Controller keine stabilen 
Verhältnisse beim Anlaufen des Oszillators bekommt. Und setze mal die 
CKOPT-Fuse oder schalte den FullSwing-Oszillator ein (je nach 
Verfügbarkeit).

von Martin _. (martin__)


Lesenswert?

Hallo Travel Rec!


Ich habe die Fuses jetzt entsprechend umgestellt und werde das Gerät 
morgen wieder einschalten. Ich musste leider bemerken, dass man bis zu 
einem Tag warten muss, bis dieser Fehler beim Einschalten wieder 
auftritt.


Schöne Grüße

Martin

von Gast (Gast)


Lesenswert?

Nur mal so ein Gedanke:
Wenn du einen Tag warten musst bis das wieder passiert, hört sich das 
ganz so an als ob da irgendwelche Kapazitäten dran beteiligt sind.
Entlade doch einfach mal alles was zur Stromversorgung und der 
Resetschaltung gehört mit nem Stückchen Draht und schau nach ob der 
Fehler dann ohne nen Tag warten auftritt. Würde zumindest das Eingrenzen 
leichter machen, da du nicht immer nen Tag warten müsstest.

von Peter D. (peda)


Lesenswert?

Die Frage ist, wie Du feststellst, daß er nichts tut.

Du brauchst etwas (z.B. ne LED), was unabhängig von irgendwelchen 
Eingängen nach dem Reset immer angeht!

Kürzlich war ein ähnlicher Post, der sich auch als Softwareproblem 
entpuppte:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=85769&start=all&postdays=0&postorder=asc


Peter

von Martin _. (martin__)


Lesenswert?

Hallo Leute!


Das mit dem Kurzschließen der abgeschalteten Versorgung werde ich 
testen, danekschön.

Wegen Softwareproblem: Hm, es läuft im Prinzip nur eine Schleife, welche 
einen Pin ensprechend pulst (mit 200ms Wartezeit), damit ich sehen kann, 
dass der Prozessor läuft.
Läuft der Prozessor nicht weg, dann bleibt die LED dunkel.

Andererseits werden vorher auch Initialisierungen für entsprechende ICs 
vorgenommen. Das mit der Software ist ein guter Ansatz, um den Fehler 
weiter einzugrenzen, was bedeutet, dass ich eine Minimalsoftware 
reinspielen werde, die sich Ausschließlich um die Initialisierung des 
Prozessors kümmert.

Zudem ist mir jetzt auch eingefallen, dass ich, falls der Prozessor 
wieder nicht wegläuft, ich versuchen könnte, mittel Programmiergerät mit 
diesem Kontakt aufzunehmen, um zu sehen, ob er darauf reagiert.

Vielen Dank und schöne Grüße

Martin

von Martin _. (martin__)


Lesenswert?

Hallo Leute!

Das mit den Fuses hat funktioniert.
Die Startzeiten wurden erhöht und der Quarz auf "Full-Swing" 
eingestellt.
Jetzt startet der Prozessor immer.

Vielen Dank.

Schöne Grüße und schönes Wochenende.

von Martin _. (martin__)


Lesenswert?

Hallo Leute!


Weitere Tests haben ergeben, dass der Fehler immer noch auftrat.

Die Brown-Out-Detektion ist aktiviert, auch der Quarz läuft weg, habe 
ich nachgemessen, nur der Prozessor nicht.
Auch die Software habe ich entsprechend verkürzt, sodass ich mögliche 
Software-Fehler weitgehend ausschließen konnte.

Ich bin zwar jetzt dahinter gekommen, woran es tatsächlich lag, ich bin 
mir jedoch jetzt nicht ganz sicher, wie ich das Problem beheben kann.

Also: Es befindet sich auf dem Board zusätzlich ein 
FT2232C-USB-Baustein.
Dieser ist so beschalten (Figure 9 - USB Self Powered Configuration), 
wie es vom Hersteller empfohlen wurde.
Der Reset-Eingang des FTDIs ist einmal mit einem 10K Widerstand gegen 
GND verbunden und mit einem 4,7K auf den USB-Spannungsconnector.

Wenn ich nun den USB-Stecker zuerst einstecke, also in der Früh den 
Computer hochfahre, dann erfährt der Reset-Pin über den 4,7K Widerstand 
5V. Es fließt anscheinend ein kleiner Strom, der den gesamten 5V-Kreis 
über den FTDI auf 0,22V bringt.
Wenn ich nun den Spannungsschalter des Gerätes aktiviere, läuft der 
Prozessor im Normalfall nicht weg. Er lässt sich dann auch nicht 
reseten.

Aus diesem Grund war es für mich scheinbar so, dass ich einen Tag warten 
müsse, bis der Fehler auftaucht. - Aber es waren diese speziellen 
Einschaltumstände, die zu dem Fehler führten.

Das Problem ist jetzt, wie kann ich verhindern, dass eine Spannung am 
Reset-Eingang des FTDIs anliegt, wenn ich den USB-Stecker zuerst 
anstecke?

Zwei Möglichkeiten sind mir dazu eingefallen:
1: Eine Art Relais, Optokoppler oder MOSFET, welcher erst dann aktiviert 
wird, wenn 5V an der Prozessor-Platine anliegen und dann die 
USB-Spannung auf den Reset-Eingang des FTDIs durchschaltet.

2: Den 4,7K Widerstand nicht mehr mit der USB-Spannung verbinden, 
sondern mit dem 5V-Kreis des Prozessors. Dies würde aber bedeuten, dass 
der USB-Baustein nicht in den Reset-Modus gelangt, sobald der 
USB-Stecker gezogen wird. Ich weiß jetzt allerdings nicht, welche 
negativen Auswirkungen dies haben könnte.
Am einfachsten wäre die zweite Möglichkeit, aber ich bin mir nicht 
sicher, ob diese so sauber ist oder absolut zuverlässig funktioniert.

Ich wäre über entsprechende Hilfen und Meinungen sehr dankbar.

Schöne Grüße

Martin

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Poste mal bitte Deine gesamte Schaltung.

von Hc Z. (mizch)


Lesenswert?

Kommt nur mir die Ausdrucksweise verwirrend vor?  Wenn ein Quarz 
wegläuft, hält er seine Sollfrequenz nicht, somit ist etwas kaputt. 
Wenn der Prozessor wegläuft, ist er weg, also nicht mehr im Programm - 
sonst würde er loslaufen und nicht weg.  Irgendwie tue ich mir da schwer 
und stolpere immer wieder ... und wenn ich jeden Satz zweimal lesen 
muss, ist es zum Weglaufen ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.