Ich versuche mich jetzt hiermit das erste Mal an Interrupts und habe nach fleißigem Studieren der Register den folgenden Code ausgearbeitet. Ich möchte nur eine LED an Portb.2 ein- und ausknipsen, sobald ein Low an INT0 anliegt. Der Interrupt-Pin liegt mittels dem Taster des Encoders auf Masse (oder eben auch nicht, wenn er nicht gedrückt ist). Das ganze funktioniert leider noch nicht. Wo liegt mein Fehler?
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
void ioinit( void )
{
DDRB |= 0xff;
DDRD |= 0x00;
}
int main( void )
{
ioinit();
GIMSK |= ( 1 << INT0 );
MCUCR |= ( 1 << ISC01 );
sei();
for( ;; )
{
}
return 0;
}
SIGNAL( SIG_INTERRUPT0 )
{
PORTB ^= ( 1 << PB2 );
}
Lesezeichen