Nastavení konfiguračního registru u DS18B20
Moderátor: Moderátoři
-
Jackxl
Nastavení konfiguračního registru u DS18B20
-
Jackxl
-
Jackxl
-
Jackxl
TEPLOMER:
SETB DS18B20
NOP
NOP
NOP
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#4Eh
CALL VYSLANI
MOV A,#00h
CALL VYSLANI
MOV A,#00h
CALL VYSLANI
MOV A,#03Fh
CALL VYSLANI
MOV A,#0BEh
CALL VYSLANI
CALL CTENI
MOV TEPLSB,A
CALL CTENI
MOV TEPMSB,A
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#044h
CALL VYSLANI
CALL ZPO800MS
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#0BEh
CALL VYSLANI
CALL CTENI
MOV DATA1,A
CALL CTENI
MOV DATA2,A
RET
;*******************************************************************************
RESET:
CLR DS18B20
CALL ZPO480US
SETB DS18B20
CALL ZPO70US
uvolni: MOV C,DS18B20
JNC uvolni
CALL ZPO410US
RET
;*******************************************************************************
CTENI: MOV POCETBITU,#8
ct1: CLR DS18B20
NOP
NOP
NOP
NOP
NOP
NOP
SETB DS18B20
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DS18B20
RRC A
; CALL ZPO100US
CALL ZPO55US
DJNZ POCETBITU,ct1
RET
;CCh
;ConvertT 44h
;*******************************************************************************
VYSLANI:
MOV POCETBITU,#8
vys1: RRC A
JNC vyst0
vyst1: CLR DS18B20
NOP;ZPOZDENI 15US PUVODNE NEBYLO,BYLO 3
NOP
NOP
NOP
NOP
NOP
SETB DS18B20
CALL ZPO64US
; CALL ZPO45US
; CALL ZPO100US
jmp vys2
vyst0:
CLR DS18B20
; CALL ZPO100US
CALL ZPO60US
SETB DS18B20
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
vys2: DJNZ POCETBITU,vys1
RET
(to červené)
.
.
.
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#4Eh
CALL VYSLANI
MOV A,#00h
CALL VYSLANI
MOV A,#00h
CALL VYSLANI
MOV A,#03Fh
CALL VYSLANI
RESET
SKIP ROM
MOV A,#0BEh
CALL VYSLANI
CALL CTENI
MOV TEPLSB,A
CALL CTENI
MOV TEPMSB,A
.
.
.
pokud na to dobře koukám v datashitu tak by vždy měl začínat RESET puls, pak ROM příkaz a pak nějakej další příkaz
-
Jackxl
vždy se žačne RESET pulsem, pak následuje nějaký ROM příkaz (jako je třeba SKIP, READ, SEARCH) dále následuje hlavní příkaz (CONVERT TEMP, COPY SCRATCHPAD, READ SCRATCHPAD, WRITE SCRATCH.)
ve vašem případě to bude takto:
RESET
SKIP ROM
WRITE SCRATCHPAD
zapis 00h
zapis 00h
zapis 03Fh
pak tam pokračujete příkazem READ SCRATCHPAD a proto aby jste mohl pokračovat dalším příkazem je potřeba znovu vyvolat RESET, ROM příkaz a pak až samotnný příkaz. takže program by měl pokračovat:
RESET
SKIP ROM
READ SCRATCHPAD
cti a ulož do TEPLSB
cti a uloz do TEPMSB
cely to bude vypadat takto:
RESET
SKIP ROM
WRITE SCRATCHPAD
zapis 00h
zapis 00h
zapis 03Fh
RESET
SKIP ROM
READ SCRATCHPAD
cti a ulož do TEPLSB
cti a uloz do TEPMSB
jestli kecám kraviny tak mě prosim někdo opravte, ale tímto postupem s čidlem pracuji já a vždy mě to tak fungovatlo....
-
Jackxl
TEPLOMER:
SETB DS18B20
NOP
NOP
NOP
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#0BEh
CALL VYSLANI
CALL CTENI
MOV TEPLSB,A
CALL CTENI
MOV TEPMSB,A
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#4Eh
CALL VYSLANI
MOV A,#00h
CALL VYSLANI
MOV A,#00h
CALL VYSLANI
MOV A,#03Fh
CALL VYSLANI
CALL ZPO100MS
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#044h
CALL VYSLANI
CALL ZPO180MS
CALL RESET
MOV A,#0CCh
CALL VYSLANI
MOV A,#0BEh
CALL VYSLANI
CALL CTENI
MOV DATA1,A
CALL CTENI
MOV DATA2,A
RET
což by i podle Vás mělo být správně a stále to ukazuje o několik stupnů víc(při teplotě asi 23st asi o 2st).Nebo to má být ještě jinak?Přepisoval jsem to podle osnovy v následujícím uloženém souboru.Tento soubor je DOC,musíte přepsat koncovku.
- Přílohy
-
Datasheet teplotniho cidla DS18B20.txt- (276.5 KiB) Staženo 175 x
-
Návštěvník
-
Jackxl
Když to dáte dohromady v bináru máte 110101100 což představuje mocniny dvojky,kde nejnižší bit je 2na -4,což je 0,0625st.
Když to přepočtu,tak to je 1*16+1*8+0*4+1*2+0*+1*0,5+1*0,25 = 26,75st.Tak jak by mohla být chyba v přepočtu?
PS:Další čidlo,když to nebude fungovat,koupím skoro až za měsíc.
-
Návštěvník