while(1)
{
get_dips();
//-------------------- PWM LED
for (PWM_timer=0; PWM_timer<255 ; PWM_timer++) // Loop del timer aplicado al bucle while
{
for(canal=0; canal<3; canal++) //Canal: 0= Rojo, 1= Verde, 2= Azul
{
if(flag_estrobo) //El flag estrobo habilita o no el encendido/apagado de LEDS!
{
control_maestro_aux=DmxRxField[canal];
control_maestro_aux=control_maestro_aux*DmxRxField[3];
control_maestro_aux=(control_maestro_aux>>8);
if (((unsigned char)(control_maestro_aux)>PWM_timer)) //Cada canal.
{
PORTB &= ~(0<<canal); //LED OFF (APAGADO)
}else{
PORTB |= (0<<canal); //LED ON (ENCENDIDO)
}
if(DmxRxField[4]!=255) //Pregunto si son tiempos cortos o largos
{
_delay_ms(3.95); //Si el for para el PWM es de 255 => el periodo final serán 255mS
}
else
{
_delay_ms(22.0); //Si el for para el PWM es de 255 => el periodo final será 1,02 Seg
}
}
if(DmxRxField[4]) //Si el estrobo está habilitado!
{
flag_estrobo ^= 1; //Cambia el estado del flag estrobo, habilita o no destello
}
else
{
flag_estrobo=1; //Si el estrobo no está habilitado => los leds están siempre funcionando.
}
if(flag_estrobo) //El flag estrobo habilita o no el encendido/apagado de LEDS!
{
control_maestro_aux=DmxRxField[canal];
control_maestro_aux=control_maestro_aux*DmxRxField[3];
control_maestro_aux=(control_maestro_aux>>8);
if (((unsigned char)(control_maestro_aux)>PWM_timer)) //Cada canal.
{
PORTB &= ~(1<<canal); //LED OFF (APAGADO)
}else{
PORTB |= (1<<canal); //LED ON (ENCENDIDO)
}
}
if(DmxRxField[4]!=255) //Pregunto si son tiempos cortos o largos
{
_delay_ms(3.95); //Si el for para el PWM es de 255 => el periodo final serán 255mS
}
else
{
_delay_ms(22.0); //Si el for para el PWM es de 255 => el periodo final será 1,02 Seg
}
if(DmxRxField[4]) //Si el estrobo está habilitado!
{
flag_estrobo ^= 1; //Cambia el estado del flag estrobo, habilita o no destello
}
else
{
flag_estrobo=1; //Si el estrobo no está habilitado => los leds están siempre funcionando.
}
if(flag_estrobo) //El flag estrobo habilita o no el encendido/apagado de LEDS!
{
control_maestro_aux=DmxRxField[canal];
control_maestro_aux=control_maestro_aux*DmxRxField[3];
control_maestro_aux=(control_maestro_aux>>8);
if (((unsigned char)(control_maestro_aux)>PWM_timer)) //Cada canal.
{
PORTB &= ~(1<<canal); //LED OFF (APAGADO)
}else{
PORTB |= (1<<canal); //LED ON (ENCENDIDO)
}
if(DmxRxField[4]!=255) //Pregunto si son tiempos cortos o largos
{
_delay_ms(3.95); //Si el for para el PWM es de 255 => el periodo final serán 255mS
}
else
{
_delay_ms(22.0); //Si el for para el PWM es de 255 => el periodo final será 1,02 Seg
}
}
}
if(DmxRxField[4]) //Si el estrobo está habilitado!
{
flag_estrobo ^= 1; //Cambia el estado del flag estrobo, habilita o no destello
}
else
{
flag_estrobo=1; //Si el estrobo no está habilitado => los leds están siempre funcionando.
}
if(flag_estrobo) //El flag estrobo habilita o no el encendido/apagado de LEDS!
{
control_maestro_aux=DmxRxField[canal];
control_maestro_aux=control_maestro_aux*DmxRxField[3];
control_maestro_aux=(control_maestro_aux>>8);
if (((unsigned char)(control_maestro_aux)>PWM_timer)) //Cada canal.
{
PORTB &= ~(2<<canal); //LED OFF (APAGADO)
}else{
PORTB |= (2<<canal); //LED ON (ENCENDIDO)
}
}
if(DmxRxField[4]!=255) //Pregunto si son tiempos cortos o largos
{
_delay_ms(3.95); //Si el for para el PWM es de 255 => el periodo final serán 255mS
}
else
{
_delay_ms(22.0); //Si el for para el PWM es de 255 => el periodo final será 1,02 Seg
}
}
}
if(DmxRxField[4]) //Si el estrobo está habilitado!
{
flag_estrobo ^= 1; //Cambia el estado del flag estrobo, habilita o no destello
}
else
{
flag_estrobo=1; //Si el estrobo no está habilitado => los leds están siempre funcionando.
}
}