CONFIG TIMER0/de

From MCS Wiki AVR
< CONFIG TIMER0(Difference between revisions)
Jump to: navigation, search
((**COPIED FROM ENGLISH PAGE**) =)
(Example)
 
(One intermediate revision by one user not shown)
Line 19: Line 19:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Remarks</span> =
+
= <span class="f_Header">Anmerkungen</span> =
  
TIMER0 is an 8 bit counter. See the hardware description of TIMER0.
+
TIMER0 ist ein 8-Bit Zähler. Siehe Hardwarebeschreibung des TIMER0.
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
When configured as a COUNTER:
+
Wenn als COUNTER konfiguriert:
 
<div style="padding: 0px; margin: 0px 0px 0px 4px;">
 
<div style="padding: 0px; margin: 0px 0px 0px 4px;">
 
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;"
 
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;"
Line 33: Line 33:
  
 
| valign="top" width="100%" style="width: 472px; border: 1px solid rgb(0, 0, 0);" |  
 
| valign="top" width="100%" style="width: 472px; border: 1px solid rgb(0, 0, 0);" |  
You can select whether the TIMER will count on the falling or rising edge.
+
Man kann konfigurieren, ob auf fallende oder steigende Flanke gezählt werden soll.
  
 
|}
 
|}
Line 41: Line 41:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
When configured as a TIMER:
+
Wenn als TIMER konfiguriert:
 
<div style="padding: 0px; margin: 0px 0px 0px 4px;">
 
<div style="padding: 0px; margin: 0px 0px 0px 4px;">
 
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;"
 
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;"
Line 49: Line 49:
  
 
| valign="top" width="100%" style="width: 496px; border: 1px solid rgb(0, 0, 0);" |  
 
| valign="top" width="100%" style="width: 496px; border: 1px solid rgb(0, 0, 0);" |  
The TIMER is connected to the system clock in this case. You can select the division of the system clock with this parameter.
+
In diesem Fall ist der Timer mit dem Systemtakt verbunden. Man kann die Vorteilung des Systemtaktes mit diesem Parameter auswählen.
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
Valid values are 1 , 8, 64, 256 or 1024
+
Mögliche Werte sind 1 , 8, 64, 256 oder 1024
  
 
|}
 
|}
Line 59: Line 59:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
Note that some new AVR chips have different pre scale values. You can use these.
+
Beachen Sie, dass einige AVR Chips andere Prescale-Werte haben. Sie können diese benutzen.
  
 
&nbsp;
 
&nbsp;
  
CONFIGURATION is optional. When you add configuration=mysetting, you can use this setting when you start the timer&nbsp;: START TIMER0 , mysetting
+
CONFIGURATION ist optional. Wenn Sie configuration=mysetting benutzen dann kann man diese Settings beim Start des Timers benutzen: START TIMER0 , mysetting
  
If you have multiple settings, you can start the timer with these different settings.
+
Wenn man mehrere Settings hat dann kann man den Timer mit dieses unterschiedlichen Settings starten.
  
 
&nbsp;
 
&nbsp;
Line 71: Line 71:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
[[File:Notice.jpg|left|Notice.jpg]]&nbsp;Notice that the Help was written with the AT90S2313 and AT90S8515 timers in mind.
+
[[File:Notice.jpg|left|Notice.jpg]]&nbsp;Beachten Sie, dass die Hilfe im Hinblick auf die AT90S2313 und AT90S8515 geschrieben wurde.
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 77: Line 77:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
When you use the CONFIG TIMER0 statement, the mode is stored by the compiler and the TCCRO register is set.
+
Wenn Sie den CONFIG TIMER0 Befehl benutzen dann wird der Modus gespeichert und das TCCRO Register wird gesetzt.
  
When you use the STOP TIMER0 statement, the TIMER is stopped.
+
Wenn der STOP TIMER0 Befehl benutzt wird dann wird der Timer gestoppt.
  
When you use the START TIMER0 statement, the TIMER TCCR0 register is loaded with the last value that was configured with the CONFIG TIMER0 statement.
+
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
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 87: Line 87:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
So before using the&nbsp;[[START]]&nbsp;and&nbsp;[[STOP]]&nbsp;TIMER0 statements, use the CONFIG statement first.
+
Vor Benutzung des [[START]]&nbsp;oder&nbsp;[[STOP]]&nbsp;TIMER0 Befehls sollte daher erst der CONFIG Befehl benutzt werden.
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 93: Line 93:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Example</span> =
+
= <span class="f_Header">Beispiel</span> =
  
 
<br/><source lang="bascomavr">
 
<br/><source lang="bascomavr">
Line 105: Line 105:
 
'-----------------------------------------------------------------------------------------
 
'-----------------------------------------------------------------------------------------
 
   
 
   
$regfile = "2313def.dat" ' specify the used micro
+
$regfile = "2313def.dat" ' Verwendeter Mikrocontroller
$crystal = 8000000 ' used crystal frequency
+
$crystal = 8000000 ' Taktfrequenz
$baud = 19200 ' use baud rate
+
$baud = 19200 ' Baudrate
 
$hwstack = 32 ' default use 32 for the hardware stack
 
$hwstack = 32 ' default use 32 for the hardware stack
 
$swstack = 10 ' default use 10 for the SW stack
 
