我想通过蓝牙SPP通过Android远程重新编程我的Arduino。第一步是重置ATMEGA微控制器。这是通过切换DTR线在Arduino上完成的。是否有任何API可以从Android环境控制蓝牙SPP控制线?
答案 0 :(得分:1)
一般来说SPP也支持发送或接收控制信号(DTR,DSR,RTS,CTS)我不知道Android知道的任何API或库,但是你只想重置你的控制器。 ..
如果是o.k.为了更改固件,您还可以创建自己的复位命令,该命令可以在UART(通过SPP)上接收。
如果您收到该命令,则可以调用类似
的内容asm("jmp 0x3800");
您必须修改jmp
- 地址以指向引导加载程序。
您也可能希望将中断向量更改为指向引导加载程序。
或启用看门狗并致电
while(1);
这也会自动将中断向量更改为引导加载程序的中断向量并复位所有SFR。 - 但它有点慢,必须在保险丝位中选择引导加载程序的中断向量。
答案 1 :(得分:0)
我意识到这不是你想要的,但是你总是可以用更长的超时时间刷新一个新的引导程序,并在开始编程之前手动按下重置按钮。
新的Arduino引导加载程序(optiboot)适合512B(相对于旧版本的2K),因此您可以为项目提供额外的空间;具有智能启动检测功能,因此只有在按下复位按钮时才会进入启动加载程序;您可以通过编辑源中的看门狗超时值来延长超时(在optiboot.c中的第267行附近)。
// Set up watchdog to trigger after 500ms (changed to 2s!)
watchdogConfig(WATCHDOG_2S);