Soporte del microcontrolador para teletipo

1

Quiero recibir palabras seriales de 5 bits utilizando la UART de hardware de un microcontrolador a 45 baudios. Este es el protocolo básico para máquinas de teletipo. Dado que la velocidad en baudios es de 45, realmente quiero que esto se haga en hardware para no gastar todo el tiempo del procesador en un pin, y para facilitar la programación.

¿Hay microcontroladores que puedan hacer datos en serie de 5 bits en hardware? ¿Existe una implementación de hardware / software razonable que no afecte al procesador?

    
pregunta W5VO

5 respuestas

8

Si tiene suficiente espacio entre caracteres (~ 3 bits de parada adicionales), puede usar el puerto UART de MCU, ya que realmente no hay una diferencia entre un carácter de 8 bits (0x00 a 0x1F) en un UART y un 5 carácter de bits con 4 bits de parada.

De lo contrario, lo mejor sería usar una interrupción de nivel (cambio de pin, etc.) para detectar el borde inicial del bit de inicio, luego configurar un temporizador para interrumpirlo una vez por bit o posiblemente un par de veces para que Puede hacer alguna verificación extra. 45 baudios es realmente lento, por lo tanto, a menos que esté usando más del 95% del tiempo de MCU (o todos sus periféricos), esto no debería causar ningún problema.

El módulo ATART AVR USART admite modos de 5 a 9 bits, por lo que cualquier ATtiny (por ejemplo, ATtiny2313) o ATmega (por ejemplo, ATmega328P) le permitirá hacer esto en hardware, simplificando enormemente su software, ahorrando tiempo.

El divisor de reloj máximo que puede aplicar al UART en un AVR es 2 16 , por lo que si tiene un reloj de 16 MHz, la velocidad más baja a la que se puede ejecutar es de 244 bps sin sistema divisor de reloj Si usa un ATmega, como en un Arduino, el registro de preescala de reloj ( CLKPR , §8.12.2 en la hoja de datos de Atmega48 / 88/168/328) se puede usar para ralentizar el reloj del sistema hasta 256x en tiempo de ejecución , o simplemente programe el fusible CKDIV8 para establecer el valor predeterminado del registro de preescala en 8.

El verdadero factor determinante de lo que debe usar es qué otra cosa está haciendo además de hablar con el TTY. Si va a conectar esto a una computadora, querrá reservar un UART (o, si solo hay 1) para comunicarse con el PC y hacer un software UART si es necesario (como lo mencionó todo el mundo, esto es casi trivial en 45 bps). Si desea presionar un botón y hacer que el TTY haga algo, usar el único UART para eso estaría bien.

    
respondido por el Nick T
3

Las tres primeras hojas de datos que observé muestran que son compatibles con la comunicación en serie de 5 bits. Aquí está la lista:

respondido por el semaj
2

Probablemente tendrás que golpear la interfaz. Cualquier MCU será adecuada.

    
respondido por el Leon Heller
2

Para un funcionamiento asíncrono normal en el AVR ATTiny2313, digamos que se ejecuta a 1.8432MHz establecido:

UBRR  = 0x9FF; //(f_osc / (16 * BAUD)) - 1 = 2559 =
UCSRA = 0x00;  // 1x trasnmit speed, multi-processor mode disabled
UCSRB = 0xD8;  // enable rx and tx complete interrupts, enable tx and rx hardware
UCSRC = 0x00;  // 5 data-bits, 1 stop-bit, no parity bits

Luego implementa las interrupciones completas de RX y TX y deberías estar listo.

    
respondido por el vicatcu
0

Mirando la hoja de datos: LPC17xx es compatible con datos de 5 bits.

SiLabs 80C51F0XX tiene solo 8 y 9 bits.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas