Can defines be changed with port input?


Closed Thread
Results 1 to 13 of 13

Hybrid View

  1. #1
    Join Date
    Sep 2005
    Location
    Campbell, CA
    Posts
    1,107


    Did you find this post helpful? Yes | No

    Default

    You don't need to change defines to change the baud rate. In PBP, the baud rate generator gets set once, at the beginning of the program. Your program can change it any time later by writing to the SPBRG register. I switch between baud rates all the time in my programs.

    Just remember - when using the UART, your program writes the output buffer and moves on, which means that you can still be outputting a byte many instructions after the HSEROUT. You should wait at least two byte-times after any HSEROUT command before you change the baud rate.
    Charles Linquist

  2. #2
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default Like This ?

    Quote Originally Posted by Charles Linquis
    You don't need to change defines to change the baud rate. In PBP, the baud rate generator gets set once, at the beginning of the program. Your program can change it any time later by writing to the SPBRG register. I switch between baud rates all the time in my programs.

    Just remember - when using the UART, your program writes the output buffer and moves on, which means that you can still be outputting a byte many instructions after the HSEROUT. You should wait at least two byte-times after any HSEROUT command before you change the baud rate.
    Hi Charles,
    Happy Thanksgiving to you and all who share this forum!
    I am thankful to all who post here.

    So are you saying, the statement posted below:
    <h4>DEFINE HSER_SPBRG 32 ' __ _ FOR 20MHZ 129 = 2400, 32=9600,25 @ 4 for 2400, </h4> might be written as something like:<h4> IF PortB.n = 1
    THEN HSER_SPBRG = 32
    ELSE
    HSER_SPBRG = 129</h4>
    JS

    EDIT
    AHHHH SOOO
    I see, just define it to your default and change it later with SPBRG = "new setting number"
    <h3>THANKS CHARLES !</h3>
    Last edited by Archangel; - 23rd November 2006 at 22:47.

  3. #3
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    SPBRG is the USART register. so just writing to it change the baudrate.

    SPBRG=x
    SPBRG=y
    '
    '
    '
    and so on

    AND you could also skip all DEFINEs, just write to the according register... as the PICMultiCalc .

    Code:
    RCSTA = $90 ' Enable serial port & continuous receive
    TXSTA = $24 ' Enable transmit, BRGH = 1
    SPBRG = 129 ' 9600 Baud @ 0.16%
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  4. #4
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default Defining Question

    Quote Originally Posted by mister_e
    AND you could also skip all DEFINEs, just write to the according register... as the PICMultiCalc .
    Thank You mister_e,
    so many subtel little turns and twists to learn. Can you answer this?
    If I define
    Code:
    DEFINE LCD_LINES 2
    and send
    Code:
    serout PortB.4,T9600,[254,128,"9600 baud line 1~"] '128 so as not to add space
    pause 100
    serout PortB.4,T9600,[254,192,"9600 baud line 2~"] 
    pause 100
    serout PortB.4,T9600,[254,148,"9600 baud line 3~"] 
    pause 100
    serout PortB.4,T9600,[254,212,"9600 baud line 4~"]
    pause 100
    It still displays all 4 lines as if define was set to 4?
    JS

  5. #5
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default



    The LCDOUT defines don't alter the SERIN/SEROUT... it's two different things.

    If you want to use the internal USART RCSTA/TXSTA/SPBRG you have to use HSEROUT/HSERIN AND the dedicated I/O.

    If you want to use your favourite I/O and don't want to mess your time in calcs, use SEROUT/SEROUT2. these allow to change the baudrate on the fly without too much effort, fat free and allow to use almost every PIC i/o.

    And if you want to configure your Serial LCD... i don't know how as you never said wich one you're using

    But for sure LCD_LINES is not the solution.
    Last edited by mister_e; - 24th November 2006 at 03:47.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  6. #6
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Smile LCDOUT, not serout, herserout

    Quote Originally Posted by mister_e


    The LCDOUT defines don't alter the SERIN/SEROUT... it's two different things.
    Yes , that I knew already
    Quote Originally Posted by mister_e
    If you want to use the internal USART RCSTA/TXSTA/SPBRG you have to use HSEROUT/HSERIN AND the dedicated I/O.
    This I am already doing and now understand how to shift baud rates . . easy
    Quote Originally Posted by mister_e
    If you want to use your favourite I/O and don't want to mess your time in calcs, use SEROUT/SEROUT2. these allow to change the baudrate on the fly without too much effort, fat free and allow to use almost every PIC i/o.
    No need, serial backpack works great, tweaking to add features.
    Quote Originally Posted by mister_e
    And if you want to configure your Serial LCD... i don't know how as you never said which one you're using

    But for sure LCD_LINES is not the solution.
    My real question was, or is : in the <h4>LCDOUT DEFINES</h4> if LCD_LINES 2 has no apparant effect to limit the LCD from displaying more, why is it even used?

  7. #7
    Join Date
    Feb 2003
    Posts
    432


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Joe S.
    <h4>LCDOUT DEFINES</h4> if LCD_LINES 2 has no apparant effect to limit the LCD from displaying more, why is it even used?
    In the example code you gave you are sending to a Serial LCD display using SEROUT

    LCDOUT DEFINES are exactly what the name suggests...definitions for the LCDOUT command which you are not using!!!

    Likewise HSER_ defines are for HSEROUT and will have no effect on any SEROUT commands.
    Keith

    www.diyha.co.uk
    www.kat5.tv

Similar Threads

  1. Matrix Keypad routine
    By mister_e in forum Code Examples
    Replies: 134
    Last Post: - 18th September 2022, 20:30
  2. Input and Output on same Port
    By Frozen001 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 13th November 2008, 18:46
  3. Accessing Portion of Input Port
    By Frozen001 in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 24th October 2008, 16:33
  4. Microcontroller with 2 way paging application problem
    By oneohthree in forum mel PIC BASIC Pro
    Replies: 30
    Last Post: - 20th April 2007, 17:27
  5. Timing input pulses and re-outputting them
    By jamie_s in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 28th February 2007, 01:50

Members who have read this thread : 0

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

Posting Permissions

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