Habe Probleme, die ISR zu meinem Timer zum laufen zu bringen
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 ??
Code:
#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);
}
mfg
LC