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.