Forum: Mikrocontroller und Digitale Elektronik ATMega 16 - Reset nach ein paar Sekunden


von Jens T. (jaytee)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem. Und zwar hab ich einen ATMega 16, der im großen 
und ganzen ein paar Werte vom ADC abfragen soll und auf einem Display 
ausgeben (Pollin LCD-12232). Das ganze funktioniert auf meinem STK500 
mit Potis (als Testdummy) an den ADC-Eingängen auch wunderbar.
Nun hab ich das ganze in eine eigenständige Schaltung gegossen. Dabei 
hab ich das Problem, dass das Programm ein paar Sekunden lang läuft und 
dann friert entweder das Display ein, oder das Programm startet komplett 
neu. Auch beim Einfrieren des Displays startet das Programm irgendwann 
neu. Oder das Display zeigt wirre Zeichen an und startet irgendwann neu.
Die Spannungsversorung ist ein Labornetzteil. Ich hab mal testweise das 
Netzteil versucht, mit dem ich das STK500 betreibe, aber das hat auch 
keine Veränderung gebracht.

Ich hab so gar keine Idee, wo ich suchen muss. Dies sind meine ersten 
(ernstzunehmenden) Schritte in diesem Gebiet, deshalb bitte ich um 
entwas Nachsicht mit mir ;-)

Das Programm hab ich mal als Zip angehängt, das wär doch zu viel, um es 
zu posten.

Danke!
Jens

von Thomas (kosmos)


Lesenswert?

Stacküberlauf? Beendest du alle Subroutinen korrekt(rcall -> ret), wenn 
nicht läuft irgendwann der Stack über und dein Programm landet bei 0

von Jens T. (jaytee)


Lesenswert?

Der Stack würde ja auch überlaufen, wenn der Controller im STK500 
steckt. Aber dort funktioniert es ja einwandfrei. Ich vermute das 
Problem eher bei der Hardware.

Jens

von zummy (Gast)


Lesenswert?

haben alle gesetzten Interrupts auch eine ISR dazu?
Ist der Watchdog ausgeschaltet?

von Jens T. (jaytee)


Lesenswert?

Interrupts habe ich keine in meinem Programm. Und der Watchdog ist auch 
nicht aktiviert.

Jens

von Jens T. (jaytee)


Lesenswert?

Mir fällt gerade etwas auf. Ich habe die Spannungsversorgung vom meiner 
Schaltung runter genommen und über den ISP mit dem STK500 verbunden (die 
Schlatung wird also über den ISP versorgt):
Jetzt läuft alles wunderbar! Da muss doch irgendwie der Wurm in meiner 
Spannungsversorgung sein, oder?

Jens

von Jens T. (jaytee)


Lesenswert?

Also irgendwie komm ich nicht weiter. Die Spannung scheint stabil zu 
sein, soweit ich das mit meinem Multimeter beurteilen kann. Sie liegt 
immer bei genau 5 V. So recht weiß ich nicht, wo der Unterschied liegt, 
wenn die Spannung durch den ISP kommt, oder wenn sie direkt angelegt 
wird.
Es ist immer noch so, wenn die Schaltung mit dem ISP mit dem STK500 
verbunden ist, läuft alles stabil. Ich kann mir einfach keinen Reim 
drauf machen.

Für Hinweise wäre ich wirklich dankbar.
Jens

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Wieviel Strom zieht deine Schaltung bei 12V Versorgung? Wie warm wird 
dein Linearregler => Kann es sein, dass der zu warm wird und nach 
einiger Zeit sich selbst abschaltet?

Wenn du die Spannung vom STK500 benutzt - ist dann der 12V Zweig anders 
angeschlossen oder ist der unversorgt? Wenn unversorgt, liegt 
möglicherweise die Resetursache dort. Man sieht in deinem Schaltplan 
leider nicht wo die Leitung "Spannungsversorgung" hinführt.

von AVRli (Gast)


Lesenswert?

Hi!

Hatte vor ein paar Monaten ein ähnliches Problem...
Bei mir war es FUSE CKOPT.

Ständig irgendwelche Resets und komische Sachen seit dem ich das gesetzt 
hatte lief es dann stabil. Ob das nun bei Dir auch hilft hängt wohl vom 
Takt ab?

Datenblatt Seite 25...

Gruß AVRli...

von Jens T. (jaytee)


Lesenswert?

Die Schaltung zieht so ca. 28 mA. Der Linearregler hat einen Kühlkörper. 
Der wird nicht mal handwarm (eigentlich mit der Hand nicht mal spürbar, 
dass sich da was erwärmt).
Wenn die Spannung vom STK anliegt, ist der 12V-Zweig unversorgt. Die 
Leitung Spannungsversorgung geht über den Spannungsteiler R8 und R9 auf 
PA6 des µC. Allerdings habe ich testweise diesen Zweig lahmgelegt, indem 
ich R8 ausgelötet hab. Das hat aber nicht geändert.

Jens

von Jens T. (jaytee)


Lesenswert?

AVRli schrieb:
> Hatte vor ein paar Monaten ein ähnliches Problem...
> Bei mir war es FUSE CKOPT.

Habs gerade mal probiert, hat leider auch keine Besserung gebracht.

Jens

von Stefan B. (stefan) Benutzerseite


