Hallo

Ich hab mir einen Ultraschallsensor besorgt um einfach mal ein wenig damit zu experimentieren. Und auch mal was mit dem I2C Bus zu machen. Aber da fangen die Probleme schon an. Ich möchte momentan einfach nur abfragen ob ein Messergebniss vorliegt oder nicht. Wenn das Ergebniss der Messung also größer als 0 ist, dann sollen LED`s an einem Port angehen. Aber schon das funktioniert nicht. Ich denke dass ich irgend ein Problem mit den Startbedingungen für den Bus habe, weiß aber nicht genau was. Könntet ihr da mal drüber schaun?
Ich arbeite mit der I2C Lib von Peter Fleury. Vielleicht muss ich da auch noch irgend etwas in der i2cmaster.h ändern. Aber ich weiß nicht was. Quarz hab ich ein 4 MHz drin, das ist eigenlich in der header Datei auch eingestellt.


Code:
#include <avr/io.h>
#include <i2cmaster.h>


#define SLAVE_ADRESSE 0xE0 ;


int main(void)
{
i2c_init();
DDRD = 0xff;
PORTD = 0xff;
return 0;
}

unsigned int read_cm(unsigned char address)
{
	unsigned char lowbyte,highbyte;
	unsigned int distance;

	i2c_start_wait(address+I2C_WRITE);
	while (i2c_write(0));
	while (i2c_write(81));
	i2c_stop();

	i2c_start_wait(address+I2C_WRITE);
	while (i2c_write(2));
	i2c_stop();

	i2c_start_wait(address+I2C_READ);
	highbyte = i2c_readAck();
	lowbyte = i2c_readNak();
	distance = (highbyte+256)+lowbyte;
	i2c_stop();

	if(distance > 0)
	{
		PORTD = 0x00;
	}

	return distance;

}