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
> 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.
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?
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.
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.