Forum: Compiler & IDEs LM73 über I2C mit ATmega8 ansprechen


von A. W. (lordhelmchen)


Lesenswert?

So, dann muss ihc mich mal wieder an euch wenden...

Was ich will- den Baustein LM73 über I2C mit meinem ATmega ansprechen. 
Die Adresse auslesen und dann aufm Display ausgeben...
Mein Problem- ich habe keine Ahnung, wo und wie ich anfangen soll...

Ich bin dabei, das Forum und auch das Internet ansich (Google dein 
Freund und Helfer) zu durchsuchen- aber irgendwie fehlt mir der 
entscheidende Gedanke, zu verstehen was ich wie mache bzw wie ich 
eigentlich anfange... daher- hat wer ne Idee wo ich was finde, wie ich 
mich dem ganzen nähern kann?


Danke =)

LG

von Stefan B. (stefan) Benutzerseite


Lesenswert?


von A. W. (lordhelmchen)


Lesenswert?

Hehe, danke...

aber... in dem Datenblatt steht bei "1.0 Functional Description (b)" was 
von einem 'Serial Bus Adress Type'... was isn das?
Weil ich such und such in dem Datenblatt, finde aber nichts was A0, A1 
und A2 sein soll... :(

von GAST (Gast)


Lesenswert?

Schau auf der Seite 9, links unten in der LM73 datasheet.

von A. W. (lordhelmchen)


Lesenswert?

Danke... war ich einfach zu blind zu...


So.. wenn ich das wichtig verstehe... muss ich nur genau das machen, was 
in der functional Description steht, oder?

Ich will das "Identification Register" abfragen. Halt um zu schaun ob 
unter derundder Adresse das IC erreichbar ist.
So, im Datenblatt steht dass das 15 Bit lang ist (S.16). Also schau ich 
auf Seite 11 nach, "(b) typical pointer set followed by immediate read 
of a 2-byte register". Und mach dass dann genauso wies da steht... denke 
ich mal.

Daher habe ich folgendes hier nun stehen:

#define   F_CPU 2000000
#define   SCL_CLOCK    100000L
#include  <avr\io.h>
#include  <util\delay.h>
#include   <stdlib.h>
#include    "twimaster.c"
[...]
//Adresse abfragen
//---------------------------------------------------------------------- 
-----
// Verfahren: datasheet, 1.0 b
//---------------------------------------------------------------------- 
-----

void adress()
{
  i2c_int();
  i2c_start (0b10010000+I2C_WRITE);
  i2c_readAck ();
  i2c_write (0x07)
//datasheet, 2.7, pointer auf ident. register
  i2c_readAck ();
  i2c_stop ();
  i2c_start (0b10010001);
  i2c_readAck ();
  read
  i2c_writeAck ();
  read
        i2c_writeNak ();
  i2c_stop ();

}
[...]

--> vom Prinzip her richtig?
--> mit welchem Befehl kann ich vom Slave lesen? Ich find irgendwie nur 
write-Befehle...


LG

von Stefan B. (stefan) Benutzerseite


Lesenswert?

A. Wilhelm wrote:

> --> mit welchem Befehl kann ich vom Slave lesen? Ich find irgendwie nur
> write-Befehle...

Das Lesen ist im LM73-Datenblatt auf Seite 10 und 11 beschrieben.

Die dazu passende TWI-Library (Funktion) solltest du dort finden, wo du 
den Rest des obigen Programms gefunden hast.

Wenn dort wider Erwarten nichts zu finden ist, gibt es Beispielcode für 
i2c_read() im Forum 
(http://www.mikrocontroller.net/search?query=i2c_read&forums%5B%5D=1&forums%5B%5D=19&forums%5B%5D=9&forums%5B%5D=10&forums%5B%5D=2&forums%5B%5D=4&forums%5B%5D=3&forums%5B%5D=6&forums%5B%5D=17&forums%5B%5D=11&forums%5B%5D=8&forums%5B%5D=14&forums%5B%5D=12&forums%5B%5D=7&forums%5B%5D=5&forums%5B%5D=18&forums%5B%5D=15&forums%5B%5D=13&forums%5B%5D=16&max_age=-&sort_by_date=0)

von A. W. (lordhelmchen)


Lesenswert?

So... das scheint hier ja alles zu klappen!

Lesen der Werte und Ausgabe auf dem Display... danke =)

Nun muss ich nur noch zusehen dass ich die Werte als Dezimalzahlen 
ausgebe... binär lässt sich dass immer so schwer lesen...

LG

von Falk B. (falk)


Lesenswert?

@  A. Wilhelm (lordhelmchen)

>Nun muss ich nur noch zusehen dass ich die Werte als Dezimalzahlen
>ausgebe...

Mit Festkommaarithmetik.

MFG
Falk

von Jurek (Gast)


Lesenswert?

ich hab das gleiche vor, allerdings finde ich nirgends einen Versand, wo 
ich den LM73 kaufen könnte.
Ich bin so ziemlich die ganze Versanadressliste hier im Forum 
durchgegangen.
Aber ausser bei Digikey mit 18EUR Versand hab ich dieses Teil nirgends 
finden
können.

Kann mir bitte wer helfen, wo es den LM73 gibt?

Wenn ich dann bei der Programmierung (Assembler) weitergekommen bin,
kann ich gerne den Code reinstellen...
Der LM75 funktioniert bei mir mittlerweile, ist aber zu ungenau.


Noch eine Frage: Beim LM75 wird eine Genauigkeit von +/- 2 Grad 
angegeben.
Wie sich das beim LM73 verhält, hab ich jetzt nicht im Kopf. Aber 
generell:
Die Ungenauigkeit gilt doch für alle Temperaturen, oder ?
D.h. er misst immer z.B. 1,5 Grad zu hoch ?
Oder kann jede einzelne Messung um +/- 2Grad unterschiedlich sein?


Grüsse
Jurek

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.