TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: _CMaGNo_ en 18 de Abril de 2006, 21:06:28

Título: Flanco de activacion de interrupcion externa
Publicado por: _CMaGNo_ en 18 de Abril de 2006, 21:06:28
Saludos!. Existe alguna funcion en PCW C para saber en que flanco se encuentra congurada la interrupcion externa?. Lo que pretendo es hacer una funcion que cambie el flanco de activacion, es decir que cuando este en flanco de subida lo cambie a flanco de bajada y viceversa. Supongo que podria hacer eso evaluando el bit 6 (INTEDG) del registro OPTION, algo como:

Código: [Seleccionar]
if (bit_test(OPTION_REG,6))
      ext_int_edge(H_TO_L);
   else
      ext_int_edge(L_TO_H);

Lo que quisiera es reemplazar bit_test(OPTION_REG,6) por una funcion PCW ... Solo tengo curiosidad de saber si se puede hacer de otra forma  :D

Gracias de antemano!
Título: Re: Flanco de activacion de interrupcion externa
Publicado por: RedPic en 19 de Abril de 2006, 02:22:26
No, amigo _CMaGNo_, no hay forma especifica en CCS C para hacerlo, distinta de la que tus has hecho de preguntar por el registro de configuración ... o iniciar una variable int1 (1 bit) con un estado inicial conocido e ir actualizandola cada vez que la conmutes (que es lo que yo hago en mis programillas)

Un saludo.
 
Título: Re: Flanco de activacion de interrupcion externa
Publicado por: _CMaGNo_ en 19 de Abril de 2006, 13:08:39
Ok redpic, muchas gracias por tu colaboracion
Título: Re: Flanco de activacion de interrupcion externa
Publicado por: migsantiago en 19 de Abril de 2006, 13:38:35
Cierto, yo también lo hago como RedPic...

Código: [Seleccionar]
int1 flanco_det=0;
//0 es h to l
//1 es l to h

...

ext_int_edge(H_TO_L);

...

ext_int_edge(L_TO_H);
flanco++; //invierte flanco