mikrocontroller.net

Forum: Compiler & IDEs wieder mal Timer Problem


Autor: wendt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mit meinem ATMega16 einen ersten Timer programmiert:
volatile int8_t i=1;

int main (void)
{
   // 16 bit timer:   
   TCCR1B |= (1<<WGM12)|(0<<CS12)|(1<<CS11)|(0<<CS10);   // CTC + Prescaler 8 --> CPU/8
   OCR1A  = 10;      
   TIMSK |= (1<<OCIE1A);        //Output Compare Match A aktivieren               
   sei();                     

   while(1)
   {

   }
}

ISR (TIMER1_COMPA_vect)
{
   i=i*(-1);
   if (i==-1) { led1on(); }
   else { led1off(); }
}

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

kann mir da jemand weiterhelfen

Autor: Dirk Frerichs (dirk-frerichs)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: wendt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk Frerichs (dirk-frerichs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sieh einfach mal  in das datenblatt ...
da steht schon viel drin

Autor: wendt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist ein sehr schönes Tutorial mit allen nötigen Registern

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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.