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:
Dann noch ne allgemeine Frage: Warum hängen sich den rekursive Aufrufe wie meine warte() schnell auf? Oder nur in diesem speziellen Fall?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); }
Danke nochmals







Zitieren

Lesezeichen