Messung funktioniert jetzt
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