Управляющие сигналы Bluetooth (DTR, DSR, RTS, CTS) на Android - PullRequest
4 голосов
/ 22 ноября 2010

Я хотел бы удаленно перепрограммировать свой Arduino через Android через Bluetooth SPP. Первый шаг - сброс микроконтроллера ATMEGA. Это достигается на Arduino переключением линии DTR. Есть ли API для управления линиями управления Bluetooth SPP из среды Android?

Ответы [ 2 ]

1 голос
/ 09 апреля 2014

Кроме того, SPP в целом поддерживает отправку или получение управляющих сигналов (DTR, DSR, RTS, CTS). Я не знаю ни API, ни библиотеки для Android, но вы просто хотите сбросить настройки контроллера. ..

Если это ок. чтобы изменить прошивку, вы также можете создать собственную команду сброса, которую можно получить на вашем UART (через SPP).

Если вы получите эту команду, вы можете вызвать что-то вроде

asm("jmp 0x3800");

, где вы должны изменить jmp -адрес, чтобы он указывал на ваш загрузчик. Вы также можете изменить вектор прерывания так, чтобы он указывал на ваш загрузчик.

Или включите сторожевой таймер и позвоните

while(1);

Это также автоматически изменит вектор прерывания на вектор прерывания загрузчика и сбросит все SFR. - Но это немного медленнее, и вектор прерывания загрузчика должен быть выбран в блоках предохранителей.

0 голосов
/ 08 декабря 2010

Я понимаю, что это не то, что вам нужно, но вы всегда можете прошить новый загрузчик с более длительным тайм-аутом и вручную нажать кнопку сброса перед началом программирования.

Новый загрузчик Arduino ( optiboot ) умещается в 512B (по сравнению с 2K старого), поэтому у вас есть дополнительное место для ваших проектов; имеет интеллектуальное обнаружение загрузки, поэтому он входит в загрузчик только при нажатии кнопки сброса; и вы можете увеличить время ожидания, отредактировав значение времени ожидания сторожевого таймера в источнике (около строки 267 в optiboot.c).

// Set up watchdog to trigger after 500ms (changed to 2s!)
watchdogConfig(WATCHDOG_2S);
...