Read DS18S20


Closed Thread
Results 1 to 17 of 17

Thread: Read DS18S20

Hybrid View

  1. #1
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by PICante View Post
    Very neat I thought until I discovered that the STR function is not supported for 16FXXX, too bad
    Double check your manual...and compare what it says to the datasheet for the 16F688.
    'cause it looks to me like everybody in that other thread is using a 16Fxxxx series PIC and nobody is using an 18F.

  2. #2
    Join Date
    Dec 2007
    Location
    Sweden
    Posts
    73


    Did you find this post helpful? Yes | No

    Default

    Hi skimask!

    Sorry, I’m somewhat confused here I don’t know what to believe in (of curse I believe in you!) since I also got a compilation error saying: “ERROR: Macro OWINSTR?W not found in macro file.”

    Huuh?


    Edit: Hey… it’s the other way around, it says 12-bits not supported! (found my glasses) :-) . Then (as usual) I must be doing something else wrong!
    Last edited by PICante; - 18th September 2008 at 18:46.

  3. #3
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by PICante View Post
    since I also got a compilation error saying: “ERROR: Macro OWINSTR?W not found in macro file.”
    The latest PBP update should fix that problem.
    If not, there's a thread somewhere around here relating a problem similar to that..somewhere...

    Edit: Hey… it’s the other way around, it says 14-bits not supported! (found my glasses) :-) . Then (as usual) I must be doing something else wrong!
    I don't know which manual you're reading.
    My manual says 12-bits aren't supported using the REP and STR modifiers. I'd tend to believe that due to the stack/ram constraints of 12 bit devices.

  4. #4
    Join Date
    Dec 2007
    Location
    Sweden
    Posts
    73


    Did you find this post helpful? Yes | No

    Default

    Yes, my manual also says 12-bit. edited almost instantaneously! :-)

    I have got the P250a patch installed, can’t seem to find any newer?

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by PICante View Post
    Yes, my manual also says 12-bit. edited almost instantaneously! :-)

    I have got the P250a patch installed, can’t seem to find any newer?
    There's a b patch out now.

    Show the code...

  6. #6
    Join Date
    Dec 2007
    Location
    Sweden
    Posts
    73


    Did you find this post helpful? Yes | No

    Smile

    I will try to find and run the patch to find out if that’s the culprit.

    Thanks ski

  7. #7
    Join Date
    Dec 2007
    Location
    Sweden
    Posts
    73


    Did you find this post helpful? Yes | No

    Cool

    Patch in place..... No, that did not cancel the compile error!
    Here’s the code:

    Code:
    READTEMP:
    
    OWOUT PORTA.5,1,[$CC, $44]                       ' SEND Start Temperature Conversion command
    
     
        OWOUT PORTA.5,1,[$CC, $BE]                   ' SEND Read Temperature command
    
     
        OWIN PORTA.5,0,[STR dq\9]                    ' Retrieve all 9 bytes of data
    
        RawTemp.Byte0 = dq[0]
    
        RawTemp.byte1 = dq[1]
    
        IF RawTemp.8 = 1 then                       ' Check IF temperature is a negative reading
    
     
    
            SignC = Negative
    
            RawTemp.lowbyte = RawTemp.lowbyte ^ 255               ' Invert data
    
            ELSE
    
            SignC = Positive
    
                     ENDIF
    
     
    
        dummy = RawTemp.0                                 ' Store the half degree indicator bit
    
     
    
        TempC = ((RawTemp.lowbyte) >> 1) * 100          ' Divide raw data by 2 to give real temperature
    
     
    
        TempC = TempC + (dummy * 50)                    ' Add the half degree is present
    
     
    
        IF SignC = Negative then                       ' Only proceed IF temperature is negative
    
     
    
            IF TempC => 1770 then   
    
                SignF = Negative
    
                TempF = (TempC + 5000) * 900
    
                TempF = div32 500
    
                TempF = TempF - 12200
    
                RETURN
    
     
    
                ELSE
    
                SignF = Positive
    
                TempF = (TempC + 5000) * 900
    
                TempF = div32 500
    
                TempF = 12200 - TempF
    
                RETURN
    
     
    
            ENDIF    
    
        ENDIF
    
        SignF = Positive
    
        TempF = TempC * 18 / 10 + 3200
    
        RETURN
    Thanks!

Similar Threads

  1. Can't read sequential addresses in external EEPROM
    By tjkelly in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 18th February 2010, 15:46
  2. Cleaning up code
    By Tobias in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd December 2009, 08:14
  3. Replies: 13
    Last Post: - 12th May 2009, 18:26
  4. SEROUT WORD variable problem
    By Tobias in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 19th April 2009, 12:20
  5. Q: using MCLR for Input on 12F683
    By picster in forum mel PIC BASIC Pro
    Replies: 46
    Last Post: - 31st January 2009, 16:25

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