Android上的蓝牙控制信号(DTR,DSR,RTS,CTS)

时间:2010-11-22 03:22:54

标签: android bluetooth arduino avr atmega

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

2 个答案:

答案 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);