I2C Thermometer: Kommunikationsprotokoll: Fragen zum DB

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 05 10 2024  12:27:34      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
I2C Thermometer: Kommunikationsprotokoll: Fragen zum DB
Suche nach: i2c (576) thermometer (978)

    







BID = 440667

Steppenwolf

Schreibmaschine



Beiträge: 1757
Wohnort: Zürich, Schweiz
Zur Homepage von Steppenwolf
 

  


Hallihallo,

ich möchte gerne den DS1631 Temperatursensor an einem Mega8 betreiben.
Er kann die Temperatur per I2C zum AVR schicken und es lassen sich auch noch andere Parameter über diese Schnittstelle einstellen.

Hier mal das Datenblatt:
http://www.tranzistoare.ro/datasheets2/24/249334_1.pdf

Ich verweise auf die Seiten 12 und 13 des Datenblatts.

Ich hab zum Übertragungsprotokoll eine Frage.
Am Anfang ist klar, der Master (der Mega) gibt nach dem START die Adresse des Thermometers auf den Bus. Dann kommt das ACK vom Thermometer.
Danach muss ein "Command Byte" vom Master kommen. Dieses Byte sagt dem Thermometer, was es tun soll. Nach diesem "Command Byte" kommt nochmals ein ACK vom Thermometer und dann kommen die Daten vom Master.

Nur: Ich finde in diesem DB nirgends die Angabe, wie das "Command Byte" für die jeweilige Aktion aussehen soll... Also wenn ich z.B. die Temperatur auslesen möchte... welches Command Byte muss ich ihm dann schicken? Irgendwie finde ich so eine Liste im DB nicht.. Auf Seite 12 sind zwar die verschiedenen Möglichkeiten aufgelistet, doch nirgends die Codierung der Bytes
Oder was Bedeuten diese Zahlen in den eckigen Klammern auf Seite 12? Sind das die Command Bytes??...

Herzlichen Gruss und Danke

Mario

_________________
Meine Projekte:
http://mauerer.m.googlepages.com

BID = 440672

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  


Zitat :
Oder was Bedeuten diese Zahlen in den eckigen Klammern auf Seite 12? Sind das die Command Bytes??...
Ja.
Auf der nächsten Seite steht dann, wie das auf der Leitung aussieht.


_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 440675

Steppenwolf

Schreibmaschine



Beiträge: 1757
Wohnort: Zürich, Schweiz
Zur Homepage von Steppenwolf

Ja aber hää... Ich brauche Nullen und Einsen
Auf der nächsten Seite sind die Command Bytes ja auch nicht explizit angeschrieben... Meist ja so C7...C0 / D7..D0? (Z.B. beim fall e.)) auf S.13


Zu Seite 14:
Beispiel:
TX RX ACh MASTER sends Access Config command.

Nun schön... Was ist ACh (=Command Byte) in Binär ausgedrückt?


_________________
Meine Projekte:
http://mauerer.m.googlepages.com

[ Diese Nachricht wurde geändert von: Steppenwolf am  3 Jul 2007 13:52 ]

[ Diese Nachricht wurde geändert von: Steppenwolf am  3 Jul 2007 13:55 ]

BID = 440676

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

... und auf Seite 14 ist ein gesammtes Protokoll von Master (=AVR) an Slave (=Thermometer) abgedruckt. TX = senden, RX = empfangen.

BID = 440677

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

Im AVR310 (Application Note von Atmel) http://www.atmel.com/dyn/resources/prod_documents/doc2561.pdf
findest Du auf Seiten 2...4 die Umsetzung von Byte -> Bitstream.

Edit:
ACh bedeutet: 10101100
(2*4bit, A= 1010, C=1100, h=Kennzeichen hexadezimale Schreibweise)


[ Diese Nachricht wurde geändert von: hajos118 am  3 Jul 2007 14:12 ]

BID = 440678

Steppenwolf

Schreibmaschine



Beiträge: 1757
Wohnort: Zürich, Schweiz
Zur Homepage von Steppenwolf

Hä? Und was hat das mit meinem Problem zu tun?

Jetzt weiss ich ja immer noch nicht, was ich dem Thermometer sagen muss, damit es mir z.B. die zwei Temperatur-Bytes rauslässt...

_________________
Meine Projekte:
http://mauerer.m.googlepages.com

BID = 440680

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein


Zitat :
Steppenwolf hat am  3 Jul 2007 14:11 geschrieben :

Hä? Und was hat das mit meinem Problem zu tun?

Jetzt weiss ich ja immer noch nicht, was ich dem Thermometer sagen muss, damit es mir z.B. die zwei Temperatur-Bytes rauslässt...


Na ja, Dein Thermometer "spricht" I2C - also dürfte es doch am einfachsten sein, den AVR auch in dieser Sprache zu betreiben. Die Application Note beschreibt einen I2C Master - genau das, was dein Temp-Chip als Gegenstelle braucht.
Damit hast Du schon eine gemeinsame Sprache. Fehlt nur noch die höfliche Anfrage (das protokoll), mit dem der Temp-chip dann auf die Anfrage des I2C - Master reagiert, wenn er angesprochen wird (I2C Adresse muss passen). Dieses Protokoll ist im Datenblatt Deines Temp-Chip beschrieben.
Du mußt dich also gar nicht mit 0 und 1 herumschlagen - das macht schon der I2C Master...

