Timer Interrupt ATMega 16

Gast #553493
Lesenswert?
• ▲
▼
Hm...

Ich wäre für einen Tipp dankbar, warum die Interrupt-routine nicht 
durchlaufen wird. Oder wird gar am Ende der Timer nicht mal gestartet?
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#define F_CPU 8000000UL
4

5

6

7
int main (void)
8
{
9
DDRD=0xE2;
10
PORTD|=(1<<7);      // LED an
11
sei();        // global IR enable
12
TCNT0=0x04;      // Timer preload
13
while(1){
14
TCCR0|=((1<<0)|(1<<2));   // presacaler 1024, run
15
    }            
16
}
17

18

19
ISR(TIMER0_OVF_vect)
20
{
21
TCNT0=0x04;           // btimer preload 4
22
PORTD^=(1<<7);      // toggle LED
23
}
24

25

26
// Timer müsste alle 32 msec die ISR auslösen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.