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
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).
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
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.
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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.