Klicke auf die Grafik für eine größere Ansicht

Name:	LM75_I2C.gif
Hits:	9
Größe:	9,7 KB
ID:	21353Hallo Freunde ich bräuchte Eure Hilfe

Habe vor mir einen LM 75 und ein Atmega16.

Verbunden über I2C mit 4,7 Pullups an den leitungen.

Ich Versuche wie verzweifelt die Temperatur auszulesen und auf einem LCD wieder zu geben,
doch will dies mir nicht gelingen.

Ich poste mal meinen Code zur Kontrolle von Profis
Code:
/*
 * LM75.c
 *
 * Created: 28.01.2012 17:11:50
 *  Author: Frau
 */ 

#include <avr/io.h>
#include <stdio.h>
#include <stdint.h>
#include <util/delay.h>
#include <avr/interrupt.h>



#include "lcd.c"
#include "lcd.h"
#include "i2cmaster.h"
#include "twimaster.c"

#define lm75 0x90

uint8_t msb_temp;
uint8_t lsb_temp;
uint16_t temp_wrd;

uint8_t ret;

char Buffer[20];



int main(void)
{
	
	lcd_init(LCD_DISP_ON);
	lcd_clrscr();
	
	i2c_init();
	

	void temperfassung(void)
	{			
		ret = i2c_start(lm75 + I2C_WRITE);
		
		if (ret == 0)
			{		
				msb_temp = i2c_readAck();
				lsb_temp = i2c_readNak();
			}
		i2c_stop();				
	}
	
    while(1)
    {
		
		temperfassung();
		
		temp_wrd = (msb_temp << 8 | lsb_temp);
		itoa(ret ,Buffer, 10 );
		
		lcd_clrscr();
		lcd_gotoxy(0,0);
        lcd_puts( "Temperatur:");
		lcd_gotoxy(0,1);
		lcd_puts(Buffer);
		
		_delay_ms(500);
						 
    }
}

Ich habe den I2C-Bus überwacht und hänge noch ein Pic mit daran. Vielleicht gibt das aufschluss über den Bock den ich drin habe.

Grüße Flo