Hallo

Also das ganze funktioniert jetzt. Hat wohl nur an einem ";" nach der define Anweisung gelegen und daran dass ich die Taktrate (4Mhz) nicht im Hauptprogramm eingefügt/definiert habe. Dachte das reicht wenn ich es in der headerdatei mache.
Hier mal der Code:
Code:
#include <avr/io.h>
#include <i2cmaster.h>
#include <avr/delay.h>

#define SLAVE_ADRESSE 0xE0
#define F_CPU 4000000UL


unsigned int read_cm(unsigned char address);

int main(void)
{

int distance;

i2c_init();
DDRD = 0xff;
PORTD = 0xff;
read_cm(SLAVE_ADRESSE);
distance = read_cm(SLAVE_ADRESSE);

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();

	_delay_ms(65);

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

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

	return distance;

}
Jetzt hätte ich noch eine Frage zum SRF02: Der Sensor macht bei mir jetzt alle 65ms eine Messung. Blinkt da die LED am Sensor? Bzw leuchtet die während einer Messung? Ich glaube schon oder?

Danke!

Grüße!!

Bean