问题标签 [mpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
135 浏览

cortex-m3 - 复位后 MPU 禁用和启用序列

一旦系统启动并且MPU被配置并且无法使用,在处理器复位后如何启用MPU?再次启用 MPU 需要考虑哪些步骤?

0 投票
1 回答
187 浏览

arduino - 有人用 Arduino Fio 和 MPU 6050 吗?

我在 Arduino Fio 上使用 MPU 6050 DMP 时遇到问题。我一直在使用https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050提供的代码,我很难让它正常工作。我最大的问题是由于某种原因它无法识别某些库,有谁知道如何解决这个问题。

0 投票
0 回答
521 浏览

embedded - 理解ARM中Mpu的编程[M3]

我试图了解它是如何与 Mpu 的别名寄存器一起工作的。

所以这是我的理解:

A.
每个区域都有单独的 RBAR 和 RASR 寄存器。因此,对于 8 个区域,硬件中总共有 16 个寄存器,但对用户不可见,即它们不存在于总线上供用户访问。

这是来自 ARMv7 的一行。
The MPU Region Number Register selects the associated region registers

因此,当我写入任何在 sfr 总线上可供用户使用的区域基址寄存器 [RBAR、RBAR_A1、RBAR_A2 或 RBAR_A3] 时,硬件首先会在内部检查选择了哪个区域并根据选择的区域编号,它将写入任何 [RBAR、RBAR_A1、RBAR_A2 或 RBAR_A3] 的值写入所选区域的内部寄存器。

上述理解正确吗?

B.
此外,在别名寄存器上,当用户写入上述任何寄存器时,它们都具有相同的值,例如:假设我写 RBAR_A1 = 0x40000013 然后在此之后我读取 RBAR 寄存器然后我得到 0x40000013 和RBAR_A2、RBAR_A3 也一样。

上面的也是正确的吗?

如果我对它如何与 MPU 寄存器一起工作的理解正确,请告诉我。

0 投票
3 回答
6099 浏览

arduino - Arduino 在 x 秒后冻结

我正在使用 I2C 从 arduino 以 25Hz 的采样率从 MPU-6050 惯性测量单元读取数据,并且工作正常。然后我添加了第二个 MPU-6050,我也以 25Hz 的采样频率读取它。它们有不同的地址,所以我可以在 I2C 中访问它们。但是,由于我添加了第二个,我的 arduino 停止似乎在 1000 到 5000 个 loop() 调用后冻结,冻结在循环中的某个地方(每次都不同,与我通过将字符发送到与 PC 的串行连接进行调试所观察到的情况不同)。在每个循环中,我从其中一个 MPU-6050 读取数据。我的代码使用 Jeff Rowberg 的库,灵感来自http://forum.arduino.cc/index.php?PHPSESSID=t6lmv7i431eqeaf05ui619q2h6&topic=118937.msg1368958#msg1368958中的代码,它提出了同样的问题:

串行输出没有报告错误。当 Arduino 冻结时,闪烁的 LED(代码结束)仍然亮着。是冻结,还是崩溃?我该如何解决?

0 投票
1 回答
1727 浏览

arduino-uno - Arduino/MPU6050/AdafruitMotorShieldV2:打开电机时脚本挂起/冻结

一般来说,我是机器人和电子产品的新手,所以请不要以为我尝试了任何你认为显而易见的东西。

我正在尝试创建一个基本上可以自行运行的推车(简单的 AI 例程来避开障碍物,从 pt.A 到 pt.B 拐角处,跟随路线等)。我正在将 Adafruit Arduino Uno R3 与 Adafruit Motor Shield v2 和 MPU-6050 放在一起。我正在使用电机屏蔽上的“面包板”作为电路,在那里焊接所有东西。

我可以使用自己的脚本让所有部件独立工作:Motor Shield 使用 Adafruit 库按预期驱动 4 个电机;我正在使用 MPU-6050 的“JRowberg”库,并从示例 MPU6050_DMP6.ino 开始,只要推车电机关闭,它就可以正常工作。我对下面示例脚本的唯一更改是电机启动和一些简单的电机命令。

只要我关闭关闭电机的开关,一切似乎都很好:它会连续输出到串行窗口,其中包含欧拉数据,我认为这是正确的。然而,在我打开电机电源几秒钟后(车轮开始转动),它只是挂起/冻结:串行窗口的输出停止(有时在中线),车轮继续转动他们最后一次变化的速度。有时我会看到“FIFO 溢出”错误,但并非总是如此。有时我会在某些浮点值挂起之前看到“nan”,但并非总是如此。

我尝试过的一些事情,所有这些都改变了注意事项: * 我已经将 MPU-6050 板换成了同一制造商的另一块板。* 我尝试使用带状电缆将 MPU-6050 从电机上移开。* 我已经使用 JRowber 的建议更改了 I2C 时钟(更改 .h 文件并更改 TWBR 变量的值),但我认为我没有尝试过所有可能的值。* 我已经在 AFMS.begin() 命令中更改了 MotorShield 的速度,但同样,可能还有其他值我没有尝试过,而且我不确定它和 TWBR 值需要如何同步成为。

还有其他一些事情,都无济于事。

下面是一个对我来说失败的示例脚本:

0 投票
1 回答
4056 浏览

magnetometer - 从 MPU9150 访问磁力计数据的问题

输出:-我得到的是读取每个寄存器(对应于磁力计)时的 0xFF。另一方面,我可以完美地访问加速度计和陀螺仪的寄存器。我已在禁用 i2c 主模式和启用 i2c 旁路模式的情况下初始化系统。以下是我用来初始化系统的代码:-

('single_byte_write(address,data) 将数据字节写入寄存器,'address' 到从机地址为 0x69')

我访问了加速器的寄存器。和陀螺。如下:- single_byte_read(0x75,wia_mpu); 它返回 0x68,它作为 who_i_am 寄存器是正确的。但是当我尝试访问磁力计寄存器时:- single_byte_read_compass(0x00,wia_compass); 它返回 0xFF 而它应该返回 0x48。

为了确保 single_byte_read_compass()/single_byte_write_compass() 正常工作,我使用了这些函数并更改了从地址(从“0x0C”到“0x69”)来访问加速寄存器。和陀螺。它工作正常。

('single_byte_read()'和'single_byte_read_compass()'的区别只是前者使用从地址为'0x69',而后者使用'0x0C'作为从地址。我也试过'0x0D','0x0E ' 和 '0x0F' 作为从地址,但输出保持不变。)

我还确定了 MPU9150 是否处于直通模式。我在示波器的帮助下检查了引脚“ES_DA”(即 pin6)和 SDA(即 pin24)的输出,结果完全相同,启用了旁路模式。在禁用主模式和禁用旁路模式的情况下,“ES_DA”的输出始终为零。

我还尝试了与上述相同的过程,不仅是一个,而是多个 MPU9150,但输出保持不变,因此代码很可能存在一些问题。

0 投票
0 回答
389 浏览

linux-device-driver - 如何从 Google Glass 获取 RAW IMU 数据?

我正在尝试从 Google Glass IMU 模块获取 RAW 加速和陀螺仪数据。我在 NDK 中尝试了一个Sensormanager 模块,但它有时会通过一些奇怪的偏差调整来提供输出。所以我试图从驱动程序的虚拟文件系统中读取。

  • 当我尝试以一次性模式从 读取时/sys/bus/iio/devices/iio:device0/,我正在获取原始数据,但有时它会丢失一些数据(与传感器管理器输出相比)。
  • 当我尝试以突发模式读取时/sys/bus/iio/devices/iio:device0/,它显示“ /dev/iio:device0: Device or resource busy

那么,有没有其他方法可以在不丢失任何数据的情况下读取原始数据,或者我可以配置传感器管理器以提供原始数据而不进行任何偏差调整?

0 投票
1 回答
520 浏览

gcc - 使用 Atmel Studio 6 为 Atmega2560(带有 HMC5883L、MPU6050 和 I2Cdev 库)构建项目时出错

这是我的代码:

它可以在 Arduino IDE 上运行。这是 Atmel Studio 6 中的警告(2 个未初始化的警告和 4 个由 I2Cdev 库生成的警告),没有错误。

这是输出:

谁能帮我?非常感谢!!

0 投票
1 回答
1062 浏览

arduino - 从 MPU6050 DMP 获取静态值

我在从 MPU9050 DMP 获得清晰而不是跳跃值时遇到问题。我使用了 Jeff Rowberg 的代码。问题是当我使用代码时一切都很完美,YPR 非常流畅。但是当我在我的程序中延迟使用它时,我的值会随着时间的推移而跳跃。根据延迟,跳跃值会有所不同。

我使用了延迟,因为我正在通过统一读取串行值,而统一需要在 Arduino 端稍稍延迟来读取数据。有人可以告诉我问题是什么以及如何解决吗?

非常感谢。

0 投票
1 回答
1275 浏览

c - ARM Cortex M4:如果内部中断,则从非特权模式测试

我正在使用以下 CPU:Stellaris LM4F120H5QR 微控制器。这个 CPU 包含一个 MPU,我想利用这个东西。但是在非特权模式下,许多寄存器不再可访问,而且我似乎找不到指示系统处于中断内并且可以从非特权模式读取的寄存器。

我需要这个,因为当从中断调用时,有些代码可能会采用不同的路径。如果我在非特权模式下进行错误检查,系统将立即跳转到访问故障。

那么如何检查一个函数是否从中断中调用,并且在非特权模式下调用时不会产生错误呢?