TWI I2C USART RS232 - 1WIRE INTERFACE bridge device ATmega8 Assembler

OP #4406727
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
Angehängte Dateien:
OP #4406748
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.
OP #4414069
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/

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.