Gast
#1797696
Ich versuche gerade einen Impulszähler mit einem ATmega16 zu bauen. Er
soll die Impulse an einem Reedkontakt zählen und auf einem LCD die
Gesamtanzahl der Impulse und die Impulse pro Sekunde ausgeben.
Mein Problem ist, dass ich nicht weiß, wie ich die einzelnen Schritte
zeitlich einplanen soll.
Gedacht habe ich mir das so:
LCD initialisieren
Timer und Interrupts initialisieren
Auf Interrupts warten:
Bei Timerüberlauf:
{
Impulse zwischen zwei Interrupts durch Zeit zwischen zwei Überläufen
dividieren und als Impulse/Sekunde auf LCD ausgeben
Gesamtanzahl der Impulse auf LCD ausgeben
}
Bei externem Interrupt (ausgelöst durch Reedkontakt):
{
Gesamtanzahl der Impulse erhöhen
Anzahl der Impulse seit dem letzten Timerüberlauf erhöhen
Warteschleife 10ms (wegen Schalterprellen)
}
Allerdings gefällt mir das ganze nicht wirklich, da ich die LCD-Ausgabe
in die ISR eingebaut habe und ich auch nicht weiß was passiert, wenn
diese durch die zweite ISR unterbrochen wird. Außerdem hält die
Zeitschleife gegen das Schalterprellen den Timer auf.
Wie würde man das besser einplanen? Erfahrung mit Programmieren habe ich
eigentlich nicht, das ganze ist recht neu für mich. Die Ansteuerung des
LCDs funktioniert jedoch ganz gut (mit dem Code aus dem GCC-Tutorial).