HI, ich hab gerad begonnen interrupts mit dem timer auszuprobieren udn den code mal nach AVR Tutorial und Datenblatt gestrickt. Sowohl für 8-, als auch 16 Bit Timer. Problem, es passiert garnichts. Der Port ist richtig, die LED kann ich zum Debuggen auch in led_init() an- und ausschalten, jedoch die ISR des Timers läuft nicht. wahrscheinlich überseh ich nur was, oder ??
mfgCode:#include <avr/io.h> #include <avr/interrupt.h> // edfinition of Timer 0 Interrupt number #define TIMER0_vect _VECTOR(10) #define TIMER1_vect _VECTOR(9) //definitions for Timer register #define CS00 0 #define CS01 1 #define CS02 2 #define CS12 2 //definitions for LED #define LEDPORT DDRB #define LED 0 void timer0_init(void); // 8 Bit Timer void timer1_init(void); // 16 Bit Timer void led_init(void); void main(void) { led_init(); timer1_init(); for(;;) {} } void timer0_init(void) { cli(); // Set Timer Config: TCCR0 |= (1<<CS00) | (1<<CS02); //enable Timer0 Interrupt TIMSK |= (1<<0); sei(); } void timer1_init(void) { cli(); // set Timer1 Conifg TCCR1A = 0x00; // kein CLK_out, kein PWM TCCR1B |= (1<<CS12); // Prescvaler f_osc/256 //enable Timer1 Interrupt TIMSK |= (1<<7); sei(); } void led_init(void) { LEDPORT = 0x01; PORTB |= (1<<LED); } // TIMER 0 ISR ISR (TIMER0_vect) { if( PORTB |= (1<<LED) ) PORTB &= ~(1<<LED); else PORTB |= (1<<LED); } //TIMER 1 ISR ISR (TIMER1_vect) { if( PORTB |= (1<<LED) ) PORTB &= ~(1<<LED); else PORTB |= (1<<LED); }
LC







Zitieren

Lesezeichen