Před vlastním popisem protokolu si připomeňme některé datové údaje obvodu DS 1821. Komunikačním pinem je výstup označený DQ. Tento výstup je softwarově nastavitelný jako bistabilní výstup nebo jako komunikační linka. Výstup je svým charakterem s otevřeným kolektorem. Pro správnou funkci komunikační linky je nutno mezi výstup DQ a napájecí napětí VDD připojit odpor o hodnotě 4,7kΩ . Princip funkce obvodu pochopíme při popisu bitového přenosu.
Popis registrů
První registr v postupu popisu je Konfigurační registr. Z hlediska funkční obsluhy
je registrem nejdůležitějším. Je složen z 8 bitů, z toho nejnižších 5 bitů je
charakteru EEPROM. Nutnost tohoto rozložení pochopíme z výkladu funkce jednotlivých
bitů. Tyto bity nesou toto označení:
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|
DONE
|
1
|
NVB
|
THF
|
THL
|
T/R
|
POL
|
1SHOT
|
Podle nastavení bitů je řízena funkce obvodu. Význam bitů a funkční nastavení
pochopíme z následující tabulky:
Označení bitu | Název bitu | Charakter bitu | Popis funkce |
---|---|---|---|
DONE
|
Ukončení konverze teploty
|
Pouze čtení
|
DONE=0 Probíhá konverze teploty DONE=1 Konverze teploty ukončena |
NVB
|
Zápis do EEPROM
|
Pouze čtení
|
NVB=0 Zápis do EEPROM ukončen NVB=1 Probíhá zápis do EEPROM |
THF
|
Návěští horní teploty
|
Čtení/Psaní
|
THF=0 Změřená teplota je nižší než nastavená v registru
TH THF=1 Změřená teplota je vyšší než nastavená v registru TH |
THL
|
Návěští dolní teploty
|
Čtení/Psaní
|
TLF=0 Změřená teplota je vyšší než nastavená v registru
TL TLF=1 Změřená teplota je nižší než nastavená v registru TL |
T/R
|
Výkonový mód
|
Čtení/Psaní
|
T/R=0 Jednovodičová komunikace T/R=1 Termostat mód |
POL
|
Polarita výstupu
|
Čtení/Psaní
|
POL=0 Výstup DQ aktivní v „0“ POL=1 Výstup DQ aktivní v „1“ |
1SHOT
|
Mód konverze
|
Čtení/Psaní
|
1SHOT=0 Opakovaná konverze teploty. Zahajuje se povelem START a ukončuje povelem STOP 1SHOT=1 Jedna konverze teploty.Zahajuje se povelem START a po konverzi přejde obvod do úsporného režimu |
Registry datových údajů jsou Teplotní registr, Registr horní
nastavené úrovně a Registr nastavené dolní úrovně.
Všechny tři registry mají stejnou strukturu. Rozložení bitů je zřejmé z
následujícího:
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|
S
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
Ještě jeden registr je dostupný a tím je čítač, který je u tohoto typu obvodu 9bitový. Jeho údaj se použije při kalkulaci teploty pro vyšší rozlišení než je 1°C.
Instrukční soubor
Projděme si instrukční soubor ovládacích povelů. Soubor je omezen na čtení a
zápis do registrů, zahájení a zastavení konverze teploty. Tedy základní
údaje potřebné pro ovládnutí všech funkcí. Význam je patrný
z tabulky:
Instrukce | Kód (HEX) | Popis |
---|---|---|
Čtení instrukce
|
AA
|
Čtení posledně provedené konverze teploty z teplotního registru DS1821 |
Start konverze
|
EE
|
Zahájení měření teploty |
Stop konverze
|
22
|
Zastavení teplotní konverze |
Zápis TH
|
01
|
Zápis dat do registru TH |
Zápis TL
|
02
|
Zápis dat do registru TL |
Čtení TH
|
A1
|
Čtení dat z registru TH |
Čtení TL
|
A2
|
Čtení dat z registru TL |
Zápis status
|
0C
|
Zápis dat do konfiguračního registru |
Čtení status
|
AC
|
Čtení dat z konfiguračního registru |
Čtení čítače
|
A0
|
Čtení dat z 9bitového registru pro kalkulaci vyššího rozlišení |
Převod dat
|
41
|
Převod dat akumulátoru do čítače |
Komunikační rozhraní
Známe již instrukční soubor a stojí před námi vysvětlení chování sériové linky pro přenos datových údajů. Jedná se opět o jednoduché principy a popíšeme si je pro procesy inicializace, čtení a zápisu dat.
Inicializace je základem komunikace a připravuje obvody před přenosem dat. Grafické zobrazení probíhajících časových návazností je dostatečně srozumitelné.
Komunikační linka INICIALIZACE
Popišme si průběhy. Řídící procesor na komunikační linku vyšle „0“ po dobu minimálně 480 µs a linku uvolní. V době 15-60 µs díky odporu 4k7 se linka nastaví na „1“. Po této čekací době odpovídá teploměr nastavením „0“ po dobu 60-240 µs. Inicializace je ukončena po době 480 µs čtením „1“ z linky.
Programově je v asembleru pro AT89C2051 možno vyjádřit v podprogramu následně:
; podprogram pro inicializaci DS1821 ; sériová linka připojená na pin P3.1 ; ničí R2 InT: push PSW clr P3.1 ; začátek inicializace mov R2,#5 ; čekací smyčka 500µs acall T01ms setb P3.1 ; uvolnění linky mov R2,#1 ; čekací smyčka 100µs acall T01ms InT: ; čekání uvolnění linky od DS mov c,P3.1 jnc InT1 pop PSW ret
Zápis do registrů DS1821 probíhá podle následujícího grafického zobrazení:
Komunikační linka ZÁPIS
Opět popis průběhů. Pokud chceme zapsat „0“ je nutno podržet linku na 0V po dobu v rozmezí 60 až 120µs. Pokud chceme zapsat „1“ je nutno po čekací době uvolnit linku do 1µs. Velmi jednoduché.
Programově je v asembleru pro AT89C2051 možno vyjádřit v podprogramu pro přenos 1bytu následně:
; podprogram pro zápis 1 byte do DS1821 ; sériová linka připojená na pin P3.1 ; ničí R2,R3 PisT: mov R3,#8 PisT3: rrc a jnc PisT1 ; zápis „1“ mov R2,#1 ; čekací smyčka 100µs clr P3.1 nop nop nop setb P3.1 acall T01ms ajmp PisT2 PisT1: ; zápis „0“ mov R2,#1 ; čekací smyčka 100µs clr P3.1 acall T01ms setb P3.1 PisT2: djnz R3,PisT3 ret
Čtení z registrů DS1821 probíhá podle následujícího grafického zobrazení:
Komunikační linka ČTENÍ
Opět popis průběhů. Čtení „0“ probíhá tak, že po 1µs uvolní řídící procesor linku a pokud DS podrží linku na úrovni 0V pak čteme do 15µs z linky „0“. „1“ čteme obdobně do 15µs po uvolnění linky procesorem. Opět velmi jednoduché.
Programově je v asembleru pro AT89C2051 možno vyjádřit v podprogramu pro čtení 1bytu následně:
; podprogram pro zápis 1byte do DS1821 ; sériová linka připojená na pin P3.1 ; ničí A,R2,R3,R5 CtiT: mov R5,#8 CtiT1: clr P3.1 nop nop nop setb P3.1 mov R3,#4 ; čekací smyčka 15µs CtiT2: djnz R3,CtiT2 mov c,P3.1 rrc a mov R2,#1 acall T01ms djnz R5,CtiT1 ret
Funkce DS1821
Máme již pohromadě všechny údaje nutné pro náš návrh požadované funkce. Připomeňme si, že obvod může pracovat v módu teploměru s datovým přenosem nebo jako regulátor. Na začátku potřebujeme inicializovat registry pro požadovanou funkci. Začneme tedy zápisem údajů.
Zápis dat jsme již probrali. Postup zápisu do konkrétního registru probíhá podle následujícího algoritmu. Provedeme inicializaci a zapíšeme data do požadovaného registru. Například start konverze dat můžeme zrealizovat následně:
; podprogram pro zahájení konverze teploty ; sériová linka připojená na pin P3.1 ; volá podprogramy pro inicializaci a zápis dat ; ničí A Tepl: mov a,#238 acall InT acall PisT
Čtení dat z teplotního registru provedeme tak, že obvod inicializujeme, dále zapíšeme povel pro čtení dat a data přečteme. Algoritmus můžeme zrealizovat následně:
; podprogram pro čtení teploty ; sériová linka připojená na pin P3.1 ; volá podprogramy pro inicializaci, zápis a čtení dat ; údaj o teplotě v A Tepl: mov a,#170 acall InT acall PisT acall CtiT
Ještě si popišme přechod z módu komunikační linky do módu termostatu. Provádí se při nastavení úrovně napájecího napětí na výstupu DQ a následně přivedení napětí na 0V na VDD . Po tomto nastavení se na výstup DQ přivede 16 stejných impulsů. Při přivedení napájení na pin VDD je ukončen přechod mezi oběma módy v obou směrech.
Závěr
Popsali jsme jeden z nejednodušších obvodů z rodiny teploměrů od společnosti DALLAS.
Komunikační protokoly jsou v rodině podobné a rozdíly jsou zejména v typu komunikace v
linkovém uspořádání. Shodné jsou přístupy na registry a
řídící povely. Je možno říci, že pochopení funkce DS1821 je vstupem pro
zvládnutí celé rodiny. A ne jen to, setkal jsem se s obdobnou aplikací v komunikaci mezi
vzájemně nekompatibilními procesorovými systémy. Kreativitě se přece meze nekladou.
zavi@ atlas.cz
DOWNLOAD & Odkazy
- Mikroprocesory 8051, Doc. Ing. Petr Skalický, BEN technická literatura, 2000
- Katalogové a aplikační listy - http://www.dalsemi.com
- Domovská stránka dodavatele HT Eurep - http://www.HTE.cz
Komentáře
Teplomer DS1821
Nabizim stavebnici digitalniho teplomeru s DS1821 rizeneho procesorem Atmel s 3-mistnym displejem LED. Rozsah teplot dany rozsahem DS. Provedeni SMD. Popis zaslu na email. Dotazy na radekhlub@wo.cz