Sida 1 av 1

1-wire tutorial

Postat: 6 september 2007, 17:13:06
av barbarossa
Hej

Jag har en Hygroclip S, RH/temp sensor från rotronic, som jag vill prata med via antingen PIC eller National Instruments prylar. Sensorn går som master med ett 1-wire protokoll. Jag har aldrig jobbat med 1-wire innan så jag undrar om någon har tips på tutorial eller kan berätta i korta drag hur man kommunicerar med 1-wire.

Manual till Hygroclip S:
http://www.rotronic-usa.com/man/hyclip/hyclip-dio.pdf

/Andreas

Postat: 6 september 2007, 17:43:12
av sodjan
Kolla hos www.maxim-ic.com.
Låter lite ovanligt att *sensorn* är master...

Postat: 6 september 2007, 17:54:23
av barbarossa
Jag har kollat kort på dallas och rotronic använder inte samma protokoll.

Var ~0.66 sekund skickar sensorn en låg puls som initierar kommunikationen. Därefter kommer ett pulståg där varje bit är 400-540 µs lång. Varje bit börjar på låg och en 0:a går hög efter 240-325µs. En 1:a går hög efter 80-115µs.

Postat: 6 september 2007, 17:56:48
av barbarossa
Om jag fattat Dallas protokoll rätt så initierar mastern alla enskilda bitar

Postat: 10 september 2007, 00:00:13
av PHermansson
Ser inga likheter i Dallas 1-wire och det Hygroclip kör med förutom namnet vid en snabb titt. I Dallas/Maxim-protokollet är det mastern som initierar all kommunikation (inte alla enskilda bitar), Hygroclip å sin sida skickar data självmant med jämna mellanrum.
Om du ändå vill lära dig mer om Dallas 1-wire finns allt i Maxims databladssamling, finns ett antal datablad som tar upp allt från protokollet till kabelval och nätuppbyggnad.

Postat: 10 september 2007, 07:42:10
av barbarossa
Jag är mest intresserad av rotronics i detta fallet. Jag tänkte mest höra om någon kunde hjälpa mig med en bra strategi för att samla in informationen. Ska jag köra med interrupt on change, timer eller polla var ~20µs ?

Postat: 10 september 2007, 08:03:53
av Icecap
Jag hade gjort det med att detektera varje flankbyte in i en Capture-enhet (t.ex. CCP på PIC). Då kan man medelst mjukvara ganska enkelt avgöra pulslängder och därmed bestämma om det är '1', '0' eller initiering osv.

Då PIC har svårt att detektera varje flankbyte direkt (man måste ställa om den mellan varje) hade jag vald en annan processor (Renesas) men jag har gjort precis denna funktion i en PIC utan problem så det är fullt möjligt och ganska enkelt.

Det går ju även att lägga till en extern timer och mata signalen direkt in i en synkron serieport, timern ska då triggas av negativ flank på det inkommande signalen och time-out ska vara på 177µs. När den går time-put ska den ge en klockpuls till serieportens ingång och datan till samma serieport tas från inkommande data. Då läser den en '1' vid '1'-pulsar och '0' vid '0'-pulsar.

Postat: 12 september 2007, 23:43:09
av barbarossa
Tackar, ska kolla vidare på timer.