Hello boys,
I need a little alignment about serial communication via HC-5 bluetooth modules. I try to send via bluetooth 8bit ADC value from one MCU to another MCU and this value feed to MCP41010 digital pot.
I succesfully setuped and paired the bluetooth modules but I have trouble with receiving data. If I feed the data on receiver side to serial monitor on PC I saw changing correct values from 0 to 255 as I changing the pot value on transmitter side.
But in "datain" variable (on LCD) I dont have a correct value like 0 to 255. Value from 0 to 9 is correct but next is "random" numbers.
What is the right way to receive these value to datain variable?
Thanks.
The codes for
receiver:
transmitter:Code:; device PIC 16F688 #CONFIG cfg = _INTRC_OSC_NOCLKOUT cfg&= _WDT_ON cfg&= _PWRTE_OFF cfg&= _MCLRE_OFF cfg&= _CP_OFF cfg&= _CPD_OFF cfg&= _BOD_ON cfg&= _IESO_ON cfg&= _FCMEN_ON __CONFIG cfg #ENDCONFIG DEFINE OSC 8 ; Use a 8 MHZ internal clock OSCCON = %01110000 DEFINE HSER_RCSTA 90h ; Enable serial port & continuous receive DEFINE HSER_TXSTA 24h ; Enable transmit, BRGH = 1 DEFINE HSER_BAUD 9600 ; 9600 Baud DEFINE HSER_CLROERR 1 ; Clear overflow automatically Define LCD_DREG PORTC Define LCD_DBIT 0 Define LCD_RSREG PORTA define LCD_RSBIT 4 define LCD_EREG PORTA define LCD_EBIT 5 define LCD_BITS 4 define LCD_LINES 2 define LCD_COMMANDUS 2000 define LCD_DATAUS 50 ANSEL = 0 ; Set all digital CMCON0 = 7 TRISA = %000000 ; Set all output TRISC = %000001 ; Set RC.5 input SCK var PORTA.0 ; Alias PORTA.0 to SCK (serial data clock) SDO var PORTA.1 ; Alias PORTA.1to SDO (serial data out) CS var PORTA.2 ; Alias PORTA.2 to C_EN (chip enable) datain var byte PAUSE 500 : LCDOUT $FE,1 : PAUSE 250 ; Initialize LCD HIGH CS ;Chip enable high to start MCP41010 digital pot high sck ; Mode 1,1 SCK idles high pause 10 Pot0 con %00010001 ; digital pot command setting Main: LCDOUT $FE,1 HSerin 500,main,[dec datain] ; read from bluetooth. Value between 0 - 255 pause 30 lcdout $FE,$80,dec datain ; lcd out only for information pause 30 low CS ; Make digital pot chip active pause 1 shiftout sdo,sck,5,[pot0,datain] ; Mode 1,1 / Mode 5 - clock idles high, datain value shift out high CS pause 1 goto main
Code:; device PIC 16F688 #CONFIG cfg = _INTRC_OSC_NOCLKOUT cfg&= _WDT_ON cfg&= _PWRTE_OFF cfg&= _MCLRE_OFF cfg&= _CP_OFF cfg&= _CPD_OFF cfg&= _BOD_ON cfg&= _IESO_ON cfg&= _FCMEN_ON __CONFIG cfg #ENDCONFIG DEFINE OSC 8 ; Use a 8 MHZ internal clock OSCCON = %01110000 Define ADC_BITS 8 ; Set number of bits in result Define ADC_CLOCK 3 ; Set clock source (3=rc) Define ADC_SAMPLEUS 50 ; Set sampling time in uS DEFINE HSER_RCSTA 90h ; Enable serial port & continuous receive DEFINE HSER_TXSTA 24h ; Enable transmit, BRGH = 1 DEFINE HSER_BAUD 9600 ; 9600 Baud DEFINE HSER_CLROERR 1 ; Clear overflow automatically adval var byte ANSEL = %10000000 ; Set AN7 analog input, rest digital CMCON0 = 7 TRISA = %000000 ; Set all output TRISC = %001000 ; Set RC4 output TX pin let adval = 0 main: ADCIN 7, adval pause 20 hserout [dec adval,10] ; hserout adval to bluetooth HC-05 pause 20 GOTO Main




Bookmarks