Danke fürs void und fürs ==.
Aber das Problem ist immer noch das selbe. Hab auch die warte(); gegen ein while(1) in main getauscht und void warte (void) komplett rausgeschmissen.
Port B soll ja auch auf 0xff gesetzt werden wenn counter bei 0 ist.
Liegt es am while(1) die Varriante hab ich mal gesehen ob das so richtig ist hab ich noch nie probiert.
Wäre eine aufwärts Zählschleife besser?
Hier nochmal der Code:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
volatile int counter=10;
void initialise (void)
{
DDRB = 0xFF;
DDRD = 0x00;
GIMSK |= (1<<INT0)|(1<<INT1);
MCUCR |= (0<<ISC01)|(0<<ISC00);
}
SIGNAL (SIG_INTERRUPT0)
{
counter = counter - 1 ;
if (counter == 0)
{
PORTB = 0b11111111;
}
}
int main (void)
{
initialise();
PORTB = 0b11110101;
sei();
while(1);
}
Dann noch ne allgemeine Frage: Warum hängen sich den rekursive Aufrufe wie meine warte() schnell auf? Oder nur in diesem speziellen Fall?
Danke nochmals
Lesezeichen