Thomas E.
18.03.2012, 10:05
Hallo Gemeinde!
Ich habe mich seit einigen Tagen an meinen ersten I2C-Versuchen gewagt. Allerdings scheinen mir einige Grundlagen massiv zu fehlen, weshalb ich nicht wirklich vorankomme. Ich habe das RN-Wissen und das Buch "Programmieren der AVR RISC-Microkontroller mit Bascom" von Claus Kühnel zu rate gezogen und mir sämtliches über I2C durchgelesen. Auch versuchte ich, über Google an einige Beispiele zu kommen. Das Datenblatt des DS1631 habe ich natürlich ebenfalls zur Hand.
Zur Hardware: An einem Mega8 hängen ein DS1631 Temperatursensor und ein ST24C16 EEPROM. SDA und SCL sind über jeweils 6k8 an +5V.
Als erste Tat wollte ich den DS1631 ansprechen, allerdings scheint mir hier einiges an Basiswissen zu fehlen. Ich habe bis jetzt folgende Dinge verstanden:
Der Mega8 ist der Master, die beiden Bausteine sind die Slaves
Der Datenstrom am Bus geht nacheinander vor sich
Um ein Baustein anzusprechen muss als erstes die Slave-Adresse des Bausteins gesendet werden
Die Übertragung geht Byteweise vor sich
Es funktioniert nicht
Der DS1631 besitzt laut Datenblatt diese Adresse (A0,A1,A2 liegen auf GND):
10010000 für schreiben
10010001 für lesen
Weiters gibt es Befehle, um den Baustein etwas zu befehlen (nona). Diese sind:
Stop Convert T [ 22h ]
Stops temperature conversions when the device is in continuous conversion mode (1SHOT = 0).
Read Temperature [ AAh ]
Reads last converted temperature value from the 2-byte temperature register.
Access TH [ A1h ]
Reads or writes the 2-byte TH register.
Access TL [ A2h ]
Reads or writes the 2-byte TL register.
Access Config [ ACh ]
Reads or writes the 1-byte configuration register.
Software POR [ 54h ]
Soweit ich das verstanden habe, sind die Befehle im Zahlensystem Hex. Als ich versuchte, diese Werte in Bascom zu verwenden bekam ich Compilerfehler. Ich vermute, ich muss die Eingabe eines Wertes in Hex irgendwie deklarieren. Leider war die Bascom-Hilfe wenig hilfreich.
Vielleicht möchte jemand Licht in meine massive Dunkelheit bringen?
Ich habe mich seit einigen Tagen an meinen ersten I2C-Versuchen gewagt. Allerdings scheinen mir einige Grundlagen massiv zu fehlen, weshalb ich nicht wirklich vorankomme. Ich habe das RN-Wissen und das Buch "Programmieren der AVR RISC-Microkontroller mit Bascom" von Claus Kühnel zu rate gezogen und mir sämtliches über I2C durchgelesen. Auch versuchte ich, über Google an einige Beispiele zu kommen. Das Datenblatt des DS1631 habe ich natürlich ebenfalls zur Hand.
Zur Hardware: An einem Mega8 hängen ein DS1631 Temperatursensor und ein ST24C16 EEPROM. SDA und SCL sind über jeweils 6k8 an +5V.
Als erste Tat wollte ich den DS1631 ansprechen, allerdings scheint mir hier einiges an Basiswissen zu fehlen. Ich habe bis jetzt folgende Dinge verstanden:
Der Mega8 ist der Master, die beiden Bausteine sind die Slaves
Der Datenstrom am Bus geht nacheinander vor sich
Um ein Baustein anzusprechen muss als erstes die Slave-Adresse des Bausteins gesendet werden
Die Übertragung geht Byteweise vor sich
Es funktioniert nicht
Der DS1631 besitzt laut Datenblatt diese Adresse (A0,A1,A2 liegen auf GND):
10010000 für schreiben
10010001 für lesen
Weiters gibt es Befehle, um den Baustein etwas zu befehlen (nona). Diese sind:
Stop Convert T [ 22h ]
Stops temperature conversions when the device is in continuous conversion mode (1SHOT = 0).
Read Temperature [ AAh ]
Reads last converted temperature value from the 2-byte temperature register.
Access TH [ A1h ]
Reads or writes the 2-byte TH register.
Access TL [ A2h ]
Reads or writes the 2-byte TL register.
Access Config [ ACh ]
Reads or writes the 1-byte configuration register.
Software POR [ 54h ]
Soweit ich das verstanden habe, sind die Befehle im Zahlensystem Hex. Als ich versuchte, diese Werte in Bascom zu verwenden bekam ich Compilerfehler. Ich vermute, ich muss die Eingabe eines Wertes in Hex irgendwie deklarieren. Leider war die Bascom-Hilfe wenig hilfreich.
Vielleicht möchte jemand Licht in meine massive Dunkelheit bringen?