Serial Communication with PIC16F877A


+ Reply to Thread
Results 1 to 17 of 17
  1. #1
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question Serial Communication with PIC16F877A

    Hello again to all... I am testing pieces of code that I have put together from various sources. I am trying to get a communications link set up between my PIC16F877A and my PC. I am using the serial communicator that comes with MicroCode Studio Plus. If I understand what I'm trying to do correctly, the PIC should wait for a message from the PC. If it doesn't receive this message, it will timeout and is supposed to display "nada". However, when I don't send anything to the PIC, it returns 4 wierd looking symbols. Also, if I try to transmit something to PIC, it doesn't return anything at all. Any helpful advice would be greatly appreciated.

    Code:
    DEFINE OSC 20
    
    INCLUDE "MODEDEFS.BAS"
    DEFINE HSER_BAUD 9600   ' HSER baud rate
    DEFINE HSER_SPBRG 129   ' HSER SPBRG init
    DEFINE HSER_RCSTA 90h   ' HSER receive status init
    DEFINE HSER_TXSTA 24h   ' HSER transmit status init high speed
    'DEFINE HSER_EVEN 1      ' Use only if even parity is desired
    'DEFINE HSER_ODD 1       ' Use only if odd parity is desired
    DEFINE HSER_BITS 9      ' Use for 8 bits ''+ parity
    DEFINE HSER_CLROERR 1   ' Automatically clear HSERIN overflow errors
    
    TRISC=%10000000
    
    TimeDate VAR BYTE[6]
    
    Main:
        HSERIN 5000,TimeOut,[WAIT("A"),STR TimeDate\6]  ' A369621
        HSEROUT ["Rcvd string: ", STR TimeDate\6,13,10]    
        GOTO Main
                
    TimeOut:
        HSEROUT ["Nada",13,10]
        GOTO Main
    Port Settings:
    COM1
    9600 Baud
    No Parity
    Byte Size is 8
    1 Stop Bit
    Last edited by mcbeasleyjr; - 26th May 2009 at 22:22. Reason: forgot port settings...

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924

    Default

    Do you have a MAX232 or similar between the PIC and PC?

    If you do not have one, try SERIN2/SEROUT2 using inverted mode.
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question Yes

    Yes I have a MAX232 on the ICD I've built... it should also work as my serial communicator for this purpose as well... This is the number on the chip:

    69CT01M
    MAX232IN

    TTL to CMOS converter...

    any ideas?

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

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

    Default

    Serial data to a PC should always be 8 bits.

    DEFINE HSER_BITS 9 ; won't work
    <br>
    DT

  5. #5
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924

    Default

    Missed this the first time I looked at it.
    DEFINE HSER_BITS 9
    Scratch the above line
    Dave
    Always wear safety glasses while programming.

  6. #6
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question Modifications...

    I have scratched the line as you suggested... however, it still isn't working. If I try to transmit the example in my code, which is A369621... I don't receive anything back at all. Also, if I don't transmit anything and the USART times out, I receive this: *... any other ideas?

    Do I have to set PORTC as this:????

    TRISC=%11000000

    I'm a little confused on the correct settings to get the USART to function properly.
    Last edited by mcbeasleyjr; - 26th May 2009 at 23:25. Reason: another question....

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

  7. #7
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924

    Default

    Dave
    Always wear safety glasses while programming.

  8. #8
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question tried...

    I copy and pasted the code you provided me but had no luck with it...

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

  9. #9
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924

    Default

    Can you post your schematic and/or a picture of your setup. I think it is down to a hardware problem now.

    Caps on the 232?
    Cable is straight through?
    Usb to serial converter?
    Real serial port?
    Port on PC is known to be good?

    Hold one hand in the air while touching you big toe?

    Could be anything now.
    Dave
    Always wear safety glasses while programming.

  10. #10
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question lol...

    Quote Originally Posted by mackrackit View Post
    Can you post your schematic and/or a picture of your setup. I think it is down to a hardware problem now.

    Caps on the 232?
    Cable is straight through?
    Usb to serial converter?
    Real serial port?
    Port on PC is known to be good?

    Hold one hand in the air while touching you big toe?

    Could be anything now.
    Well... you'd have to give me a while to get a schematic drawn up. There are 4 caps on the 232. The cable is a regular serial cable, male on one end female on the other. I don't have a USB to serial converter although using that while trying to debug does work. It is a serial port on the back of my computer so I'm assuming that it is a real port. This is first time I've really tried using the serial port so as far as knowing whether its good or not I don't know, nor do I know how to check. Device manager does say that device is working properly with no problems. Lol, and not sure I want to try that one or not. Probably fall flat on my face.

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

  11. #11
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924

    Default

    Make sure the cable is not for a modem. Pin 2 on one end goes to Pin 2 on the other, the same for pin 3.

    Test PC serial port by jumping PINs 2 and 3 with a 10K and use a terminal to see if you get an echo.
    Dave
    Always wear safety glasses while programming.

  12. #12
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question reply...

    Quote Originally Posted by mackrackit View Post
    Make sure the cable is not for a modem. Pin 2 on one end goes to Pin 2 on the other, the same for pin 3.

    Test PC serial port by jumping PINs 2 and 3 with a 10K and use a terminal to see if you get an echo.
    I tested my serial port and sent 5 succesfully in the loopback... what else can i try?

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

  13. #13
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Post schematic...

    I am attaching a bitmap of my schematic for my ICD and ICP. I am using the ICD for the serial communication.
    Attached Images Attached Images  

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

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

    Default

    Quote Originally Posted by mackrackit View Post
    Make sure the cable is not for a modem. Pin 2 on one end goes to Pin 2 on the other, the same for pin 3.
    Did you test as Mackrackit suggested above? Many serial appearing cables are actually laplink cables, or nul modem cables and the Tx and Rx pins are crossed so two computers can be linked directly.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  15. #15
    Join Date
    Dec 2008
    Location
    Charlottesville, VA
    Posts
    31

    Question reply

    Quote Originally Posted by Joe S. View Post
    Did you test as Mackrackit suggested above? Many serial appearing cables are actually laplink cables, or nul modem cables and the Tx and Rx pins are crossed so two computers can be linked directly.
    Yes I tested it... I successfully sent a message through my cable and echoed it back by shorting pin 2 to pin 3.... any other ideas?

    Added:

    Is there anyway to tell if my cable is crossed as you suggest?... I know I got the echo by shorting pin 2 to pin 3 but I would still get the echo if the pins were crossed...

    Resolved:

    Thank you guys for your help. After testing my cable for continuity I realized that it is crossed. Going to get a new cable and hopefully that fixes the problem.
    Last edited by mcbeasleyjr; - 27th May 2009 at 21:51. Reason: another question...

    Morris Beasley
    Manufacturing Test Technician
    B.S. Industrial Technology (2007)

    For more information on our robotics, please visit:
    http://www.ish-electronics.webs.com

  16. #16
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924

    Default

    Just reverse the connection at the device end, swap pins 2 and 3.
    Or cut the cable...
    Dave
    Always wear safety glasses while programming.

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

    Default

    Quote Originally Posted by mackrackit View Post
    Just reverse the connection at the device end, swap pins 2 and 3.
    Or cut the cable...
    Or if you have a null modem adapter use it to swap back . . .
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

Similar Threads

  1. Wireless serial communication question
    By Ahmadabuomar in forum Serial
    Replies: 3
    Last Post: - 21st December 2009, 03:49
  2. PIC to PIC "wired" serial one-way communication - SERIN2/SEROUT2
    By flotulopex in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 14th April 2008, 20:02
  3. Bootloader,MCSP and Serial communication
    By surfer0815 in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 3rd March 2006, 10:52
  4. Serial Communication using 12F629
    By charudatt in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 14th March 2005, 04:24
  5. Replies: 8
    Last Post: - 11th November 2004, 20:08

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