Dieser Abschnitt fehlt noch, siehe Datenblatt :-)
Hab mir der Bequemlichkeit halber eine Funktion zum Lesen des MAX127 geschrieben. Diese nutzt die I²C-Funktionen meiner libiow und ist daher recht übersichtlich:
int iow_i2c_max127(iowh h, uint8_t i2c_addr, uint8_t chan, int *ret)
{
uint8_t data[2];
/* Control Byte: 1CCCRBPP => C=channel, 0-5 Volt RB=0, PP=0 */
data[0]=0x80|((chan&0x07)<<4);
/* 0xc0 => generate start and stop bits */
if(iow_i2c_write(h, i2c_addr, data, 1) < 0) {
fprintf(stderr, "i2c bus error\n");
return -1;
}
if(iow_i2c_read(h, i2c_addr, data, 2) > 0) {
*ret=(data[0]<<4)|(data[1]>>4);
}
return 0;
}
Das Ganze gibt es auch wieder als Codebeispiel zum download: i2c_max127.c
Achtung, es wird zwingend meine libiow Version 0.9
oder neuer benötigt.
Ältere Versionen funktionieren aufgrund einer anderen (falschen) Interpretation
der I²C Adresse nicht