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

Android上的蓝牙控制信号(DTR、DSR、RTS、CTS),android,bluetooth,arduino,avr,atmega,Android,Bluetooth,Arduino,Avr,Atmega,我想通过Android通过蓝牙SPP远程重新编程我的Arduino。第一步是重置ATMEGA微控制器。这是通过切换DTR线路在Arduino上实现的。是否有任何API可以控制Android环境中的蓝牙SPP控制线路?我意识到这不是您想要的,但您可以随时刷新一个新的引导加载程序,使其超时更长,并在开始编程之前手动按下重置按钮 新的Arduino bootloader()适合512B(与旧的2K相比),因此您的项目有额外的可用空间;具有智能引导检测功能,因此只在按下重置按钮时才进入引导加载程序;您可

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

我意识到这不是您想要的,但您可以随时刷新一个新的引导加载程序,使其超时更长,并在开始编程之前手动按下重置按钮

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


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

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

如果你收到这个命令,你可以调用

asm("jmp 0x3800");
您必须修改
jmp
-地址以指向引导加载程序。 您还可能希望更改中断向量以指向引导加载程序

或者启用您的看门狗并呼叫

while(1);

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

有趣。。。是否可以自定义我的程序以识别特殊命令并手动输入引导加载程序?例如,一旦引导加载程序超时等待并开始运行用户程序,是否可以重新输入引导加载程序?我想,通过连接到重置的输出引脚手动触发重置是完全可能的,这将达到预期的效果。应该可以,但你必须在所有草图中包含重置代码。重置引脚处于低激活状态,因此我只需将该引脚配置为输入,然后将输出0重置。这种方法可以工作,但会遇到这样的问题:如果草图未能实现它,或以破坏此实现的方式崩溃(不触发看门狗重置),然后,可能无法通过此接口进入引导加载程序来修复它。
while(1);