Sida 2 av 3

Postat: 1 juli 2007, 16:33:04
av lennie
Jag ska börja använda shift tangenten mer..
Jo, att det saknas ) i slutet av raden. och givetviss så testade jag att lägga till ) i slutet av raden, och ta bort ( ifrån början av raden innan jag la ut hjälpen här.
Skulle kanske sagt det i inlägget.

Postat: 1 juli 2007, 16:33:36
av kimmi
Hi ,

Kod: Markera allt

copy paste error form forum must be  this i thnik  
Raw_temp= (j2 >> 8) or j1   
copy paste error form forum must be this i thnik
Raw_temp= (j2 >> 8) or j1

@EDIT shl not shf sorry

Kod: Markera allt

Raw_temp= (j2 << 8) or j1  

Postat: 1 juli 2007, 16:35:15
av lennie
Felet som jag får på den raden är.
Identifer '<<' was not declared
om jag sen använder () eller utan () spelar ingen roll. Får samma fel endå.

Postat: 1 juli 2007, 16:45:34
av JimmyAndersson
Kan du visa hela koden som du använder?

Postat: 1 juli 2007, 17:00:51
av lennie
Det ser ut som om allt fungerar nu.
När jag mäter ifrån sensor 1. ( sensor på labbkort) säger den att det är 25.1
När jag mäter ifrån sensor 2. ( sensor i kylskåpet ) säger den att det är 9,6C
och det kanske kan stämma.
koden som jag använder mig av är följande.
--------------------------
program DS18B20_test

dim Raw_temp as word
TempC, comma as word
i, j1, j2, minus as byte
text as char[14]

main:
'DDRC.3 =1 ' put RW on GND --> PORTC.3=0
'PORTC.3 =0 ' to work on GLCD connector

Lcd_Init(PORTD, 6, 4, PORTA, LCD_HI_NIBBLE)
Lcd_Out(1,1,"Temeperature :")
Lcd_Cmd(LCD_CURSOR_OFF)
do
ow_reset(PORTC,6) ' onewire reset signal
ow_write($CC) ' issue command to DS1820
ow_write($44) ' issue command to DS1820
delay_us(120)
i = ow_reset(PORTC,6)
ow_write($CC) ' issue command to DS1820
ow_write($BE) ' issue command to DS1820

j1 = ow_read ' get result
j2 = ow_read ' get result (assuming the temperature is positive)

minus= j2 >> 3

if minus = $1F then ' Checking temp.(+ or -)
j2= not j2
j1=-j1
end if

Raw_temp= (j2 << 8) or j1 ' Getting RAW data

if minus = $1F then
Lcd_Chr(2,1,"-") ' Write temp. sign (+ or -) on LCD
else
Lcd_Chr(2,1,"+")
end if

TempC=(Raw_temp and $0FF0) >> 4 ' WHOLE NUMBER
comma=(j1 and $0F) * 625 ' DECIMAL

WordToStr(TempC,text) ' Write temp. whole number on LCD
Lcd_Chr(2, 2, text[0])
Lcd_Chr(2, 3, text[1])
Lcd_Chr(2, 4, 46) '"."
WordToStr(comma,text) ' Write temp. decimal number on LCD
Lcd_Chr(2, 5, text[0])
Lcd_Chr(2, 6, text[1])
Lcd_Chr(2, 7, text[2])
Lcd_Chr(2, 8, text[3])
lcd_chr(2, 9, 223) ' "degree" character
lcd_chr(2, 10,"C")
Delay_ms(500)
loop until false ' endless loop
end.

--------------------------

Postat: 1 juli 2007, 17:10:38
av kimmi
hi ,
du måste andvenda (code) nær du poster code >>>> 8)

Kod: Markera allt

Raw_temp= (j2 << 8) or j1 ' Getting RAW data 
Kan du testa detta

Kod: Markera allt

Raw_temp= (j2 << 8) + j1 ' Getting RAW data 
se om det blir helt fejl nu ...

Postat: 1 juli 2007, 17:14:46
av lennie
Jag testade skriva code: innan själva koden började.
men det gjorde ingen skillnad.
men jag ska använda mig av code: i fortsättningen.

Postat: 1 juli 2007, 17:17:41
av kimmi
hi,
( sensor i kylskåpet ) säger den att det är 9,6C

Hmm No cold beer for me then ... :lol:

Postat: 1 juli 2007, 17:20:48
av lennie
Vi testar lite.

code:
------------------------------------------
Raw_temp= (j2 << 8) + j1 ' Getting RAW data
------------------------------------------

Postat: 1 juli 2007, 17:24:04
av lennie
Och ett test till.

Kod: Markera allt

Raw_temp= (j2 << 8) + j1 ' Getting RAW data
Nu funkar det.

Postat: 1 juli 2007, 17:49:41
av sodjan
Vad funkar ?
Code-taggen eller koden ?

Postat: 1 juli 2007, 18:07:57
av lennie
Både code-taggen och själva koden fungerar mycket bra.

Ny fråga.
DQ signalen, den som går till PC7 på atmega16. Använder jag ett 10k motstånd.
Enligt information ifrån manualen.
på PC6 har jag en till DS18B20 sensor. den som ligger i kylen just nu.
Den DS18B20 sensorn har en ca 3 meter lång kabel till sig ifrån labbkortet.
Vart är bäst att sätta detta 10k motståndet. och spelar det någon roll vart man sätter det.


EDIT. förtydligande.
mottståndet sitter inte mellan sensorn och ATMega, utan på VCC till kabeln mellan sensorn och ATMega16

alt 1.
<DS18B20 sensor + 10k motstånd> ---------3 meter kabel------- <Atmega16>

alt 2.
<DS18B20 sensor> ------------ 3 meter kabel -------- <10k motstånd + atmega16>

Just nu kör jag på alternativ 1.
det vill säga motståndet sitter vid DS18B20 sensorn ( i kylen) ifrån den går det en 3 meter kabel till labbkortet där ATmega16 sitter

Postat: 1 juli 2007, 19:07:55
av kimmi
Hi ,
vilken a dom code funker

Kod: Markera allt

Raw_temp= (j2 << 8) or j1 ' Getting RAW data 

ellse 

Raw_temp= (j2 << 8) + j1 ' Getting RAW data 

hint : "or" eller  "+" 

ang: 10 Kohm speller ingen rolle men jeg vill sætta den på avr om noget hender med kablet

Postat: 1 juli 2007, 22:30:47
av lennie
Denna funkar.

Kod: Markera allt

Raw_temp= (j2 << 8) or j1 ' Getting RAW data 

Postat: 1 juli 2007, 22:35:37
av kimmi
hi,
Ok :tumupp: