Ja genau auf 12MHz, und *schääähm* die Fuse nicht umgestellt..ich versuche und meld mich wieder!! Vielen Dank, für den Tipp...update...die 30 sec stimmen jetzt..teste die Std. nun.
Druckbare Version
Ja genau auf 12MHz, und *schääähm* die Fuse nicht umgestellt..ich versuche und meld mich wieder!! Vielen Dank, für den Tipp...update...die 30 sec stimmen jetzt..teste die Std. nun.
No problem. Bin ich auch schon öfter drauf reingefallen.
Prescale 8 mag ein bißchen schnell sein. Bei 64 werden die 30 Sekungen zu 30/(1024/64) = knapp 2 Sekunden und die Stunde zu knapp 4 Minuten.
Daumen drück
Gruß
Searcher
@Searcher, Vielen vielen Dank!! Es funktioniert bestens.
*erleichtert* Prima, wenn es für Dich paßt.
Danke auch Dir; ich habe hier auch zum erstemal mitbekommen, daß man das GetADC direkt in der IF Abfrage verwenden kann.
Gibt natürlich noch 'ne Menge mehr und bessere Implementierungen als diese.
Wenn hier das Programm bei Helligkeit los läuft, fängt der Timer schon bei CONFIG TIMER1 an zu laufen, zählt aber wegen des noch nicht enabelten compare1a Interrupts die Sekunden noch nicht. Das Interruptflag wird aber schon nach der ersten Sekunde ab Timerlauf gesetzt.
Wird es nun dunkel und der Interrupt enabelt, wird der Interrupt durch das gesetzte Interruptflag sofort ausgeführt, egal welchen Wert der Timer1 hat und als erste Sekunde gezählt. Erreicht dann der Timer1 den OCR1A Wert, wird die zweite Sekunde gezählt. Ergebnis, die erste Sekunde ist praktisch immer zu kurz bemessen. Die Stundenmessung ist auch nicht ganz sekundengenau meine ich. Könnte man mit ein paar zusätzlichen Zeilen flicken; wird aber vermutlich bei Dir keine Rolle spielen.
Man könnte die WAIT Statements in der Hauptschleife loswerden, indem man die ISR für das Warten mitbenutzt.
Man könnte den Timer bei Helligkeit abschalten und nicht nur die Interrupts disablen - Strom sparen :-)
etc ...
Gruß
Searcher