Gehe ich doch noch heute Abend mit einem kleinem Erfolgserlebnis zu Bett *freu* =)

Wenn auch einwenig kompliziert geschrieben der Code, aber er funktioniert.

Der nächste Schritt wird sein, meinen Infrarot-Empfänger auszuwerten. Aber damit mache ich morgen weiter.

Vielen Dank an euch drei !!!


Ps.: Auf den Teil mit der Störungsempfindlichkeit ... darauf wäre ich ja nie gekommen.

Code:
#define F_CPU 20000000UL
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
 
volatile  uint8_t flag;

int main(){
 
 	// #### IO`s etc. konfigurieren....
	DDRB |= (1<<PB0);				// LED Output schalten...

	
	DDRA &= ~( (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7)  );
	PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA6) | (1<<PA7);

	flag = 0;


	EICRA |= (1<<ISC00) | (0<<ISC01);		// Modus: "Any edge of INT0 generates asynchronously an interrupt request"
	EIMSK |= (1<<INT0);				
	

	PCMSK0 |= (1<<PCINT7);					// PA7 als Interrupt-Pin....
	PCICR  |= (1<<PCIE0);			

	// ISR`s freigeben...
	sei();
 
    while(1){
		// Endlosschleife...
		if(flag==1){
			_delay_ms(3000);
			PORTB &= (0<<PB0);	// LED AUS...
			flag=0;
		}
    }

}
 

ISR( PCINT0_vect ){
	flag = 1;
	PORTB |= (1<<PB0);	// LED AN...
}