Gast
#1706707
Hallo erst mal, ich bin gerade dabei ein projekt für die schule zu machen und versuche verzwiefelt zwei LM75 auszulesen aber irgentwie will das nicht so wie ich will, ich hab mir jetzt bestimmt schon 100 beiträge zu den thema durchgelesen und das datenblatt kann ich bald auswendig aber ich bekomm immer noch keine daten ich leg euch mal den quellcode bei vieleicht kann ja ein intelligenterer mensch als ich mir meinen fehler zeigen ach ja ich verwende einen ATmega8 der LM75 ist an portc angeschlossen die ersten beiden bit sind seriell und takt, #define F_CPU 3686400 #include <avr\io.h> #include <util\delay.h> #include <avr\interrupt.h> #include <inttypes.h> // folgende Befehle sind Standartbibliothek von myavr twi //////////////////////////////////////////////////////////////////////// //////////////////// //////////////////////////////////////////////////////////////////////// //////////////////// #define _TWINT 0b10000000 #define _TWEA 0b01000000 #define _TWSTA 0b00100000 #define _TWSTO 0b00010000 #define _TWWC 0b00001000 #define _TWEN 0b00000100 #define _TWIE 0b00000001 void twiStart() { uint8_t x; x=TWCR; x&=_TWEN|_TWIE; TWCR=x|_TWINT|_TWSTA; while( !(TWCR & _TWINT)) { } } void twiStop() { uint8_t x; x=TWCR; x&=_TWEN|_TWIE; TWCR=x|_TWINT|_TWSTO; } void twiWriteByte(uint8_t data, uint8_t ackn) { uint8_t x; TWDR=data; x=TWCR; x&=_TWEN|_TWIE; x|=_TWINT; if(ackn) x|=_TWEA; TWCR=x; while( !(TWCR & _TWINT)) { } } int twiReadByte(uint8_t ackn) { uint8_t x; x=TWCR; x&=_TWEN|_TWIE; x|=_TWINT; if(ackn) x|=_TWEA; TWCR=x; while( !(TWCR & _TWINT)) { } return TWDR; } //////////////////////////////////////////////////////////////////////// ////////////////////mein code///////////////////////////////////////////////// int GetTempemperatur(uint8_t twiAdr) { uint8_t highByte; uint8_t lowByte; uint8_t AdrHilf; uint8_t highByteHilf; twiStart(); AdrHilf=twiAdr; AdrHilf=AdrHilf>>1; AdrHilf=AdrHilf<<1; //Schreiben aktivieren twiWriteByte(AdrHilf,0); //Adresse +write twiWriteByte(0x00,0); //Register Temperatur auswählen twiStart(); twiWriteByte(twiAdr,0); //Sensor Auswählen highByte=twiReadByte(0); //byte 1 lesen lowByte=twiReadByte(0); //byte 1 lesen twiStop(); highByteHilf=highByte; highByteHilf=highByteHilf>>7; if (highByteHilf==0x01) { highByte=-highByte; } return highByte; } uint16_t Licht() { uint16_t licht; licht=GETADC(1); return licht; } uint8_t TemperaturInnen() { uint8_t temp; temp=GetTempemperatur(0x9f); return temp; } uint8_t TemperaturAussen() { uint8_t temp; temp=GetTempemperatur(0x97); return temp; } danke schon mal,