4

我想通过蓝牙 SPP 通过 Android 远程重新编程我的 Arduino。第一步是重置 ATMEGA 微控制器。这是通过切换 DTR 线在 Arduino 上完成的。是否有任何 API 可以从 Android 环境控制蓝牙 SPP 控制线?

4

2 回答 2

1

此外,SPP 通常支持发送或接收控制信号(DTR、DSR、RTS、CTS)我不知道任何适用于 android 的 API 或库,但您只想重置控制器...

如果您可以更改固件,您还可以创建自己的重置命令,该命令可以在您的 UART 上接收(通过 SPP)。

如果您收到该命令,您可以调用类似

asm("jmp 0x3800");

您必须在其中修改jmp-address 以指向您的引导加载程序。您可能还想更改您的中断向量以指向您的引导加载程序。

或启用您的看门狗并调用

while(1);

这也会自动将中断向量更改为引导加载程序的中断向量并重置所有 SFR。- 但它有点慢,并且必须在 Fuse Bits 中选择引导加载程序的中断向量。

于 2014-04-09T15:07:10.110 回答
0

我意识到这不是你想要的,但你总是可以用更长的超时时间刷新一个新的引导加载程序,并在开始编程之前手动按下复位按钮。

新的 Arduino 引导加载程序 ( optiboot ) 适合 512B(与旧的 2K 相比),因此您有额外的空间可用于您的项目;具有智能启动检测,因此只有在按下复位按钮时才进入引导加载程序;您可以通过编辑源中的看门狗超时值来延长超时时间(在 optiboot.c 中的第 267 行附近)。

// Set up watchdog to trigger after 500ms (changed to 2s!)
watchdogConfig(WATCHDOG_2S);
于 2010-12-08T00:49:11.283 回答