Re: 1-wire "správně"

Pavel Hudeček edizon na seznam.cz
Středa Leden 10 23:44:54 CET 2024


Já bych teda řek, že když dám DS2482 pár cm od procesoru, tak nemusím 
řešit žádné EMC složitosti s dlouhým vedením.

Samozřejmě je nejlepší použít HW I2C, které má hezky zakulacené hrany 
atd. Ale když to náhodou nejde a nevede nikam daleko, tak to taky 
nevadí. I2C, stejně jako SPI ,má velkou výhodu, že clocky dělá master a 
pokud není maximální rychlost, můžou být i hodně nepravidelné. Takže se 
dá pohodlně obsluhovat i softwarově a to aniž by se přitom zakazovalo 
přerušení či dělaly jiné složitosti.
Párkrát jsem mezi hranama SCL čekal voláním cekej(0); což znamená, že se 
projede pár ifů, jestli je potřeba přepočítat data od ADC, vyhodnotit 
příkaz v bufferu od sériáku, vyhodnotit stisklá tlačítka, řídí se 
nabíjení a podobně, takže to trvá většinou desítky, ale někdy taky 
stovky µs. (cekej(10) počká 10 ms a při tom dokola dělá uvedené věci) A 
uvažuju, že bych příště zkusil SW I2C udělané naopak, tedy že bude 
jednou z těch věcí běžících v cekej:-)

Jinak je zajímavý, že když jsem zatoužil po vlastní implementaci 1wire, 
tak mi připadalo, že jsou tam relativně vysoký frekvence a říkal jsem 
si, že by to byl vopruz aby tak často chodilo přerušení od timeru a 
vykašlal jsem se na to.
No a teď když jsem viděl ten AN o použití sériáku a pak se podíval do 
dalších specifikací, ukázalo se, že perioda je min 65 µs, tedy 15,38 
kHz, což je celkem v pohodě a je vlastně jedno, zda na to použiju timer, 
sériák, I2C, nebo SPI. Navíc všechny pulzy zas zahajuje master, takže to 
může bejt libovolně pomalejší. A to zase znamená, že by to mohl 
realizovat třeba timer co používám na základní kHz přerušení. A v 
bláznivějším případě by to moh řešit třeba stavovej automat v přerušení 
od ADC.

No možná ty 1wire teploměry taky začnu používat:-)

PH

