Autor Tema: Problemas con #int_RDA  (Leído 2160 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado totpic

  • PIC10
  • *
  • Mensajes: 7
Problemas con #int_RDA
« en: 11 de Abril de 2006, 12:29:17 »
Hola a todos, tengo un problema con el siguiente programa y es que no me entra en la interrupcion de la uart (enviandole cosas) , he probado el codigo sin las interrupciones y si que funciona (poniendo el codigo directamente en el programa principal).
A ver si me podeis echar una mano, el programa es para el control de una puerta por serie, si llega una cadena especifica se abre, es parecido a un transponder, evidentemente le enganchare un aparatito de Aurel para hacerlo inalambrico.

Gracias.

Código: C
  1. #include <16f628A.h>
  2. #fuses HS,NOWDT,NOPROTECT,PUT
  3. #use delay (clock=20000000)
  4. #use rs232(baud=2400, xmit=PIN_B2, rcv=PIN_B1)
  5.  
  6.  
  7. #define P_Salida  PIN_B5   //Led Verde
  8.  
  9. int ent[3];    //Bufer de llegada
  10.  
  11. int Salida=0;  //Variables para temporizar
  12.  
  13. #int_RDA                                        //Rutina para el servicio de Interrupción
  14. void RDA(){
  15.  
  16.       if(kbhit()){
  17.          ent[2]=getc();
  18.  
  19.          if(ent[2]=='A' && ent[1]=='A' && ent[0]=='A'){  // MAMA
  20.             Salida=10;            // Inicio de contadores
  21.             OUTPUT_BIT(P_Salida,1);
  22.             ent[2]=0;                        // Nos aseguramos de que no lo vuelva a interpretar
  23.          }
  24.  
  25.          ent[0]=ent[1];
  26.          ent[1]=ent[2];
  27.        }
  28.  
  29. }
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. void main(){
  38.  
  39.    OUTPUT_BIT(P_Salida,1);
  40.    delay_ms(1000);
  41.    enable_interrupts(INT_RDA);
  42.    enable_interrupts(GLOBAL);
  43.    OUTPUT_BIT(P_Salida,0);
  44.  
  45.  
  46.  
  47.    while(1){      //Bucle principal control de las salidas
  48.  
  49.       delay_ms(1000);
  50.       if( Salida>0 )
  51.          Salida--;
  52.       else OUTPUT_BIT(P_Salida,0);        // Cerramos la puerta hace mas de 10 segundos que no recive
  53.  
  54.    }
  55.  
  56.  
  57. }

PD: Este foro nuevo esta mucho mejor que el otro. ;)

Desconectado Mario_2004

  • PIC10
  • *
  • Mensajes: 30
Re: Problemas con #int_RDA
« Respuesta #1 en: 11 de Abril de 2006, 16:47:29 »

Desconectado totpic

  • PIC10
  • *
  • Mensajes: 7
Re: Problemas con #int_RDA
« Respuesta #2 en: 11 de Abril de 2006, 19:25:02 »
La  Usart de hardware que incorpora en 16f628, si no me equivoco está en las pata B1 (Rx)  y B2 (Tx), que es como yo he definido el puerto rs232.
Creo que te refieres a eso?, Pero lo veo bien aunque no funciona.
« Última modificación: 11 de Abril de 2006, 19:35:07 por totpic »

Desconectado Mario_2004

  • PIC10
  • *
  • Mensajes: 30
Re: Problemas con #int_RDA
« Respuesta #3 en: 12 de Abril de 2006, 07:45:08 »
Hola totpic, perdona pero no me fijé en el PIC.

Prueba a cambiar esta línea, creo que te funcionará:

#fuses HS,NOWDT,NOPROTECT,NOPUT

saludos

Mario

Desconectado totpic

  • PIC10
  • *
  • Mensajes: 7
Re: Problemas con #int_RDA
« Respuesta #4 en: 12 de Abril de 2006, 09:31:47 »
Gracias, ya esta arreglado, era un problema con el pic, parece que estaba un poco cascado y la int de la usart no iva.

Por cierto, para que sirve el fusible de put?