Forum: Compiler & IDEs wieder mal Timer Problem


von wendt (Gast)


Lesenswert?

ich hab mit meinem ATMega16 einen ersten Timer programmiert:
1
volatile int8_t i=1;
2
3
int main (void)
4
{
5
   // 16 bit timer:   
6
   TCCR1B |= (1<<WGM12)|(0<<CS12)|(1<<CS11)|(0<<CS10);   // CTC + Prescaler 8 --> CPU/8
7
   OCR1A  = 10;      
8
   TIMSK |= (1<<OCIE1A);        //Output Compare Match A aktivieren               
9
   sei();                     
10
11
   while(1)
12
   {
13
14
   }
15
}
16
17
ISR (TIMER1_COMPA_vect)
18
{
19
   i=i*(-1);
20
   if (i==-1) { led1on(); }
21
   else { led1off(); }
22
}

ich bräuchte jetzt einen zweiten timer, der so ca alle 500ms nen 
interrupt giebt

kann mir da jemand weiterhelfen

von Dirk F. (dirk-frerichs)


Lesenswert?

der mega hat doch mehrere timer

bei mir zB hab ich timer 0 und 2 aktiv

TCCR0  =   (1<<CS01);
TCCR2  =   (1<<CS22) | (1<<CS21) | (1<<CS22);
TIMSK  =   (1<<TOIE2)| (1<<TOIE0);

von wendt (Gast)


Lesenswert?

genau die befehle hab ich gesucht, problem war bei mir, dass ich nicht 
mit den registern in dem tutorial klar gekommen bin, da einige 
bezeichner davon veraltet sind bzw anders benannt sind

wozu ist eigentlich das compare match B, kann ich da bei meinem timer 
einen zweiten wert vergleichen, oder wird da ein anderer timer verwendet

wenn jemand mal ein gutest timer tutorial hat, dann wäre ich sehr 
dankbar
wie die timer funktionieren weiss ich ja, nur halt wie sie programmiert 
werden, sprich welche register werden genutzt, was muss ich 
einstellen...
da haperts

von Dirk F. (dirk-frerichs)


Lesenswert?

sieh einfach mal  in das datenblatt ...
da steht schon viel drin

von wendt (Gast)


Lesenswert?

ist ein sehr schönes Tutorial mit allen nötigen Registern

http://www.uni-koblenz.de/~physik/informatik/MCU/Timer.pdf

von Rahul D. (rahul)


Lesenswert?

>wozu ist eigentlich das compare match B, kann ich da bei meinem timer
>einen zweiten wert vergleichen, oder wird da ein anderer timer verwendet

Ja, man hat 2 Vergleichswerte, wobei in manchen Betriebsarten (z.B. CTC) 
des Timers einer der beiden Werte auch als obere Grenze gesetzt wird 
(welcher von beiden, ist im Datenblatt beschrieben), wo dann der Timer 
auf 0 zrückgesetzt wird, oder die Zählrichtung umgekehrt wird.

Eigentlich (meines Wissens nach) sind die Tutorien auf einem recht 
aktuellen Stand...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.