i have attached the 2 programs one in pbp which reads temperature incorectly
the other mikroe which works no hardware changes are made really interested in the difference
thanks
jack
i have attached the 2 programs one in pbp which reads temperature incorectly
the other mikroe which works no hardware changes are made really interested in the difference
thanks
jack
Last edited by jcleaver; - 23rd July 2008 at 00:54.
Speaking strictly about PBP....
You know, just like it says in the manual, define's have to be in CAPS.
Therefore, the
define osc 20
is ignored and the timing generated by the code is generated for an oscillator of 4mhz, but apparently you are running it at 20mhz, and therefore, probably far too fast.
Did you write this code or copy/paste it? Why not use PBP's built-in OWIN/OWOUT commands?
Last edited by skimask; - 23rd July 2008 at 02:41.
maybe you should check the math.
With a change to the math the program works correctly. Running on a EasyPIC5 board.
Sorry I was sleeping that day in class, so I can't explain why PBP and MBasic work differently.
The solution simply is here ...
Why not use PBP's built-in OWIN/OWOUT commands?
MKB reads Byte by Byte and Pbp ... as you want !
just need to program a correct reading with Pbp !
Further ... TempF = TempC *9/5 + 32 ...
Remember PbP works with UNSIGNED INTEGERS ...
Alain
PS: Ski, MKB has a built-in timing adjustment,( you check an option in the project window instead of writing a DEFINE ) and The "conversion complete" polling built-in. That surprised me a bit at first time, not to see it in the source listing ...
Last edited by Acetronics2; - 23rd July 2008 at 09:01.
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
the osc is correct dont know why it did not show caps
tried going with 4 still read low
? what changes in math
TEMP = ((TEMP*9/5)+32 ) is what i am using
thanks for the inputs
have not found any samples using owin with this chip
Hi,
Did you ever try SEARCH with the 1820 Keyword ???
Surely NO !!!
I remember having posted a while ago for the DS1820 ...
Gives ... 22 Hits !
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Ok, try this:
Code:@ DEVICE pic16F877A, HS_OSC @ DEVICE pic16F877A, WDT_ON @ DEVICE pic16F877A, PWRT_ON @ DEVICE pic16F877A, BOD_ON @ DEVICE pic16F877A, MCLR_on @ DEVICE pic16F877A, LVP_OFF @ DEVICE pic16F877A, CPD_OFF @ DEVICE pic16F877A, PROTECT_OFF define osc 20 define loader_used 1 define lcd_dreg portd define lcd_dbit 4 define lcd_rsreg portd define lcd_rsbit 2 define lcd_ereg portd define lcd_ebit 3 define lcd_lines 2 define lcd_bits 4 define lcd_commandus 2000 define lcd_dataus 50 command var byte:i var byte:temp var word:dq var porta.5:dq_dir var trisa.5 adcon1=255:porta=255:portb=0:trisa=255:trisb=0:cmcon=7 Lcdout $fe,1,"Temp in degrees C" mainloop: Gosub init1820:command=$cc:Gosub write1820:command=$44 Gosub write1820:Pause 2000:Gosub init1820:command=$cc:Gosub write1820 Pause 2000:command=$be:Gosub write1820:Gosub read1820:TEMP=((TEMP*9/5)+32) Lcdout $fe,1,dec(temp>>1),".",dec(temp.0*5)," degrees C":Goto mainloop init1820: Low DQ:Pauseus 500:DQ_DIR=1:Pauseus 100 If DQ=1 Then Lcdout $fe,1,"DS1820 not present":Pause 500:Goto mainloop Pauseus 400:Return write1820: For i=0 to 7:low dq If command.0[temp] = 0 Then Pauseus 60:DQ_DIR = 1 Else @ nop DQ_DIR = 1:Pauseus 60 Endif Next i:Return read1820: For i=0 to 15:low dq @ nop dq_dir=1:temp.0[i]=1:if dq=0 then temp.0[i]=0 pauseus60:next i:return End
Tried This And Get Better Reading Only 6 Deg Low
However It Does Not Respond To Any Temperature Changes
Thanks
Bookmarks