Professional Documents
Culture Documents
(Compiladores de CCS)
1
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
El asistente del entorno PCW (PIC Wizard) permite definir, para esta directiva:
2
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
3
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
• BAUD= x
x sería la velocidad de comunicación (en baudios). Para que el compilador
inserte 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.)
• ENABLE=pin
Durante la transmisión, el pin especificado estará en estado alto y durante
la recepción en estado bajo . Ese pin se puede utilizar para habilitar
bien la transmisión o bien la recepción en una comunicación semi-dúplex
como puede ser el caso del control de los drivers de un bus RS485
• RESTART_WDT
Se insertará código para resetear el Watchdog durante la espera
por un byte (para funciones que se quedan esperando) a que “llegue algo”
• INVERT
Con esta opción, se invierte la polaridad de los niveles asociados a los
pines 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 nula
Esta opción no debería utilizarse si se emplea el módulo SCI interno
• BITS=x
Se especifica el tamaño de los datos que serán enviados, x puede tomar
un valor comprendido entre 5 y 9 si se implementa por software
la comunicación o bien de 8 ó 9 si se emplea el módulo SCI interno
5
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
• FLOAT_HIGH
En 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 tipo
drenador (o colector) abierto
• BRGH1OK
Con esta opción el compilador permite la generación de código aún en
aquellos dispositivos que presentarán problemas en su velocidad de
transmisió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 como
comprobación y en el supuesto de que se produzca un error, éste
quedaría registrado en una variable denominada RS232_ERRORS
• ERRORS
Si se emplea esta opción, el compilador define una variable llamada
RS232_ERRORS que “recoge” los errores en cada recepción y los
“resetea” después de que éstos se produzcan
6
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
• Es una copia del registro RCSTA (sólo para recepción), salvo el bit 0
que se emplea para indicar error de paridad
Registro RCSTA
7
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Las funciones integradas del compilador más usadas para comunicación serie
asíncrona a las que afecta esta directiva son las siguientes:
set_uart_speed(baudios)
printf() printf(tira_caracteres)
printf(tira_car_constantes,Valores...)
printf(Función, tira_car_constantes, Valores...)
11
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Ejemplos:
Especificación Valor_1=0x12 Valor_2=0xFE
printf(“Temporizador 0: %2X”,get_rtcc());
12
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
13
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Ejemplo:
Ejemplo para solicitar clave por pantalla
char tira[30];
do{
printf(“Clave:”); //se saca mensaje solicitando clave
16
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
La Norma RS232
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 emplea
para 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 de
portadora (DCD), indicador de llamada (RI), canal secundario,…
17
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
“1” -> 5V “1” -> -5V a -15V “1” -> -3V a -15V
“0” -> 0V “0” -> +5V a +15V “0” -> +3V a +15V
Micro a 5V
lectura y Escritura RS232 Lectura RS232
escritura
20
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
21
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
RX Driver TX Pin3
RS232 Pin2
TX RX
(MAX232) Pin5
GND GND
22
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
La Norma RS485
23
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
24
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
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 los
niveles diferenciales RS485 mediante algún circuito de interface.
25
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Transceiver 75176
26
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
Microcontrolador 75176
TX D A
RX R B
Enable DE
RE
27
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Ejemplo:
Nota de Interés:
De este modo, podríamos incluir una directiva #USE RS232 justo antes de
cada una de las funciones que queramos utilizar para una transferencia
asíncrona con una determinada configuración o bien definir unas nuevas
funciones con la cabecera de configuración correspondiente al tipo de
comunicación serie asíncrona que queramos emplear.
29
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
El mismo ejemplo:
main()
{...
#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)
31
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Programas >
Accesorios > Configuración de HyperTerminal
Comunicaciones >
Hyper Terminal
32
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC
33
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño