DS18B20 respektive 1-Wire Dallas

Martin Záruba swz@volny.cz
Úterý Duben 8 16:28:28 CEST 2008


To je dobry figl. Urcite to pomuze. Jak ale delate data i tvrdou log 1
jednim pinem procesoru? Ja to mam tak, ze jeden pin taha sbernici do 0 a
pokud je v 1 slouzi ke cteni sbernice a z druheho pinu mam pres rezistor
bazi pnp tranzistoru, emitor na Vcc a kolektor na sbernici. Tak delam tvrdou
1. Jak to ale udelat jednim pinem?

Martin Zaruba
----- Original Message ----- 
From: "Lukáš Grepl" <L.Grepl@sh.cvut.cz>
To: "HW-news" <hw-list@list.hw.cz>
Sent: Tuesday, April 08, 2008 9:43 AM
Subject: Re: DS18B20 respektive 1-Wire Dallas


> Muzete nejake reseni budice doporucit,to co je popsano v AN244, je mozna
> hezke,ale bohuzel nemam volne 3 piny MPU.

No můžu Vám doporučit jeden "hack" - taková menší prasárna, ale v praxi
výborně funguje. Po odvysílání "startbitu" při čtení (startbitem myšlena
log.0 několik us na začátku každého bitu/slotu) dát na chvíli (asi
1-2us) "tvrdou" log.1. Pokud některý z Dallasů už vysílá log.0, teče
proud do zkratu (je vhodné omezit výstupním odporem budiče, tak cca
50-100R), ale to v zásadě ničemu nevadí (je to podobné jako při buzení
kapacitní zátěže, prostě je na okamžik proud vyšší). Pokud chce ovšem
některý Dallas vysílat log.1 nebo je prostě sběrnice prázdná, tento
impuls vytáhne napětí do log.1 prakticky okamžitě, na rozdíl od
pull-upu. Dále v poslední fázi čtecího cyklu, kdy už slave sběrnici do
nuly netahá a je nutné zajistit, aby sběrnice došla rychle do log.1
(ukončení slotu), master opět dá natvrdo log.1 (posledních řekněme 20us
cyklu). Pokud master vysílá, potom samozřejmě budí sběrnici po celou
dobu bitu. Takhle se dá zvládnout středně velká sběrnici s jedním pinem
procesoru a pasivním pull-upem nekritické hodnoty. Hodnoty píšu z hlavy,
už si to úplně přesně nepamatuju.
Ale korektně udělaný budič, na který ale ty tři piny prostě z principu
potřebujete, je rozhodně lepší, než budit to přímo pinem procesoru.
Ještě můžete zkusit kompromis s využitím dvou pinů, jeden bude vstupní a
zároveň se bude používat pro buzení do log.1 a druhý bude ovládat
tranzistor (NPN nebo spíš N-MOSFET) pro tahání do log.0.

> Jeste otazku,jak resite vazbu programu v MCU na SN DS1820? Ukaldate SN
> do kodu pri prekladu nebo je ukadate do EEPROM?

Pokud mám jedno čidlo, tak si adresu přečtu pro rozlišení typu čidla,
jinak samozřejmě není adresa potřeba. U sběrnic jsou adresy při
konfiguraci nahrány do EEPROM. Teda někdy i do Flash, ale to už je
implementační detail - prostě v každém případě jsou nahrávány dynamicky,
nikoliv při překladu.

Lukáš Grepl
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list