Serie Asincrona en C
-
Upload
alejandro-guzman -
Category
Documents
-
view
678 -
download
1
Transcript of Serie Asincrona en C
1Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
(Compiladores de CCS)
2Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
COMUNICACIÓN SERIE ASÍNCRONA en C (compiladores de CCS)
La Configuración de una Comunicación Serie Asíncrona desde el compilador PCM de CCS está gobernada, de manera fundamental por la directiva #USE RS232
Aunque la directiva se llame así, sirve para configurar cualquier transferenciaserie asíncrona y no sólo RS232, que no deja de ser una de las posibles normas
Los niveles eléctricos asociados a los niveles lógicos de recepción/transmisiónson los correspondientes a la tensión de alimentación del microcontrolador y noa los de la norma RS232
El asistente del entorno PCW (PIC Wizard) permite definir, para esta directiva:
• Velocidad de transmisión (en baudios)• Qué pin se empleará para la transmisión• Qué pin se utilizará para la recepción• Si se va a utilizar o no bit de paridad y de qué tipo (par o impar)
3Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
PIC Wizard para configuraciónde comunicaciones
Comunicación serie asíncrona
Posible más de un puerto
4Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Opciones de la directiva #USE RS232 :
• BAUD= xx sería la velocidad de comunicación (en baudios). Para que el compiladorinserte el código necesario para transmitir/recibir a la velocidad indicada, debe “conocer” la frecuencia del oscilador que se va a utilizar. Deberá pues existir previamente una directiva #USE DELAY(clock=frec.)
Si la velocidad de transmisión indicada no se pudiera alcanzar con un error inferior al 3%, se generaría a la hora de realizar la compilación un mensaje de error del tipo: “Baud rate out of range” salvo que se incluyauna opción BRGH1OK en la directiva (asumimos ese error)
• XMIT=pin Pin de transmisión que se va a utilizar (p.e.: xmit=PIN_C6)
• RCV=pin Pin de recepción que se va a utilizar (p.e.: rcv=PIN_C7)
Si el microcontrolador seleccionado tiene módulo SCI y se especifican los pinesasociados como los que se deben utilizar, la transmisión y/o recepción se harácon el hardware disponible, en caso contrario será implementado por software
5Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
• ENABLE=pinDurante la transmisión, el pin especificado estará en estado alto y durantela recepción en estado bajo . Ese pin se puede utilizar para habilitarbien la transmisión o bien la recepción en una comunicación semi-dúplexcomo puede ser el caso del control de los drivers de un bus RS485
• RESTART_WDTSe insertará código para resetear el Watchdog durante la esperapor un byte (para funciones que se quedan esperando) a que “llegue algo”
• INVERTCon esta opción, se invierte la polaridad de los niveles asociados a lospines de la comunicación: el 0 correspondería a tensión y el 1 a masa.El estado inactivo o de reposo (a 1) se correspondería con tensión nulaEsta opción no debería utilizarse si se emplea el módulo SCI interno
• BITS=xSe especifica el tamaño de los datos que serán enviados, x puede tomarun valor comprendido entre 5 y 9 si se implementa por softwarela comunicación o bien de 8 ó 9 si se emplea el módulo SCI interno
6Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
• FLOAT_HIGHEn estado alto, la línea no estará en un nivel alto sino en un estado de tensión flotante debido a que la salida que la controla es del tipodrenador (o colector) abierto
• BRGH1OKCon esta opción el compilador permite la generación de código aún enaquellos dispositivos que presentarán problemas en su velocidad detransmisión
• PARITY=x -> x puede ser N (none: sin), O (odd: impar) o E (even: par)Si se especifica el empleo de paridad, se envía un bit adicional comocomprobación y en el supuesto de que se produzca un error, éstequedaría registrado en una variable denominada RS232_ERRORS
• ERRORSSi se emplea esta opción, el compilador define una variable llamadaRS232_ERRORS que “recoge” los errores en cada recepción y los“resetea” después de que éstos se produzcan
7Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
La variable RS232_ERRORS (definida por el compilador) contiene:
a) Si se está utilizando una implementación software:
• En el bit 7, el 9º bit si se está utilizando tamaño de 9 bits en transmisión• El bit 6 se pone a 1 si se produjo un fallo en el envío con el modo detensión flotante de salida
b) Si se está empleando una UART interna:
• Es una copia del registro RCSTA (sólo para recepción), salvo el bit 0que se emplea para indicar error de paridad
Registro RCSTA
8Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Más acerca de la Directiva #USE RS232(opción, opción,...)
Si la implementación va a realizarse por software (no se va a utilizar unmódulo SCI interno), es importante que las directivas #USE FAST_IOo bien #USE FIXED_IO vayan delante de esta directiva pero no ladirectiva #USE STANDARD_IO por la manera en que se generaría el código de puesta a 1 o puesta a 0 de las líneas de salida
Las funciones integradas del compilador más usadas para comunicación serieasíncrona a las que afecta esta directiva son las siguientes:
• Para CONFIGURACIÓN: set_uart_speed( )
• Para TRANSMISIÓN: putc() o su equivalente: putchar()puts()printf()
• Para RECEPCIÓN: kbhit()getc() o sus equivalentes getch() y getchar()gets()
9Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Las Funciones Integradas para la Com. Serie Asíncrona (Configuración):
set_uart_speed(baudios)
Esta función sólo se puede emplear en aquellos dispositivos que utilizanel módulo SCI (USART) interno hardware. La función se emplea paracambiar la velocidad de transmisión/recepción en tiempo de ejecución(no en la compilación)
P.e.: switch( input_d() & 0x03){
case 0: set_uart_speed(2400);break;
case 1: set_uart_speed(4800);break;
case 2: set_uart_speed(9600);break;
case 3: set_uart_speed(19200);break;
} //Con los pines RD0 y RD1 se selecciona la velocidad
10Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Las Funciones Integradas para la Com. Serie Asíncrona (Transmisión):
putc() ó putchar() (son idénticas) putc(caracter)
Se envía un carácter a través del pin especificado para envío (XMIT) en la directiva #USE RS232 anterior
Ejemplo: char mensaje[10];...putc(‘*’);for(i=0;i<10;i++) putc(mensaje[i]);
puts() Llamada: puts(tira_caracteres)
La tira de caracteres debe finalizar con un 0. Se envía cada uno de loscaracteres de la tira usando la función putc(). Después del envío de la tira de caracteres, se envía un retorno de carro (carácter 13 =0x0D) y un avance de línea (carácter 10 =0x0A)
Ejemplo: puts(“Hola que tal”);
11Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
printf() printf(tira_caracteres) printf(tira_car_constantes,Valores...)printf(Función, tira_car_constantes, Valores...)
Valores son variables en una lista separadas por comasFunción es el nombre de la función que se debe emplear para sacar loscaracteres (si no se especifica nada es la putc() por defecto)
Esta función saca, mediante la Función de salida especificada, loscaracteres y los valores para su representación. Si se especificanValores, la tira de caracteres debe ser constante y se puede insertarla representación de los valores utilizando el carácter especial % seguidodel número de caracteres a utilizar (opcional de 1 a 9 ó 01 a 09 si sedesean representar los ceros a izq.) y del tipo de dato, que puede ser:
C como carácter U como entero sin signo X como hexadecimalD entero con signo lu entero largo sin signo LX hexadecimal “largo” ld entero largo con signo
12Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Ejemplos:Especificación Valor_1=0x12 Valor_2=0xFE
%03u 018 254%u 18 254%2u 18 ?Indefinido%d 18 -2%X 12 FE
Representación que se veríaOtros ejemplos:
printf(“Temporizador 0: %2X”,get_rtcc());
printf(“%2u %X %4X \n\r”, A,B,C);
printf(lcd_putc, “N = %u”, numero);
13Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Las Funciones Integradas para la Com. Serie Asíncrona (Recepción):
Importante: Estas funciones tienen un comportamiento diferente si la comunicación está implementada mediante el hardware o por software
getc() ó getch() ó getchar() (son idénticas) valor = getc( )
Cuando se la llama, espera por la llegada de un byte en el pin de recepciónRCV especificado en la directiva #USE RS232 y devuelve dicho byte comoresultado.
Si la recepción está implementada mediante el módulo USARThardware, se puede hacer uso del triple buffer existente sin perder datos. Si está implementada por software, debemos estar esperando cada bytecon getc() para no perder recepciones.
Para evitar que el microcontrolador quede “colgado” esperando de maneraindefinida la recepción de un byte que no llega, se debería usar lafunción kbhit() para verificar si ha llegado un carácter y está disponible
14Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
kbhit() Llamada: valor = kbhit( )
Esta función devuelve 0 (FALSE) ó 1 (TRUE) si la función getc() necesitara conocer la disponibilidad de un carácter (byte) paraser leído.
Si la comunicación está gestionada por software, la función devuelveTRUE si se ha detectado un bit de START en el pin de recepción
Si está implementada con la USART hardware, devuelve TRUE si elbyte ha sido recibido y está disponible en el buffer para ser leídomediante getc()
char getc_con_tiempo( ) {int t_maximo=0;while(!kbhit( ) && (t_maximo++ < 50) delay_ms(10);if(kbhit( ))
return(getc( )); //devuelve carácter recibidoelse
return(0); } //si no llegó nada devuelve 0
Ejemplo de Función queespera 0,5 segundos como máximo
15Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
gets(puntero_a_tira_caracteres) Llamada gets(puntero)
Esta función espera y lee caracteres que va colocando a partir de laposición señalada por el puntero utilizado como parámetro.
Lee hasta que recibe un retorno de carro (13 en decimal 0x0D). La tira de caracteres se finaliza con la inclusión de un cero.
Ejemplo:
char tira[30];do{
printf(“Clave:”); //se saca mensaje solicitando clave
gets(tira); //se espera por clave con retorno de carro final
if(strcmp(tira,password)) //se compara clave introducida con realprintf(“Correcta”); //si coincide correcta
else printf(“Clave Incorrecta”);} while !strcmp(tira,password);
Ejemplo para solicitar clave por pantalla
16Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Hablando de Tiras de Caracteres...
Funciones Estándar para tiras de caracteres:
strcat(s1,s2) Para encadenar tiras de caracteresstrchr(s1,c) Localiza c en tira por 1ª vez y devuelve dirección (&s1[i])strrchr(s1,c) Idem a la anterior pero empieza búsqueda desde finalstrcmp(s1,s2) Compara tiras s1 y s2 y devuelve TRUE si coincidenstrncmp(s1,s2,n) Compara n caracteres entre s1 y s2stricmp(s1,s2) Compara ignorando si son mayúsculas o minúsculasstrncpy(s1,s2,n) Copia n caracteres de s2 en s1strcspn(s1,s2) Cuenta caracteres de s1 que no están en s2strspn(s1,s2) Cuenta caracteres de s1 que también están en s2strlen(s1) Cuenta los caracteres de s1strlwr(s1) Convierte todas las mayúsculas a minúsculasstrpbrk(s1,s2) Busca posición en s2 donde empieza copia de s1
s1 y s2 son punteros a arrays de caracteres
17Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
La Norma RS232
En principio nació con la idea de recoger todas las posibilidades de comunicación entre un computador o equipo terminal de datos (DTE o Data Terminal Equipment) y un módem o equipo de comunicación de datos (DCE o Data Communications Equipment).
Sin embargo su uso se extendió a otras aplicaciones que nada tienen que ver con la intención original y se emplea para comunicar equipos que no respetan íntegramente la norma o la cumplen sólo de manera parcial. De hecho se empleapara comunicar equipos que son ambos DTE (dos PCs ó un PC con un micro p.e.)que no necesitan la mayoría de las líneas de la norma original: detector deportadora (DCD), indicador de llamada (RI), canal secundario,…
Los conectores que se suelen utilizar en los equipos son:
• Conector SUB-D de 25 pines• Conector SUB-D de 9 pines• Conector SUB-D de 15 pines de alta densidad (más extraño)
18Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
El conector de 25 pines es el que dispone de todas las señales definidas enla norma inicial, los otros dos prescinden de algunas de las señales.
Como recomendación general: si necesitamos comunicar nuestro micro conotro equipo que disponga de un puerto de comunicación serie “según norma RS232” y dado que cada fabricante hace su interpretación particular dela norma, consultemos los correspondientes manuales y esquemas para saberexactamente qué tipo de señales está utilizando y en qué pines.
Como ejemplo tenemos los puertos serie de un PC (COMn), que presentan demanera mayoritaria unos conectores SUB-D de 9 pines hembra (aunque la norma original decía que los DTE deberían ser machos)
Vista desde el exterior del conector del PC
19Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Funcionalidad de los pines en el conector SUB-D 9 del PC :
Pin 1 DCD (Entrada al Puerto: Detección de Portadora)Pin 2 RXD (Entrada de Recepción de Datos)Pin 3 TXD (Salida de Transmisión de Datos)Pin 4 DTR (Salida: PC listo para recibir, es la respuesta a CTS)Pin 5 MASA COMÚNPin 6 DSR (Entrada: PC puede enviar datos, como respuesta a RTS)Pin 7 RTS (Salida: PC pide envío de datos, le responderían con DSR )Pin 8 CTS (Entrada: Pregunta exterior sobre si PC listo para recibir,
contestará con DTR)Pin 9 RI (Entrada: Indicador de llamada, sólo si es realmente un módem
el otro equipo)
Protocolos de envío y de recepción:
RTS-DSR funcionan como pregunta-respuesta para enviar datos desde el PC
CTS-DTR también son pregunta-respuesta para recibir datos en el PC
20Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Para realizar la conexión entre un microcontrolador y un PC, será necesariorealizar la correspondiente adaptación de los niveles de tensión que utilizael microcontrolador a los niveles de la norma RS232
“1” -> 5V “1” -> -5V a -15V “1” -> -3V a -15V“0” -> 0V “0” -> +5V a +15V “0” -> +3V a +15V
Escritura RS232 Lectura RS232 Micro a 5Vlectura yescritura
Existen varios circuitos integrados comerciales que realizan esta adaptacióncon muy pocos componentes (p.e. la familia MAX220 a 249)
La conexión puede realizarse utilizando las líneas que se consideren oportunas.Se puede simplificar el conexionado y obviar las líneas de pregunta-respuesta “engañando” al emisor para hacerle creer que el receptor está siempre listo.El truco pasa por “puentear” las líneas de petición de envío y las respuestas.
21Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Emisores/Receptores de 2 canales para adaptación TTL - RS232 y viceversa
Una sola alimentación de 5V para generar tensiones de +10V y -10V
22Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
DriverRS232
(MAX232)
TX
RX
RX
TX
“1” -> 5V“0” -> 0V
“1” -> -3V a -15V“0” -> +3V a +15V
GND GND
Niveles lectura RS232
“1” -> -5V a -15V“0” -> +5V a +15V
Niveles escritura RS232
EJEMPLO DECONEXIÓN A 3 HILOS
FULL DÚPLEX
Conexión serie según norma RS232: Comunicación PIC - PC (puerto serie)
Pin2Pin3
Pin5
23Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
La Norma RS485
Es una norma de comunicación serie asíncrona que utiliza dos líneas (A y B)de manera que la tensión diferencial entre ambas marca el nivel lógico quese está enviando.
La transferencia es semi-dúplex ya que sólo es posible que un equipo envíe,gobernando las líneas de datos A y B, y otro u otros equipos reciban. Estápensada para una comunicación multipunto.
La norma RS485 define únicamente la especificación eléctrica del interfacey no un conector específico. El medio físico es un par de hilos trenzados entresí para reducir el posible ruido electromagnético inducido.
El estándar RS485 permite la interconexión de hasta 32 dispositivos sobreun único par de hilos, con velocidades de hasta 10Mbits por segundo y unadistancia máxima de 1200 metros. Ambas magnitudes, velocidad y distanciaestán ligadas entre sí, de manera que si se aumenta una, se debe reducir laotra.
24Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Posibles Circuitos de adaptación a un bus RS485
Emisor(driver)
Receptor(receiver)
Emisor/Receptor(transceiver)
Impedancias de terminación a ambos lados
El margen de la tensión de modo común permitida en los terminales deentrada A y B respecto a la masa del receptor está comprendida entre-7V y 12V. Si el terminal A está a una tensión superior a B (con un valordiferencial superior a 0,2V) se estará recibiendo un “1” y en caso contrario(tensión de B superior en más de 0,2V a A) se interpreta un “0”
25Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Circuitos de Interface RS485
Las señales eléctricas que es capaz de generar y leer la USART interna del microcontrolador (o su implementación software) deben adaptarse a losniveles diferenciales RS485 mediante algún circuito de interface.
Para permitir el envío y la recepción con un mismo circuito se debe emplearun transceiver. Son circuitos que además pueden soportar “colisiones”, esdecir que más de un circuito transmisor esté emitiendo (o tratando de emitirya que se producirá un error en los mensajes de ambos)
El transceiver integrado más popular probablemente sea el 75176, capaz derealizar la adaptación TTL-RS485 y viceversa.
Otro transceiver utilizado con frecuencia es el 75184 que es totalmentecompatible en patillaje y funcionalidad con el 75176 pero que además incluyeuna red de entrada supresora de transitorios de tensión sobre las líneasdel bus.
26Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Transceiver 75176
Se alimenta con una tensión única de 5V y combinan el funcionamiento de un driver diferencial triestado de salida con una entrada diferencial para larecepción.
Diagrama lógicoEncapsulado DIP8
Tabla de verdad como emisor Tabla de verdad como receptor
27Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Conexión del transceiver RS485 al microcontrolador
Además de los pines de Recepción y Transmisión, necesitaremos un pinadicional que controle el sentido de los datos en cada momento (entradao salida) para habilitar el bloque envío o de recepción del transceiver.
Con dicho pin se podría controlar el terminal DE (habilita envío) y RE (habilita recepción) del 75176. Como presentan una lógica opuesta, se puedeemplear un único pin para controlar ambos: si pin=0 se habilita la recepcióny se anula el envío, si pin=1 se activa envío y se anula recepción.
A
BRRXDTX
DERE
Enable
75176Microcontrolador
28Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Programación en C para transferencia sobre RS485:
La directiva #USE RS232 permite definir, además de los pines de envío yrecepción, un pin de habilitación que se coloca a 1 durante el envío y a 0durante la recepción. Dicho pin se activará por software ya que dicha salidano está disponible en la USART integrada, pero desde el punto de vistadel programador, una vez definida la directiva, será posible utilizar lasfunciones integradas del compilador.
Ejemplo:
#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)...if (kbhit()){ cola_circular[cola]=getch();cola++;if (cola>(TAM_BUF_UART-1))cola=0;
}
29Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Nota de Interés:
Es posible tener activas varias transferencias asíncronas del mismo o dediferentes tipos (RS232, RS485,...) con el mismo microcontrolador PIC.
La configuración realizada con la directiva #USE RS232 tiene efecto desdeel lugar en que se encuentra dicha directiva para las funciones getc(), putc(), printf() y kbhit() que aparezcan a continuación y hasta que aparezca unanueva directiva #USE RS232
#USE RS232 no es una línea de código ejecutable si no una configuraciónpara las funciones que le siguen, trabaja de manera similar a una directiva#DEFINE.
De este modo, podríamos incluir una directiva #USE RS232 justo antes decada una de las funciones que queramos utilizar para una transferenciaasíncrona con una determinada configuración o bien definir unas nuevasfunciones con la cabecera de configuración correspondiente al tipo decomunicación serie asíncrona que queramos emplear.
30Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Ejemplo: Se incluyen dos directivas y se definen funciones específicas
#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)
void enviar_RS485( char c) //Para enviar por RS485{ putc( c ); }char tomar_RS485( ) //Para recibir por RS485{ return(getc( ));}
#use rs232(baud=9600 ,xmit=PIN_B1,rcv=PIN_B2)
void enviar_RS232( char c) //Para enviar por RS232{ putc( c );}char tomar_RS232( ) //Para recibir por RS232{ return(getc( ));}main( ){ ... caracter=tomar_RS485();
enviar_RS232(carácter-’0’);
enviar_RS485(nuevo);}
PARA
RS2
32PA
RA R
S485
Recibo por RS485
Envío por RS232
Envío por RS485
31Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
El mismo ejemplo:
Se incluye la directiva justo antes de la llamada a la función integrada
main(){...
#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)
carácter = getc( ); //Recibir con la configuración para RS485
#use rs232(baud=9600 ,xmit=PIN_B1,rcv=PIN_B2)
putc(carácter-’0’); //Enviar con la configuración de RS232
#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)
putc(nuevo); //Enviar con la configuración RS232
}
32Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
A CONTINUACIÓN ALGUNOS EJEMPLOS DE CONEXIÓNENTRE EL PIC EN PICDEM2 plus Y EL PUERTO SERIE DE UN PC,
TRABAJANDO ÉSTE COMO EMULADOR DE TERMINAL
Programas > Accesorios >
Comunicaciones > Hyper Terminal
Se mostrará lo que se reciba por el COMny sacará por dicho puerto serie el códigoASCII correspondiente a la tecla que sepulse con el teclado del PC
Configuración de HyperTerminal
33Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Se podría utilizar una utilidad del Compilador de CCS: SIOW
También es un emulador de terminal