Hallo! Habe eine Uhr mit einem ATmega8 gebaut .Die Uhrzeit wird auf ein 16x2 LCD übertragen. Über verschiedene Taster/Schalter kann man die Uhr anhalten, und die veschiedenen Minuten- und Stundenwerte einstellen( Sekunden werden automatisch auf 0 gesetzt. Außerdem gibts einen Schalter zum Nullen der UHR.(00:00:00) Jetzt habe ich das Problem, wenn ich die Uhr anhalte und die Uhrzeit einstelle und danach wieder laufen lasse fangen die Sekunden nicht bei 0 an zu laufen( manchmal schon:p ), sondern manchmal bei 3, 5 oder etc.. Meine ertse idee war das in allen temporären Registern usw. noch werte drinstehen, also hab ich alle (bei Betätigung des Schalters) auf 0 gesetzt. Die Störungen haben sich zwar verringert sind aber immernoch nicht weg! Meine Idee ist jetzt ,dass wenn ich in dem Moment in dem ich den Schalter drücke, die Übertragung der 2 Nibbles an das LCD (4 Bit- modus) noch läuft und ich die Übertragung abbreche. Somit kommt bei der nächsten Übertragung irgend ein Mist raus! Kann das sein? Wenn ja wie kann man das Nibble löschen ohne neu zu initialisieren? MFG Mathias
hallo mathias also sowie ich das verstehe ist die routine mit dem schalter ein interrupt, oder nicht?!? wenn das der fall wäre, dann kannst du ja während den lcd-routinen interrupts abschalten (cli & sei), sodass die übertraggung sicher beendent wird, und eine schalteraktivität vor oder nach den lcd-routinen ausgewertet wird. war eigentlich nur so eine idee...aber vielleicht hat's dir ja geholfen. gruss fab
Veröffentliche doch einfach deinen Code, dann gestaltet sich die Fehlersuche wesentlich einfacher ... Gruss, Alex
Danke für eure Hilfe. Konnte das Problem lösen, indem ich einfach ein 10ms delay eingebaut hab! Aber trotzdem Danke
hallo mathias ja dann ist ja alles wunderbar! aber wo hast du das delay eingebaut, interessiert mich nur so aus reiner neugierde? hast du dann vorher die schalter nicht entprellt gehabt? gruss fabian
Wenn es wirklich daran lag, daß Dir ein IRQ dazwischengefunkt hat, hast Du den Fehler mit dem Delay nicht behoben, sondern nur sein Auftreten unwahrscheinlicher gemacht.
@ Fabian Die Taster und Schalter hab ich alle Hardware-mäßig entprellt! wenn der stop schalter betätigt wird rufe ich das delay auf und danach wird der Timerinterrupt unterbrochen! @ Markus Habe ziemlich viele Testläufe gemacht und es ist kein Fehler mehr aufgetreten!
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.