Gast
#143255
Hi. Der Timer0 ist auf 8000 Zyklen pro Interrupt eingestellt (64 Prescale und 125 Counter = 8000). bei jedem Interrupt wird Bit 0 im MODE register gelöscht. Um eine Sekunde zu messen, wollte ich dieses Bit setzen, und warten bis es rückgesetzt wurde und das ganze 125 mal. Der ATMEGA16 ist auf 1MHz interner Oszillator eingestellt. Problem ist, dass diese Sekunde effektiv als zwei Sekunden im Endeffekt rauskommen. (Timergenauigkeit mit Oszi an PORTC.2 [stellenwahl für LED-Display] nachgemessen) gleich nebenbei : in der Hauptroutine lasse ich RANDOM von 0-39 durchzählen, und bei 40 erfolgreich auf 0 setzen. In der Funktion ROULETTE_PRINT_OUT lasse ich erst überprüfen, ob RANDOM zwischen 1 und 36 liegt. Wenn es außerhalb liegen sollte, sollte die eigentliche Routine "übersprungen werden. Dies funktioniert aus einem mir unersichtlichen Grund auch nicht. Der Rest der Routine funktioniert ebenfalls einwandfrei. Die FUnktion WAIT_TIMER liegt zusammen mit allen anderen Wartefunktionen in nachfolgender LCD-Library.