#include #include #include #define F_OSC (8000) //oscillator freq. in kHz (typical 8MHz or 16MHz) volatile uint8_t DmxRxField[8]; //array of DMX vals (raw) volatile uint16_t DmxAddress; //start address enum {IDLE, BREAK, STARTB, STARTADR}; //DMX states volatile uint8_t gDmxState; int main(void) { cli(); DDRD |= (1<= DmxRxField[0]) { PORTA &= ~(1<= DmxRxField[1]) { PORTA &= ~(1< enable and wait for break { gDmxState= IDLE; UCSRB |= (1<= sizeof(DmxRxField)) //all ch received? { gDmxState= IDLE; //wait for next break } } }