PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer beim atmega8



MrTaco
19.05.2010, 15:25
#include <avr/io.h>
#include <avr/interrupt.h>
int a = 106;

#include <util/delay.h>
int main(void)
{

// Timer 0 konfigurieren
TCCR0 = (1<<CS01)|(1<<CS00);

// Overflow Interrupt erlauben
TIMSK |= (1<<TOIE0);

// Global Interrupts aktivieren
sei();
DDRB = 0xFF;
DDRC = 0xFF;

while(1)
{

_delay_ms(200);
a = 106;
PORTC = 0xFF;
_delay_ms(200);
a = 136;
PORTC = 0x00;
}
}


ISR (TIMER0_OVF_vect)
{

PORTB ^= (1<<PB0);
TCNT0 = a;
}


Die leds am Portc blinken.
Jedoch will ich das der TCNT0 wert geändert wird um ne kleine Sirene hin zu bekommen.
Der wert von der Variabel a verändert sich nicht ( nach Debuggen im AVR Studio)
Was hab ich Falsch gemacht?

PicNick
19.05.2010, 15:28
nehme an, du musst "a" als volatile definieren.