Comunicação serial (USART) com diferentes tamanhos de quadro usando microcontrolador AVR- (Parte 14/46)

Comunicación en serie (USART) con diferentes tamaños de bastidor mediante microcontrolador AVR (Parte 14/46)

El artículo anterior explica la comunicación en serie mediante transferencia de datos de 8 bits. El microcontrolador AVR también admite la transferencia de datos en serie con tamaños de cuadro de 5, 6, 7 y 9 bits de datos. El tamaño del marco de datos se puede ajustar según la aplicación. Por ejemplo, considere un sistema que necesita transmitir sólo códigos ASCII como datos. En este caso, el tamaño de la trama de datos de 7 bits es suficiente porque la longitud de los datos del código ASCII es igual a 7 bits. Esto hará que el sistema sea más eficiente, ahorrando tiempo en un período de reloj en cada transmisión de trama de datos. Este artículo explica la transferencia de datos en serie con diferentes tamaños de marco.
El tamaño del marco de datos se puede seleccionar configurando los bits UCSZ (Tamaño de caracteres USART). El registro UCSRC contiene bits UCSZ (1:0) y UCSRB contiene bits UCSZ2. La siguiente tabla muestra la configuración de bits UCSZ correspondiente a diferentes tamaños de tramas de datos.
Configuração de bits do UCSZ para comunicação serial de diferentes tamanhos de quadros de dados
Fig. 2: Configuración de bits UCSZ para comunicación en serie de diferentes tamaños de tramas de datos
Cronograma:
Caso 1: Tamaño de trama 5, 6 y 7 bits:
Estos tres tamaños de trama se pueden seleccionar programando solo los bits UCSZ1 y UCSZ0. No es necesario programar el bit UCSZ2 porque el valor predeterminado de este bit es cero.
Por ejemplo: UCSRC= (1<
// Sin paridad, 1 bit de parada.
Los pasos de programación para enviar y recibir datos seguirán siendo los mismos que los utilizados para transmitir y recibir datos de 8 bits. Para obtener más información, los lectores pueden consultar el artículo anterior sobre comunicación en serie .
Programa de prueba para recepción y transmisión de 6 bits:
Se escribe un programa de prueba para la comunicación de datos de 6 bits entre el microcontrolador y la PC. En este experimento, la entrada se obtiene del usuario a través de un teclado. Los datos correspondientes se envían al microcontrolador a través del puerto COM de la PC. El microcontrolador recibe los datos y los devuelve al puerto COM de la PC. HyperTerminal se utiliza para configurar el puerto COM para que sea compatible con este experimento.
Los siguientes pasos se utilizan para configurar los puertos COM:
1. Configure la velocidad en baudios = 9600 bps, bit de datos = 6, paridad = ninguna, bit de parada = 1.

Configurar portas COM para comunicação serial

Fig. 3: Configurar puertos COM para comunicación serie
2. Seleccione la casilla de verificación correspondiente a Echo como se muestra en la siguiente imagen para observar la transmisión y recepción de datos.

Salida:
El siguiente resultado se recibe cuando se presionan 1 2 3 4 5 6 teclas ABCDEFG en el teclado.
 Saída de comunicação serial entre AVR e PC
Fig. 5: Salida de comunicación serie entre AVR y PC
Como se muestra en la imagen de arriba, se recibe la salida adecuada cuando se presionan las teclas numéricas, pero cuando se presionan las teclas alfabéticas, aparece algún símbolo. Este resultado inesperado se recibe porque estamos trabajando con un tamaño de trama de datos de 6 bits. Si se selecciona la trama de datos de 6 bits, los dos bits más significativos se enmascararán a cero al leer la UDR. El código ASCII de '1' es 0x31 (0011 0001). Si se enmascaran los dos bits más significativos, queda 11 0001, que también es igual a 0x31. El tamaño de los códigos ASCII para todos los valores numéricos es de 6 bits, por lo que no habrá problemas al recibir y transmitir valores numéricos en modo de 6 bits. Pero el valor ASCII de 'A' es 0x41 (0100 0001). Si se enmascaran los dos bits más significativos, quedará 00 0001, que es igual a 0x01, por lo que se imprimirá algún símbolo inusual.
Caso 2: tamaño de trama de 9 bits:
La comunicación de datos de 9 bits se puede utilizar en la comunicación multiprocesador. Para seleccionar la trama de datos de 9 bits, todos los bits UCSZ se establecen en 1 (UCSZ (2:0) = 7).
Por ejemplo:
UCSRB=(1<
UCSRC=(1<
1. Transmisión de datos de 9 bits:
Los datos de 9 bits deben almacenarse en un buffer antes de la transmisión. Dado que el tamaño de los datos del registro UDR es de solo 8 bits, el noveno bit debe almacenarse en el bit TXB8 del registro UCSRB antes de que el byte inferior se almacene en la UDR.
void usert_tx(unsigned int serial_data) //transmisión de función
{
mientras(!(UCSRA & (1< UCSRB &= ~(1< si (serial_data y 0x100) UCSRB =(1< UDR=datos_serie; //datos colocados en UDR }
2. Recepción de datos de 9 bits:
El noveno bit debe leerse del bit RXB8 antes de leer el byte inferior. También se debe verificar el estado de FE (Error de trama), DOR (Sobreejecución de datos) y PE (Error de paridad) para verificar los datos.


 unsigned int usert_rx(void) // función para recepción
{
mientras(!(UCSRA & (1<
si(UCSRA & ((1<
devolver -1;
UCSRB =(UCSRB>>1)&0x01; //filtrar 9 bits
retorno ((UCSRB<<8) UDR); // valor de retorno
}

Código fuente del proyecto

###


 // Programa para comunicación serial (USART) con diferentes tamaños de marco usando microcontrolador AVR
#definir FRECUENCIA 12000000 #incluir #incluir #incluir #definir baudios 9600 #definir ubrr_value (((FREQ/16)/baudios)-1) anular usert_init; void usert_tx (carácter sin firmar); uso de caracteres sin firmart_rx(void); int principal (vacío) { int datos_serie; usuariot_init; mientras(1) { serial_data=usart_rx; usuariot_tx(datos_serial); } } anular user_init // inicialización USART { UBRRH=(uint16_t)(ubrr_value>>8); //establece el valor UBRR UBRRL=(uint16_t) valor_ubrr; UCSR=0x00; UCSRB=(1< //habilitar transmisión y recepción UCSRC=(1< // Modo asíncrono, tamaño de trama = 6 bits, sin paridad, 1 bit de parada. } void usert_tx (carácter sin firmar serial_data) //función para transmitir bit { mientras(!(UCSRA & (1< // esperar por la UDR vacía UDR=datos_serie; //almacenamiento de datos en UDR } uso de caracteres sin firmart_rx(void) { mientras(!(UCSRA & (1< //esperar hasta que se complete la recepción devolver UDR; //recibe valor de la UDR }

###

Diagramas de circuito

Diagrama de circuito de comunicación serie-USART con diferentes tamaños de bastidor utilizando el microcontrolador AVR

Componentes del proyecto

  • ATmega16
  • LCD
  • MAX232

Vídeo del proyecto

Conteúdo Relacionado

En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
ESP32-CAM es un módulo de cámara compacto que combina...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Probablemente se haya encontrado con el término " resistencia...
Probablemente tenga un aislante de soporte si ha notado...
Probablemente haya visto un aislante colocado en postes de...
Probablemente hayas visto aisladores de grillete entronizados en postes...
Probablemente hayas experimentado situaciones en las que controlar un...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.