Cómo usar hc-05 con pic32

0

Quiero usar el módulo bluetooth Hc-05 con mi controlador pic32 para comunicarme con otros dispositivos bluetooth. Quiero probar el módulo hc-05 con mi controlador pic32. He realizado las conexiones de hardware, pero no conozco el código. Escribí un código simple para probar el módulo.

Pero no está funcionando. El módulo no está respondiendo a mis comandos AT. No sé si mi código es correcto o incorrecto. Voy a publicar mi código aquí. ¿Alguien puede ayudarme por favor?

#include <plib.h>
#include <p32xxxx.h>
/* Standard includes. */
#include <stdio.h>

#include "../hdr/Hardware_config.h"
#include "../hdr/commands.h"

#define BLT_BUF_SIZE  512

int BLT();
int i,j;
int ptr = 0;

byte BLT_BUF[BLT_BUF_SIZE];
int BLT_ptr;
char rchar;

void Serial_init()
{
  UARTConfigure(UART2, UART_ENABLE_PINS_TX_RX_ONLY);
  UARTSetLineControl(UART2, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
  UARTSetDataRate(UART2, GetPeripheralClock(), 9600);//57600);//);//57600);
  UARTEnable(UART2, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));

  SetPriorityIntU2(UART_INT_PR1);
  EnableIntU2RX;

  INTEnableSystemMultiVectoredInt();
}

void __ISR(_UART_2_VECTOR, ipl2) IntUart2Handler(void)
{
  IFS1bits.U2RXIF = 0;
  while( DataRdyUART2())
  {
    BLT_BUF[ptr++] =  ReadUART2();
  }

  // We don't care about TX interrupt
  if ( INTGetFlag(INT_SOURCE_UART_TX(UART2)) )
  {
    INTClearFlag(INT_SOURCE_UART_TX(UART2));
  }
}

void main()
{
  SYSTEMConfig(GetSystemClock(), SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
  SYSTEMConfigPerformance(GetSystemClock());
  DDPCONbits.JTAGEN=0;

  Serial_init();

  while(1)
  {
    BLT();
  }

}

int BLT()
{
  RESET:

  memset(BLT_BUF,0,sizeof(BLT_BUF));  //BLT_ptr=0;
  putsUART2("AT\r\n");
  for(i=0;i<1000;i++)
    for(j=0;j<2000;j++);

  if(!strstr(BLT_BUF,"OK"))
  {
    dly_sec(2);
    goto RESET;
  }
  memset(BLT_BUF,0,sizeof(BLT_BUF));BLT_ptr=0;
  putsUART2("AT+ROLE=1\r\n");
  for(i=0;i<1000;i++)
    for(j=0;j<2000;j++);
  if(!strstr(BLT_BUF,"OK"));
}

Gracias & Saludos M.Sivakumar

    
pregunta siva

1 respuesta

1

BLT_BUF debería declararse volátil para empezar. En segundo lugar, su retraso debe ser antes de que se compruebe "OK". Usted tiene esos bucles para los que no tienen un retraso significativo (con toda probabilidad, el compilador los optimizará), entonces espera que el resultado esté allí de inmediato, cuando es probable que no lo sea.

Siempre es útil poder imprimir el contenido de un búfer (BLT_BUF), así que obtenga algún tipo de convertidor USB para su PC o examine el contenido a través de un depurador. Desea saber si recibe algo en primer lugar, ante todo. Marque esto antes de regresar y borrar el búfer.

    
respondido por el Cameron

Lea otras preguntas en las etiquetas