问题标签 [rp2040]
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.
arm - Cortex-M0+ 不响应 PendSV
我在 Raspberry Pi Pico(RP2040,Cortex-M0+ 内核,使用 JLink SWD 通过 VSCode cortex-debug 进行调试)上运行,我看到有关 PendSV 的奇怪行为。
紧接着,SVCall 异常处理程序通过 ICSR 寄存器请求 PendSV。但是在异常返回时,不是尾链 PendSV,而是执行返回到调用代码并继续非异常执行。
ICSR 寄存器始终显示待处理的 PendSV,即使在重复执行线程代码指令时也是如此。系统处理程序优先级全部为零,IRQ 优先级较低。
根据 ARMv6-M 参考手册,PendSV 不能被禁用。
那么,我错过了什么会导致这种行为?
编辑添加:
也许这是一个调试器交互?JLink 软件 (v4.95d) 仍处于测试阶段...
我看到调试器实际上可以禁用 PendSV 和 Systick - C1.5.1 调试步进:“可选地,调试器可以将 DHCSR.C_MASKINTS 设置为 1 以防止发生 PendSV、SysTick 和外部可配置中断。这被描述为屏蔽这些中断. C1-326 页的表 C1-7 总结了指令步进控制。
micropython - 在 Raspberry Pi Pico 上终止 micropython 中的第二个线程
我使用 RP2040 芯片的两个内核。主要的一个运行主循环,第二个处理 LCD 显示。我在线程上开始第二个,比如
taskLCD 每半秒更新一次 LCD。
有时当我重新启动程序时,第二个核心仍在工作并且有一条消息:
OSError:core1 正在使用中
有没有办法提前杀死这个第二个核心进程并消除这个消息?阻止它的唯一方法是完全关闭/断电芯片。但是,在这种情况下,所有信息都丢失了,我不知道发生了什么,是什么导致了错误。
c - PICO 挂在 micropython 对象创建上
我最近开始为 raspberry pico 和 bme280 传感器开发一个小型驱动程序。我想使用用 C 编写的官方 bosh API,因此决定使用 micropython C api 用 C 编写所有代码来编写用户模块。我设法将我的代码编译成一个 UF2 文件,当我尝试使用help('modules')
. 当我导入我的模块时,会显示带有驱动程序代码的类,dir(mymodule)
但是当我尝试创建一个对象时,连接到 PICO 的终端会挂起并且不再响应。
我认为这个问题依赖于初始化过程中的某个地方,因为它没有更进一步......也许 micropython 在幕后正在做一些我忽略的事情。没有太多关于用 C 编写用户模块的文档......任何帮助/提示/想法都非常感谢:)
编辑+回答:
是的,我得到了要构建的示例,所以我开始将我的代码精简到最低限度,使其与示例几乎相同,所以我发现了错误......问题是我使用了不同的名称对于声明中的类类型:BME280_class_type
和定义中:BME280_type
raspberry-pi - SparkFun RP2040 和 MicroPython
我是一名软件工程师,正在为一个辅助项目开发微控制器系统。我使用的微控制器是 SparkFun ProMicro(基于 RP2040 板)。我正在尝试闪存板,以便我可以将数据写入板载闪存。
我在网上找到的所有教程都建议从引导模式开始,拖放 UF2 文件,然后完成!
当我这样做时,微控制器会从我的计算机中弹出。这是注定要发生的吗?它只是重新启动然后不在引导加载程序中重新启动?
一旦我安装了 MicroPython,我就开始编写代码并将其闪烁到板上。
我正在使用识别正确板(尽管是 PICO)的 Thonny IDE,然后将以下文件保存为 main.py(取自 RPI 基金会)。它打印切换,我相信输出显示它是从板上打印的,但板上的灯没有闪烁。(下面的代码和输出)
我认为引脚排列可能与此板和 PICO 不同,但一些研究表明它们都使用引脚 25 进行 LED 控制。
所有这一切让我相信我走在正确的道路上,但我认为我错过了一些在教程中被视为理所当然的东西。我的最终目标是将任意文本数据写入闪存,但我知道它只需要大约 8000-10,000 次写入才会变得不可靠,所以我想在使用其中一些之前测试我是否可以编写工作代码。
有什么我遗漏的东西,还是我没有以正确的方式思考这个问题?
arduino - Arduino NANO RP2040 Connect 串行直通不起作用
是否可以像使用 Arduino Nano Iot 一样对 Wifinina 模块上的 ESP32 芯片进行串行直通?
我尝试了示例草图,但似乎没有实现 RP2040 连接。工具目录中的 SerialPassthrough Sketch 不适用于 RP2040 连接。当我尝试在闪过的 arduino 上使用 esptool 时,我得到了写超时,所以直通显然不起作用
python - (Micro)Python UART 响应以“#Eg[”结尾或添加字符
当卡片出现在 NFC 读卡器上时,我会从val
b'\xff\x00\x06\x83\x02\x01#Eg['
这是对 的回复checkCardCmd
。我不知道为什么它以#Eg[
未找到卡的回复结束,因为b'\xff\x00\x02\x83N\xd3'
请注意N
第 4 个字节上的字符,应该是x83
.
波特率是正确的,并且在 NodeJS 中使用类似的代码,我可以从 UART 获得正确的响应,而无需额外N
或#Eg]
我在这里想念什么?
wifi - 无法将在 Micropython 上运行的 Nano RP2040 Connect 连接到 WiFi
我有一个带有 Micropython 的 Nano RP2040 Connect。我需要将它连接到 WiFi。Micropython 文档说我需要导入“网络”模块,但是当我尝试导入它时,我得到了no module named 'network'
错误。我假设该模块仅适用于 ESP32 和 ESP8266 板。如果有人在 Micropython 上使用 Nano RP2040 Connect 连接到 WiFi,请帮助我。
PS:我试过 CircuitPython,效果很好,但是我需要在我的 RP2040 上运行 Tensorflow Lite 模型,而且 CircuitPython 没有运行 TFLite 的库,这与 Micropython 不同。
c++ - 在单独的线程上运行第二个二进制文件而不覆盖第一个二进制文件
我目前正在为一个学校项目开发一个树莓派 pico 驱动的游戏控制台,我想添加的功能之一是能够从 microSD 运行已编译的程序(通过外部组件添加)。
我想在一个单独的线程上运行这个二进制文件,该线程由一个引导加载程序创建,该程序被闪存到 pico 的板载芯片上。二进制文件将被读入 uint8_t 数组缓冲区,我如何在不停止引导加载程序的情况下在其自己的唯一线程上运行此二进制文件?
一些基本的说明;我想让第二个二进制文件遵循与加载到 pico 上的典型二进制文件相同的格式,因此默认的 cmake 输出应该作为第二个二进制文件工作。
python - MicroPython hex 函数中是否存在内存泄漏
我为 raspberry PI Pico 编写了一个小型 MicroPython 程序。
该程序创建一个线程,该线程递增一个计数器并以十六进制打印该值。
该程序总是在0x16ea
.
如果我不使用十六进制函数,则代码可以正常工作。
稍微挖掘micropython.mem_info()
一下,看起来 hex 函数有内存泄漏。还是我做错了什么?
microcontroller - Pi PICO- 从 XIP QSPI 闪存启动
我正在尝试从外部 NOR 闪存模块 (Diligent Pmod SF3) 启动 Pico,但我找不到任何有关如何配置引导加载程序的信息。我查看了文档,但对如何实际使用这些功能感到困惑。任何帮助,将不胜感激。