Timer1: nach 1. Sekunde Interrupt auslösen

OP #2186870
Lesenswert?
• ▲
▼
Hallo Leute,
kann mir jemand bitte helfen den Fehler zu finden.

Ich will nach 1. Sekunde einen Overflow Interrupt auslösen.
Dabei verwende ich 16-Bit Timer1 und einen Arduino mini mit Atmega328P.

Wegen dem ARduino habe ich hier einen Hybridcode.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
 
4
bool counter = false;
5
int pin = 13;
6

7

8
int main(void)
9
{
10
 //pin 13 als LED
11
  pinMode(pin,OUTPUT);
12
  
13

14
  //Serialübertragung einstellen
15
  Serial.begin(9600);
16
  
17
 //TCCR1 mit null intialisieren
18
  TCCR1A = 0x00;
19
  TCCR1B = 0x00;
20
  
21
  TCCR1B |= (1<<WGM12) | (1<<WGM13); //CTC Modus aktivieren
22
  TCCR1B |= (1<<CS12); //Prescaler 256
23
  
24
  //Vergleichswert
25
  OCR1A = 62500;
26
  
27
  //Interrupts aktivieren und damit Timer starten
28
  TIMSK1 = (1<<OCIE1A);
29
  sei();
30
  
31
  while(1)
32
  {
33
   
34
    /*
35
   if(counter == true){
36
     digitalWrite(pin, HIGH);
37
   }
38
    else{
39
      digitalWrite(pin,LOW);
40
    }
41
      
42
    /* Sonstige Aktionen */
43
  
44
  }
45
}
46
 
47
/*Interrupt wird nach 1 sekunde aufgerufen*/
48
 
49
ISR (TIMER1_OVF_vect)
50
{
51
  Serial.println("test");
52
  counter ^= counter;
53
}

schöne Grüße aus Dieburg

Mischa
Gast #2187145
Lesenswert?
• ▲
▼
>> pinMode(pin,OUTPUT);
>> Serial.println("test");
>Was ist das?

Das sind Funktionen aus der Arduino-Bibliothek.

>  TCCR1B |= (1<<WGM12) | (1<<WGM13); //CTC Modus aktivieren
>  TCCR1B |= (1<<CS12); //Prescaler 256
>
>  //Vergleichswert
>  OCR1A = 62500;

Arduino Mini mit 16 MHz?

16000000 Hz durch Prescaler 256 ergibt 62500 Takte pro Sekunde. Den 
Vergleichswert musst du aber um Eins vermindern: OCR1A = 62500-1;

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.