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