Timer Interrupt

Gast #2084473
Lesenswert?
• ▲
▼
Hallo,

ich möchte für einen ATmega32 einen Timer mit Interrupt programmieren. 
Der 8bit Timer0 soll im CTC-Modus arbeiten.
1
#include <avr/io.h>;
2
#include <avr/interrupt.h>
3

4
void init(void) {
5

6
  // LED auf PD1
7
  DDRD |= 0x01;
8
  PORTD |= 0x01;
9

10
  /* CTC aktivieren */
11
  TCCR0 &= ~(1<<WGM00);
12
  TCCR0 |= (1<<WGM01);
13

14
  /* prescaler 1*/
15
  TCCR0 |= (1<<CS00);
16
  TCCR0 &= ~(1<<CS01);
17
  TCCR0 &= ~(1<<CS02);
18

19
  OCR0 = 100;
20
        TIMSK |= (1 << OCIE0);
21

22
  sei();
23
}
24

25
ISR(TIMER0_COMP_vect) {
26
  PORTD &= ~0x01;
27
}
28

29
int main(void) {
30

31
  init();
32
  while(1) {
33
  }  
34

35
}
Da die LED nicht ausgeschaltet wird, gehe ich davon aus, dass die 
Interruptroutine nicht ausgeführt wird. Kann mich vielleicht jemand 
helfen und sagen wo mein Fehler bei der Timerinitialisierung ist? Oder 
was ich sonst falsch gemacht habe?
Vielen Dank schon mal im Voraus!
Mike
#2084759
Lesenswert?
• ▲
▼
@  Axel Düsendieb (axel_jeromin) Benutzerseite

>> /* CTC aktivieren */
>>   TCCR0 &= ~(1<<WGM00);
>>   TCCR0 |= (1<<WGM01);
>
>   /* prescaler 1*/
>>   TCCR0 |= (1<<CS00);
>>   TCCR0 &= ~(1<<CS01);
>>   TCCR0 &= ~(1<<CS02);

>die ledtzten beiden Zeilen killen alle Veroderungen dadrüber

Nö, die löschen gezielt Bits, auch wenn die nach dem Reset sowieso 
gelösht sind. Siehe Bitmanipulation. Man beachte das "~"

MFG
Falk
Gast #2084852
Lesenswert?
• ▲
▼
also die LED hängt an PD0 (hab vorhin ausversehen PD1 geschrieben). Das 
ändert aber nichts an der Tatsache, dass der Interrupt nicht 
funktioniert. Zu Testzwecken, ob mein Interrupt ausgelöst wird, wollt 
ich die LED beim ersten Interrupt ausschalten. Sie bleibt aber an. 
Daraus schließe ich, dass bei der Timerinitialisierung irgendwo ein 
Fehler ist.

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.