Hallo,

der Interrupt wird nicht ausgelöst, weil der Befehl sei(); das "I" Flag nicht setzt. In AVR Studio kann ich das verfolgen. Wenn ich aber


Code:
GICR |= (1<<INT0) | (1<<INT1);

deaktiviere, dann wird der Befehl sei(); ausgeführt. Ich muss doch sowohl die Bits INT0 und INT1 und das "I"-Flag setzen. Aber die stören sich gegenseitig. Warum?


Es wird der MEGA16 eingesetzt.


Code:
#include <avr/io.h>
#include <avr/interrupt.h>


#define F_CPU 7372800UL 			

#include <util/delay.h> 


ISR(TIMER0_OVF_vect)
		
	{
	PORTA=0xdd;
	}


ISR(TIMER1_OVF_vect)

	{ 
	PORTA=0xaa;
	}


void init(void)

{
 
        TCCR1B = _BV(CS11); 


	GICR |= (1<<INT0) | (1<<INT1);		// Interrupt Enable

 
	DDRD &= ~( ( 1 << PIND2 ) | ( 1<<PIND3) ); //INT0 und INT1 Eingang

	
	PORTD=_BV(INT0) | _BV(INT1); //Pullups aktibieren

	sei();

	DDRA = 0xff;

}   


int main(void)
{
   
  uint8_t i = 0;

  init();  
  
		for(;;)
		{

    	        for(i=0;i<255;i++)
			{
		   	PORTA = i;		
         	_delay_ms(50); 
			}

		for(i=255;i>0;i--)
			{
		   	PORTA = i;		
         	_delay_ms(50); 
			}
		}
		return 0;
}