Hi Leute,

bin neu hier im Forum und habe direkt mal eine Frage zum BMA020 Beschleunigungssensor und dem I2C Bus. Ich benutze das Modul von ELV, welches ich an meinen AtMega8 angeschlossen habe. Die Messwerte gebe ich mir anschliessend über den UART aus. Anbei mal mein Code, ich benutze die I2C Lib von P. Fleury. Könntet ihr mal schauen, ob der Code so in Ordnung ist. Denn die Daten die ich ausgebe, machen mich ein wenig stutzig (3328, 3330, sowas in der Art).

Code:
#include "data_logger.h"

#define   I2C_BMA_W   0x70
#define   I2C_BMA_R   0x71


int main()
{	
	io_init('D', 0xF0);
	i2c_init();

	char buf[16];
	
	set_port('D', 0b00110000);

	int16_t     x, y, z; 
	uint8_t 	ret;
	unsigned char ACK, NAK; 
	ACK = 1;
	NAK = 0;

	while(1)
	{ 	
		ret = i2c_start(I2C_BMA_W);
   		ret = i2c_write(0x02);
                i2c_stop();

		ret = i2c_start(I2C_BMA_R);

		ret= i2c_read(ACK); x = (int16_t)ret;
		ret= i2c_read(ACK); x = x | ((int16_t)ret << 8);
		
		ret= i2c_read(ACK); y = (int16_t)ret;
  		ret= i2c_read(ACK); y = y | ((int16_t)ret << 8);

		ret= i2c_read(ACK); z = (int16_t)ret;
  		ret= i2c_read(NAK); z = z | ((int16_t)ret << 8);
		i2c_stop();

		itoa(x, buf, 10);
		uart_send_string(buf);
		uart_send_string("\t");	
		itoa(y, buf, 10);
		uart_send_string(buf);
		uart_send_string("\t");
		itoa(z, buf, 10);
		uart_send_string(buf);
		uart_send_string("\r");	
		uart_send_string("\n");	
		_delay_ms(100);	
	}
	return 0;
}
Der Code ist dem im Forum sehr ähnlich, lediglich erhalte ich keine plausible Ausgabe, ich erwarte: wenn der Sensor in Ruhe liegt, Werte um 0 herum.

Vielen Dank schonmal für die Hilfe