Autor Tema: RECEPCIÓN MENSAJES C0N PIC16F876 Y WAVECOM  (Leído 4001 veces)

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

Desconectado sha

  • PIC10
  • *
  • Mensajes: 28
RECEPCIÓN MENSAJES C0N PIC16F876 Y WAVECOM
« en: 04 de Noviembre de 2010, 08:02:04 »
Hola a todos.
Estoy volviendome loco.
He intentado recibir mensaje pero no recibo nada del modem, ni siquiera el OK después de cada orden que le mando.
La comunicación creo si funciona, puesto que el modem se inicializa y manda mensaje.
Le he puesto una pantalla para leer lo que me manda moden, pero nada de nada.
El programa es:

#include   <16F876.h>
#include   <STRING.h>

#fuses   XT,NOWDT,PUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use      delay   (clock=4000000)
#use      rs232   (baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)   //manejo del RS232
#include   <flex_lcd.h>


int      cod=0x1A;
int       xbuffrec=0x00;               // índice del Buffer de Recepción
int       xbuffrec1=0x00;
int      i=0x00;
int      j=0x00;
int      var=0x00;
int      resultado=0x00;
int      men=0x00;
int      men1=0x00;
int      smsr=0x00;
int      saltb=0x00;
int      nbu=0x00;
//int      nch=0x00;
//char      cnch[2]={0x00,0x00};
char    buffrec[61];
char    buffrec1[10];
char    compa[5]={'S','M'};
char    compa1[6]={'H','O','L','A'};
char   var1[13]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char   var2[13]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char   var3[13]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char   nm[2];

   

void   enviar      (void);
void   serial_isr   (void);
void   Add_buffrec   (char c);
void   sacar      (void);
void   sacar1      (void);
void   comparar   (void);
void   comparar1   (void);
void   separar      (void);
void   borrarcad   (void);
void   borrar      (void);


#int_rda
void   serial_isr()
   {
         if(kbhit())
         {               // Si hay algo pendiente de recibir ...
         Add_buffrec(getc());   // lo recibo y lo añado al Buffer de Recepción
         }
   }   
void   Add_buffrec   (char c)
   {                     // Añade carácter al Buffer de Recepción
      //putchar(c);
      lcd_putc(c);
      if   (nbu==0)
         {      
            switch(c)
               {
                  case 0x0A:
                  {
                     if   (saltb==0)      // [Enter] -> Habilita Flag para procesar comando en Main
                        {
                           smsr=1;
                           break;
                        }
                     else
                        saltb=0;
                        nbu=1;
                        break;
                  }
                  case   0x22:
                  {
                     saltb=1;
                     buffrec[xbuffrec++]=c;
                     break;
                  }
                  default:
                  saltb=0;
                  buffrec[xbuffrec++]=c;            // Añade carácter recibido al Buffer
               }
         }
      else
         {
         switch(c)
            {
               case   0x0D:
                  smsr=1;
                  break;
               default:
                  buffrec1[xbuffrec1++]=c;         
            }            
         }
   }
void   main      (void)
{
   SET_TRIS_A(0xFF);
   SET_TRIS_B(0x00);

      
   OUTPUT_B(0x00);
   
   delay_ms(5000);
   printf("AT+CPIN=2805\r\n");
   delay_ms(2000);
   
   OUTPUT_HIGH(PIN_B0);
   
   printf("AT+IPR=9600\r\n");
   delay_ms(2000);
   
   printf("AT+ICF=3,4\r\n");
   delay_ms(2000);
   
   printf("AT+CICB=0\r\n");
   delay_ms(2000);
   
   printf("ATS0=1\r\n");
   delay_ms(2000);
   
   printf("AT+IFC=0,0\r\n");
   delay_ms(2000);
   
   printf("AT+CMGF=1\r\n");
   delay_ms(2000);
   
   printf("AT&WZ\r\n");
   delay_ms(2000);
   
   
   
   
   //enable_interrupts(int8 lcd_read_byte);    // Habilitamos la interrupción por recepción serie
   enable_interrupts(int_rda);    // Habilitamos la interrupción por recepción serie   
   enable_interrupts(global);     // Habilitamos las interrupciones
   
   lcd_init();
   
   lcd_putc("hola mundo");
   lcd_gotoxy(0x01,0x02);
   
   OUTPUT_HIGH(PIN_B1);
   
   printf("AT&WZ\r\n");
   delay_ms(2000);
   
   //enviar();
   
   borrar();
   
   delay_ms(2000);
   
   while(true)
   {
      if   (smsr==1)
         {
            delay_ms(2000);
            borrarcad();
            //delay_ms(2000);
            //sacar();
            delay_ms(1000);
            separar();
            //delay_ms(2000);
            //sacar1();
            delay_ms(2000);
            comparar();
            delay_ms(2000);
            comparar1();
            borrar();
            delay_ms(2000);
            smsr=0;
            OUTPUT_LOW(PIN_B0);
         }
      if   (men==1)
         {
            printf("AT+CMGR=1");
            putc(nm[0]);
            printf("\r\n");
            men=0;
         }
      if   (men1==1)
         {
            men1=0;
            OUTPUT_LOW(PIN_B0);
         }
   }
}

Una ayudita Porfavor.

Desconectado sha

  • PIC10
  • *
  • Mensajes: 28
Re: RECEPCIÓN MENSAJES C0N PIC16F876 Y WAVECOM
« Respuesta #1 en: 04 de Noviembre de 2010, 08:15:55 »
Se me olvidaba. Conectado con el hiperterminal funciona correctamente.

Desconectado Cecilia Elba 13

  • PIC10
  • *
  • Mensajes: 1
Re: RECEPCIÓN MENSAJES C0N PIC16F876 Y WAVECOM
« Respuesta #2 en: 03 de Mayo de 2011, 02:05:56 »
Me sucede lo mismo con un Dual Sim, N 97; puedo enviar mensajes pero cuando me mandan alguno, les figura que yo lo recibí y en realidad no me ingresan, eso sucede desde hacen 2 semanas. pero lo curioso es que 2 contactos me mensajean y los recibo. necesito solucionarlo urgente porque trabajo con el celular mucho.
tampoco puedo enviar por sistema bluetooth fotos a mi notebook. están bien emparejados, incluido el celular en panel de dispositivos, pero al momento de transferencia me indica que no pudo finalizar. gracias, desde ya a quien pueda ayudarme.