sabato 25 agosto 2012

Invio dati bluetooth da PIC 16F628A @ 20MHZ

Questa applicazione presuppone l'utilizzo di un microprocessore dotato di porta seriale USART hardware. In particolare è stato scelto il PIC16F628A con quarzo esterno a 20MHz; i pin interessati sono il pin 7 (RX) e 8 (TX).
Il pin RX del pic andrà collegato al pin TX del modulo bluetooth e viceversa.

Lista componenti:
1 PIC 16F628A
2 condensatori da 22pF
1 Quarzo 20MHZ
1 Res. 1/4W 220Ohm
1 Led
1 Modulo bluetooth seriale (tipo linvor, RN, ecc. ecc. configurato a 2400 baud)


Il firmware è stato sviluppato in PICBASIC con l'ambiente MICROCODE STUDIO.
Lato PC è stato utilizzato il Serial Communicator dell'ambiente di sviluppo.
Il pic è configurato per lavorare con oscillatore esterno a 20MHZ con MCLR disattivato.

Per utilizzare il quarzo esterno da 20mhz occorre comunicarlo al compilatore (DEFINE OSC 20); successivamente è necessario modificare il file 16F628A.INC nella cartella PBP commentando la riga seguente __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF con il punto e virgola ';' altrimenti in fase di linking viene segnalato l'errore "Overwriting previous address contents (2007)".

@ __config _HS_OSC & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BODEN_ON & _LVP_OFF
DEFINE OSC 20
DEFINE HSER_RCSTA 90H
DEFINE HSER_TXSTA 20H     
DEFINE HSER_BAUD 2400 


A VAR BYTE
A=0

LED     VAR     PORTA.1
output Led

Main
    high Led
    pause 500
    LOW Led
    pause 500
   
    HSEROUT ["Value ", DEC A, 13, 10]
    A = A + 1
     
    GOTO Main




Di seguito il circuito sperimentale funzionante e alimentato direttamente dal programmatore PICKIT3 via ICSP.


Il programma Serial Communicator connesso alla porta COM3 virtuale creata dall'accoppiamento bluetooth tra PC e scheda (LINVOR) in ricezione dei dati inviati dal PIC.
Il collegamento nel Serial Communicator è effettuato a 2400baud, 8 bit di dati, no parity, 1 stop bit.
Questa deve essere la stessa configurazione della porta COM3 (lato PC).


Per la trasmissione a 115200baud occorre impostare il modulo BT con il comando AT+BAUD8
e nel programma PICBASIC indicare:

...
DEFINE HSER_SPBRG 10              ; 115200 @ 20 Mhz
DEFINE HSER_RCSTA 90h             ; Hser receive status init
DEFINE HSER_TXSTA 24h             ; Hser transmit status init
DEFINE HSER_CLROERR 1             ; Hser clear overflow automatically
...


Per altre velocità di connessione in modalità asincrona (vedi valore indicato in HSER_SPBRG) fare riferimento alle tabelle del datasheet 16F628A a pagina 76.
Firmware: 16f628_hserout2400.hex , 16f628_hserout115200.hex

Nessun commento:

Posta un commento