Forum: Mikrocontroller und Digitale Elektronik Maxim ADC antwortet nicht über I²C


von Jonas (Gast)


Lesenswert?

Hallo,

ich bekomme meinen MAX1138 nicht zum Laufen. 
(http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3270/t/al)
Ich habe einen ATmega2560 und nutze die I²C-Library von Peter Fleury. 
(http://www.jump.to/fleury)

Mein CMPS03-Kompass funktioniert über I²C auch problemlos, aber sobald 
ich etwas an das IC schreiben will, bleibt er in der while hängen:

unsigned char i2c_write(unsigned char data)
{
   uint8_t twst;

   /* send data to the previously addressed device */
   TWDR = data;
   TWCR = (1 << TWINT) | (1 << TWEN);

   /* wait until transmission completed */
   while(!(TWCR & (1 << TWINT)));      // <-----------------------------

   /* check value of TWI Status Register. Mask prescaler bits */
   twst = TW_STATUS & 0xF8;
   if(twst != TW_MT_DATA_ACK) return 1;
   return 0;
}    /* i2c_write */


Ich habe schon andere Pull-Ups und eine andere Frequenz versucht, aber 
es hilft alles nichts.

Ich bin noch ein Einsteiger und ärgere mich mit dem Teil schon seit ein 
paar Wochen rum.
Ich bin für jede Hilfe dankbar.

Gruß Jonas

von Der M. (steinadler)


Lesenswert?

Hast du denn erst eine Adresse auf den Bus gelegt?

Also erst Start-Condition, dann Adresse senden, und dann erst schreiben.

von Jonas (Gast)


Lesenswert?

Ja, habe es genau so wie bei meinem Kompass gemacht.

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.