1 | sei(); // Global Interrupts aktivieren
|
2 | EIMSK |= (1 << INT0); // Enable INT0
|
3 | EICRA |= (1 << ISC00); // Any logical change on INT0 generates an interrupt request.
|
es ist keine so gute Idee, die Interrupts generell frei zu geben, noch
ehe alles fertig konfiguriert ist.
Das sei() kommt ganz zum SChluss, wenn alles fertig eingestellt ist,
unmittelbar vor der Hauptschleife in main().
Denn ansonsten kann es dir passieren, dass mit dem sei() schon die
ersten Interrupts zu feuern beginnen. Was bei dir natürlich ganz
besonders schlecht ist, wenn der µC gleich mal in die INT0-ISR geht, in
der du über SPI etwas auszugeben versuchst, wobei das SPI zu diesem
Zeitpunkt noch gar nicht konfiguriert ist.
Da kann dann deine Warteschleife auf das SPIF lange warten, ehe sich da
mal was tut.