//HEADERFILES #include #include #include #include #include #include //DEFINES #define F_CPU 8000000 //Taktfrequenz 8MHz #define dmx_size 1 //Anzahl benötigter Kanäle ==> ANPASSEN #define BAUD 250000L //Baudrate von DMX512 = 250kBaud #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000) #if ((BAUD_ERROR>10) || (BAUD_ERROR<-10)) #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! #endif //GLOBALE VARIABLEN uint8_t dmx_array[dmx_size]; //DMX-Daten volatile uint8_t flag; //neue Daten vorliegend uint8_t data; //DMX Daten //HAUPTPROGRAMM int main(void) { //Ein- und Ausgänge initialisieren PORTC = 0xff; //Adressbits 0 bis 7 => Pull Ups aktiviert DDRA = 0xfc; //PA2...PA7 sind Ausgänge PORTA = 0x03; //Ardessbits 8 und 9 => Pull Ups aktiviert //UART konfigurieren UBRRH = (UBRR_VAL >> 8); UBRRL = (UBRR_VAL & 0xff); UCSRB = ((1< DMX Reset { dmx_channel=0; dmx_base = (~PINC & 0xFF)+1; // read dip switches which define DMX base address if (~PINA & (1<=0 && index