Forum: Mikrocontroller und Digitale Elektronik kleines Problem: LM75 -> I2C-Bus am ATmega103


von die amme (Gast)


Lesenswert?

Hallo,
Ich habe ein Problem beim Programmieren mit dem I2C und einem
Temperatursensor
LM75.
Ich nutze die I2C Libary von P. Fleury. Nutze winAvr.

Hier ein auszug aus meinem Programm:

Assembler file mit eingebunden im Makefile

  ASRC = i2cmaster.S

c file:

  #include <i2cmaster.h>

  #define LM75 0        //Adresse 0b0000 Adresspins auf gnd

  i2c_init();        //I2CBus

  ret=i2c_start(LM75+I2C_READ);    //Sollte als Returnwert eine 0 
liefern
  sprintf(buf,"Erreichbar? %d",ret);
  lcd_gotoxy(0,0);
  lcd_puts(buf);


Leider bekomme ich ständig eine 1!?
Sensor nicht verfügbar und somit kann ich mir den Rest des Programmes
auch
sparen. :-(


beide files sind von Peter Fleury:

  Stand :2003/10/16 18:14:26 peter Exp $

Habe den Sensor LM75 mal mit dem Codvision Avr ausprobiert, da
funktioniert er.
Ich denke, dass ich irgendwo ein Programm Fehler habe.
vielleicht kann  mir jemand weiter helfen.


Vielen Dank im vorraus

die amme

von die amme (Gast)


Lesenswert?

Nachtrag:
Habe gerade durch die Suche im Forum eine Ideee bekommen.

meine Adresse habe ich nun von 0 auf 0x90 (0b1001 0000) geändert.
Jetzt ist mein Sensor erreichbar.

Hat jemand eine Erklärung dafür? Verstehe nicht ganz warum die 1001
davor muss.

Gruß

die amme

von Tobias Schneider (Gast)


Lesenswert?

Hi,
bei i2c bausteinen wird die adresse immer von 3 dingen bestimmt: von
einer fest durch das bauteil festgelegten adresse, von den adress pins
und von dem read/write pin. die 1001 ist demnach die feste adresse
deines LM75

Gruß Tobias

von die amme (Gast)


Lesenswert?

Ach so, vielen Dank Tobias. :-)
Jetzt läuft das Programm und der Sensor funktioniert.


Gruß
die amme

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.