Forum: Projekte & Code TWI I2C USART RS232 - 1WIRE INTERFACE bridge device ATmega8 Assembler


von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ein 1-MHz getakteter ATmega8 steuert ein 1-WIRE BUS per TWI,I2C, USART 
bzw. RS232.


Bei manchen zeitkritischen Anwendungen wäre die 1-WIRE Anbindung 
ziemlich schwierig:

Beitrag "SEISMOGRAPH TV FBAS composite video Eigenbau selber bauen BMA020 ATmega1284p Assembler"
Beitrag "VGA 640x480 60Hz (164x120) RGB Vollgrafic ATmega1284p Assembler"


Bis zu 64 angeschlossenen 1WIRE-SLAVES erkennt die interne 
ROM-SEARCH-Routine.

Einfach per USART oder TWI x20 senden, nach einiger Zeit liegen die 
geprüften ROM-IDs im SRAM und können abgerufen werden.

Eine Automatik schaltet zwischen USART- und 1-WIRE-Betrieb um.

Eine Taste ermöglicht zusätzlich einen ROM-Suchlauf, leuchtet die 
ROTE-LED, dann stimmt irgend etwas nicht (z.B. CRC-Prüfung, 
RESET-PRSENCE).

Bei 29 Slaves dauert der Suchlauf ca. 800ms.

Der ONE-WIRE-BUS wird permanent überwacht, bei Kurzschluss oder zu hoher 
Strombelastung leuchtet die GELBE-LED und der BUS wird nach einigen ms 
abgeschaltet

Tritt im Normalbetrieb ein Fehler auf, dann leuchtet die ROTE-LED, der 
Fehlercode lässt sich auslesen.

Einzelne Bits / Bytes können auf dem ONE-WIRE-BUS gelesen und 
geschrieben werden, aber auch ganze Kommando-Ketten verarbeitet dieses 
Interface.


Beispiel:

- RESET-PRESENCE + SKIP-ROM + CONVERT "T"
- BUS-RESET (einige ms BUS auf GND)
- RESET-PRESENCE-AUSWERTUNG
- ROM-SEARCH-ROUTINE

Problem:

Manche SLAVES benötigen einen relativ hohen Strom, um gewisse Aktionen 
durchzuführen (z.B. bei Temperaturmessung).

Der Programmcode ist so gestaltet, dass in diesem Fall der BUS-PIN auf 
Ausgang und HIGH geschaltet wird und einen höheren Strom zur Verfügung 
stellt.

Bei Bedarf kann ein FET/Transistor Unterstützung leisten.


Alternativ wäre auch ein DS2482-100 Single-Channel 1-Wire Master, die 
SMD-Technologie schreckte mich nur ab.

Für Hinweise und Verbesserungsvorschläge bin ich sehr dankbar

Bernhard

: Bearbeitet durch User
von Bernhard S. (bernhard)



Lesenswert?

Messungen am 1-WIRE-BUS bei Temperaturmessung DS18s20 DS1822 DS18B20.

Bei den ersten beiden Bildern wird der benötigte Strom nur über einen 1k 
Widertand zur Verfüng gestellt, deutlich ist der Spannungseinbruch bei 
der Temperaturmessung zu sehen.

Im rechten Bild werden 29 Slaves mit STRONG-PULLUP,
also PIN auf HIGH + Ausgang gespeist.

: Bearbeitet durch User
von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Messung 0-SLOT vom Slave DS18B20 (Länge ca. 28µs),

der Master sampelt nach ca. 15µs (6+9).

von Bernhard S. (bernhard)



Lesenswert?

Messung an einem 1-Wire USB Adapter

Das Zusammenspiel zwischen Master und Slave bei ROM-SEARCH, (A) und (B) 
vom SLAVE empfangen, anschließend antwortet der MASTER:

https://www.mikrocontroller.net/attachment/279678/ROM_SEARCH.jpg



z.B. hier erhältlich:

http://www.1-wire.de/oxid/1-Wire/1-Wire-Module/

: Bearbeitet durch User
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.