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
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;
}
So in etwa, es kann sein, daß da irgendwo sich ein Fehler versteckt, habe bitte Gnade mit mir, ich habe es eben so zusammengetippt...
Gruß Sebastian
Lesezeichen