Write Onewire data toa I2C memory / read ASCI


Closed Thread
Results 1 to 40 of 68

Hybrid View

  1. #1
    Join Date
    Nov 2007
    Posts
    60


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    Ok, you can't display a byte variable directly because a byte (if larger than 9) contains more than one numeric character right?
    I must to read from memory , for example :for 25,55 (grade C ) I must to read from memory ...50 53 44 53 53 , or except " , " 50 53 53 53

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Eugeniu View Post
    I must to read from memory , for example :for 25,55 (grade C ) I must to read from memory ...50 53 44 53 53 , or except " , " 50 53 53 53
    Yes, I understand, I think... A bit of a language disconnect here I think Not that your English is bad, it's not bad at all, it's far far better than my ______(insert language here)...

    Those sequences of numbers above...What are they? Is that how you have it stored? Or is that how you want to display it...
    What is 25,55? Is it 25.55? Or is it 25, then 55, and so on (I realize in Europe and other parts of the world the comma ( , ) is used in much the same way that folks in the States use the decimal point)...

  3. #3
    Join Date
    Nov 2007
    Posts
    60


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    Yes, I understand, I think... A bit of a language disconnect here I think Not that your English is bad, it's not bad at all, it's far far better than my ______(insert language here)...

    Those sequences of numbers above...What are they? Is that how you have it stored?

    They are in ACII code . I attach it .



    (I realize in Europe and other parts of the world the comma ( , ) is used in much the same way that folks in the States use the decimal point)...
    Is not impportant , is a separration sign between 25(integer) and 55(2 decimals)
    Attached Files Attached Files

  4. #4
    Join Date
    Jul 2007
    Location
    Bavaria
    Posts
    28


    Did you find this post helpful? Yes | No

    Default

    Hi Eugeniu,

    as I have already explained in my first post:
    use the DIG modifier to separate the single digits of your calculated temperature.
    Then simply add 48 to each digit and you will get the ASCII code.

    If temperature is 2555 for 25.55°C
    n0 = (temperature dig 0) + 48

    n0 is 48+5 = 53 = ASCII "5"
    ...

    Regards,

    Ingo

  5. #5
    Join Date
    Nov 2007
    Posts
    60


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by inse View Post
    Hi Eugeniu,

    as I have already explained in my first post:
    use the DIG modifier to separate the single digits of your calculated temperature.
    Then simply add 48 to each digit and you will get the ASCII code.

    If temperature is 2555 for 25.55°C
    n0 = (temperature dig 0) + 48

    n0 is 48+5 = 53 = ASCII "5"
    ...

    Regards,

    Ingo
    Dear Ingo ,

    I work by many days to do this and in my mind is a black hole. Please if you wish to help me , write a example ,

    i2cwrite I2CDAT, I2CCLK, $A0, adr,[TELL ME WHAT i MUST TO WRITE HERE ]

    I think that you now formula for temperature measurement with Onewire sensor ( one from others ) :
    " temperature = (((temperature >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c) "

    If I will write :

    LCDOUT $FE, $C0, DEC TEMPERATURE
    I'll be reading 2555

    For LCDOUT and to see a comma , I use this formula :
    lcdout "temp= " , dec temperature/2 ,"," , dec2 100- (100/16)*(count_remain)," gr.C"

    , but ....If I write in EEPROM :

    i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature]

    When I will read it with my FORMULA :

    i2cread I2CDAT , I2CCLK , $A0,J,[caracter]
    in " caracter "will can be read , time to time , a single sign / not a cipher
    Last edited by Eugeniu; - 16th October 2008 at 20:46.

  6. #6
    Join Date
    Jul 2007
    Location
    Bavaria
    Posts
    28


    Did you find this post helpful? Yes | No

    Default

    Hi Eugeniu,

    your program is a little bit hard to read without knowing Romanian (right?).

    If you want to store the temperature value in single ASCII characters, something like this might work:

    i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temperature dig 0= + 48, (temperature dig 1) + 48, (temperature dig 2) + 48, (temperature dig 3) +48]

    Add the comma where you please or add it after reading back the value.

    Correct me if I am talking bull****...

    Regards,
    Ingo

  7. #7
    Join Date
    Nov 2007
    Posts
    60


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by inse View Post
    Hi Eugeniu,

    your program is a little bit hard to read without knowing Romanian (right?).

    If you want to store the temperature value in single ASCII characters, something like this might work:

    i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temperature dig 0= + 48, (temperature dig 1) + 48, (temperature dig 2) + 48, (temperature dig 3) +48]

    Add the comma where you please or add it after reading back the value.

    Correct me if I am talking bull****...

    Regards,
    Ingo
    Uffff, not work . I see or 88888888 , or 44444444 or 77777777 .......
    I'll try to write every DIG , separate . I'll tell you tomorow if work .

    Thank you very much ! Good night !

  8. #8
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Eugeniu View Post
    LCDOUT $FE, $C0, DEC TEMPERATURE
    I'll be reading 2555
    If that's the only thing you are getting out of the temp sensor, then I'm thinking it probably meaning that your connection or your sensor probably isn't working because it's returning a value that's always max'd out for a byte variable...
    Put the sensor in some ice water and see if the reading changes...
    Get the core working first, then start adding things. You're not even sure if the sensor part is working in the first place!

    , but ....If I write in EEPROM :
    i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature]
    When I will read it with my FORMULA :
    i2cread I2CDAT , I2CCLK , $A0,J,[caracter]
    in " caracter "will can be read , time to time , a single sign / not a cipher
    Each one of these statements might only be WRITE'ing (or READ'ing) a BYTE, not a WORD. Not sure what the rest of your code says...

  9. #9
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    You wrote:

    "LCDOUT $FE, $C0, DEC TEMPERATURE
    I'll be reading 2555 "

    Now:

    ByteInteger = TEMPERATURE/100

    ByteDecimal = TEMPERATURE-(ByteInteger*100)

    LCDOUT $FE, $C0, DEC ByteInteger,",",ByteDecimal

    You will see on your display 25,55.

    You don't need to store the comma (separator) but you will store only ByteInteger and ByteDecimal in a location that can be recalled to read back the values. Than after the reading you will add the separator as above.

    Al.

Similar Threads

  1. I2C Master/Slave 16F88/16F767 working code
    By DanPBP in forum Code Examples
    Replies: 2
    Last Post: - 23rd October 2012, 22:31
  2. Cleaning up code
    By Tobias in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd December 2009, 07:14
  3. HARDWARE I2C SAMPLE CODE question
    By Michael Wakileh in forum Code Examples
    Replies: 2
    Last Post: - 16th June 2009, 21:07
  4. Need the code to write to a memory
    By Hamlet in forum General
    Replies: 0
    Last Post: - 20th August 2007, 00:22
  5. Sinus calculating !
    By Don Mario in forum mel PIC BASIC Pro
    Replies: 29
    Last Post: - 28th November 2004, 23:56

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