AVR USART espera la respuesta de AVR para continuar la transmisión de texto

2

AVR USART espera la respuesta de AVR para continuar el protocolo

Estoy haciendo un proyecto senior, y necesito enviar un archivo de texto grande línea por línea a un AVR (atmega32) que controlará un piano usando ~ 36 solenoides y registros de cambios. Esto debe hacerse automáticamente y muy rápido. No puedo ingresar manualmente el texto en el terminal. Necesito enviar 3 cadenas, línea por línea a un AVR y esperar entre cada línea una confirmación para continuar con el AVR.

  • El archivo de texto es un archivo midi convertido que contiene 3 información útil (la hora del evento, la nota y el estado (nota de prensa o descompresión). El archivo de texto tiene este aspecto:
      

    213, 25, ON
      321, 25, OFF
      521, 36, ON - > que representa tocar la Nota C en el tiempo = 521 ms

  •   
  Donde la primera cadena es la hora del evento, la segunda es la nota y la tercera es el estado de la nota

El protocolo debería tener este aspecto:

  • La PC envía 3 cadenas al AVR. Así que un total de 3 transferencias USART.
  • La PC espera a que AVR envíe un agradecimiento para continuar transfiriendo la siguiente línea de texto
  • El AVR reproduce el "evento" en el piano y al final envía una confirmación a la PC para enviar las siguientes líneas de texto

¿Cómo se puede lograr esto?

¿Por qué hago esto?

El problema es que no puedo almacenar todo el archivo de texto en una matriz porque el AVR es demasiado pequeño (la memoria más grande es de 512Kb si recuerdo bien) Necesito transmitir el archivo de texto usando el terminal (Hyperterminal) línea por línea. PERO cómo enviar una línea usando el terminal, espere hasta que la atmega finalice el proceso - > ¿Enviar una confirmación a la PC para transmitir la siguiente línea?

    
pregunta Napster

1 respuesta

1

Lo que necesita es "control de flujo" o "handshaking".

Para USART, puede usar el control de flujo de hardware con RTS / CTS , pero muchos USART Las implementaciones de hoy las omiten. Si ha terminado su hardware y sin estos pines conectados, puede probar " control de flujo de software " con "XON / XOFF ", porque estos dos códigos no aparecerán en su archivo de texto (no son caracteres imprimibles). Así que úsalos ya que el control de flujo es posible. Pero en comparación con el control de flujo de hardware, el último puede ser un poco más lento.

La principal limitación con usted es que su MCU no es lo suficientemente fuerte como para manejar todo el archivo, por lo que analizar el archivo en el PC es razonable.

Si no desea sumergirse en un programa USART complicado en la PC, puede probar Tera Term , un "Hyperterminal" killer de código abierto, programable y práctico.

    
respondido por el diverger

Lea otras preguntas en las etiquetas