Autor Tema: Flanco de activacion de interrupcion externa  (Leído 1866 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado _CMaGNo_

  • PIC10
  • *
  • Mensajes: 27
Flanco de activacion de interrupcion externa
« 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!

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Flanco de activacion de interrupcion externa
« Respuesta #1 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.
 
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado _CMaGNo_

  • PIC10
  • *
  • Mensajes: 27
Re: Flanco de activacion de interrupcion externa
« Respuesta #2 en: 19 de Abril de 2006, 13:08:39 »
Ok redpic, muchas gracias por tu colaboracion

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Flanco de activacion de interrupcion externa
« Respuesta #3 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


 

anything