Can't set 38400 baud @ 48Mhz


Closed Thread
Results 1 to 39 of 39

Hybrid View

  1. #1
    Join Date
    Mar 2006
    Location
    Pennsylvania, USA.
    Posts
    130

    Default Maybe?

    Thanks Darrel and Steve. No change. I did the online update yesterday for MicroCode Studio Plus, and I updated MPLAB. However after reading Darrel's reply I looked and found that it was using MPASM 3.x! I manually set it to use 5.06.4 (MPLAB is version 7.51) I found the error in the .lst file, but I don't know enough assembler to tell anything except that nowhere can I find an spbrgh register mentioned. If I am reading the datasheet correctly, when I enable the 16 bit baudrate generator I should have to set spbrgh (High byte) = 1, and spbrg (Low byte) = 56. I got these values from Steve's calculator program, which has never led me wrong! I did see on Bruce's website that PBP version 2.47 has some kind of fix for 18f devices to use spbrgh, so I think I'll give MELABS a call and inquire. I don't mind spending the money for the upgrade, I just hate waiting a week for UPS! Just as an after thought, did either of you verify that you were actually sending out serial at 38400? I can get it to compile fine using Skimask's suggestion, but the output is not 38400, even though there are no errors.
    Thanks again!

    Jerry.

  2. #2
    skimask's Avatar
    skimask Guest

    Default

    Quote Originally Posted by b1arrk5 View Post
    I can get it to compile fine using Skimask's suggestion, but the output is not 38400, even though there are no errors.
    Thanks again!

    Jerry.
    It worked for me, but maybe my crystal (10mhz using the 4xPLL) was being pulled off just far enough in the right direction to get the baud rate correct. The divider used for SERIN/SEROUT2 (1,000,000 / baud - 20) gets a bit low numerically in this case, even though the 'formula' says it's 'only' 4%+ off the mark.
    And even though PBP 2.47 says it has a couple of extra defines and fixes specifically for PIC18Fxxxx and a couple of HSER fixes, surely you can set the bits in the middle of the program instead of letting PBP do it for you at the beginning...or something along those lines. Maybe PBP sets all the bits the first you use the command, so, send out a 'dummy' command, then try setting the bits manually after that? Who knows...might work...

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

    Default

    Yes the calc is good and PicMultiCalc.. of course

    In fact i've tested with your crystal speed, my config fuses above, the DEFINEs generated by the PicMultiCalc, and add a HSEROUT ["Joyeux Noel et Bonne Année!!!",13,10] to do the test... all fine

    So, OR your device programmer don't program the config fuse properly OR your crystal is pretty bad (2.00 MHZ instead of 20.00 MHz) OR your PIC is bad or Or the supply line is messy OR everything above + bad lucks (bad capacitor or bad value around the crystal)

    I've tested with a USB to serial converter... still working.

    If you want to use the EUSART, use the PicMultiCalc EUSART then paste the setting generated in your code. It have to work as well.

    I don't know about the 18F fixes, but you could still write directly to the register instead of using DEFINEs to see if it solve some part of the problem.

    we could still compile the code and send you the .HEX file. So you will know if it's related to V2.46... or back to the keyboard Just kidding!

    Do you erase the PIC before programming it?
    Last edited by mister_e; - 4th March 2007 at 23:59.
    Steve

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

  4. #4
    Join Date
    Mar 2006
    Location
    Pennsylvania, USA.
    Posts
    130

    Wink Still typing!

    Thanks guys. I have ruled out my programmer, crystal, etc. due to the fact that I can program and run Steve's USB demo program no problem. In fact what started all of this is that I tried to add a serial port connection to his program to see if I could extract data via the serial port, and put it out the USB port. I did copy and paste from Steve's Pic Multicalc program. If I set my OSC define to 20 Mhz, and set up the programmer for HS instead of HSPLL, I can get 38400 out, and if I insert a 16f877 into the same board I can get 38400 out. It's just when I set the OSC to 48 Mhz that I get the argument out of range warning. I'm using a MELABS Labxusb board, in fact I have two of them, and I have tried both. I'm using MELABS USB serial programmer, I have the latest patches installed from their website, I tried the USB programmer Beta version as well. I even tried installing all of the software on a different PC. What is weird is that I can burn Steve's USB demo ok, and I can do the USB mouse demo no problem, or like I said, I can drop down to 20Mhz ok. I'm still not ruling out my doing something stupid............

    Keep warm in Montreal and North Dakota. It's getting colder here in Pennsylvania, but Saint Patty's day is coming!

    Many thanks again,
    Jerry.

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

    Default

    it's not too cold in here, but we had 50-60 cm of snow since thursday night, and we're suppose to have 10-20 more tomorrow or tuesday Bah, could be worst!

    You have a strange problem, i've attach a working .HEX code: USART, 38400 Bauds, 20Mhz crystal, send string loop. nothing fancy.

    Now if you dump it directly to your PIC and it's not working... it's because of the Melabs Programmer. Obviously, if it's working, it's down to V2.46... which may explain this weird warning 202... who knows?
    Attached Files Attached Files
    Steve

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

  6. #6
    Join Date
    Mar 2006
    Location
    Pennsylvania, USA.
    Posts
    130

    Default It's working!

    Steve,

    Como ca va? Tres bien! Forgive my spelling, but your hex file loaded and works perfectly! This means that I have my programmer etc. set correctly. Just two quick questions then; a) are you using PBP 2.47? b) would you please try adding this to your USB demo program and see what happens. I placed these right after the Define OSC 48 line.

    RCSTA = $90 ' Enable serial port & continuous receive
    TXSTA = $24 ' Enable transmit, BRGH = 1
    SPBRG = 56 ' 38400 Baud @ -0.16%
    SPBRGH = 1
    BAUDCON.3 = 1 ' Enable 16 bit baudrate generator

    cren var rcsta.4
    hserout ["Yes we have no bananas!",13]

    When I take these lines back out the program compiles fine. The good news is that I've almost memorized the 18f4550 datasheet this weekend! I also tried adding this;
    asm
    mov w,1
    movlw spbrgh
    mov w,56
    movlw spbrg
    endasm
    right after the _config portion of the program, but no luck. I'm don't do assembler, but I read Myke Predko's book, and can follow along.

    Thanks again, and don't shovel too much snow!

    Jerry.

  7. #7
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default

    Maybe I'm reading the PicMultiCalc wrong but...

    With BRGH = 1 (TXSTA = $24), and BRG16 = 1 (BAUDCON.3)

    Don't you need SPBRG = 312

    Attached Images Attached Images  
    DT

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

    Default

    Quote Originally Posted by b1arrk5 View Post
    Como ca va? Tres bien! Forgive my spelling,
    Ca va très bien you spelling is not that bad. Como=Comment
    but your hex file loaded and works perfectly! This means that I have my programmer etc. set correctly.
    Woooohooo!
    a) are you using PBP 2.47? b) would you please try adding this to your USB demo program and see what happens. I placed these right after the Define OSC 48 line.

    RCSTA = $90 ' Enable serial port & continuous receive
    TXSTA = $24 ' Enable transmit, BRGH = 1
    SPBRG = 56 ' 38400 Baud @ -0.16%
    SPBRGH = 1
    BAUDCON.3 = 1 ' Enable 16 bit baudrate generator

    cren var rcsta.4
    hserout ["Yes we have no bananas!",13]
    Yes i use PBP 2.47, and your lines will work no problem.

    Thanks again, and don't shovel too much snow!
    i'll try


    EDIT: i'll change the PicMultiCalc display stuff.. it's really simple and i agree, it will be easier to read.
    Steve

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

Similar Threads

  1. A Serial GLCD 128x64 Simple Project
    By Oldspring in forum Off Topic
    Replies: 0
    Last Post: - 8th March 2010, 21:58
  2. Auto Baud Rate Detection
    By mytekcontrols in forum Serial
    Replies: 10
    Last Post: - 31st October 2005, 03:17
  3. error on compiling
    By parker in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 16th June 2005, 15:31
  4. help
    By zugvogel1 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 9th February 2005, 21:42
  5. Need once your help one please
    By zugvogel1 in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 9th February 2005, 21:33

Members who have read this thread : 1

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