So habe heut Abend noch einiges geändert Funzt aber leider immer noch nicht...
Ich hab grad keinen Plan mehr... werd jetzt dann aber auch erstmal ne Nacht drüber schlafen und morgen dann wieder weiter machen...
Code:
#include <avr/io.h>
#include <i2cmaster.h>
#include <avr/delay.h>
#define SLAVE_ADRESSE 0xE0 ;
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 > 0)
{
PORTD = 0x00;
}
return distance;
}
Grüße!!
Bean
Lesezeichen