Forum: Mikrocontroller und Digitale Elektronik i2C - Ladung


von Vladimir B. (vladimir_b)


Lesenswert?

Hallo,
ich möchte meine LiIonen-Akku über die I2C-Schnittstelle mit einem
ATmega16 verbinden und dessen Register auslesen. In der
Akkuschutzschaltung wurde ein GAS-GAUGE-IC von der Firma TI verwendet.
Typ ist der bq78PL116.
Kann jemand mir erzählen wie ich die Ladung der Batterie mittels I2C 
auslese, oder eine Bsp in C wäre gut?

von M. P. (phpmysqlfreak)


Lesenswert?

Diese Informationen lassen sich ohne weiteres aus dem Datenblatt 
ableiten.
Auf Seite 17 findest du einen Verweis auf die Smart-Battery-Data 
Spezifikation. Seite 18 beglückt dich mit den Befehlen, die das IC 
beherrscht. 0x00 bis 0x3F entsprechen der SBData-Spezifikation.

Ein bisschen Suchen brachte mich dann auf 
http://sbs-forum.org/specs/sbdat110.pdf - wo SBData beschrieben ist.

Ja, es ist viel Text, aber meiner Meinung nach eigentlich gut um zu 
setzen.

Ein Beispiel an sich habe ich nicht, da ich mich mit dem Auslesen 
solcher ICs noch nicht befasst habe.

von mh (Gast)


Lesenswert?

Ich kann keine Einschränkungen der Transfers (*) finden, also probier es 
einfach mit "ganz normalem I²C" --> 
https://www.mikrocontroller.net/articles/AVR_TWI

Ich weiß leider nicht mehr auswendig, wie es beim AVR läuft.
Prinzipiell sollte es so ablaufen:

1. START setzen
2. Slave-Addresse + Write-Bit schreiben
3. Register-Adresse (z.B. 0x0F) schreiben
4. REPEATED_START setzen
5. Slave-Addresse + Read-Bit schreiben
7. STOP setzen
8. Daten lesen



(*): es gibt SMBUS devices, die z.B. nur Block Transfers unterstützen.

von Vladimir B. (vladimir_b)


Lesenswert?

Danke für Ihre Antwort, aber eine Bsp wäre sehr hilfreich :)

von prg (Gast)


Lesenswert?

copy-and-past-programmierer?

von Vladimir B. (vladimir_b)


Lesenswert?

Es ist deine Meinung, hilf oder geh weg..

von der nächste bitte (Gast)


Lesenswert?

Vladimir B. schrieb:
> Es ist deine Meinung, hilf oder geh weg..

Selbermachen, macht schlau.

von mh (Gast)


Lesenswert?

Google gibt Dir Beispiele ohne Ende... z.B. 
Beitrag "AVR TWI Master und Slave Funtionen in C"
Dort TWI_Master.c anschauen und einfach meiner Beschreibung folgen. Also

0. TWIM_Init(100000);
1. TWIM_Start(DeviceAdresse, TWIM_WRITE);
2. TWIM_Write(0x0F);
3. TWIM_Start(DeviceAdresse, TWIM_READ);
4. TWIM_ReadNack();
5. TWIM_Stop();

von Vladimir B. (vladimir_b)


Lesenswert?

Vielen Dank,
und wie kann ich dann Ausgabewert sehen? oder speichern?

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.