The Digital Motion Processor in the InvenSense MPU-6050 family (MPU-6050, MPU-6500, MPU-9150, MPU-9250) and, as DMP3, in the ICM-20948: its architecture, memory, instruction set, host interface and assembly language.
The Digital Motion Processor in the InvenSense MPU-6050 family (MPU-6050, MPU-6500, MPU-9150, MPU-9250) and, as DMP3, in the ICM-20948: its architecture, memory, instruction set, host interface and assembly language.
| Chapter | |
|---|---|
| 1 | Architectural Overview: the programmer’s model, machine state, execution model |
| 2 | Memory Organization and Data Types: memory maps, the sample page, pointers, integer and Q30 words |
| 3 | Programmer’s Guide: instruction formats, and each instruction class with examples |
| 4 | Instruction Set Summary: every instruction, its length, cycles and flags |
| 5 | Instruction Definitions: each instruction in full, A to Z |
| 6 | Opcode Maps: both cores, byte by byte; reserved encodings |
| 7 | Host Interface: registers, loading, starting, the FIFO, the sample rate |
| 8 | Assembly Language: source format, directives, mode tracking |
| 9 | Programming Techniques: complete programs for common tasks |
Figures
| Figure | |
|---|---|
| 1-1 | The programmer’s model |
| 1-2 | When a pass runs |
| 2-1 | MPU-6050 memory map |
| 2-2 | ICM-20948 memory map |
| 2-3 | How an operand address is formed |
| 2-4 | Word formats |
| 3-1 | The mode register |
| 3-2 | The DMP3 return stack |
| 3-3 | The DMP3 shifter |
How it runs.
end.Arithmetic.
Conditions and branches.
Two rules.
always and a mode byte at
every target and after every branch.always. .chip mpu6050
.entry 0x400
.org 0x100
k: .dw 0.25q, 0.5q ; constants are words the host loads
.org 0x400
fmode 1 ; the ALU's mode: 32-bit arithmetic
always ; no predicate
fifo ; results to the FIFO
p0bank 1
p0page 0 ; P0 -> k
p1bank 1
p1page 0 ; P1 -> k
add 0,1 ; emit 0.25 + 0.5
int ; tell the host
end
; expect fifo = 30000000
The measurements behind this manual are recorded in ISA2.md.