Hola, estoy trabajando con un PWM con dos pulsadores, uno aumenta, el otro disminuye, pero no se como hacer para que si se deja un pulsador oprimido disminuya o aumente constantemente, actualmente hay que pulsar, soltar y volver a pulsar.
El codigo el C:
void main() //PROGRAMA PRINCIPAL
{
set_tris_a(0xff); // RA0 y RA1 entradas
set_tris_b(0x0e); //RB0 salida
setup_ccp1(ccp_pwm); //CCP1 como PWM
setup_timer_2(t2_div_by_4,0xF0,1); // modo,PR2,posescaler
setup_adc_ports(no_analogs); // T=(PR2+1)*4*Tosc*Preescaler (periodo; con desde 500 5000Hz y >18KHz)
do // D=duty*Tosc*Preescaler (duty es el que va en set_pwm1_duty())
{
if(input(PIN_A0))
{
delay_ms(20);
while(input(PIN_A0))
delay_ms(20);
count++;
if(count==8)
count=7;
}
if(input(PIN_A1))
{
delay_ms(20);
while(input(PIN_A1))
delay_ms(20);
count--;
if(count==-1)
count=0;
}
x=count*3;
set_pwm1_duty(x); //cargo el valor 0-256 al PWM
output_bit(PIN_B4,input_state(PIN_B0)); // la salida RB4 es igual a la salida RB0
}while(true);
}
Muchas gracias por su ayuda.
El codigo el C:
void main() //PROGRAMA PRINCIPAL
{
set_tris_a(0xff); // RA0 y RA1 entradas
set_tris_b(0x0e); //RB0 salida
setup_ccp1(ccp_pwm); //CCP1 como PWM
setup_timer_2(t2_div_by_4,0xF0,1); // modo,PR2,posescaler
setup_adc_ports(no_analogs); // T=(PR2+1)*4*Tosc*Preescaler (periodo; con desde 500 5000Hz y >18KHz)
do // D=duty*Tosc*Preescaler (duty es el que va en set_pwm1_duty())
{
if(input(PIN_A0))
{
delay_ms(20);
while(input(PIN_A0))
delay_ms(20);
count++;
if(count==8)
count=7;
}
if(input(PIN_A1))
{
delay_ms(20);
while(input(PIN_A1))
delay_ms(20);
count--;
if(count==-1)
count=0;
}
x=count*3;
set_pwm1_duty(x); //cargo el valor 0-256 al PWM
output_bit(PIN_B4,input_state(PIN_B0)); // la salida RB4 es igual a la salida RB0
}while(true);
}
Muchas gracias por su ayuda.