Descargar

Modos seriales USART (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

9 Protocolos de comunicación Operación Inicialización y reinicio (reset) Formato del Character Protocolos de comunicación Detección automática de errores Habilitación de recepción Habilitación de transmisión Generación de tasa de transferencia Interrupciones

edu.red

10 (Gp:) Idle-Line Multiprocessor Format

(Gp:) Address-Bit Multiprocessor Format

(Gp:) 2 dispositivos (Gp:) Bit MM=0

(Gp:) 3 o más dispositivos (Gp:) Bit MM=1

Protocolos de Comunicación

edu.red

11 (Gp:) Tiempo de espera de 10 bits o mas (Gp:) Tiempo de espera menor a 10 bits (Gp:) Frame (Gp:) Frame dentro del bloque (Gp:) Frame dentro del bloque (Gp:) Primer Frame dentro del bloque es uan direccion, sigue a un tiempo de espera (Gp:) Expandido

Protocolos de Comunicación: Protocolos de Comunicación:Idle-Line Multiprocessor Format

edu.red

12 Protocolos de Comunicación (Gp:) TXWAKE=1

(Gp:) Escribir character en UxTXBUF

(Gp:) Contenido de UxTXBUF es llevado al registro de TX

(Gp:) Transmite 11 unos

(Gp:) TXWAKE=0 automaticamente

Idle-Line Multiprocessor Format Transmisión de datos

edu.red

13 Protocolos de Comunicación:

(Gp:) Se escribe la dirección en UxTXBUF (Gp:) Registro tiene que estar listo

(Gp:) Se inicia la transmisión con un character ‘dont care’

Idle-Line Multiprocessor Format Transmisión de datos

edu.red

14 (Gp:) Primer frame del bloque es una dirección (Gp:) AD Bit es cero para dato en el bloque

(Gp:) Expandido (Gp:) Tiempo de espera (Gp:) Bloques de frames (Gp:) Tiempo de espera

Protocolos de Comunicación: Protocolos de Comunicación: Address-Bit Multiprocessor Format UxRCTL Usart Receive Control Register

edu.red

15 Protocolos de Comunicación: Control del address bit para transmisión (Gp:) Se escribe en bit TXWAKE

(Gp:) Este es cargado en el address bit del carácter transferido

(Gp:) Se limpia automáticamente

Address-Bit Multiprocessor Format (Gp:) UxTCTL, Usart Transmit Control Register

edu.red

16 Detección automática de errores Operación Inicialización y reinicio (reset) Formato del Character Detección automática de errores Protocolos de comunicación Habilitación de recepción Habilitación de transmisión Generación de tasa de transferencia Interrupciones

edu.red

17 Error de framing Error de paridad

Error de rebalse (receive overrun) Condición de break Detección automática de herores errores (Gp:) UxRCTL Usart Receive Control Register

edu.red

18 Habilitación de recepción Operación Inicialización y reinicio (reset) Formato del Character Habilitación de recepción Protocolos de comunicación Detección automática de errores Habilitación de transmisión Generación de tasa de transferencia Interrupciones

edu.red

19 Habilitación de recepción Habilitación de recepción (Receive Enable) (Gp:) URXEX Habilita o deshabilita recepción de datos

(Gp:) Se guardan en el UxRXBUF

edu.red

20 Habilitación de recepción (Gp:) Character recibido (Gp:) Condición de Interrupción (Gp:) URXEx=0 (Gp:) URXEx=1 (Gp:) URXEx=1 (Gp:) URXEx=0 (Gp:) URXEx=1 (Gp:) URXEx=0 (Gp:) Recepcion Deshabilitada (Gp:) Estado de espera (Recepcion Deshabilitada) (Gp:) Receptor recibe el character (Gp:) Incompleto (Gp:) Bit de inicio inválido

Habilitación de recepción (Receive Enable) (Gp:) UxTCTL, Usart Transmit Control Register

edu.red

21 Habilitación de transmisión Habilitación de recepción Operación Inicialización y reinicio (reset) Formato del Character Habilitación de transmisión Protocolos de comunicación Detección automática de errores Generación de tasa de transferencia Interrupciones

edu.red

22 Habilitación de transmision Habilitación de Transmisión (Transmit Enable) (Gp:) UTxEX habilita o deshabilita transmisión de datos

(Gp:) Se inicia la transmisión escribiendo en UxTxBUF

edu.red

23 (Gp:) Character Transmitido (Gp:) Condición de Interrupción (Gp:) UTXEx=0 (Gp:) UTXEx=1, Se escribe dato al buffer de transmisión (Gp:) UTXEx=1 (Gp:) UTXEx=0 (Gp:) UTXEx=1 (Gp:) UTXEx=0 y última entrada del buffer es transmitida (Gp:) Transmisión Deshabilitada (Gp:) Estado de espera (Transmisor Habilitado) (Gp:) Transmisión Activa (Gp:) Incompleto (Gp:) No se escribe dato en el buffer de transmisión

Habilitación de transmision Habilitación de Transmisión (Transmit Enable) (Gp:) UxTCTL, Usart Transmit Control Register

edu.red

24 Habilitación de transmision Habilitación de Transmisión (Transmit Enable) Para transmitir al buffer UTxEX=1 y UTxIFGX=1 El bit TxEPT=1 indica que la transmisión activa se ha completado, esto evita errores

edu.red

25 Generación de tasa de transferencia Habilitación de transmisión Habilitación de recepción Operación Inicialización y reinicio (reset) Formato del Character Generación de la tasa de transferencia Protocolos de comunicación Detección automática de errores Interrupciones

edu.red

26 Generacion de la tasa Generación de la tasa de transferencia (Baude rate) La tasa máxima=1/3 BRCKL Puede generar frecuencias no estándares Baude rate=BRCLK/N (Gp:) Factor guardado en registros UxBR0 y UxBR1

(Gp:) UxBR0 y UxBR0 , Baud Rate Control Register

edu.red

27 Interrupciones Generación de tasa de transferencia Habilitación de transmisión Habilitación de recepción Operación Inicialización y reinicio (reset) Formato del Character Interrupciones Protocolos de comunicación Detección automática de errores

edu.red

28 Interrupciones Interrupciones Vector de interrupciones para transmisión Vector de interrupciones para recepción Cuando el buffer está listo Cuando ya ha transmitido se resetea Cuando un carácter es recibido y cargado en el buffer Se resetea cuando ha sido leído o la interrupción ha sido servida URxIFGX=1 UTxIFGX=1

edu.red

29 Interrupciones Interrupciones Registros de interrupción 1 y 2 (Gp:) UTXIFGX, flag de transmisión (Gp:) URXIFGX, flag de recepción

edu.red

30 #include < msp430x14x.h> #include "MSP430lib.c" #include "TRcircbuf.c"

void main (void){ /* Inicialización de osciladores (MSP430lib)*/ InitOsc ();

/* Inicialización de puertos Entrada/Salida (MSP430lib) */ InitPorts ();

/* Inicialización de UART (TRcircbuf) */ RS232Init ();

/* Inicialización de LCD (MSP430lib) */ InitLCD (); Ejemplo de programación Ejemplo de Programación

edu.red

31 /* Loop de recepción */ while (1){

/* Espera la llegada de un byte a la entada serial y lo almacena en el buffer*/ /* Este estado es interrumpido por RXInterrupt */ if ( RS232RXBufferCount() ){

/* Lee el caracter del buffer y lo almacena en una variable */ RxB = cRS232GetChar();

/* Prende el led */ STATUS_LED_ON;

Ejemplo de programación(2) Ejemplo de programación

edu.red

32 /* Limpia el LCD */ if (cntr == 0){ SEND_CMD(CLR_DISP); SEND_CMD(DD_RAM_ADDR); }

/* Envia el caracter recibido al LCD */ SEND_CHAR(RxB); if(cntr == 15) SEND_CMD(DD_RAM_ADDR2); if(cntr++ == 31) cntr = 0; STATUS_LED_OFF; } } }

Ejemplo de programación(3) Ejemplo de programación

edu.red

33 Fin del asunto

edu.red

34

(Aplausos aquí)

edu.red

35 unsigned char RS232RXBufferCount (void) { return (RXCharCount); } RS232RXBufferCount

edu.red

36 void RS232Init (void) { RXWriteIndex = RXReadIndex = RXCharCount = 0; TXWriteIndex = TXReadIndex = TXCharCount = 0; TXBufferEmpty = BUFFER_EMPTY; // reset empty flag InitUART0(); } RS232Init

edu.red

37 char cRS232GetChar (void) { char Byte; if (RXCharCount){ /* Verifica si hay char aún disponible */ Byte = RXBuffer[RXReadIndex++]; /* Obtiene byte del buffer */ RXReadIndex &= RXBUFSIZE-1; /* Indice de buffer circular */ RX_INT_DISABLE; /* Inhabilita interrupción (IE2) */ RXCharCount–; /* Lectura de un char decrementa la cuenta */ RX_INT_ENABLE; /* Hecho, se habilita interrupción(IE2) */ return (Byte); } else return (0); /* si no hay nuevo char */ } cRS232GetChar

edu.red

38 InitPorts void InitPorts(void) {

P1SEL = 0; P1OUT = 0; P1DIR = BIT5 | BIT6; /* enable only Relay outputs */

P2SEL = 0; P2OUT = 0; P2DIR = ~BIT0; /* habilita P2.0 es entrada */

P3SEL |= BIT4 | BIT5; /* enable UART0 */ P3DIR |= BIT4; /* enable TXD0 as output */ P3DIR &= ~BIT5; /* enable RXD0 as input */

P4SEL = 0; P4OUT = 0; P4DIR = BIT2 | BIT3; /* only buzzer pins are outputs */

P6SEL = 0x80; P6OUT = 0; P6DIR = 0x00; /* all output */ }

edu.red

39 void InitUART0 (void) /* Inicialización UART0 */ { BCSCTL1 & = ~DIVA0; BCSCTL1 | = DIVA1; /* ACLK = XT1 / 4 */ UCTL0 = CHAR; /* 8 data bits, sin paridad, 1 bit de detencion*/ UTCTL0 = SSEL0; /* se elige ACLK como reloj para UART */ U0BR0 = 0xd0; /* 2000000:9600=208 U0BR1 = 0x00; UMCTL0 = 0x00; /* sin modulación*/ ME1 | = UTXE0 | URXE0; /* habilitan modulos de tx y rx UART */ P3SEL | = 0x30; /* define bits de tx y rx P3.4 P3.5 */ P3DIR | = BIT4; /* habilita TXD0 como salida*/ P3DIR & = ~BIT5; /* habilita RXD0 como entrada*/ IE1 | = URXIE0; /* habilita USART0 RX interrupcion*/ IE1 | = UTXIE0; /* habilita USART0 TX interrupcion */ _EINT(); /* habilita interrupción*/ } InitUART0 InitUART0

edu.red

40 UxCTL Registro de control USART

edu.red

41 UxTCTL UxCTL Registro de control de tx

edu.red

42 uxbr0 Registro de control de tasa de transferencia

edu.red

43 bcsctl

edu.red

44 Uxmctl

edu.red

45

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente