Nabend,
ich habe folgendes problem. ich möchte gerne den Timer0 meines atmega8 in gang bringen. und bei einem overflow einen interrupt auslösen.
also habe ich, wie im datenblatt und in etlichen beispielen beschrieben den timer in gang gesetzt:
timer aktivieren F_CPU/1024 (TCCR0)
interrupt durch timer0 erlauben (TIMSK)
interrupts allgemein einschalten
ISR routine für timer0 overflow schreiben ISR(TIMER0_OVF_vect)

soweit von meiner seite ersichtlich, ist an dem code nichts auszusetzen

da ich gehört habe, dass es da durchaus drauf ankommt, wie man seinen code compiliert, habe ich das beigefügt.

Hier das Compileren und Flashen:
Code:
> avr-gcc file.c -c -o file.o -Os -g -mmcu=atmega8
> avr-gcc file.o -o file.elf -mmcu=atmega8
> avr-objcopy -j .text -j .data -O ihex file.elf file.hex
> avrdude -c avrispv2 -p m8 -P USB -U flash:w:file.hex:i
Hier der Code:

Code:
#include <avr/io.h> 
#include <avr/interrupt.h>
#include <stdlib.h> 
#define F_CPU    1000000

ISR(TIMER0_OVF_vect)
{
		DDRB	= 0xfd; // Alles ausgang ausser PB1 -> Eingang
		PORTB	= 0x03; // Ausgang für PB0 high , Pull-Up für PB1 an
}


int main(void)
{
	TCCR0	= (1<<CS02)|(1<<CS00); // TCCR0 = 0x03;
	TIMSK	= (1<<TOIE0);	
	sei();	
	while(1)
	{

	}
	/* Wird nie erreicht */
	return 0;
}
Ich weis, dass die Anweisung in der Interrupt-Funktionen für nen timer keinen sinn hat. es geht hier auch lediglich um den test des timers

In einer fertigen beispieldatei funktioniert der timer.
suchfunktion des forums ergab für mich keine weiterhelfenden themen.

ich hoffe, dass mir jemand helfen kann.
danke schonmal im vorraus.
gruß
Krampfda