// Timer 1 Output COMPARE A Interrupt 
ISR(TIMER1_COMPA_vect) 
{
    static uint8_t pwm_cnt=0;
    uint8_t tmp=0;
 
    OCR1A += (uint16_t)T_PWM;
        
    if (pwm_setting[0] > pwm_cnt) tmp |= (1<<0);
    if (pwm_setting[1] > pwm_cnt) tmp |= (1<<1);
    if (pwm_setting[2] > pwm_cnt) tmp |= (1<<2);
    if (pwm_setting[3] > pwm_cnt) tmp |= (1<<3);
    
    PWM_PORT = tmp;                         // PWMs aktualisieren
    if (pwm_cnt==(uint8_t)(PWM_STEPS-1))
        pwm_cnt=0;
    else
        pwm_cnt++;
}
//*******************************************************************************************


//*******************************************************************************************
										//HAUPTPROGRAMM
int main(void)
{
	cli();
	PWM_DDR = 0x0f;	//PA0 bis PA3 als PWM-Ausgänge
	
	TCCR1B = 1;             // Timer läuft mit vollem Systemtakt
    	TIMSK |= (1<<OCIE1A);   // Interrupt freischalten	
	init_DMX();	
	sei();

	DMX_Adr = 1; //Testweise Adresse auf 1 setzen

	//Arbeitsschleife
	while(1)
	{					
		uint8_t pwm_values[4]={DmxField[0], DmxField[1], DmxField[2], DmxField[3]};
		memcpy(pwm_setting, pwm_values, 4);	

	}
	return 0;
}