Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
a Trav s de un PIC
Introduccin
Tal como lo dice MICROCHIP en sus pginas Web, y segn lo que hemos podido
experimentar, los microcontroladores
PIC16CXXX son de alto rendimiento y estn basados en EPROM de 8-bit. Algunos
de los miembros de esta serie (como
PIC16C71 y PIC16C84) no tienen un port
(puerto) serie asincrnico. Este captulo
describe la implementacin del software
que permite la comunicacin con el exterior por medio de las interrupciones de la
I/O Serie Asincrnicas (Half Duplex RS-232
Communications).
Los PICs pueden operar a altas velocidades con un mnimo de 250ns de tiempo
de ciclo (con una frecuencia de reloj de
entrada de 16MHz).
Figura 1
53
TRANSMISIN
DE
DATOS
A TRAVS DE UN
PIC
Implementacin
No es nuestra intencin describir en detalles la implementacin del softwar e half
duplex (comunicacin en un solo sentido
por cable conductor), simplemente queremos informarlo sobre cmo hacerlo.
El pin de transmisin usado en el cdigo
de ejemplo es RB7, y el pin de recepcin
est conectado al pin RA4/T0CKI (figura
1). Estos pines estn debidamente conectados con la traslacin de tensin adecuada a/desde niveles CMOS en el patrn
RS-232.
NOTA:
Este captulo est dirigido a quienes conocen el manejo de los PICs y difcilmente
podr ser comprendido por principiantes.
Transmisin de Datos
RS-232 desde el PIC
El modo de transmisin se puede implementar en forma directa a travs del software.
Una vez que se conocen la frecuencia
de reloj de entrada y el promedio de informacin a transmitir (baud), se puede calcular la cantidad de ciclos de reloj por bit.
El cronmetro del chip Timer0, con su preescalmetro, puede ser usado para generar una interrupcin en el desbordamiento
de TMR0. Esta interrupcin del desbordamiento TMR0 puede ser usada como regulacin de tiempo para enviar cada bit. La
frecuencia de reloj de entrada (_ClkIn) y
el Promedio Baud (_BaudRate) pueden ser
programados por el usuario y el valor de
tiempo lmite de TMR0 (el perodo para cada bit) es calculado en el tiempo de ensamble. En el tiempo de ensamble tambin se determina si debe asignarse o no
el pre-escalmetro a Timer0. Este clculo se
54
Recepcion de Datos
RS-232 por el PIC
La implementacin del modo de recepcin difiere poco del modo de transmisin.
A diferencia del pin de transmisin (TX
en el cdigo del ejemplo es RB7, pero podra ser cualquier pin I/O), el pin de recepcin (RX) debe conectarse al pin RA4/T0CKI. Esto se debe a que en la recepcin, el
Bit de Inicio, que es asincrnico por naturaleza, debe ser detectado. Para detectar
el bit de Inicio, cuando se coloca en el
modo Recepcin, el mdulo Timer0 es
configurado en el modo Contador.
El registro OPTION es configurado de
modo que el mdulo Timer0 sea colocado
en el modo Contador (incremento en el
reloj externo del Pin RA4/T0CKI) y ajustado
TRANSMISIN
DE
DATOS
Figura 2
A TRAVS DE UN
PIC
Generacin del
bit de Paridad
Se puede activar
la paridad en el
tiempo de ensamble, si se configura
la seal "_PARITYENABLE" a TRUE. Si
se activa, la paridad puede confipara que aumente en el extremo de cagurarse en paridad PAR o IMPAR. En el moda del pin RA4/T0CKI sin asignarle el predo de transmisin, si se activa la paridad,
escalmetro. Luego de realizar esta confiel bit de paridad es calculado y transmitiguracin, TMR0 (Archivo Reg 1) es cargado como el noveno bit. En recepcin, la
do con 0xFF. Un cambio de nivel en T0CKI paridad es calculada y comparada con el
hace que TMR0 gire desde 0xFF hasta 0x00, noveno bit recibido. Si no son iguales, se
as genera una interrupcin que produce
debe ajustar el bit de error de paridad en
un Bit de Inicio.
el Registro de Status/Control del RS-232 (el
El pin RA4/T0CKI es probado nuevamen- bit _ParityErr del SerialStatus reg). El bit de
te para asegurar que la transicin en TMR0 paridad se calcula usando el algoritmo
sea la correcta. Luego de detectar el bit
mostrado en la figura 2. Este algoritmo es
de inicio, se reconfigura el mdulo Timer0
altamente eficiente usando las instrucciopara que se incremente en el reloj interno nes SWAPF y XORWF del PIC16CXXX (con
y se le asigna un pre-escalmetro de
capacidad de llevar al destino, como as
acuerdo a la frecuencia de reloj y al pro- tambin al mismo registro de archivo o al
medio del "baud" (configurados de la mis- registro W). La sub-rutina (llamada GenPama manera que en el modo transmisin).
rity) se encuentra en el archivo txmtr.asm.
El puerto serie de software es colocado
en el modo recepcin cuando se hace un
llamado a la funcin GetChar.
Opciones de
Antes de llamar a esta funcin, asegreTiempo de Ensamble
se que el puerto serie est libre (por ejemplo, los bits de status _txmtProgress y _rcEl "firmware" est escrito como una rutivOver deben estar en "0"). Para concluir la na de propsito general, y el usuario debe
recepcin de un byte, deben guardarse
especificar los parmetros que se mueslos datos en RxREg y despejarse el bit_rctran en la Tabla 1 antes de ensamblar el
vOver.
programa. El registro Status/Control se desResumen de la funcin GetChar:
cribe en la Tabla 2.
1. Asegurarse que los bits _txmtProgress
& _rcvOver estn despejados.
2. Llamar a la funcin GetChar.
3. El Byte recibido debe estar en TxReg
luego de despejarse el bit _rcvOver.
Hardware
El hardware est primariamente relacionado con la transmisin de tensiones se-
55
TRANSMISIN
DE
DATOS
A TRAVS DE UN
PIC
56
TRANSMISIN
Bit #: 5
Nombre: _FrameErr
Descripcin: 1 = Error de composicin en la recepcin.
Bit #: 6 : No se usa.
Bit #: 7
Nombre: _parityBit
Descripcin: El noveno bit de transmisin o
recepcin. En el modo transmisin, el bit de
paridad del byte a ser transmitido se guarda
en el mismo bit. En el modo recepcin, el noveno bit (o bit de paridad) recibido se guarda
en el mismo bit. No es aplicable si no usa la
Paridad.
DE
DATOS
A TRAVS DE UN
PIC
Programa de Prueba
Obviamente reiteramos que cualquier
entendido puede comprender cmo es
posible "interpretar" los datos de un PIC y
establecer una comunicacin a travs de
una interfase RS232, pero los que no estn
"duchos" en el tema podrn encontrarse
un poco "perdidos" con esta explicacin.
Para probar los mdulos de transmisin
y recepcin, se ha escrito un programa
principal en el cual el PIC16C71 espera la
recepcin de un comando de un anfitrin
a travs de RS-232.
En la recepcin de un byte (los comandos vlidos son
0x00, 0x01, 0x02 &
Figura 3
0x03), el byte recibido se considera como el nmero de
canal A/D del
PIC16C71, y se selecciona el canal
requerido.
Se inicia entonces una conversin
57
TRANSMISIN
DE
DATOS
A TRAVS DE UN
PIC
Ensamblador Universal de Microchip.
El cdigo no
puede ensamblarse
usando viejos ensambladores sin
modificaciones significativas. Al usuario que no tenga el
nuevo ensamblador MPASM, se le
sugiere cambiar a
la nueva versin.
El Programa de
MS Windows (DVM.EXE) se ejecuta
bajo MS Windows
3.1 o ms alto. El
programa no tiene mens y aparece como una pequea ventana que muestra
Datos A/D y se ejecuta como un trabajo
de fondo. Hay algunas opciones de lnea
de comando que describimos a continuacin.
Figura 4
58