Hallo Hannes,
das sieht schonmal gut aus![]()
Hast Du das Programm durch den Kompiler gejagt ?
Kommst Du aus der Basic Welt ?
also endif gibt es in dieser Weise nicht bei C, es gibt zwar die Präprozessordirektive
#endif, das ist aber etwas anderes...
und if (temp >=1900h) sagt mir auch nichts, was heißt h ?
Hexadezimal oder wie?
Nicht so kompliziert denken
if(temp >=25) wäre hier besser gewesen...
ich schreibe Dir einfachmal das Programm, versuch es zu verstehen
So in etwa, es kann sein, daß da irgendwo sich ein Fehler versteckt, habe bitte Gnade mit mir, ich habe es eben so zusammengetippt...Code:#include <avr/io.h> #include "i2cmaster.h" #define GETTEMP 0xAA #define I2CTHERMO 0x90 #define STARTCONVERT 0xEE int main(void) { char i2cpuffer[2]; DDRA = (1<<PA0); i2c_start(I2CTHERMO+I2C_WRITE); i2c_write(STARTCONVERT); i2c_stop(); for(;;) { i2c_start_wait(I2CTHERMO+I2C_WRITE); i2c_write(GETTEMP); i2c_rep_start(I2CTHERMO+I2C_READ); i2cpuffer[0] = i2c_readAck(); i2cpuffer[1] = i2c_readNak(); i2c_stop(); if (puffer[0] >= 25) PORTA |=(1<<PA0); else PORTA &=~(1<<PA0); } return 0; }
Gruß Sebastian







Zitieren

Lesezeichen