serin/hserin fail when i break the standard...


Closed Thread
Results 1 to 18 of 18

Hybrid View

  1. #1

    Default serin/hserin fail when i break the standard...

    I'm trying to connect a 18f2550 to a serial modem (aka phone) problem being the voltage of its serial data is 3v not 5v..

    now the device is 5v tolerant and I can send data to it, a simple ATDT123 causes a dialling to occur, problem is I cant receive the ''ok'' that says its acknowledged the dial string.

    the 3v data is good enough to brightly illuminate an led (with series resistor!) so i have a good bit of juice, but like i say i cat 'see' it with the serial commands.

    any idea if one port would be better than another or some software trick, or am i really going to have to build a level shifter into this and increase the old component count?

  2. #2
    Join Date
    Feb 2003
    Posts
    432


    Did you find this post helpful? Yes | No

    Default

    have you got an external pullup on your receive pin on the pic. ?

    If the device is 5v tollerant it shouldnt be unhappy with that but maybe it cant take the PIC pin high enough without some help. It shouldnt have any problem dragging it down to ground.
    Keith

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

  3. #3
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    If you have a Hardware COMPARATOR on the PIC, put your 3v SERIAL into one pin, set a low voltage Reference - say around 1v-2v (using the conveniently provided Voltage Reference Module of the PIC), and cross-connect the Hardware OUTPUT of the Comparator to either your USART input on the PIC or your chosen PIC pin for ASYNC Comms.

    Hey presto... you have your very own personal Voltage Convertor... and other than the software initialisation at the start of your program, no further software is required - so won't affect any critical timekeeping or interrupts or anything.

    What's even better, you can INVERT the Comparators output simply in SOFTWARE by setting the appropriate Register Bit... so you also have your own programmable HARDWARE INVERTOR... throw your MAX232 in the bin - your PIC (if it has Comparators) has one BUILT IN!!!!

    And if anyone is still using MAX232's for INPUT to a PIC... why??? The chances are if your PIC has a USART (like the 16F628), then it's probably got COMPARATORS too... so use them!

    Remember... your COMPARATOR's OUTPUT will swing 0v-Vdd (ie 0-5v on a 5v PIC) as long as the INPUT to the comparator reaches or exceeds the REFERENCE VOLTAGE. So if you have SERIAL Comms at say 15mV out of a Radio Receiver... feed it STRAIGHT into your Comparator, set the Reference to 10mV and suddenly you've got an amplified 0-5v SERIAL appearing on the Comparators Hardware OUTPUT pin.

    C'mon... if you've got a COMPARATOR you can rule the world!!!....
    Last edited by Melanie; - 25th March 2010 at 13:12.

  4. #4
    Join Date
    Aug 2008
    Posts
    66


    Did you find this post helpful? Yes | No

    Default

    Melanie, I thought RS232 required negative voltage eg -12V? All this while I thought MAX232 is needed to generate +12V and -12V for the signalling.

  5. #5
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    You can connect a PIC directly to RS232 (usually though a Resistor). The problem is YES it is inverted. For all intents and purposes a HIGH (say +12v) is ZERO, and a low (-12v) is a ONE. You can extend this by simply saying, that if it isn't a HIGH, then it's got to be a LOW. So again, if the signal is above 5v (ie it has swung to +12) the PIC will tollerate that (our Resistor helps) and Register a PIC LOGIC 1 (RS232=Zero), and if the swing goes to -12v, again our PIC doesn't care once it falls below 0v, because it registers a Logic 0 (RS232=1). So here +12/-12v is fine, just a Resistor and you're good to go.

    If you use SOFTWARE ASYNC like SERIN, you do it simply by specifying that it is inverted and SERIN does the rest.

    But if you use the HARDWARE USART, and HSERIN, there is no automatic way of inverting, so you need something like a MAX232 (or transistor or whatever) to HARDWARE INVERT the signal before you feed it into the PICs USART.

    In this thread a 0v to +3v swing doesn't do it for the PIC running at 5v. 3v may or may not be sufficient to score a Logic 1 in the PIC. It's unreliable, and it looks like f-lez has a problem. But here is where the Comparator scores on TWO COUNTS. (1) it can RESTORE your 0-5v signal (from an input as little as only a few millivolts), and (2) it has the ability to INVERT the output for you (real convenient when you need to INVERT a signal for the USART).

    The COMPARATOR won't give you +12/-12v for OUTPUT purposes, but it will take whatever cr*p you want to throw at it and give you clean Data with a nice solid 0-Vdd swing for the PIC to logically process thereafter. So treat the COMPARATOR as a LOGIC LEVEL SHIFTER, a DATA RESTORER, an INVERTOR, an AMPLIFYER, a NOISE FILTER... what more could you ask for? And you got it FREE all BUILT-IN to your PIC!
    Last edited by Melanie; - 25th March 2010 at 13:52.

  6. #6
    Join Date
    Feb 2006
    Location
    Gilroy, CA
    Posts
    1,530


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    But if you use the HARDWARE USART, and HSERIN, there is no automatic way of inverting, so you need something like a MAX232 (or transistor or whatever) to HARDWARE INVERT the signal before you feed it into the PICs USART.
    Except for the PIC18 chips by using RXDTP and TXCKP to invert your hardware UART.

    See

    http://www.picbasic.co.uk/forum/show...ight=inverting

    By the way Melanie, your comparator solution is very slick! Thanks, I have a 3v to 5 volt issue I think I will use it on.

    Thanks,

    Walter

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by f_lez View Post
    I'm trying to connect a 18f2550 to a serial modem (aka phone) problem being the voltage of its serial data is 3v not 5v..

    now the device is 5v tolerant and I can send data to it, a simple ATDT123 causes a dialling to occur, problem is I cant receive the ''ok'' that says its acknowledged the dial string.

    the 3v data is good enough to brightly illuminate an led (with series resistor!) so i have a good bit of juice, but like i say i cat 'see' it with the serial commands.

    any idea if one port would be better than another or some software trick, or am i really going to have to build a level shifter into this and increase the old component count?
    Are you running the PIC at 3 volts?

    Before you go to all of the hardware trouble it might be a good idea to post your code and configs.
    Dave
    Always wear safety glasses while programming.

Members who have read this thread : 0

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