Forum: Mikrocontroller und Digitale Elektronik Countdown


von Henk v.d. Wegen (Gast)


Lesenswert?

Tagchen!

Ich habe vor mir einen einstellbaren Countdown-Timer zu basteln, der 
nach Alauf einer in 10-Sekunden-Schritten einstellbaren Zeitspanne (max. 
im einstelligen Minutenbereich) eine Last abschaltet (->Belichter) und 
die verbleibende oder abgelaufene Zeit auf einem LCD ausgibt.
Wenn ich die delay.h benutze, um in einer 40x-For-Schleife 25msec 
aufzurufen, komme ich auf eine Sekunde. Soweit kein Problem, Auflösung 
von einer sekunde langt mit absolut. Wenn ich jetzt aber nach jeder 
Sekunde die Zeit auf dem LCD ausgeben will, geht mir dafür ja auch 
Rechenzeit flöten und die nächste Ausgabe erfolgt erst 
40*25ms+t(ausgabe) später, was bei z.B. 5 minuten schon 300*t(ausgabe) 
Abweichung ausmacht.
Die LCD-routinen in C geschrieben, ich kann den Code nicht mit AVRStudio 
simulieren (ist so) und die Zeichenketten sind ja auch unterschliedlich 
lang (Textstring + 1 oder 2 oder 3 Stellen für die Sekunden).
Kann ich die Zeitmessung nicht von der Ausgabe irgendwie entkoppeln, so 
dass das Ausgabe und "Zeitvertrödeln" quasi-simultan ablaufen?
Und das auch noch auf noob-niveau?

Für Hinweise, die zur Ergreifung...

Danke,

Henk

von BaFH (Gast)


Lesenswert?

Stichwort: Timer! Einfach mal im Forum suchen...

von Peter Z. (Gast)


Lesenswert?

Overflow Interrupt vom Timer nutzen!

von Sebastian F. (tacx)


Lesenswert?

Du nimmst einen Timer (beim Mega 8 den Timer1) und stellst ihn so ein, 
dass er nach jeder Sekunde durch einen Überlauf einen Interrupt auslöst. 
Die Routine, die durch den Interrupt getriggert wird tut dann folgendes:
- ein Zählregister herunterzählen
- den Inhalt des Zählregisters auf das Display schreiben
- prüfen ob Zählregister Null -> Abschalten
- vom Interrupt zurückkehren.

Wofür nun ein LCD notwendig ist? Zwei 7-Segmenter reichen doch auch...

Gruß
   Sebastian

von Henk v.d. Wegen (Gast)


Lesenswert?

Danke für die Tips, Männers!
@Seb. Da haste recht... Hab nur noch nie 7-Segmente angesteuert und 
schon gar nicht drei davon. Da gibts doch auch bestimmt n fertiges IC 
für, dass mir die Ansteuerung abnimmt... Hab zufällignoch ne Hand voll 
in der Bastelkiste liegen. Mal das pinout eruieren (tolles Wort) und 
gucken, ob das sehr aufwendig ist.
Was der M8 kann, kann der M16 auch, oder? Hab nämlich nur 16er da 
(Werbegeschenke).

Danke nochmal,

Henkster

von Henk v.d. Wegen (Gast)


Lesenswert?

Achso... Und ist das wirklich so, dass der Timer vor sich hin rattert 
und gleichzeitig Programmcode ausgeführt wird, der nur von 
Timergetriggerten IRs unterbrochen wird? Wow...

von Sebastian F. (tacx)


Lesenswert?

Hallo Henk,

ja, und ja!

Dafür sind die Timer da! Deswegen die Geschichte mit dem Interrupt. Der 
Timer läuft vollständig selbstständig vor sich hin. Und löst bei der 
vorgegebenen Bedingung seinen Interrupt aus. Sonst wären die Timer auch 
ein wenig sinnlos.

Ja, was der Mega8 kann, kann der Mega16 auch. Nur umgekehrt kann es 
sein, dass zu wenig Ports da sind.

7-Segmemter ansteuern ist einfach. Die IC's dafür sind überflüssig. Es 
reicht, je Anzeige ein Transistor (Feldwaldundwiesentransistor). Die 
Segmentleitungen werden einfach an einen Port des Controllers geklemmt. 
Dann wird einfach gemultiplext. Einfach heisst wirklich einfach: - 
Transistoren  sperren, Bitmuster für Anzeige1 auf den Port, Transistor 
für Anzeige1 öffnen, Transistor sperren, Bitmuster 2 auf den Port, 
Transistor 2 öffnen usw... Wenn der Programmcode symmetrisch abläuft, 
sind die Anzeigen auch gleich hell. Und wahrscheinlich gibt es sogar 
noch eine Elegantere Lösung. Peter Dannegger hat hier mal eine Schaltung 
für ein Voltmeter gepostet: Beitrag "ADC mit Multiplexanzeige"

Hat mir sehr geholfen. Danke Peter!

Gruß Sebastian

von Henk v.d. Wegen (Gast)


Lesenswert?

Ich verneige mich in Ehrfurcht : ) Danke.

von Peter D. (peda)


Lesenswert?

Henk v.d. Wegen wrote:
> Ich verneige mich in Ehrfurcht : ) Danke.

Muß nicht sein.

Besser wäre:

"Ich habe noch die und die Frage"

oder:

"Ich habe das Beispiel verstanden" (super Kompliment)

oder:

"Ich habe das Beispiel verstanden und noch die und die Verbesserung"
(unschlagbares Kompliment)


Peter

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.