Es wäre schon schöner wenn ich die 0,5°C genau messen könnte, aber zu not geht es erstmal auch ohne Kommar Stelle.
Will die ganze vorgehensweise erstmal verstehen.
Hier mal mein "Progamm" was ich bis jetzt geschrieben habe, bzw. mit deinen Codes zusammen geflickt habe ^^
Kannst du bitte mal gucken ob es totaler unsin ist, oder was ich da noc ändern muss?
Code:
#include <stdio.h>
#include <avr/io.h>
#include"i2cmaster.h"
#define GETTEMP 0xAA
#define I2CTHERMO 0x90
#define STARTCONVERT 0xEE
int Temp; /* Variable für Temperatur */
Temp=i2cpuffer[0]; /*Temperatur Wert des Seonsors der Variablen zuweisen*/
DDRA = (1 << DDA0); /*Pin0 am Port A als ausgang setzten*/
int main(void)
{
if (Temp >= 1900h) /*Bedinung, solange Temperaturwert von 25°C noch nicht erreicht ist*/
{
PORTA |= (1<<PA0);/*soll Ausgang PA0 ein sein (Heizung an)*/
}
else
{
PORTA &= ~(1<<PA0);/*Wenn Temperatur erreicht ist soll Ausgang PA0 wieder ausgeschaltet werden*/
}
endif; /*Ende der if bedinung*/
return 0;
}
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();
unsigned char i2cstatus;
i2cstatus = i2c_start(I2CTHERMO+I2C_WRITE);
if (i2cstatus)
{
LCD_puts("Error");-
}
else
{
i2c_write(STARTCONVERT);
i2c_stop();
LCD_puts("Convert starting...");
}
endif;
Danke, ciao Hannes
Lesezeichen