Hi,
ich benutze auch den MPU6000 in einem Kopter, auch über SPI 
Mir fällt auf, dass in der ISR SPIF geschrieben ist, das ist wohl schonmal ein Fehler.
Wenn ich es richtig sehe, stellst du Mode 2 ein, der MPU will aber Mode 0 (3 geht glaube ich auch).
Außerdem solltest du den MPU initialisieren (Register Power etc..), das kannst du mit max. 1MHz SPI Takt machen.
Die Sensor Register (ACC, Temp, Gyro) kannst du mit max. 20MHz auslesen, alle anderen wie gesagt nur mit 1MHz.
Zum Testen würde ich erstmal anfangen, den SPI ohne ISR zu betreiben und beim MPU das WhoIAm Register auszulesen (nähere Infos im DB).
Hier mal meine SPI Routine:
Code:
uint8_t SpiTransfer(uint8_t data)
{
uint8_t dump;
SPID.DATA = data;
while(!(SPID.STATUS & SPI_IF_bm))
dump = SPID.STATUS;
return SPID.DATA;
}
Gruß
Chris
Lesezeichen