www.mikrocontroller.net

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


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fabian Braun (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

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

Gruss, Alex

Autor: Mathias (Gast)
Datum:

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

Autor: Fabian Braun (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.