#int_ext
void interrup_RA2()
{
switch (flag1){
case 0: flag1=1; ext_int_edge(L_TO_H);break;
case 1: flag1=0; ext_int_edge(H_TO_L);break;
}
salida2_off;
delay_us(/*intensidad*/DELAYCOM);
salida2_on;
}
void main()
{
setup_comparator(NC_NC_NC_NC);
enable_interrupts(global);
enable_interrupts(int_rda);
set_tris_D(0x00);
enable_interrupts(int_ext);
ext_int_edge(H_TO_L);
setup_adc_ports (NO_ANALOGS);
while (TRUE)
{
valor_B=getc();
DELAYCOM = valor_B;
}
Deberias poder como dijo AngelgrisCódigo: C
int DELAYCOM,valor_B; #int_ext void interrup_RA2() { switch (flag1){ case 0: flag1=1; ext_int_edge(L_TO_H);break; case 1: flag1=0; ext_int_edge(H_TO_L);break; } salida2_off; delay_us(/*intensidad*/DELAYCOM); salida2_on; } void main() { setup_comparator(NC_NC_NC_NC); enable_interrupts(global); enable_interrupts(int_rda); set_tris_D(0x00); enable_interrupts(int_ext); ext_int_edge(H_TO_L); setup_adc_ports (NO_ANALOGS); while (TRUE) { DELAYCOM = valor_B; }
Yo tambien apoyo la mocion de no poner un delay en la interrupcion
salida2_off;
delay_us(/*intensidad*/DELAYCOM);
salida2_on;mediante el retardo delay_us definido por DELAYCOM, es para hacer un dimmer y es el unico ejemplo que tengo funcionando, ademas despues tenia ganas de adaptarlo para controlar 8 dimmer con un pic... ya no se que hacer, no me funciona nada de nada :?
Si como dice fuente, es un "define", no lo vas a poder variar, ya que es una constante. Por otro lado, habría que ver si a la función delay_us se le pueden pasar variables o sólo se le pueden pasar valores. En el caso de poder pasarle variables, bastaría con definir una variable (con otro nombre, por ejemplo delayCom) y cambiar el valor de dicha variable según se lo necesite.
salida2_off;
delay_us(1000);
salida2_on; se nota mucho mejor el cambio, y si ago estowhile (TRUE)
{
valor_B=1000;
DELAYCOM = valor_B;
}
funciona pero casi no se nota el cambio, porque?
salida2_off;
delay_us(19750); //maximo 19750
salida2_on;
Asi si funciona pero si lo ago dentro del while (true) no, porque?