Hallo,

danke für eure Antworten...

@Hubert.G
Hast du schon mit einem von diesen Compiler Erfahrungen gesammelt und welchen könntest du weiter empfehlen?

@Felix G
ICh habe so einige Schwierigkeiten beim Compilieren, vielleicht liegt es auch an mir, aber wenn die Optimierung der Compilierung z.B.: auf Os, aber eigentlich funktioniert es nur mit O0, eingestellt ist funktioniert der Code nicht mehr richtig.

aktuelles Probelm:
Mittels einem Interrupt ein zyklisches Blinken "Heart Beat".

main.c:
Code:
#include <avr/io.h>
#include "common.h"
#include "isr.h"

int main(void) {

	init_ISR();
	
	DDRD = 0x10;
	PORTD = 0x10;	// HeartLed
	DDRC = 0x1C;
	PORTC = 0x10;
	
	while(1) {
		if (Counter_X_20ms > 0x03) { 
			if ( (PIND & 0x10) != 1 ) {
			PORTD |= 0x10;
			}
		}
		if (Counter_X_20ms < 0x02){
			if ( (PIND & 0x10) != 1 ) {
			 PORTD &= 0xEF; 
			}
		}
	}
	return 0;
}
isr.c:
Code:
#include <avr/interrupt.h>
#include <inttypes.h>
#include <stdio.h>
#include "common.h"



void init_ISR(void) {
	sei();
	TIMSK |= ( 0x01 << TOIE0 )	;	
	TCCR0 |= ( 0x01 << CS02 | 0x00 << CS01 | 0x01 << CS00 ) ; 
	TCNT0 = 0x64;	
	Counter_X_20ms	= 0x00;
} 



ISR(TIMER0_OVF_vect) {
	if ( Counter_X_20ms == 0x32 ) { // 1 sek
		Counter_X_20ms = 0x00;
	} else {
		Counter_X_20ms++;
	}
	TCNT0 = 0x64; 			
	TIFR |= ( 0x01 << TOV0 ) ; 	
}
Counter_X_20ms ist in der common.h als uint8_t definiert....

Dieser Code funktioniert eiwandfrei mit der CompilerStufe O0, aber mit allen anderen nicht mehr?

Vielleicht habe ich auch nur eine falsche Einstellung?

Danke

mfg Michael