TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 05 de Febrero de 2014, 22:44:42
-
Hola, alguien me puede ayudar con esto...
Estoy tratando de usar la interrupciones #INT_EXT y #INT_RB de un PIC18F4520, pero con diferente flanco de disparo, para el #INT_EXT flaco de subida (L to H) y para el #INT_RB flanco de bajada (H to L), el problema esta cuando ambas inetrrupciones estan habilitadas el #INT_EXT solo se dispara con flacos de bajada a pesar de estar configirado con flaco de subida, pero cuando deshabilito la #INT_RB, ahora si funciona correctamente la interrupcion del #INT_EXT, alguien le ha sucedido esto...
Aqui esta mi codigo
#include <18F4520.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, timeout=5000)// RS232 Estándar
int Clear_PORTB;
#INT_EXT
void Int_CALL(){
output_toggle(PIN_D0);
}
#INT_RB
void Int_DOOR(){
output_toggle(PIN_D3);
Clear_PORTB = input_b();
}
void main() {
ext_int_edge(L_TO_H);
clear_interrupt(INT_EXT);
enable_interrupts(int_ext);
ext_int_edge( H_TO_L );
clear_interrupt(INT_RB);
enable_interrupts(int_rb);
enable_interrupts(global);
while(TRUE) {
delay_ms(100);
}
}
-
Si INT_RB se refiere a las de cambio de estado, en éstas no puedes elegir el flanco. Se ejecutan tanto con un flanco positivo como con uno negativo.
-
:oops: Cometi un error... tienes razon solo el #INT_EXT se selecciona los flacos, lo que sucede es que cuando habilito #INT_RB por alguna razon cambia el comprtamiento de #INT_EXT, en vez de activarse por flaco se subida como esta configurado lo hacer por el de bajada, pero cuando deshabilito el #INT_RB, el #INT_EXT si funciona correctemente...
-
:oops: Cometi un error... tienes razon solo el #INT_EXT se selecciona los flacos, lo que sucede es que cuando habilito #INT_RB por alguna razon cambia el comprtamiento de #INT_EXT, en vez de activarse por flaco se subida como esta configurado lo hacer por el de bajada, pero cuando deshabilito el #INT_RB, el #INT_EXT si funciona correctemente...
Estás utilizando dos veces "ext_int_edge()" y justamente en la segunda oportunidad lo configuras para flanco descendente.
-
:mrgreen: Hola AngelGris, tienes razon, es increible pero no lo hbaia visto... gracias