$swstack = 10 ' default use 10 for the SW stack
 
$framesize = 40 ' default use 40 for the frame space
 
$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.
 
   
 
   
'First you must configure the timer to operate as a counter or as a timer
+
Config Timer0 = Counter , Edge = Rising 'Zähler mit steigender Flanke
'Lets configure it as a COUNTER now
+
'Config Timer0 = Counter , Edge = falling  'Zähler auf fallende Flanke
'You must also specify if it will count on a rising or falling edge
+
'entkommentieren Sie die obige Zeile um den Timer0 mit fallender Flanke zu benutzen.
 
   
 
   
Config Timer0 = Counter , Edge = Rising
+
'Um den Wert des Timers zu lesen/schreiben greifen Sie auf das Timer/Counter Register zu.
'Config Timer0 = Counter , Edge = falling
+
'Timer/Counter auf 0 setzen:
'unremark the line aboven to use timer0 to count on falling edge
+
+
'To get/set the value from the timer access the timer/counter register
+
'lets reset it to 0
+
 
Tcnt0 = 0
 
Tcnt0 = 0
 
   
 
   
Line 128: Line 127:
 
Print Tcnt0
 
Print Tcnt0
 
Loop Until Tcnt0 >= 10
 
Loop Until Tcnt0 >= 10
'when 10 pulses are count the loop is exited
+
'Wenn 10 Pulse gezählt wurden dann wird die Schleife verlassen
'or use the special variable TIMER0
+
'Oder benutzen Sie die Spezial-Variabke TIMER0
 
Timer0 = 0
 
Timer0 = 0
 
   
 
   
 
   
 
   
'Now configire it as a TIMER
+
'Konfiguration als TIMER:
'The TIMER can have the systemclock as an input or the systemclock divided
+
'Der TIMER kann den Systemtakt oder den geteilten Systemtakt als Input haben.
'by 8,64,256 or 1024
+
'Teilerfaktoren können sein: 1, 8,64,256 oder 1024
'The prescale parameter excepts 1,8,64,256 or 1024
+
 
Config Timer0 = Timer , Prescale = 1
 
Config Timer0 = Timer , Prescale = 1
 
   
 
   
'The TIMER is started now automaticly
+
'Der TIMER wird nun automatisch gestartet
'You can STOP the timer with the following statement :
+
'Man kann den Timer stoppen mit dem folgenden Befehl:
 
Stop Timer0
 
Stop Timer0
+
'Nun ist der Timer gestoppt.
'Now the timer is stopped
+
 
'To START it again in the last configured mode, use :
+
'Um den Timer mit dem zuletzt konfigurierten Modus zu starten benutzen Sie:
 
Start Timer0
 
Start Timer0
 
   
 
   
'Again you can access the value with the tcnt0 register
+
'Auch hier kann man den Wert über das tcnt Register zugreifen:
 
Print Tcnt0
 
Print Tcnt0
'or
+
'oder
 
Print Timer0
 
Print Timer0
'when the timer overflows, a flag named TOV0 in register TIFR is set
+
'Wenn der Timer überläuft dann wird ein Flag namens TOV0 im Register TIFR gesetzt
'You can use this to execute an ISR
+
'Die kann benutzt werden um eine Interrupt Service Routine (ISR) auszuführen.
'To reset the flag manual in non ISR mode you must write a 1 to the bit position
+
'Um das Flag manuell im Non-ISR Modus zu löschen muss man eine 1 in Bit 1 des TIFR-Registers schreiben:
'in TIFR:
+
 
Set Tifr.1
 
Set Tifr.1
 
   
 
   
 
   
 
   
 
   
 
   
'The following code shows how to use the TIMER0 in interrupt mode
+
'Der folgende Programm-Code zeigt die Verwendung von Timer0 im Interrupt-Modus
'The code is block remarked with '( en ')
+
'Der Code ist auskommentiert durch Block-Kommentierung mit '( und ')
 
   
 
   
 
'(
 
'(
 
   
 
   
'Configute the timer to use the clock divided by 1024
+
'Konfiguration des Timers für die Verwendung des durch 1024 geteilten Systemtaktes:
 
Config Timer0 = Timer , Prescale = 1024
 
Config Timer0 = Timer , Prescale = 1024
 
   
 
   
'Define the ISR handler
+
'Definition der ISR-Routine:
 
On Ovf0 Tim0_isr
 
On Ovf0 Tim0_isr
'you may also use TIMER0 for OVF0, it is the same
+
'Man kann auch TIMER0 für OVF0 benutzen. Die Wirkung ist dieselbe.
 
   
 
   
Enable Timer0 ' enable the timer interrupt
+
Enable Timer0 ' Einschalten des Timer-Interrupts
Enable Interrupts 'allow interrupts to occur
+
Enable Interrupts 'Einschalten ALLER Interrupts
 
Do
 
Do
'your program goes here
+
'hier beliebiger Code
 
Loop
 
Loop
 
   
 
   
'the following code is executed when the timer rolls over
+
'Der folgende Code wird ausgeführt wenn der Timer überläuft:
 
Tim0_isr:
 
Tim0_isr:
 
Print "*";
 
Print "*";

Latest revision as of 23:06, 1 April 2013

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.

 

 

Notice.jpg
 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  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language