CONFIG TIMER0/de
Contents |
Funktion
Konfigurieren des TIMER0.
Syntax
CONFIG TIMER0 = COUNTER , EDGE=RISING/FALLING , CLEAR_TIMER = 1|0 [,CONFIGURATION=NAME]
CONFIG TIMER0 = TIMER , PRESCALE= 1|8|64|256|1024 [,CONFIGURATION=NAME]
CONFIG TIMER2 = TIMER | PWM , ASYNC=ON |OFF,PRESCALE = 1 | 8 | 32 | 64 | 128 | 256 | 1024 ,COMPARE = CLEAR | SET | TOGGLE | DISCONNECT ,PWM = ON | OFF ,COMPARE_PWM = CLEAR_UP| CLEAR_DOWN | DISCONNECT ,CLEAR_TIMER = 1|0 [,CONFIGURATION=NAME]
Anmerkungen
TIMER0 ist ein 8-Bit Zähler. Siehe Hardwarebeschreibung des TIMER0.
Wenn als COUNTER konfiguriert:
EDGE |
Man kann konfigurieren, ob auf fallende oder steigende Flanke gezählt werden soll. |
Wenn als TIMER konfiguriert:
PRESCALE |
In diesem Fall ist der Timer mit dem Systemtakt verbunden. Man kann die Vorteilung des Systemtaktes mit diesem Parameter auswählen.
Mögliche Werte sind 1 , 8, 64, 256 oder 1024 |
Beachen Sie, dass einige AVR Chips andere Prescale-Werte haben. Sie können diese benutzen.
CONFIGURATION ist optional. Wenn Sie configuration=mysetting benutzen dann kann man diese Settings beim Start des Timers benutzen: START TIMER0 , mysetting
Wenn man mehrere Settings hat dann kann man den Timer mit dieses unterschiedlichen Settings starten.
Beachten Sie, dass die Hilfe im Hinblick auf die AT90S2313 und AT90S8515 geschrieben wurde.
Wenn Sie den CONFIG TIMER0 Befehl benutzen dann wird der Modus gespeichert und das TCCRO Register wird gesetzt.
Wenn der STOP TIMER0 Befehl benutzt wird dann wird der Timer gestoppt.
Wenn der START TIMER0 Befehl benutzt wird dann wird das TIMER TCCR0 Register mit dem letzten Wert, der durch den CONFIG TIMER0 Befehl konfiguriert wurde geladen
Vor Benutzung des START oder STOP TIMER0 Befehls sollte daher erst der CONFIG Befehl benutzt werden.
Beispiel
'----------------------------------------------------------------------------------------- 'name : timer0.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : shows how to use TIMER0 related statements 'micro : 90S2313 'suited for demo : yes 'commercial addon needed : no '----------------------------------------------------------------------------------------- $regfile = "2313def.dat" ' Verwendeter Mikrocontroller $crystal = 8000000 ' Taktfrequenz $baud = 19200 ' Baudrate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space 'Zunächst muss der Timer als Counter oder als Zähler konfiguriert werden. 'Hier soll der Timer als Zähler=COUNTER konfiguriert werden. 'Man muss außerdem konfigurieren, ob man auf steigende (rising) oder fallende (falling) Flanke (edge) zählen möchte. Config Timer0 = Counter , Edge = Rising 'Zähler mit steigender Flanke 'Config Timer0 = Counter , Edge = falling 'Zähler auf fallende Flanke 'entkommentieren Sie die obige Zeile um den Timer0 mit fallender Flanke zu benutzen. 'Um den Wert des Timers zu lesen/schreiben greifen Sie auf das Timer/Counter Register zu. 'Timer/Counter auf 0 setzen: Tcnt0 = 0 Do Print Tcnt0 Loop Until Tcnt0 >= 10 'Wenn 10 Pulse gezählt wurden dann wird die Schleife verlassen 'Oder benutzen Sie die Spezial-Variabke TIMER0 Timer0 = 0 'Konfiguration als TIMER: 'Der TIMER kann den Systemtakt oder den geteilten Systemtakt als Input haben. 'Teilerfaktoren können sein: 1, 8,64,256 oder 1024 Config Timer0 = Timer , Prescale = 1 'Der TIMER wird nun automatisch gestartet 'Man kann den Timer stoppen mit dem folgenden Befehl: Stop Timer0 'Nun ist der Timer gestoppt. 'Um den Timer mit dem zuletzt konfigurierten Modus zu starten benutzen Sie: Start Timer0 'Auch hier kann man den Wert über das tcnt Register zugreifen: Print Tcnt0 'oder Print Timer0 'Wenn der Timer überläuft dann wird ein Flag namens TOV0 im Register TIFR gesetzt 'Die kann benutzt werden um eine Interrupt Service Routine (ISR) auszuführen. 'Um das Flag manuell im Non-ISR Modus zu löschen muss man eine 1 in Bit 1 des TIFR-Registers schreiben: Set Tifr.1 'Der folgende Programm-Code zeigt die Verwendung von Timer0 im Interrupt-Modus 'Der Code ist auskommentiert durch Block-Kommentierung mit '( und ') '( 'Konfiguration des Timers für die Verwendung des durch 1024 geteilten Systemtaktes: Config Timer0 = Timer , Prescale = 1024 'Definition der ISR-Routine: On Ovf0 Tim0_isr 'Man kann auch TIMER0 für OVF0 benutzen. Die Wirkung ist dieselbe. Enable Timer0 ' Einschalten des Timer-Interrupts Enable Interrupts 'Einschalten ALLER Interrupts Do 'hier beliebiger Code Loop 'Der folgende Code wird ausgeführt wenn der Timer überläuft: Tim0_isr: Print "*"; Return ') End
Languages | English • Deutsch |
---|