Hallo Zusammen, ich verzweife an einem Phänomen, welches ich mir nicht erklären kann. Ich habe einen ATmega328 welchen ich mit 3.3V speise und über SPI einen Lora-RFM95 Funkchip ansteuere. Das ganze funktioniert mit 10 Geräten einwandfrei, auch liefert das Netzteil genügend Strom. Nach ca. 24h Betrieb startet der CPU aus unerklärlichen Gründen neu (vieleicht external Reset), danach resettet er sich endlos in einem 300ms Loop und das Gerät kann nicht mehr starten. Wenn ich nun die Software über ISP programmiere, kommt der CPU aus dem 300ms Loop nicht mehr raus. Wenn ich aber die Speisung aus und wieder einschalte, funktioniert alles einwandfrei. Auch habe ich herausgefunden, dass wenn ich eine andere Software programmiere, diese einwandfrei läuft und wenn ich danach wieder die originale Software lade, dann ist der Loop weg. Möchte auch noch sagen, dass bei einem Gerätestart die Software in einem 1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software ausgeschlossen. Kann mir hier jemand helfen? Vielen Dank und Grüsse Hannes
>1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software >ausgeschlossen. Na dann ist ja alles bestens mit der SW ...
Stützcaps hinzufügen. EMV verbessern. RESET eingang mit niederohmigem Pull-Up versehen.
> auch liefert das Netzteil genügend Strom.
Und die Spannung am Chip? Es reicht ein Einbruch von Mikrosekunden um
den Chip zu resetten. Bitte mit Oszi die Qualität der Versorgung prüfen.
Sind genug Stützkondensatoren an der Versorgungsspannung?
Zeige mal den Schaltplan und ein Foto vom Aufbau. Die Ursache sind immer wieder die gleichen, anhand der Bilder wählen wir die für dich relevanten aus.
Hannes Feurer schrieb: > Möchte auch noch sagen, dass bei einem Gerätestart die Software in einem > 1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software > ausgeschlossen. ist auch eine Deaktivierung des Watchdogs vor dem Delay drin, um eine Fehlfunktion der 1000ms ohne W-Reset auszuschließen?
Stack/Heap-Überlauf? ....wird immer wieder gern genommen, und geht bei den kleinen µC ganz, ganz schnell. Die Symptome sind meist ganz ähnlich...
Lustig sind auch nicht initialisierte isr-vectoren.... :)
Dirk B. schrieb: > Hannes Feurer schrieb: > Möchte auch noch sagen, dass bei einem Gerätestart die Software in einem > 1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software > ausgeschlossen. > > ist auch eine Deaktivierung des Watchdogs vor dem Delay drin, um eine > Fehlfunktion der 1000ms ohne W-Reset auszuschließen? Das wird es wohl sein. Wenn der watchdog zuschlägt, tut er es bis er zurückgesetzt wird, oder ein kompletter powercycle kommt. Externer Reset (zb durch ISP) tangiert ihn nicht. Check das mcusr, lies die beschreibung zum watchdog. Und finde raus, warum er an ist..
Hallo zusammen, vielen Dank für die schnelle Antwort. Super! Im Anhang das Schema. Der Watchdog ist per Fuse Bits deaktiviert und wird in der Software auch nicht verwendet.. Ich kläre aber noch das MCUSR ab. War aber damals bei der Störung "External Reset" Stack überlauf muss ich prüfen, glaube aber nicht, dass hier ein Problem besteht. Interessant ist auch, dass dieses Problem erst mit der neuen Charge der MCU's auftritt. @Flippi: Alles schon versucht, 4k7 mit Kapazität hat nichts gebracht. Oszi zeigt keine Einbrüche. Thanks
Der interne Pull-Up, ist für I²C viel, zu hochohmig. Verwende dort mal besser 2,2k Ohm. Dieses ASM13 Dings, ist das etwa eine RGB LED ohne Vorwiderstand? Hast du die Mindestlast für das Netzteil eingehalten?
Was mir so spontan auch noch auffällt: Varistor sowie TVS ist nicht sehr glücklich bemessen. Mit ihren Min-Werten und bei Netz + 10% (damit darf man rechnen, ich hab schon 240 VAC an ner Steckdose gemessen) dürften die immer ordentlich zuschlagen, der Varistor kann mit seinem Min-Wert sogar schon bei Netz-Nennspannung zuschlagen.
Hannes Feurer schrieb: > Nach ca. 24h > Betrieb startet der CPU aus unerklärlichen Gründen neu (vieleicht > external Reset) Die Resetquelle läßt sich leicht herausfinden (MCUSR), man muß es nur tun.
Hannes Feurer schrieb: > Super! Im Anhang das Schema. Der Schaltplan sieht doch recht gut aus. Wenn jetzt das Layout nicht völlig vermurkst ist, dann würde ich den Fehler in der Software suchen. Denn eines ist selbst unter Softwerkern klar: es gibt keine fehlerfreie Software. Die letzten drei "Hardwarefehler", die ich mit dem LA gesucht habe, waren letztlich Softwareprobleme. Wobei man fairerweise einen der Fehler als schwarzen Peter immer zwischen Prozessorentwickler, Compilerbauer und Programmierer hin- und herschieben könnte...
Hallo Zusammen, vielen Dank für die Hilfe. @Stefanus: Ja, das ASM ist eine RGB LED, jedoch ohne Vorwiderstand. Sollte aber mit 3.3V möglich sein, da im Datenblatt die Breite von 2.7 - 3.8V angegeben ist. Minimalast von 30mA ist eingehalten. Die neuen RACOM Netzteile haben neu 0% minimale Last drin. @m.k.: Ja, die haben wir auch nach der EMV Messung erhöht, da diese Durchgeschlagen haben. Im MCUSR wird der External Reset angezeigt. Wenn ich aber mit dem Oszi messe, sehe ich da keine Einbrüche. Habe auch eine Kapazität und mit niederohmigen Widerständen versucht. Wenn ich auch die Speisung ausschalte und wieder einschalte, ist der Fehler ja weg.... Ich habe nun eine Software geschrieben, die weniger Ram (30% usage anstatt 52%) und Flash (30% anstatt 55% usage) braucht. Könnte ein Ramfehler einen Reset verursachen? Einen Softwarefehler kann ich ausschliessen, denn beim Start geht die Software in einen 1000ms Delay, in welchem er ja abstürzt.
Poste Schaltplan und sourcecodes. Alles andere ist Prosa und sollte sanktioniert werden!
LEDs betreibt man immer mit Vorwiderstand. Deine Angabe von 2,7 - 3,8V kann bedeuten, dass du bei 3,3V einen satten Kurzschluss erzeugst. Der wiederum könnte erklären, warum dein Mikrocontroller resetted. Abgesehen davon ist die Betriebsspannung von der Farbe abhängig. Rote LEDs haben normalerweise 1,7 - 2,1V. LEDs sind keine Glühlampen! Wenn bei einer Glühlampe im Datenblatt steht, dass sie für 10-14V geeignet seien, dann kannst du sie mit 10-14V betrieben. Bei LEDs ist das anders. Sie werden mit einem bestimmten Strom bei einer bestimmten Umgebungstemperatur betrieben, und nur dann ergibt sich eine Spannung im genannten Bereich. Wenn du nur 0,1V mehr anlegst, verändert sich der Strom erheblich. Damit verändert sich auch die Temperatur. Und jetzt kommt der Teufel im Detail: Wenn die Temperatur eine LED steigt, sinkt ihre Betriebsspannung. Du zwingst ihr aber eine konstante Betriebsspannung auf, daher steigt der Strom und sie wird noch wärmer - ein Teufelskreis dem nur die steigende Konvektion entgegen wirkt. Am Ende verliert die LED, sie wird frühzeitig kaputt gehen. Wenn du mir nicht glaubst: Miss den Strom durch die drei LEDs und die Spannung, die an ihnen anliegt. Du wirst sehen, dass die Ströme und Spannungen sehr unterschiedlich ausfallen. Du wrist sehen, dass der Strom allmählich ansteigt, bis die LED eine gewisse (schädliche) Temperatur erreicht hat. Und du wirst sehen, dass am Mikrocontroller eine gewisse Spannung abfällt, da sein Ausgang kein idealer Schalter ist. Mach das mit allen Ausgängen gleichzeitig, und dein Mikrocontroller wird schmelzen.
Hannes Feurer schrieb: > Ja, das ASM ist eine RGB LED, jedoch ohne Vorwiderstand. > Sollte aber mit 3.3V möglich sein, da im Datenblatt die Breite von 2.7 - > 3.8V angegeben ist. Hallo, solange du diesen Fehler nicht beseitigst, hat es wenig Sinn, weiter zu suchen. Am besten liest du in Büchern, was ist LED, wie schaltet man LED und warum so und nicht anders.
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.
