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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
29 Interrupciones Interrupciones Registros de interrupción 1 y 2 (Gp:) UTXIFGX, flag de transmisión (Gp:) URXIFGX, flag de recepción
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
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
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
33 Fin del asunto
34
(Aplausos aquí)
35 unsigned char RS232RXBufferCount (void) { return (RXCharCount); } RS232RXBufferCount
36 void RS232Init (void) { RXWriteIndex = RXReadIndex = RXCharCount = 0; TXWriteIndex = TXReadIndex = TXCharCount = 0; TXBufferEmpty = BUFFER_EMPTY; // reset empty flag InitUART0(); } RS232Init
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
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 */ }
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
40 UxCTL Registro de control USART
41 UxTCTL UxCTL Registro de control de tx
42 uxbr0 Registro de control de tasa de transferencia
43 bcsctl
44 Uxmctl
45
Página anterior | Volver al principio del trabajo | Página siguiente |