BID = 440681

Steppenwolf

Schreibmaschine



Beiträge: 1757
Wohnort: Zürich, Schweiz
Zur Homepage von Steppenwolf

Hä ja wie jetzt...
Das mit I2C is mir schon klar.

Nur: Ich kann dem Thermo-Chip ja verschiedene Befehle geben wie z.B.
- Gib mir die Temperatur aus
- Lass mich dein Config-Register ändern
- etc.

Dies macht man ja, indem man nach der Aufnahme der Verbindung zum Slave das Command-Byte schickt... (S.13 des Thermo-DB)

Nur: Wie sieht dieses Command-Byte denn nun für die jeweilige Aktion aus? Bei einigen Fällen steht das im Thermo-DB (S.13), im Fall "e)" auf Seite 13 stehen für das Command-Byte ja nur so doofe Nummerierungen.. Was muss da rein?


_________________
Meine Projekte:
http://mauerer.m.googlepages.com

[ Diese Nachricht wurde geändert von: Steppenwolf am  3 Jul 2007 14:26 ]

BID = 440682

Steppenwolf

Schreibmaschine



Beiträge: 1757
Wohnort: Zürich, Schweiz
Zur Homepage von Steppenwolf

Im Anhang mal der Ausschnit aus dem DB.
Was muss ich für C7...C0 einsetzen?




_________________
Meine Projekte:
http://mauerer.m.googlepages.com

BID = 440699

cholertinu

Inventar



Beiträge: 3755
Wohnort: CH


Zitat :
Steppenwolf hat am  3 Jul 2007 14:29 geschrieben :

Was muss ich für C7...C0 einsetzen?

Das musst du nicht selbst binär einsetzen, das macht der I2C Master für dich.

Deine vielen hää? sind übrigens etwas irritierend, besonders wenn explizit auf deine Fragen geantwortet wurde:

Zitat :
Was ist ACh (=Command Byte) in Binär ausgedrückt?

Antwort:

Zitat :
Edit:
ACh bedeutet: 10101100
(2*4bit, A= 1010, C=1100, h=Kennzeichen hexadezimale Schreibweise)

Reaktion:

Zitat :
Hä? Und was hat das mit meinem Problem zu tun?


Wie meinen?

Zurück zum Problem: Du übergibst dem Master Adress- und Datenbytes, der Master schickt die dann binär über den I2C Bus.
Der DB Ausschnitt zeigt das Timing-Diagramm der Datenübertragung auf dem Bus.
So weit musst du aber gar nicht gehen - ausser du willst die Kommunikation mit dem KO nachvollziehen.


Und weiter gehts...

Zitat :
Das mit I2C is mir schon klar.

Wirklich?


Zitat :
auf Seite 13 stehen für das Command-Byte ja nur so doofe Nummerierungen..

Nimm das Command Set auf Seite 12. Da sind die Befehle doch beschrieben.

BID = 440706

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Ne, sry, aber gewisse Sachen sollten schon geläufig sein, beispielsweise Hex-Darstellungen etc.

Zudem täte ein Blick in den Bereich "TWI" im Datenblatt erheblich zum Aha-Effekt beitragen.

P.S.: Was kümmert dich denn der Bitstrom? Wenn du Daten senden willst, dann macht man das so:

TWDR = &HAC 'in Basic
TWDR = 0xAC; 'in C
ldi r16, 0xAC
out TWDR, r16 'in Assembler

Da die I²C- /TWI-Hardware alles selbst macht muss du dich nur um die Start- und Stopkonditionen und die Lese-Schreib-Bits kümmern.
Im besseren Fall wertest du noch die Statusregisterwerte aus, um beispielsweise zu checken, ob die Kommunikation erfolgreich war.

_________________

BID = 440722

Steppenwolf

Schreibmaschine



Beiträge: 1757
Wohnort: Zürich, Schweiz
Zur Homepage von Steppenwolf

Jäsoo... Jetzt is klar...Hab das Edit oben nicht gesehen
Hab doch noch nie was mit Hex gemacht... Bzw. hab gedacht, dass das Hex ist, nur beim "übersetzen" hab ich das "h" mit dazugenommen...

Wie I2C rennt ist mir schon bewusst... ich habs halt lieber binär und bin durch die "komische" Darstellung der Bytes etwas ins Trudeln geraten...

Ok, nun sind alle Fragen beantwortet, vielen Dank!!

Gruss
Mario

_________________
Meine Projekte:
http://mauerer.m.googlepages.com

[ Diese Nachricht wurde geändert von: Steppenwolf am  3 Jul 2007 16:38 ]

BID = 440725

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika



_________________


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 182128250   Heute : 2054    Gestern : 5499    Online : 559        5.10.2024    12:27
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.047544002533