Hi everyone,
I'm trying to make a sort of segway using arduino uno v3 and two servos, but this is another story...
Before that I have to recieve correct data from inertial platform (accel + gyros) mpu6000 bought on the web from drotek.it
I want to show you what I get from debug code, so I spun up the example, but get so far as:
############# MPU-6000 Data Acquisition #############
Initializing SPI Protocol...
...SPI Protocol initializing done.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Initializing Digital Motion Processor (DMP)...
Resetting MPU6000...
SPI (/CS40) reading 1 byte from register 0x6B... 0xFF (done)
SPI (/CS40) writing 1 byte to register 0x6B... 0xFF (done)
bit_7 set to 1
Disabling sleep mode...
SPI (/CS40) reading 1 byte from register 0x6B... 0xFF (done)
SPI (/CS40) writing 1 byte to register 0x6B... 0xBF (done)
bit_6 set to 0
Selecting user bank 16...
SPI (/CS40) writing 1 byte to register 0x6D... 0x70 (done)
Selecting memory byte 6...
SPI (/CS40) writing 1 byte to register 0x6E... 0x06 (done)
Checking hardware revision...
Revision @ user[16][6] = FF
Resetting memory bank selection to 0...
SPI (/CS40) writing 1 byte to register 0x6D... 0x00 (done)
Reading OTP bank valid flag...
SPI (/CS40) reading 1 byte from register 0x00... 0xFF (done)
bit_0 = 1
OTP bank is valid!
Reading gyro offset TC values...
SPI (/CS40) reading 1 byte from register 0x01... 0xFF (done)
SPI (/CS40) reading 1 byte from register 0x02... 0xFF (done)
SPI (/CS40) reading 1 byte from register 0x03... 0xFF (done)
X gyro offset = 63
Y gyro offset = 63
Z gyro offset = 63
########################### Writing DMP code to MPU memory banks (1929 bytes)
Writing DMP memory.......... @@@ write bank 0
SPI (/CS40) writing 1 byte to register 0x6D... 0x00 (done)
SPI (/CS40) writing 1 byte to register 0x6E... 0x00 (done)
...
...
@@@ write bank 1
SPI (/CS40) writing 1 byte to register 0x6D... 0x01 (done)
SPI (/CS40) writing 1 byte to register 0x6E... 0x00 (done)
...
...
>> read bank 6
SPI (/CS40) writing 1 byte to register 0x6D... 0x06 (done)
SPI (/CS40) writing 1 byte to register 0x6E... 0x00 (done)
$$ dmpMemory: byte verification error
FF
$$ dmpMemory: byte verification error
FF
$$ dmpMemory: byte verification error
FF
and so on, with a huge list of verification errors.
There is no, or no correct, SPI communication between Arduino processor and the MPU-6000. The code first writes a lot of values over SPI to the MPU-6000 ("writing byte to register (done)" - lines), then starts reading the values back from the MPU and verifies them. The "$$$ dmpMemory: byte verification error" point to a verification failure, so something went wrong in either writing or reading the values to/from the MPU, or both.
My code is too long to get it posted, so I posted the url from which I took the code originally:
I didn't touch the original part on the dmp memory bank initialization and configuration, but there is some sort of error that make me unable to receive data.
Any kind of thoughts on this would be most appreciated, many thanks.