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:
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?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; }
Danke!
Grüße!!
Bean






Zitieren

Lesezeichen