Pic18 and RN42 bluetooth communication problem using UART


Closed Thread
Results 1 to 10 of 10

Hybrid View

  1. #1
    Join Date
    May 2016
    Posts
    33

    Default Pic18 and RN42 bluetooth communication problem using UART

    Hello everyone,

    I have a RN42 bluetooth module in HID profile that I am trying to get it working with PIC18F24J50.

    I have a code in arduino that is working and basically moves the cursor.I want to do the same in Basic but it doesn't work.

    Code in Arduino :

    Code:
    int led = 13;
    
    void mouseAction(void);
    
    void setup() {                
      pinMode(led, OUTPUT); 
      
      digitalWrite(led, HIGH);
    
      Serial.begin(115200);
     
      delay(500);
    
      digitalWrite(led, LOW);
    }
    
    
    void loop() {
        digitalWrite(led, LOW);
        mouseAction(0,0,10,0);
    }
    
    
    void mouseAction(int button,int x, int y,int wheel)
      {
    
      Serial.write(0xFD);
      Serial.write(0x05);
      Serial.write(0x02);
      Serial.write(button)
      Serial.write(x);
      Serial.write(y);
      Serial.write(wheel);
     
      delay(20);
      }
    And this is the Basic code:

    Code:
    DEFINE LOADER_USED 1
    DEFINE HSER_RCSTA 90h
    DEFINE HSER_TXSTA 24h
    DEFINE HSER_BAUD 115200
    DEFINE HSER_SPBRG 1 ' 115200 Bauds
    DEFINE HSER_CLOERR 1
    DEFINE OSC 4
    SPBRG = 1
    RCSTA = 010000 
    TXSTA = 100100 
    
    TRISC.0 = 0
    TRISC.6 = 0
    TRISC.7 = 1
    
    LED VAR PORTC.0  
    mainloop:
        
        high LED
    
       'TXREG = $FD
       'TXREG = $05
       'TXREG = $02
       'TXREG = 0
       'TXREG = 0
       'TXREG = 10
       'TXREG = 0
        
        Hserout [$FD]
        Hserout [$05]
        Hserout [$02]
        Hserout [0]
        Hserout [0]
        Hserout [10]
        Hserout [0]
       
       Pause 1000
       
       low LED
       Pause 1000 
       Goto mainloop
    It doesn't work using 4Mhz internal oscillator and I wonder if that is problem and a 24 external oscillator will fix it or the is problem with my code?

    I am a bit new to UART using Pic18 and I would appreciate anyway help.Thanks!

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,386

    Default Re: Pic18 and RN42 bluetooth communication problem using UART

    It doesn't work using 4Mhz internal oscillator and I wonder if that is problem and a 24 external oscillator will fix it or the is problem with my code?
    @ 4mHz The baudrate error is 8.5 % .Quite likely to cause trouble , the internal osc is quite capable of 8 12 16 24 or 48 MHz operation any one of which would be better than 4 .

    Code:
    DEFINE HSER_RCSTA 90h
    DEFINE HSER_TXSTA 24h
    DEFINE HSER_BAUD 115200
    DEFINE HSER_SPBRG 1 ' 115200 Bauds
    DEFINE HSER_CLOERR 1
    DEFINE OSC 4
    SPBRG = 1   why ?  DEFINE HSER_SPBRG 1
    RCSTA = 010000 ?   even with %010000 its still wrong and conflicts with DEFINE HSER_RCSTA 90h
    TXSTA = 100100  ?  even with %100100 its  redundant 
    
    
    Warning I'm not a teacher

  3. #3
    Join Date
    May 2016
    Posts
    33

    Default Re: Pic18 and RN42 bluetooth communication problem using UART

    I changed the oscillator value but it still doesn't work.

    I think it could be because of missing line in arduino code to enter command mode!

    Code:
    Serial.print("$$$")
    Any suggestion on doing the same thing in Basic? How do I do it? using Hserout? Not sure about sending ASCII string.

    Would appreciate any help.

  4. #4
    Join Date
    May 2013
    Location
    australia
    Posts
    2,386

    Default Re: Pic18 and RN42 bluetooth communication problem using UART

    Serial.write(button)
    Serial.write(x);
    Serial.write(y);
    Serial.write(wheel);
    wheel ,x,y and button are all ints ie 16 bit signed values ie 8 bytes sent

    Hserout [0]
    Hserout [0]
    Hserout [10]
    Hserout [0]
    are all bytes ie 8 bit unsigned values ie 4 bytes sent

    I changed the oscillator value but it still doesn't work.
    post your code including the fuse config
    Warning I'm not a teacher

  5. #5
    Join Date
    May 2016
    Posts
    33

    Default Re: Pic18 and RN42 bluetooth communication problem using UART

    How should I enter ints 16 bit signed values? like following?

    Code:
        Hserout [0]
        Hserout [0]
    
        Hserout [0]
        Hserout [0]
    
        Hserout [10]
        Hserout [0]
    
        Hserout [0]
        Hserout [0]

    New Code with config:

    Code:
    DEFINE LOADER_USED 1
    DEFINE HSER_RCSTA 90h
    DEFINE HSER_TXSTA 24h
    DEFINE HSER_BAUD 115200
    DEFINE HSER_SPBRG 7 ' 115200 Bauds
    DEFINE HSER_CLOERR 1
    DEFINE OSC 16
    
    TRISC.0 = 0
    TRISC.6 = 0
    TRISC.7 = 1
    
    LED VAR PORTC.0  
    
        Hserout ["$$$"]   'command mode Serial.print("$$$");
    
    mainloop:
        
        high LED
        
        Hserout [$FD]
        Hserout [$05]
        Hserout [$02]
        Hserout [0]
        Hserout [0]
        Hserout [10]
        Hserout [0]
       
       Pause 1000
       
       low LED
       Pause 1000 
       Goto mainloop
    Thanks again for the help! I am stuck!

  6. #6
    Join Date
    May 2013
    Location
    australia
    Posts
    2,386

    Default Re: Pic18 and RN42 bluetooth communication problem using UART

    How should I enter ints 16 bit signed values? like following?
    to send 10
    in little_endian format
    Hserout [10,0]

    or big_endian format
    Hserout [0,10]

    not sure how arduinos go about it they could be big or little endian

    if your values can be negative then you need to pay close attention to your calcs pbp uses unsigned math



    New Code with config:
    there is no config there
    pbp default config for pic18f24j50 is

    Code:
    #CONFIG
      CONFIG  WDTEN = ON
      CONFIG  PLLDIV = 5
      CONFIG  STVREN = ON
      CONFIG  XINST = OFF
      CONFIG  DEBUG = OFF
      CONFIG  CPUDIV = OSC1
      CONFIG  CP0 = OFF
      CONFIG  OSC = HSPLL
      CONFIG  T1DIG = ON
      CONFIG  LPT1OSC = OFF
      CONFIG  FCMEN = OFF
      CONFIG  IESO = OFF
      CONFIG  WDTPS = 512
      CONFIG  DSWDTOSC = INTOSCREF
      CONFIG  RTCOSC = T1OSCREF
      CONFIG  DSBOREN = ON
      CONFIG  DSWDTEN = ON
      CONFIG  DSWDTPS = G2
      CONFIG  IOL1WAY = ON
      CONFIG  MSSP7B_EN = MSK7
      CONFIG  WPFP = PAGE_0
      CONFIG  WPEND = PAGE_WPFP
      CONFIG  WPCFG = OFF
      CONFIG  WPDIS = OFF
    #ENDCONFIG
    which expects an external xtal



    DEFINE OSC 16

    is just a compiler directive used for compile time timing calculations , it does nothing else

    to use the internal osc the config words need to be set appropriately
    such as
    CONFIG OSC = INTOSC

    or

    CONFIG OSC = INTOSCPLL

    and
    CONFIG PLLDIV needs to match

    along with

    CONFIG CPUDIV which need to match

    read the osc section of the data sheet
    Warning I'm not a teacher

Similar Threads

  1. usart-bluetooth problem
    By murat44 in forum mel PIC BASIC Pro
    Replies: 32
    Last Post: - 5th February 2015, 18:00
  2. Communication using a Bluetooth module
    By Balachandar in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 2nd November 2013, 08:56
  3. uart problem
    By OYMYAKON in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 25th March 2011, 11:52
  4. Bluetooth SKKCA communication failure
    By Rameesh in forum Bluetooth
    Replies: 7
    Last Post: - 23rd June 2008, 13:32
  5. Pic18 Syntax problem
    By Philip Biebach in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 19th January 2006, 06:27

Members who have read this thread : 1

You do not have permission to view the list of names.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts