Hey,
Ich habe einen ITG 3200 per I²C an einen ATMEGA2560 angeschlossen und 
übertrage die Messwerte per RS232 an ein PC-Programm. Soweit 
funktioniert mittlerweile alles super.
Einziges Problem ist, dass ich keinen Plan habe wie ich auf die 
Neigungswinkel in Grad oder Rad komme - habe zwar einige Artikel im Web 
gefunden, aber die widersprechen sich meistens gegenseitig.
Hier mal was ich bisher mache:
Init ITG:
1  | i2c_write_reg_itg(0x15,0x00,a_itg1); //a_itg1 = write addr
  | 
2  | i2c_write_reg_itg(0x16,0x18,a_itg1);
  | 
3  | i2c_write_reg_itg(0x3E,0x01,a_itg1);
  | 
Die Werte auslesen und "zusammen rechnen" (passiert ~ alle 100ms)
1  | itgval[0] = i2c_read_reg_itg(0x1D,a_itg1,(a_itg1 + 1)); //itgval = char
  | 
2  | itgval[1] = i2c_read_reg_itg(0x1E,a_itg1,(a_itg1 + 1));
  | 
3  | itgval[2] = i2c_read_reg_itg(0x1F,a_itg1,(a_itg1 + 1));
  | 
4  | itgval[3] = i2c_read_reg_itg(0x20,a_itg1,(a_itg1 + 1));
  | 
5  | itgval[4] = i2c_read_reg_itg(0x21,a_itg1,(a_itg1 + 1));
  | 
6  | itgval[5] = i2c_read_reg_itg(0x22,a_itg1,(a_itg1 + 1));
  | 
7  |     
  | 
8  | ix = ((int)itgval[1]<<8)|(int)itgval[0]; //ix, iy & iz = unsigned int
  | 
9  | iy = ((int)itgval[3]<<8)|(int)itgval[2];
  | 
10  | iz = ((int)itgval[5]<<8)|(int)itgval[4];
  | 
Dann werden die Daten an den PC gesendet, welcher dann die endgültige 
Umrechnung machen soll:
1  | dItg_c[0] = iItg[0] / 14.375;
  | 
2  | dItg_c[1] = iItg[1] / 14.375;
  | 
3  | dItg_c[2] = iItg[2] / 14.375;
  | 
Das Problem hierbei ist, dass meine 3 Werte nun irgendwo zw. 0 und 
4558,95 liegen (klar, wegen der Division durch 14.375 - die Zahl hab ich 
aus einem der oben erwähnten Artikel).
Hoffe ihr könnt mir ein wenig auf die Sprünge helfen - danke schonmal!
MfG,
John