TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: hqv en 07 de Julio de 2005, 22:00:00

Título: Problema transferencia variable entre main y interrupciones
Publicado por: hqv en 07 de Julio de 2005, 22:00:00
Hola amigos del foro:

Mi consulta es la siguiente:
tengo problemas al trasferir un valor entre main y la función relacionada con la interrupción RB0.

LAs trato de transferir por variable y no me resulta.....y por dirección tampoco..

debe ser que tenga algun problema con los * o & y donde van ubicados...

parte del programa es el siguiente:

main()
{

int x=1;
unsigned long int z; //recepcion

printf("Dentro de main x =%d
", x);//// Aqui indica x=1.

while(1)
  {
 


   }

}


#int_ext
int encendido(int x)
{
int tx=0;
*x=1;


printf("pase por aqui
"Giño;
printf("valor x= %d valor *x = %d
", x, *x );// aqui indica x=0 y *x=0.
switch(*x)
   {
   printf("hola héctor
"Giño;
   case(1)://ENCENDIDO
      {

      output_high(PIN_A5);//
   
      output_low(PIN_A0);
      *x=0;   
      ext_int_edge(H_to_L);//   interrupcion ALTO a BAJO
      output_high(PIN_D2);
      enable_interrupts(INT_RDA);
      tx=0;
      return(tx);
      break;
      }
   case(0)://APAGADO
      {
      output_low(PIN_D2);

      output_low(PIN_A5);
      output_High(PIN_A0);
      *x=1;
      ext_int_edge(L_to_H);//interrupcion BAJO a ALTO
      disable_interrupts(INT_RDA);
      tx=1;   
      return(tx);
      break;
      }


   }//Fin switch
}//Fin interrupción ext encendido


Imprimo en la pantalla los valores de x dentro de main y resulta x=1, activo la interrupción RB0  , entro en la interrupción y imprimo x y *x y el resultado es x=0 y
*x=0,  debiendo ser x=1 y *x =1, ya que dentro de la interrupcion RB0 asigno a *x el valo de 1.

se que tengo algo malo...
me podrían edxplicar para tenerlo claro eso de las transferencia de variables....

muchas gracias
hq


Título: RE: Problema transferencia variable entre main y interrupciones
Publicado por: Nocturno en 08 de Julio de 2005, 02:31:00
¿Porqué no declaras la variable fuera del main para que su contexto sea global?
De esa manera todas las funciones del programa podrán usarla sin problemas, e incluso la entrada y salida de la interrupción usará menos ciclos de reloj al no tener que hacer respaldo de esa variable.
Título: RE: Problema transferencia variable entre main y interrupciones
Publicado por: hqv en 10 de Julio de 2005, 03:19:00
gracias nocturno66 por la respuesta que me diste me sirvió...

hq