Dne 10.01.2024 v 13:59 Jan Waclawek napsal(a):
> [preposielam]
>
> Dobry den,
>
> ja by som sa skusil pozriet na tuto problematiku z trochu ineho 
> pohladu. Ked som pri navrhu mojho teplomera nad 1_Wire trochu 
> rozmyslal, tak som dospel ku nasledovnym problemom a otazkam.
>
> Prvy taky okruh otazok, ktory Vam cosi napovie ku realizacii 1_Wire 
> radica v mikroprocesorovom systeme je otazka obsluzneho softwaru. Tuna 
> treba zvazit to, ci uz mate vo firmware napisanu korektne zbernicu 
> I2C, teda hlavne impulzne rusenie, pri dlhsich zberniciach. Pokial je 
> odpoved ano, tak radic DS2482 moze byt dobrym riesenim. Ulahci 
> vykonavanie jednotlivych taskov a prikazov, ktore po zbernici 1_Wire 
> bezia. Pokial to I2C nemate vo firmware, tak si obsluhu musite 
> naprogramovat sam. Tu vyvstane hlavne otazka kolizie medzi systemovym 
> periodickym interruptom a citanim a zapisovanim na 1_Wire zbernici. Da 
> sa to rozne obist, napr. spomenutym UARTom, ci pouzitim casovaca, 
> ktory vie na i/o-pine "input capture" a "output compare", ako to mam 
> navrhnute v teplomeri ja. Alebo pocas operacii na 1_Wire zablokujete 
> systemovy periodicky interrupt. Aj tuna uz treba riesit trochu 
> hardware mikroprocesoru, teda vybrat vhodne periferie.
>
> Druhy okruh otazok sa tyka pouziteho hardwaru. Kedze pri mcu aj pri 
> radici DS2482 mate vzdy jeden i/o-pin, ktory musite riesit. Tu je to 
> trochu komplikovanejsie ale, ako odbastlili ludia v konfere vratane 
> mna, tak bez nejakej teorie sa nezaobidete.
>
> Prva otazka pri hardwarovej realizacii 1_Wire zbernice je 
> prisposobenie vstupnej a vystupnej impedancie digitalnych driverov 
> i/o-pinu v mcu a to iste so vstupom DQ 1_Wire cidla. Prisposobenie je 
> potrebne realizovat medzi generatorom - io-pin, vedenim - pouzity 
> kabel, a zatazou - 1_Wire cidlom. Tuna je asi najvacsi problem 
> impedancia kabla. Podla toho, kedy ste skoncili skolu, tak to je bud 
> 90, 100 alebo 120 Ohmov. Podla toho treba odbastlit ostatnu bizuteriu.
>
> Druha otazka je hardwarova ochrana i/o-pinu v mcu a pinu DQ pred 
> roznymi zakmitmi a impulznym rusenim, ktore sa naidukuje do systemu 
> budic-vedenie-prijimac. To su take tie rozne ESD, bursty a 
> surge.Chranit musite ako i/o pin mikrokontrolera alebo i/o-pin radica 
> DS2482, tak aj jednotlive i/o-piny DQ 1_Wire cidiel. Tuna skoncite pri 
> vseobecnej viacstupnovej impulzovej ochrane, ktoru tu v roznych 
> variaciach spominali viaceri diskutujuci. V podstate mate dve ochrany. 
> Jeden typ ochrany mate na mcu, druhy typ ochrany na 1_Wire cidle. V 
> podstate je to dosticka alebo fragment na plosnom spoji, kde mate SMD 
> odpor, diody v SOT-23, SMD odpor, SMD zenerku a SMD kapacitu na 
> napajani. Hodnoty a typy suciastok si musite odbastlit. Niekedy sa 
> este v datasheetoch uvadza aj RC v napajani cidla, je to hlavne teda 
> pri teplotnych cidlach PWM, ale ja si myslim, ze to nemoze byt na 
> skodu. Je to len 1 odpor navyse.
>
> Tretia otazka je ako to navrhnut cele na plosaku. Tuna by som 
> doporucil videa od p.Feranca. Su jasne a zretelne a vysvetlujuci 
> p.profesor si dal naozaj zalezat aj na praktickych ukazkach. Takze 
> odporucam si ich pozriet. Su na mcu.cz.
>
> Andrej
>
> > Zdravím,
>
> > příspěvek pana Hudečka o tom, že nemá rád 1-wire neb musí zakazovat
> > přerušení a své vlastní úvahy,  nad spolehlivostí sběrnice s čidly,
> > která je přímo připojená na pin procesoru mě vedou k úvahám jak to
> > "dělat správně".
>
> > prošel jsem si na AnalogDevices obvody pro řízení 1-wire a víceméně
> > jeden z použitelných a dostupných je DS2482 převodník i2c na 1-wire.
> > Porozhlédl jsem se po netu a skoro to tak vypadá, že ho nikdo nepoužívá,
> > minimálně Arduino komunita ho skoro nezmiňuje.
>
> > nejběžnější knihovna pro obsluhu 1-wire: PaulStoffregen/OneWire ho
> > nijak nezmiňuje a pokud jsem něco nepřehlídl tak s ním nepočítá,  Dále
> > jsem našel několik starších kníhoven (nevím jestli už nejsou opuštěné)
> > které by měly suplovat OneWire s komunikací přes i2c - například
> > cybergibbons/DS2482_OneWire. Jestli jsem to správně pochopil, tak by
> > měla fungovat i DallasTemperature, kterou masivně používám ve svých
> > projektech.
>
> > Jak to děláte vy?
>
> > Pokud máte rozsáhlejší topologii 1-wire, používáte nějaké budiče, nebo
> > to jedete "na surovo" jen z pinu CPU?


Další informace o konferenci Hw-list