#include #if defined(__AVR_ATmega32__) #elif defined(__AVR_AT90S8515__) #define SS PB4 #define MOSI PB5 #define SCK PB7 #elif defined(__AVR_ATmega8__) #define SS PB2 #define MOSI PB3 #define SCK PB5 #elif defined(__AVR_ATmega48__) #define SS PB2 #define MOSI PB3 #define SCK PB5 #endif #include "led_driver.h" void led_init(void) { //CPOL=0,CPHA=0 -> Sample on rising edge, standard phase. #if defined(__AVR_ATmega32__) SPCR=0x51;//Enable SPI, MSB first, master mode, 16 MHz/16 = 1 MHz clock. #else SPCR=0x50;//Enable SPI, MSB first, master mode, 4 MHz/4 = 1 MHz clock. #endif //FIXME Flicker disappears when these lines are removed! DDRB|=1<>8)&0xFF;//MSB while(!(SPSR&0x80));//Wait for transfer complete. temp=SPDR; SPDR=on&0xFF;//LSB while(!(SPSR&0x80));//Wait for transfer complete. temp=SPDR;//Access SPDR to clear second SPIF flag. PORTB&=~(1<