//************************************** // SPI_Test Mega8 mit 8 MHz // SPI mit 4Mhz // Mega8 > HC595 // Mosi > Serial in // Sck > Clock // PB2/SS > RCK+G //************************************** //************************************** // I N C L U D E //************************************** #include #include // Register Definitionen fuer Mega8 #include #include #include //************************************** // G L O B A L V A R I A B L E //************************************** volatile display_mem[14]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 0x40,0x20,0x10,0x08,0x04,0x02, }; // 14 Positionen volatile unsigned int pos; //************************************** // M A I N //************************************** void main(void) { PORTB = 0x00; DDRB = 0xFF; // SCK/MOSI/SS als Ausgang / (0xFF)Alle Ausgang //SPI //SPCR = 0x50; // SPE/MSTR/CPOL=0/CPHA=0 SPI Mode 0 //SPCR = 0x54; // SPE/MSTR/CPOL=0/CPHA=1 SPI Mode 1 //SPCR = 0x58; // SPE/MSTR/CPOL=1/CPHA=0 SPI Mode 2 SPCR = 0x5C; // SPE/MSTR/CPOL=1/CPHA=1 SPI Mode 3 SPSR = 0x01; // SPIX2 //SPDR = 0x00; //while (!(SPSR & (1< 31) { SPDR = display_mem [pos]; // Daten per SPI senden while (!(SPSR & (1< Shift in Storage / G disable PORTB = 0x00; // HC595 > G enable PORTD =(~pos); // PortD invertiertes pos ausgeben Tick = 0; // da STK500 log.0 LEDs an pos++; if(pos>13) // nach Datenbyte 16 { pos=0; // wieder von vorn } } TCNT0 = 0x04; // Timer0 neustart }