Lesenswert?

"Spannungsversorgung" ist also nur eine Messleitung, um die KFZ-Spannung 
an PA6 über einen Spannungsteiler zu messen.

Sonst ist nix aus dem Bordnetz (Drehzahl? Reed?, Taster? NTC?) am AVR 
angeschlossen und er stürzt trotzdem ab bzw. bei den Versuchen mit/ohne 
STK500 ist das restliche Bordnetz immer identisch angeschlossen, 
richtig?

von Klaus D. (kolisson)


Lesenswert?

Hat der M16 vielleicht nen Brown Out detector ? (fuses)

Gruss K

von Jens T. (jaytee)


Lesenswert?

Die Schaltung hats noch gar nicht von meinem Schreibtisch in die Nähe 
des Boardnetzes geschafft ;-)

Richtig, ist eine Messleitung für die Boardspannung. Sonst ist nichts 
angeschlossen, weder Drehzahl, noch Reed, noch Taster, noch NTC. Weder 
bei meinen Versuche mit dem STK noch wenn ich die Schaltung mit 12V aus 
meinem Labornetzteil versorge.
Bin jetzt noch einen Schritt weiter gegangen, und hab D3 ausgelötet - 
auch keine Besserung.

Jens

von Jens T. (jaytee)


Lesenswert?

die Fuse BODEN ist nicht gesetzt.

Klaus De lisson schrieb:
> Hat der M16 vielleicht nen Brown Out detector ? (fuses)

Ja, hat er, aber ist nicht aktiviert (Fuse BODEN nicht gesetzt).

von Tido (Gast)


Lesenswert?

Gleiche Probleme hatte ich auch schon mal.
Ursache war einmal die schlechte Masseführung (nicht sternförmig) und 
lange (Flachband-)LCD-Leitung.

von Jens T. (jaytee)


Lesenswert?

Ich dreh noch druch. Ich glaub, es liegt doch nicht an der 
Spannungsversorgung. Ich hab jetzt die Verbindung zum Drehzahlmodul 
komplett getrennt (die Leitungen zu Pin 5&6 vom IC2 und die Leitung von 
Pin7/IC2 zum PA7 getrennt). Hat keine Verbesserung gebracht.

Nun hab ich folgendes gemacht: Ich hab vom STK500 NUR die 
Spannungsversorgung genommen (also vom einem VTG-Pin an die 
entsprechende Stelle, wo die Schaltung 5 V haben muss und Masse an 
Masse). Und was soll ich sagen: ich hab das selbe Verhalten, dass es 
unmotiviert Resets gibt.
Nur wenn ich den kompletten ISP-Stecker verbinde, dann geht es.

Meine Resetbeschaltung ist doch aber richtig, oder nicht? Oder könnte es 
etwas bringen, hier mal mit den Werten von R6 und C6 rumzuspielen?

Jens

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Mein Verdächtiger ist die GND-Verbindung. Du hast mit ISP-Adapter zwei 
Masseverbindungen. Die offensichtliche vom Netzteil (VTG/GND) und das 
nicht offensichtliche GND über den ISP-Adapter. Vielleicht steckt im 
ersten GND-Netz und AVR der Wurm und die GND-ISP Verbindung rettet es.

von Jens T. (jaytee)


Lesenswert?

Moin!

eine seltsame Sache ist das. Jetzt läuft alles stabil. Was ich geändert 
hab ist, dass ich den µC vom internen Takt 8 Mhz auf internen Takt 4 Mhz 
umgestellt hab....
Jetzt könnte ich mich zwar freuen, dass es läuft. Aber mich stört, dass 
ich nicht verstehe, WARUM es jetzt geht und vorher nicht. Das ist für 
mich unbefriedigend.

Interessant ist auch, dass ich gestern noch festgstellt hab, dass es 
auch funktioniert, wenn das STK500 per ISP verbunden ist (ohne den 
VTARGET-Jumper) und "meine" Spannungsversorgung benutzt wird. Das STK500 
muss noch nicht mal einschaltet sein, es reicht, dass es verbunden ist.

Die Leiterbahnen hab ich mir alle nochmals genau angeschaut - da kann 
ich keinen Fehler feststellen. Auch hab ich an den Engstellen, wo es 
evtl. unsichtbar eine Verbindung geben könnte nochmal einen 
Schraubendreher durchgezogen. Hat alles nichts geholfen.
Nur die umstellung des Taktes hat Abhilfe geschaffen.

Jens

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Die Stromaufnahme des AVR ist vom Takt abhängig (s. Datenblatt): Je 
schneller der AVR laufen soll, desto mehr Saft braucht er. Spricht 
weiterhin für Probleme in der Spannungsversorgung.

von Jens T. (jaytee)


Lesenswert?

Danke, dann werde ich in der Richtung nochmal weiter suchen.
Danke auch allen anderen, die sich Gedanken gemacht haben!

von Jens T. (jaytee)


Lesenswert?

Ist nun schon etwas her, aber ich möchte die Lösung nicht vorenthalten:
Nachdem ich den ATMega durch Doofheit geschrottet hab und durch einen 
anderen ersetzt hab, funktioniert nun alles, wie es sollte. So einfach 
kann es sein, und man kommt nicht drauf.

Jens

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.