¿Qué sucede después de que DTR / RTS sea enviado a una placa Arduino basada en FTDI?

Estoy trabajando en un boceto para permitir la carga desde un dispositivo Android a una placa Arduino, y funciona para Duemilanove (basado en FTDI ) y Arduino Uno (basado en ATmega ) al probar PC / Arduino usando rxtx (Java puro).

Pero no funciona cuando se utiliza la biblioteca USB-Android, ya que los métodos setDTR / setRTS aún no se han implementado.

Los controladores Android de FTDI permiten el envío de señales setDTR / setRTS, pero falla al enviar / leer datos después de ella.

Así que el problema está en la API USB de Android y no puedo averiguar qué está mal.

¿Qué ocurre con las placas Arduino basadas en FTDI después de que DTR / RTS se conmuten?

Creo que el dispositivo se restablece y espera comandos bootloader ( STK500 ) durante ~ 50-250 ms. ¿Estoy bien?

Estás en lo correcto. La razón de esto es lo que se llama Bootloader.

En su estado más barebones, los microcontroladores (en adelante, uCs) en los que se construye Arduinos pueden programarse mediante el método de programación en el sistema (ISP), que es una implementación particular del protocolo SPI . Lo único que necesitamos saber es que esto no es serial o USB.

Para que los chips AVR (y los tableros Arduino) sean programables vía Serial / USB, cargamos un programa llamado Bootloader (vía ISP) en el chip. El gestor de arranque lee los datos del programa a través del enlace serie y lo escribe en flash. Si no hay ningún programa que se va a cargar, el cargador de arranque le da al programa cargado el control. Así que el cargador de arranque sólo podría estar activo después de encender o restablecer: después de que se ejecuta el programa que cargó y nunca se vuelve a activar de nuevo.

La mayoría de los cargadores de arranque están configurados para buscar datos de programación sólo después de un reinicio, y la razón es que esperar los datos en serie implica un tiempo de espera: hay que esperar un tiempo (digamos 1/3/5/10 segundos) para ver si Hay programa que se cargan y luego cargar el programa si se está enviando. Si el cargador de arranque buscaba datos de programación cada vez que se encendía un Arduino, su Arduino sólo se activaría con un retraso, que se consideró indeseable. Así que el gestor de arranque sólo se activa después de un reinicio.

Podría ser molesto obligar al usuario a tener que empujar el pin de reinicio cada vez antes de que quisieran programar su Arduino, y, además, empezar a enviar los datos en serie inmediatamente después del restablecimiento (o pueden perder la ventana de tiempo de espera), por lo que el Gente inteligente en Arduino se le ocurrió un truco: utilizar la señal DTS para activar el restablecimiento y después de enviar los datos. Así que su Arduino (si no es antiguo) se configura para restablecer al recibir señal DTS.

La respuesta es que la placa se restablece. El esquema se hace en la forma en que se restablece la placa (RTD / DTR está conectado al pin de reinicio del microcontrolador de alguna manera).

  • Utilizar cámara USB en la aplicación de Android
  • No se pueden obtener los elementos en la herramienta uiautomator cuando la aplicación se ejecuta en el dispositivo
  • Comuníquese con el lector de tarjetas inteligentes a través del host USB de Android
  • Nexus 5x no aparece en adb en Win7
  • HP TouchPad USB conduce en Android
  • USB Accessory API en el Samsung Galaxy S2 Android
  • Comunicación por cable de datos Usb en Android
  • Android host USB leer desde el dispositivo
  • ¿Cuál es exactamente su valor de retorno de openAccessory?
  • ¿Es posible compartir mi conexión a internet de pc a android via usb?
  • Acceso a los formatos FAT32 y NTFS USB Pendrive de la tableta android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.