zu 1)
Code:
//DDRB
#define SPI_MOSI_DDR  DDRB
#define SPI_CLK_DDR   DDRB
#define SPI_MISO_DDR  DDRB
#define SPI_SS_DDR    DDRB

//PORTB
#define SPI_MOSI_PORT  PORTB
#define SPI_CLK_PORT   PORTB
#define SPI_MISO_PORT  PORTB
#define SPI_SS_PORT    PORTB

// PIN 
#define SPI_MOSI_PIN0  PINB0
#define SPI_SS_PIN1    PINB1
#define SPI_CLK_PIN2   PINB2
#define SPI_MISO_PIN3  PINB3
//PB
#define SPI_MOSI_PB0  PB0
#define SPI_SS_PB1    PB1
#define SPI_CLK_PB2   PB2
#define SPI_MISO_PB3  PB3

//Slave-deklaration
void SPI_INIT(void)
{
// MOSI, CLK und SS auf Eingang setzen
  SPI_MOSI_DDR = (1<<SPI_MOSI_PB0);
  SPI_CLK_DDR  = (1<<SPI_CLK_PB2);
  SPI_SS_DDR   = (1<<SPI_SS_PB1);
// MOSI, CLK und SS Internen Pull-Up aktivieren 
  SPI_MOSI_PORT |=(1<<SPI_MOSI_PB0);
  SPI_CLK_PORT  |=(1<<SPI_CLK_PB2);
  SPI_SS_PORT   |=(1<<SPI_SS_PB1);
// MISO auf Ausgang setzen 
  SPI_MISO_DDR |= (1<<SPI_MISO_PB3);
//MISO auf High setzten
  SPI_MISO_PORT |= (1<<SPI_MISO_PB3);
}
zu 2) Mein fehler geändert in
Code:
for(uint16_t a =15 ; a > 0; a--)
zu3) Kennst du das nicht im Kopf Klang es logisch, eigentlich wollte ich damit erreichen das er an der stelle warten soll bist der externe Int0 ausgelöst wird.

zu4) Ne es soll nur etwas am miso-pin passieren wenn der der interrupt ausgelöst wird.

zu5) es werden 16-bit ausgegeben habe es nur byte genannt.

MfG Kluski