//2013 by ammannm #include #include #include #include #define F_CPU 8000000UL #define BLANK PB0 #define XLAT PB1 #define MODE PB2 #define MOSI PB5 #define MISO PB6 #define SCK PB7 uint16_t aGrayscale[] = {255, 1000, 4000, 500, 3000, 3000, 1465, 456, 3215, 2156, 1000, 0, 200, 0}; char * pPointer; void SPI_INIT(void){ //SPI-Ausgänge----- DDRB = (1 << PINB5) | (1 << PINB3) | (1 << PINB2) | (1 << PINB1); //SPI-------------- SPCR = (1<>= 1; // Maske auf nächsten Ausgangsbit schieben bit_count_out++; // Bitzähler für Ausgang++ if (bit_count_out == 8) { // 8 Bits erreich, Ausgangsbyte voll? bit_count_out=0; // Zähler rücksetzen SPI_Transfer(byte_out); // senden byte_out = 0; // Zähler rücksetzen mask_out = 0x80; // Maske rücksetzen } } } } int main(void) { uint8_t x; x = 0; DDRA = 0xff; //PORTA als Ausgang! PORTA = 0x00; SPI_INIT(); while(1) { if(x <= 13){ send_tlc5941_pwm(&aGrayscale[x]); x++; }else{ x = 0; } } }