Forum: Mikrocontroller und Digitale Elektronik 1-wire


von Christoph (Gast)


Lesenswert?

Hi

Hätte da eine frage (bin anfänger) ich hab mir das datenblatt vom
pic18f452 angeschaut und da steht was von i2c usw. aber ich möchte
disen pic mit 1-wire betreiben geht das?

von Peter Dannegger (Gast)


Lesenswert?

"aber ich möchte disen pic mit 1-wire betreiben geht das?"


Slave oder Master ?

1-Wire Master geht gut in Software bzw. mit der UART.

1-Wire Slave geht nicht bzw. nur mit Bit-HW-I2C, wie es z.B. die
ATTiny26 oder ATTiny2313 von Atmel haben.

Man braucht dazu nämlich das Clock-Stretching nach jedem Bit, welches
als 0 gesendet werden soll.

Der Master sendet einen 1µs Low-Puls und der Slave muß diesen auf etwas
30µs (15..60µs) strecken ohne dazwischen auf High zu gehen.


Peter

von Philipp Sªsse (Gast)


Lesenswert?

Wenn der Controller schnell genug ist, erkenne ich nicht, warum das
[Software-Slave] nicht gehen soll. Ich kenne den PIC nicht, aber der
wird sich ja wohl so takten lassen, daß er das packt: maximale
Interruptverzögerung plus Umschalten des Pins auf Ausgang innerhalb
einer µs.

Zumal in der Praxis kein Master sofort nach dem release prüft, weil da
in der Regel reichlich Kapazitäten auf der Leitung hängen, die der
Pullup gar nicht so schnell laden kann. Deshalb wird ja m.W. auch
empfohlen, am Ende des Bereichs zu lesen.


Für Christoph noch der Hinweis: praktisch niemand außer Dallas/Maxim
unterstützt den 1-wire-Bus in Hardware. Er ist aber so konzipiert, daß
er sich als Master mit wenig Aufwand realisieren läßt.

von Peter Dannegger (Gast)


Lesenswert?

@Philipp,

"Wenn der Controller schnell genug ist, erkenne ich nicht, warum das
[Software-Slave] nicht gehen soll."


ich meinte das aus rein praktischen Erwägungen, d.h. ein Slave soll ja
in der Regel auch noch was anderes machen, als ständig nur auf 1-Wire
zu warten.

Mit dem HW-Bit-I2C des ATTiny2313 hat man dann die volle Bitzeit zur
Verfügung, d.h. 20MHz * 60µs = 1200 Zyklen.

Da können also bequem noch andere Interruptquellen (UART, Timer usw.)
aktiv sein ohne daß es zu Problemen kommt

Und man kann das Ganze in C programmieren.


Wichtig ist nur, daß es ein Bit-I2C ist, d.h. daß man für jede
1-0-Flanke im Voraus bestimmen kann, ob sie gestreckt (= Senden 0) oder
nicht gestreckt (= Senden 1 oder Empfang) werden soll.

Ein ATmega128 ist also nicht dafür geeignet.


Peter

von Christoph (Gast)


Lesenswert?

sry keine ahnung ob master oder slave ich möchte einfach
temperatursensoren abfragen deswegen schätze ich als master?

von Philipp Sªsse (Gast)


Lesenswert?

Wie fast immer also der gute DS1820? Ja, dann ist Dein PIC der Master
und das ist nicht schwer in Software zu machen.

@Peter: Die volle Bitzeit kann man immer nutzen (in der
Interruptroutine einen Timerinterrupt setzen, bei dem der Pin dann
wieder auf Input geschaltet wird). Der andere Punkt ist beim AVR
natürlich traurig wahr: solange andere Interrupts existieren, kann
(dank fehlender Prioritäten) der Interrupt vom 1-wire-Bus empfindlich
verzögert werden. Beim PIC mit seinen seltsamen Interruptregeln mag es
noch schlimmer sein.

von Peter D. (peda)


Lesenswert?

@Philipp

"Die volle Bitzeit kann man immer nutzen"

War natürlich gemeint als Interruptresponse, d.h. mit dem HW-Bit-I2C
kann der Interrupt bis zu 45µs verzögert werden, ohne das es Probleme
gibt.

Bzw. wenn man noch per Capture die genaue Zeit der Flanke ermittelt,
dann auch bis kurz vor Ablauf der 60µs.


Für Software-Master-1-Wire gibts ja bereits was in der Codesammlung in
C, sollte, sofern man den 1-Wire laut Datenblatt verstanden hat, leicht
auf einen PIC anpaßbar sein.


Peter

von Weinga-Unity (Gast)


Lesenswert?

Hallo!

Habe einen 8-BIT IO Slave mit AT89C2051 realisiert (Relaiskarte). Der
µC ist nur mit 1wire-Timing beschäftigt und in den Lücken habe ich dann
eigentlich die Funktion implementiert. @22.xxx MHz

Was das für andere µC's heißt, kann man sich ausdenken. Aber
funktionieren tuts tadellos.

mfg W.K.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.