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
Introduction to I2C http://www.uchobby.com/index.php/2008/09/16/introduction-to-i2c/ Two Wire Serial Interface http://www.ece.orst.edu/~traylor/ece473/lectures/twi.pdf LM73 datasheet http://www.ece.orst.edu/~traylor/ece473/data_sheets/LM73.pdf
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... :(
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
  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)
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
@ A. Wilhelm (lordhelmchen) >Nun muss ich nur noch zusehen dass ich die Werte als Dezimalzahlen >ausgebe... Mit Festkommaarithmetik. MFG Falk
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
Mit Google-Account einloggen
  Noch kein Account? Hier anmelden.