DS B20
Moderátor: Moderátoři
-
Návštěvník
Chenzee píše:Systém se SEARCH ROM jsem nepochopil ani z datasheetu ani z té knihy takže toto je můj ověřený a funkční systém.![]()
Pro dvě čidla bych použil dva piny a je to. Dáš dva programy za sebe, přejmenuješ ho z A0 na A1 atd. a je to. Nebo pokud někdo funguje se search rom, nechť se podělí o informace.
Search ROM Command F0h
Predpokladaj, že si pripojil na 1wire štyri zariadenia. Každé je charakterizované 64bit - 8byte číslom, v tvare (CCR, B6,B5,B4,B3,B2,B1, M).
Vyhradíš si v pamäti 4 zariadenia krát 8 byte = 32byte na adresovanie jednotlivých zariadení.
Predpokladajme, že všetky sú 1820, potom M = 28h.
Adresy sú:
A1: CRC,B,B,B,B,B,(xxxx0100),M
A2: CRC,B,B,B,B,B,(xxxx0101),M
A3: CRC,B,B,B,B,B,(xxxx0001),M
A4: CRC,B,B,B,B,B,(xxxx0110),M
Algoritmus:
1/ Procesor vyšle kód F0h a inicializačný impulz 0.
2/ Všetky zariadenia na 1w vyšľú na 1w svoj najnižší bit. Keďže všetky sú 1820, tak počas prvého byte sa nič neudialo a zaujímavé je to až pri 9. bite (1.bit 2.bajtu). Pretože 1w je zavesený na +5V cez odpor 5k, nuly "prekričia" jednotky a na 1w bude nula.
3/ V druhom cykle všetky zariadenia vyšlú na 1w negovaný najnižší bit. Jednotky budú negované na nulu a na 1w bude opäť nula. Procesor sa dozvedel, že na 1w sú zariadenia ktoré majú na pozícii 9.bitu nulu aj jednotku.
4/ Procesor vyšle na 1w nulu. Tým sa zablokujú všetky zariadenia, ktoré majú na poz. 9. bitu jednotku a už nebudú odpovedať. Procesor si do bloku 4 uloží predpokladanú adresu zariadenia s najvyššou adresou)
5/ V nasledujúcom kroku vyšlú na 1w zvyšné zariadenia svoj 10. bit
A1: CRC,B,B,B,B,B,(xxxx010o),M
A4: CRC,B,B,B,B,B,(xxxx011o),M
6/ V nasledujúcom cykle negáciu 10.bitu
7/ Procesor zistil, že na poz. 10.bitu je 1 aj 0, vyšle nulu a zablokuje A4. (Procesor si do bloku 3 uloží predpokladanú adresu zariadenia)
8/ Odteraz už nebude konflikt a procesor prečíta všetkých 64 bitov. V bloku 1 bude uložená odresa prvého zariadenia.
9/ Celý proces sa zopakuje, - hľadá sa ďalšie zariadenie. F0h a inicializačný pulz 0.
10/ Procesor vyšle nulu a čaká nulu a jednotku. Dostal nulu a nulu, tak vyšle nulu - blokuje A2, A3.
11/ V ďalšom cykle dostanu opäť nulu a nulu, ale keďže vyslaním nuly by pokračoval v čítaní už známeho zariadenia. Porovnaním známeho blok1 a najbližšieho neznámeho blok3 zistí, že je tam konflikt a na 1w vyšle jednotku. Tým sa zablokuje A1 (viac neodpovedá) a ďalej sa bude čítať 64bit A4. A4 sa uloží do bloku 2.
12/ Proces sa opakuje F0h, pulz nula.
13/ Procesor pošle na 1w jednotku, zablokuje A1,A4 a vyhľadáva medzi A2 a A3
14/ Na záver musí prísť Masterreset pulz.
Môžem hovoriť do vedenia!
-
Návštěvník
Zkoušel jsem dvě čidla 18b20 a dělá to u každého. Napájím to 5V ze stab.zdroje 12V přes stabilizátor 7805.
-
Návštěvník
-
Návštěvník
- Přílohy
-
- teplomerDS_2_1.asm
- (23.29 KiB) Staženo 168 x
-
Návštěvník
- Přílohy
-
- teplomerDS_2_1.asm
- (23.6 KiB) Staženo 151 x
- Přílohy
-
- teplomerds.asm
- (23.94 KiB) Staženo 209 x
-
Návštěvník
-
Petr 5