Kesandal
21.06.2011, 20:10
Hallo,
mal wieder ein µC Problem :D
Zunächst mein Quelltext (habe den der einfachheithalber auf ein Minimum reduziert):
#include <avr/io.h>
#define LCD_PORT PORTC
#include "display.inc"
#include <avr/interrupt.h>
int main(){
DDRC=0xff;
DDRA=0x00;
DDRD=(1<<PD5); // sound output
TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00); // pr 1024 - ctc => 3600hz
TCCR1A = (1<<COM1A0);
TCCR1B= (1<<WGM12)|(1<<CS10); // pr 1024 - ctc
TIMSK = (1<<OCIE1A)|(1<<OCIE0);
TCNT0=0;
TCNT1=0;
OCR1A=0;
OCR0=200; // *18 = 3600 => 1sekunde
DDRB=0xff;
PORTB=0xff;
sei();
while(1){
}
return 0;
}
ISR(TIMER1_COMPA_vect){
PORTB=0x0f;
}
ISR(TIMER0_COMP_vect){
PORTB=0xf0;
}
Was es tun soll: Ich möchte mit Timer0 und Timer1 arbeiten.
Problem: Es wird nur die ISR von Timer1 aufgerufen. Die Timer0-ISR wird nie aufgerufen.
Kommentiere ich oben die TCCR1[A|B] aus, funktioniert die ISR vom Timer0.
Habe ich irgendwas elementares einfach übersehen? :(
Danke im Voraus
Kesandal
mal wieder ein µC Problem :D
Zunächst mein Quelltext (habe den der einfachheithalber auf ein Minimum reduziert):
#include <avr/io.h>
#define LCD_PORT PORTC
#include "display.inc"
#include <avr/interrupt.h>
int main(){
DDRC=0xff;
DDRA=0x00;
DDRD=(1<<PD5); // sound output
TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00); // pr 1024 - ctc => 3600hz
TCCR1A = (1<<COM1A0);
TCCR1B= (1<<WGM12)|(1<<CS10); // pr 1024 - ctc
TIMSK = (1<<OCIE1A)|(1<<OCIE0);
TCNT0=0;
TCNT1=0;
OCR1A=0;
OCR0=200; // *18 = 3600 => 1sekunde
DDRB=0xff;
PORTB=0xff;
sei();
while(1){
}
return 0;
}
ISR(TIMER1_COMPA_vect){
PORTB=0x0f;
}
ISR(TIMER0_COMP_vect){
PORTB=0xf0;
}
Was es tun soll: Ich möchte mit Timer0 und Timer1 arbeiten.
Problem: Es wird nur die ISR von Timer1 aufgerufen. Die Timer0-ISR wird nie aufgerufen.
Kommentiere ich oben die TCCR1[A|B] aus, funktioniert die ISR vom Timer0.
Habe ich irgendwas elementares einfach übersehen? :(
Danke im Voraus
Kesandal