Forum: Compiler & IDEs Atmega8 geht unkontrolliert schlafen


von n+peter (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend !

Ich habe da ein Problem, ich hab mir einen Wattmeter zusammengebastelt,
der von einem Solarmodul die Spannung sowie Strom erfasst und damit die 
Leistung und Amperestunden erechnet und an einem LCD (20x2) anzeigt.
Funktioniert soweit auch wunderbar, aber, dann und wann, nach einer 
halben Stunde oder auch erst nach wenigen Tagen zeigt das LCD aufeinmal 
einige wirre Zeichen und der Atmega8 arbeitet nicht mehr, erst ein Druck 
auf die eingebaute Reset-Taste stellt die Funktion wieder her.
Sehr zum übel, da dann die geleisteten AH im Display von der 
Batterieladung weg sind.

Ich komme nicht drauf was das sein kann, ich habe alle freien Pins 
intern mit den PullUps gesetzt, so das ich mir denke der MC geht in den 
Sleep Modus, ich weiss ja nicht ob der im Auslieferungszustand im MCUCR 
- Register gesetzt ist.
Wie kann man das Register einsehen bzw. verändern ?, ich finde zwar die 
Beschreibungen dazu aber wie ich das im AVR-Basic änden kann - keine 
Ahnung.

Wie gesagt, ich brenne den Atmega8 und ändere sonst nichts, das Programm 
ist in AVR-Basic ohne irgendwelchen speziellen Funktionen.

Vielleicht kann mir jemand da weiterhelfen, im Anhang das Programm,

schönen Abend noch
Peter

von Peter II (Gast)


Lesenswert?

also wenn es ungegelmäßig ist und dann auch noch nach so einer langen 
Zeit ( mehre minuten) dann hat das bestimmt nicht mit dem Schlafmodus zu 
tun.

Vermutlich hast du Probeme mit der Stomversorgung von dem Atmel - alle 
üblichen Kondensatoren verbaut?

von hans (Gast)


Lesenswert?

n+peter schrieb:
> der Atmega8 arbeitet nicht mehr

Erkennst du das nur am Display?
-> Möglich das nur das Display aussteigt (hatte ich
auch schon). Mach mal regelmäsig (oder auf Tastendruck)
einen Displayreset und eine neue Initialisierung.

Sonst evtl. ein Problem mit dem Stack. Also
ein GOSUB ohne RETURN (Raussprung mit GOTO).

hans

von 1234 (Gast)


Lesenswert?

Hallo,
warum machst du das mit der GOSUB? In Bascom gibt es den Befehl Do ... 
Loop

von MWS (Gast)


Lesenswert?

n+peter schrieb:
> Sleep Modus, ich weiss ja nicht ob der im Auslieferungszustand im MCUCR
> - Register gesetzt ist.

Da geht nix in den Sleep-Modus, schau Dir im Datenblatt die Defaults der 
Register an.

Toggle in der Hauptschleife eine Led und Du weist, ob sich der 
Controller aufhängt.

Überprüf' ob die per $crystal gesetzte Frequenz mit der tatsächlichen 
übereinstimmt. Sollte die tatsächliche Frequenz höher sein, so werden 
die Delays zu gering berechnet, dies quittiert das Display mit 
Arbeitsniederlegung.

Ein regelmäßiges LCDINIT kann dann weiter helfen, wenn das Display 
selbst nicht zuverlässig arbeitet.

Und sollte tatsächlich ein Quarz angeschlossen sein, so kann der 
Sekundentakt viel exakter erzeugt werden, als so hingemurkst wie im 
gezeigten Code.

von MWS (Gast)


Lesenswert?

Hast auch noch Glück dass Du noch nicht zerfleischt wurdest, weil Du 
Deine Bascom-Frage unter AVR-GCC gepostest hast :D

von Klaus (Gast)


Lesenswert?

MWS schrieb:
> Hast auch noch Glück dass Du noch nicht zerfleischt wurdest, weil Du
> Deine Bascom-Frage unter AVR-GCC gepostest hast :D

Naja, er ist ja auch Bascom-User. Da erwartet man schon gar nicht mehr, 
dass die überhaupt wissen, dass es noch andere Compiler gibt, bzw. was 
ein Compiler überhaupt ist. ;-)

von MWS (Gast)


Lesenswert?

Klaus schrieb:
> MWS schrieb:
>> Hast auch noch Glück dass Du noch nicht zerfleischt wurdest, weil Du
>> Deine Bascom-Frage unter AVR-GCC gepostest hast :D
>
> Naja, er ist ja auch Bascom-User...

Das war von mir nicht geschrieben um Ihn runterzumachen, fand's nur 
lustig wenn sich jemand so unbefangen in die Höhle des Löwen begibt :D

von n+peter (Gast)


Lesenswert?

Danke für die Antworten, und entschuldigung weil im falschem Forum, habe 
hier zuletzt nach Lösungen gesucht und eben hernach hier eingestellt.

Aber es liegt wahrscheinlich eh nicht am Programm, am Sleep und auch 
nicht in der U-Versorgung.
Ich habe nun folgendes versucht, ich habe zwei verschiedene Layouts, 
selbe Schaltung aber einmal für LCD 20x4 und einmal für 20x2, Platine 
passend zum LCD, bei 20x4 hatte ich noch nie Probleme nur eben für das 
neue mit 20x2, und nun habe ich die MC vertauscht und siehe da, das 
selbe Problem wieder auf Platine 20x2, demnach muss sich der Fehler 
(höchstwahrscheinlich) auf dieser Platine befinden.

Trotzdem Danke, so kann ich zumindest den Sleep-Mode als Fehlerquelle 
ausschliessen.

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.