Forum: Mikrocontroller und Digitale Elektronik UHR und LCD Probleme (Nibble?)


von Mathias (Gast)


Lesenswert?

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

von Fabian Braun (Gast)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

Veröffentliche doch einfach deinen Code, dann gestaltet sich die
Fehlersuche wesentlich einfacher ...

Gruss, Alex

von Mathias (Gast)


Lesenswert?

Danke für eure Hilfe.
Konnte das Problem lösen, indem ich einfach ein 10ms delay eingebaut
hab!
Aber trotzdem Danke

von Fabian Braun (Gast)


Lesenswert?

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

von Markus_8051 (Gast)


Lesenswert?

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.

von Mathias (Gast)


Lesenswert?

@ 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
Noch kein Account? Hier anmelden.