UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA148.206.53.84/tesiuami/UAM1500.pdf · 0011 lOdf ffff...

38
UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA DIVISION DE CIENCIAS BASICAS E INGENIERIA INGENIERIA EN ELECTRONICA (COMUNICACIONES) PROYECTO DE INGENIERIA ELECTRONICA I FASE DE DOCUMENTACION E INVESTIGACION ASESOR: DONACIANO JIMENEZ VAZQUEZ ALUMNO: ULISES REVILLA DUARTE MATRICULA: 87223690

Transcript of UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA148.206.53.84/tesiuami/UAM1500.pdf · 0011 lOdf ffff...

UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA

DIVISION DE CIENCIAS BASICAS E INGENIERIA

INGENIERIA EN ELECTRONICA (COMUNICACIONES)

PROYECTO DE INGENIERIA ELECTRONICA I

FASE DE DOCUMENTACION E INVESTIGACION

ASESOR: DONACIANO JIMENEZ VAZQUEZ

ALUMNO: ULISES REVILLA DUARTE

MATRICULA: 87223690

NOMBRE DEL PROYECTO:

“El PIC 16C55 aplicado al control de servomotores mediante el puerto serial de una computadora personal

utilizando la norma RS-232”

I) OBJETIVOS:

1) Conocer la arquitectura y programación del microcontrolador PIC16C55, el cual forma parte de la familia CMOS PIC1 6CXX únicos microcontroladores de 8 bits de la industria que utilizan arquitectura RISC de alta velocidad.

2) Construir un controlador de servomotores basado en el PIC16C55 que acepte datos del puerto serial mediante el protocolo RS-232 de una computadora personal (PC).

II) INTRODUCCION:

En la implementación de este proyecto, se utiliza un microcontrolador nuevo y muy versátil llamado PIC de la tecnología MICROCHIPS.

Los microcontroladores PIC 16/17 de MICROCHIP combinan alta tecnología, bajo costo y pequeño tamaño de empaque. Ofrecen la mejor relación precio/tecnología en la industria.

Un gran número de estos dispositivos son utilizados en productos autómatas de bajo costo, periféricos de computadoras, automatización de oficinas, sistemas de control, aplicaciones de seguridad y de telecomunicaciones.

Las relativamente nuevas familias CMOS PIC 16CXX y PIC 17CXX son los únicos microcontroladores de 8 bits de la industria que utilizan arquitectura RISC (FUSC es un acrónimo para Reduced Instruction Set Computer). MICROCHIP h e el pionero en el uso de la arquitectura RISC para obtener alta velocidad y eficiencia de instrucciones. La familia CMOS PIC 16CXX se encuentra en una gran producción con más de cuarenta millones de unidades producidas y ha ganado más de cinco mil premios de diseño en todo el mundo.

De esta manera, las implementaciones de circuitos con este tipo de microcontroladores, resultan ser sumamente interesantes y actuales. Sin embargo, debido a que estos microcontroladores son relativamente recientes son pocos los diseñadores de sistemas digitales que los conocen y aplican en sus proyectos.

Así, con este trabajo se pretende conocer de manera general a la familia CMOS PIC 16C5X y de forma más precisa la arquitectura y programación del microntrolador PIC 16C55; el cual resulta ser el más representativo de la familia por su cada vez mayor número de aplicaciones. Como una de las aplicaciones importantes del PIC16C55 es en control, se propone, a manera de llevar a la práctica la programación y el hardware relacionado con el mismo, implementar un control de servomotores utilizando el puerto serial de una computadora personal. Las características de este control y su descripción, así como los conceptos técnicos involucrados en tal implementación se presentan en las siguientes secciones.

ULISES REVILLA DUARTE Abril 1995

m) GENERALIDADES:

1) CMOS PIC16C5X:

A) Tecnología RISC:

Los microcontroladores PIC16C5X son dispositivos RISC de 8 bits que son bajos en costo, consumen poca potencia y operan a gran velocidad. Estos dispositivos CMOS de 18 y 28 pines ofrecen una memoria EPROM, RAM, puertos de VO y una CPU en un empaque sencillo. (verJg. I)

También se encuentran disponibles los PIC OTP (one- time- programable) que no se pueden borrar, encapsulados dentro de paquetes de plástico, son más baratos y son usualmente encontrados en diseños en los cuales no se espera que ocurran cambios de código hturos. Los PICs basados en memoria EPROM normalmente se encuentran en paquetes de cerámica, los cuales tienen una ventana transparente que permite borrar y reutilizar a los dispositivos. Así, los PICs equipados con EPROM son magnificos para utilizarse en trabajos de prueba y prototipos debido a su reusabilidad.

Cada PIC incluye un hsible (hse) para la EPROM como medida de seguridad que se puede programar para prevenir que alguien lea el código de programa que se haya escrito el la PROM o EPROM del sistema.

Las diferencias entre los cuatro dispositivos PIC 16C5X (16C54, 16655, 16C56, 1 6 0 7 ) son el tipo de oscilador, el número de pines U 0 disponibles y el tamaño de las memorias EPROM y RAM internas (ver tabla I).

Part # I EPROM I RAM I I/O** I Supply Voltage I Osc.Freq.Rang I Package Options

PIC16C5J 4.0* - 5.5 v 13 32 X 8 512 X 12

PIC16C55

4.0* - 5.5 V 21 32 X 8 2K X 12 PIC16C57

4.0* * 5.5 v 13 32 X 8 IK X 12 PIC16C56

4.0* * 5.5 v 21 32 X 8 512 X 12

* Frequencies above 4 Mhz and/or operation

DC - 8 Mhz ***

28 Id. Windowed CERDIF DC - 8 Mhz ***

18 Id. Windowed CERDIE DC - 8 Mhz ***

28 Id. Windowed CERDIF DC - 8 Mhz ***

18 Id. Windowed CERDIF

in the industrial temperature range (-40 to 85OC) require that VDD is greater than 4.0 V (4.5 V or 4.75 V, see DC specs). The Low powenv (LP) versions operate at VD^ range of 3.0 V to 5.5 V (see DC specs).

** Includes RTCC pin. *** Device operation is currently guaranteed up to 8 Mhz. oscillator frecuency.

Please contact Microchip Technology Inc. For expected release dates o f 20 Mhz devices

PDIP, SOlC CERDIP Window

17 R A O -

16 OSCl-

16C54 14 Vdd - 16C56 13 R87-

12 RB6-

11 R85-

10 r RB4-

PIC 15 OSWCLKOUT -

PDIP, SOlC CERDIP Window -+ RTcc

R R R R R R R

4

Los PICs cuentan con un microcódigo de alta eficiencia que requiere únicamente de un conjunto de instrucciones de 33 elementos para llevar a cabo programas que normalmente requerían muchos más elementos en otros microcontroladores. Cada palabra de instrucción en los PIC 16C5X tiene 12 bits de longitud, con los némonicos y operandos (registros, localidades de memoria o datos directos a ser manipulados) completamente determinados mediante estos 12 bits de palabra. Todas las 33 instrucciones del PIC 16C5X están dadas en la Tabla 2.

La ejecución de microcódigo de alta velocidad es efectuada en un PIC utilizando la arquitectura Harvard, o el concepto de bus dual Harvard, en lugar de la implementación clásica del modelo de Von Neumann o de bus Único. La arquitectura Harvard cuenta con buses independientes y espacio de memoria asignado para instrucciones y datos, lo cual simplemente quiere decir que los puertos de I/O, localidades de memoria y temporizadores controlados por programas son fisicamente implementados con hardware de registros.

El bus de la memoria de datos (RAM) de los PIC16C5X es de 8 bits de longitud, mientras que el bus para la memoria de programa (EPROM) es de 12 bits de longitud. Utilizando la configuración de bus dual Harvard se permite que el PIC realice operaciones de bit, byte y registros con alta velocidad. Tal configuración permite inherentemente la ejecución de instrucciones en forma traslapada, conocida como pipeline. Con el pipeline se ejecuta la instrucción en curso mientras la siguiente instrucción está siendo leida de la memoria de programa. La arquitectura tradicional de Von Neumann debe buscar (fetch) la instrucción y los datos a través de un bus Único compartido (multiplexado), el cual elimina la posibilidad de traslapar las instrucciones de búsqueda (fetch) y ejecución . LaJpru 2 es un diagrama a bloques del PIC 16C5X con bus dual.

La lógica interna y los componentes fisicos que constituyen a la familia PIC16CSX son similares a los de cualquier otro microcontrolador. Así, el PIC no es más dificil de programar que cualquier otro microcontrolador con el que se haya trabajado anteriormente. Sin embargo, la manera de como estos componentes lógicos comunes están interconectados a través del bus dual Harvard dentro del PIC es la clave para reducir la cuenta de código compilado y elevar la velocidad de ejecución de la familia de microcontroladores PIC 16C5X.

Las características de la arquitectura RISC más importantes son:

a) Un número relativamente reducido de instrucciones (preferiblemente menor que 100, pero hasta 150 es un número aceptable).

b) Un número reducido de modo de direccionamiento (preferiblemente 1 ó 2, aceptable hasta 4), todos de la misma longitud.

c) Ejecución de las instrucciones en un ciclo de reloj.

~~ ~~

BYTE -ORIENTED FILE REGISTER OPERATIONS (1 1-6) (5) (4-

I OPCODE [ d I 1(FIL

d = O for destination W d = 1 for destination f

Instruction-Binary (Hex) Name Mnemonic, Operands Operation Status Af€e

O001 l ldf ffff 1Cf Add W andf ADDWF f , d W + F + d

O001 Oldf ffff

O000 Ollf m

O000 O100 O000

O010 Oldf ffff

O000 1 ldf ffff

O010 l ldf ffff

O010 lOdf ffff

O011 l ldf ffff

O001 OOdf f€f€

O010 OOdf f€€€

O000 OOlf m

O000 O000 O000

O011 Oldf ffFf

O01 1 OOdf ffff

0000 lOdf ffff

0011 lOdf ffff

0001 lOdf ffff

14f

06f

040

24f

OCf

2Cf

28f

3Cf

AND Wand f

Clear f

Clear W

Complement f

Decrement f

Decrementf,Skip if Zero

Increment f

Increment f,Skip if Zero

ANDWF f, d

CLRF f

CLRW -

COMF f, d

DECF f, d

DECFSZ f, d

INCF f , d

INCFSZ f. d

W & F + D

O + f

o + w

f + d

f - 1 + d

f - 1 -+ d, skip if zero

f + 1 + d

f + 1 -+ d, skip if zero

10f lncusiveORW andf IORWF f,d W v f + d

20f Move f M O W f , d f + d

02f Move W to f MOVWF f W - + f

O00 No Operation NOP - -

~

c, D

Z

Z

Z

Z

z

None

Z

None

z

Z

None

None

34f Rotate left f RLF f, d f(n) + d(n+ C

l), C -+ d(O), f(7) -+ c 30f Rotate rigth f RRF f, d f(n) -+ d(n-1), C -+ d(7), f(0) + C c O8f Subtract W from f SUBWF f , d f - W - + d [ f + W + l + d ] C, D

38f Swap halves f SWAPF f, d f(0-3) C) f74-7) -+ d None

18f Exclusive OR W and f XORWF f, d W CB f + d Z

i

\ -

[11-8; 17-51 14 - O) BIT- ORIENTED FILE REGISTER OPERATIONS I OPCODE I oiBlT #) I í(FILE #) 1

Instruction-Binary (Hex) Name Mnemonic, Operands Operalion Status Affected

C:O: i = ~ f : f f : ~ 2 : BI! Clear f BCF 1, b I! + f(b) Ncne

o i l , ? tbbf f f ! f 62; 61! Test f,Skip if Clear BTFSC I , b Tes t bit ( b ) in file (í): Skip I! clear N one 0 1 1 1 m b f ffff 7 t f Brt Test f . Skip if Se t BTFSS I . b Test blt (b) in flle (1). Skip if se! None

GlO! bbrf ffff 5 r f Bit Set f BSF I , b 1 + f (b) None

(1 1-6) (7 - 0) LITERAL AND CONTROL OPERATIONS I OPCODE k (LITERAL}

Instruction-Binary (Hex) Name Mnsmonic, Operands Operation Slatus Att8tttd

:I13 kkkk rtknic Ekk AND Literal and w ANDLW k k B W + W 2 1 x 1 KKkk K K K K ?kj: Call subroutme CALL k PC t i + S!ack, k + PC None ~ ~ 5 5 o:ac 21;s S:: Gear Watchcog timer CLRWDT - O + WDT (and prescalef, r f asslgnedj TO, Po

i:Ci xikK kkkk Ckr. lncl OR Literal and W IOALW k k v W -r W 2 i:CC k i k k K ; K K ~ Z K ~ Mwe LlIeÍal to W MOVLW k k + W None 01103 0302 ~ 2 : : cC2 Load OPTION register OPTlON - !Y -; tPT;CN re$s:er None

CGOO 000s :S! : ::N? Go in:o standby mode SLEEP - O + WDT, stop oscillator TO, PO COGCI OOc; 3fff ,: 1 f Tristale por, 1 TRIS 1 W-r 110 controt register t None

:3;k Akkx lrKkn &K G C TÜ address (k ¡S 9 bit) GOTO k k "t PC (9 bi:s) None

1OC3 kkkk rtkkl . 6Kx fie:grC.plaCe Literal l C w RETLW k k + w, Stack + PC None

!11: r.kKk K k < K T$:. ExCI OR Litera' and W XORLW k k 9 W + W 2

d) El acceso a memoria es sólo realizada por las instrucciones Load y Store.

e) Un número relativamente grande de registros (aproximadamente 32), con todas las operaciones ejecutadas bajo el modelo registro-registro.

f) Unidad de control con circuitería fija (hardwired).

g) Apoyo por parte del Hardwere para la programación en lenguajes de alto nivel (HLL).

De todo lo anterior, se tiene que la arquitectura RISC se basa en el concepto de bus dual, es decir en la implementación Harvard.

B) Organización int erna del PIC:

Puesto que todos los objetos de programa (locaciones de memoria, pilas, contador de programa, etc.) del PIC están implementados como registros físicos propiamente dentro del PIC, para tener una mejor comprensión de como trabaja el hardware del PIC se requiere entender con claridad el concepto de archivo de registros en el PIC.

Dentro del PIC, el archivo de registros operacional cuenta con un medio para el direccionamiento indirecto de datos (m), un reloj contador de tiempo real (fl), un contador de programa (a), un registro de estados (B), un registro selector de archivos (f4), y los registros de VO (f5, f6 y algunas veces f7). Estos registros comprenden la parte del hardware que puede ser manipulado por el programador.

Se presenta a continuación la lista de los recursos que constituyen el archivo de registros operacionales:

Registro de direccionamiento indirecto de datos (m):

Este registro no está fisicamente implementado. R) utiliza los contenidos del registro selector de archivos (FSR), o f4, para seleccionar indirectamente cualquiera de los 32 registros de archivo disponibles para usarse como un registro de datos o registro apuntador, dependiendo de la intensión de la instrucción que hace la llamada a fD. El registro R) es más útil como apuntador indirecto de direcciones.

0 Reloj contador de tiempo real.

El reloj contador de tiempo real o RTCC, puede ser leido o escribirse en éI tal como se haría con cualquier otro registro. El RTCC puede también ser incrementado por una señal externa aplicada al pin RTCC o por medio de la instrucción del reloj interno. Aplicaciones ilustrativas que involucran al RTCC son el contador de eventos y el medidor de tiempo. El RTCC puede ser también preescalado utilizando el preescalador programable interno del PIC.

o Contador de programa (f2):

Este registro es utilizado para generar las direcciones en las EPROM, las cuales contienen las palabras de instrucciones de 12 bits del programa escrito por el usuario. El PC tiene un tamaño de 9 a 1 I bits dependiendo del tipo de PIC. El décimo y onceavo bits del PC entran en ju;ago cuando se utiliza la capacidad de la paginación en los dispositivos EPROM-rich, PI, :6C56 y PIC16C57; permitiendose así programas de hasta 2,048 palabras en longitud. Un área de almacenamiento (stack area) es provista para operaciones de llamada y retorno.

Registro de estados (a):

Los estados aritméticos de la ALU (bit de acarreo, bit cero, etc.), el estado de RESET y los bits de preselección de página para memorias con programas más largos para los PIC16C56/57, están contenidos dentro de este registro. Una peculiaridad interesante para tener en mente es que el registro f3 provee un bit de propósito general para lectura/escrita que está reservado para uso futuro pero que puede ser usado con toda libertad por el programador. El temporizador “watchdog” y las instrucciones “sleep” emplean también este registro f3.

Registro selector de archivos (f4):

Como se mensionó previamente, este registro selector de archivos, o FSR, es utilizado en conjunto con el registro de direccionamiento indirecto de datos fD para seleccionar indirectamente uno de los 32 registros de archivo disponibles. Si no se utilizan llamadas indirectas en el programa, este registro se puede emplear como un registro de propósito general de 5 bits.

Registro de I/O (f5 a n): Los puertos A(f5), B(f6) y C (U), comprenden los registros de YO para el

PIC 16C55 y PIC 16C57. El puerto C(f7), es un registro de propósito general en el PIC 16C54 y PIC 16C56, en los cuales no existen suficientes pines para acomodar otro puerto de 110 fisico. El puerto A es un registro de VO de 4 bits con los bits 4 al 7 definidos

L

J

L

-

PA2, PA1 , PA0 cleared to 'O' TO PD are sei or reset as shown in table 5. Z, DC, C are unknown on power on reset and unchanged in any other reset.

1

For ADDWF and S U M instructions, this bit is set if there es a carry out from the most significant bit of the resultant. Note that a subtratction is executed by aading the tow's complement of the second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low order bit of the source register.

DIGITAL CARRY BIT: For A D W M and SUBWF instructions, this bit is set if there is a carry but from the 4tn low order bit of the resultant.

ZERO BIT: Set if the result of an arithmetic or logic operation is zero

POWER DOWN BIT: Set to "1 " during power up or by a CLRWDT command. This bit is reset to 'o" by a SLEEP instruccion.

TIME-OUT BIT: Set to "1 " during power up and by the CLRWDT and SLEEP command. This bit is reset to "O" by a watchdog timer time Out.

PICIEC54K55 : Two general purpose readhrite bits

PICIECSE : BIT 5 ... Page preselect bit O = Page O (000 - 1FF) 1 = Page 1 (200 - 3FF)

BIT 6 ... General purpose reachrite bit

PIClbC57 : Two page presekct bts 00=PageO(000-1FF) 01 = Page 1 (200 - 3FF) 1 O = Page 2 (400 - 5FF) 11 = Page 3 (600 - 7FF)

I BIT 7 : General purpose readkriite bit (reserved for future use)

como el binario 0000. Los puertos B y C son implementaciones completas de 8 bits. Estos registros de 1/0 pueden ser leidos o escribirse en éllos tal como se haría con cualquier otro registro en el archivo de registros y son capaces de tener pines compartidos de I/O colocados en alta impedancia para operaciones de aislamiento o lectura. Cualquier pin de U 0 puede ser programado independientemente para operaciones de entrada, salida o bidireccionales.

0 Registros de propósito general:

El segundo grupo de registros, conocido como los registros de propósito general están comprendidos del fo8 al f lF para el PIC16C54, PIC 16C55 y PIC16C56. En l apg 3 se aprecia que para el PIC 16C57 los registros de propósito general se extienden hasta f7F.

0 Registros de propósito especial:

Un registro de propósito especial es el W, o registro de trabajo, el cual es esencialmente un acumulador. W es utilizado intensamente en operaciones de transferencia inrerna de datos. Otros tres registros de propósito especial para control de U 0 de sólo escritura (write - only I/O control) son TRISA, TRISB, TRISC que determinan la existencia de bits en los correspondientes registros de puerto (puerto A, B y C). Note que el PIC16C54 no utiliza al puerto C, en su lugar, implementa un registro de propósito general. Un 1 binario corresponde a alta impedancia o modo de entrada (input mode), mientras que un O binario permite la salida del bit de posición relacionado con el pin YO. Por ejemplo, W es cargado con el número binario O0001 1 1 1 y TRISB es ejecutado. El resultado será que e1 puerto B(f6) mantendará a los bits O a 3 en una alta impedancia (input state) y mandará los contenidos del registro f6, bits 4 a 7, a los pines YO.

0 Registro opción:

Este es el último de los registros de propósito especial. Define asignación de preescalamiento para el RTCC o WDT. El preescalador es compartido por el RTCC y WDT mediante un asignamiento mutuamente exclusivo. Solamente un recurso puede ser preescalado a la vez. Otros bits pertenecientes a este registro determinan sobre cual flanco el RTCC se sincronizará y si la señal de entrada del RTCC es internamente o externamente generada.

Temporizador “watchdog” (WDT):

Este registro es utilizado para prevenir el rompimiento catastrófico del software cuando se detiene súbitamente un progama del PIC. Puede ser usado también en

aplicaciones de temporización, esto es, como un detector de pulsos perdidos (missing-pulse detector).

El temporizador watchdog del PI(! 16C5X no requiere componentes externos y opera con su propio oscilador RC. V b T opera incluso cuando el reloj principal del microprocesador no está operando.

Otra función del WDT es ayudar a las operaciones de activación durante el modo de adormecimiento (sleep mode) de los PIC16C5X la instrucción SLEEP pone al PIC en el modo de adormecimiento. Cuando el PIC16C5X se encuentra adormecido, muy poca potencia es consumida.

0 Opciones para el oscilador:

Hay cuatro opciones de oscilador le se pueden usar con la serie de microcontroladores PIC 16C5X: XT, el cual 6s un oscilador a cristal; HS, que es un oscilador a cristal de alta velocidad; LP el cual es un oscilador a cristal de baja potencia y RC, que es un oscilador resistivo-capacitivo. Las EPROM pueden ser programadas para usar cualquiera de las cuatro configuraciones de oscilador. XT, HS y LP necesitan un resonador cerámico, un reloj externo a cristal para establecer la oscilación, mientras que la oscilación RC requiere únicamente un resistor y un capacitor. Naturalmente que las configuraciones del resanador cerámico y del oscilador a cristal son más precisas, pero si la temporización con alta presición no es requerida en una aplicación dada, el oscilador RC puede ser usada para minimizar costo y complejidad del circuito.

Circuito de Reset:

Los PIC 16C5X utilizan un circuito de Reset interno llamado Reset de activación (Power On Reset) en conjunto con el oscilador de inicio (Oscillator Start - Up Timer) para suplir la necesidad del reset tradicional de resistor y capacitor en la mayoría de las situaciones. Para implementar la circuitería del POR, se necesita soiamente conectar el pin MCLR a +5V. Si la alimentación se estabiliza lentamente (para llegar a los +5V) o se está operando con un reloj muy lentc :1 circuito de reset RC típico puede ser usado.

C) Código de programación:

Un ensamblador es una herramienta del software que normalmente corre en una computadora personal para compilar y traducir código fuente en datos binarios (opcode) que el PIC pueda entender y utilizar. El código tüente es escrito con un editor ASCII y es la percepción humana del “opcode” final. Se llama a una entidad en el código fbente que tiene sentido para el humano, pero no tiene absolutamente ningún sentido para el PIC cuando no es traducido en el proceso de ensamblamiento (assembly process).

FILE 7 6 5 4 3 2 1 0

o0

c”---) + PC 02 (Al O I A9 IA8

CALL INDIRECT ADDR. (*)

03 STATUS 04 FSR 05 PORT A 06

TRISC PORT C (**) 07 5 4 3 2 1 0 TRIS6 PORT B

[ OPTION I 08 o9 - OA - GENERAL TO AND FROM

OB

ADDRESS

o1 - ~ ~ ~ ~ ~ 1 0 9 8 7 6 5 4 3 2 1 O I O 9 8 7 6 5 4 3 2 1 O RTCC

7 6 5 4 3 2 1 0 I TRISA

- - - - - PURPOSE REGISTER FILE -

oc REGISTER 4 bl W I VIA ALU -

O0 7 - t FILE - O€ OF

I FROM PROGRAM MEMORY

BIT 6,s OF FSR:BANK SELECT (PIC1 6C57 ONLY)

10 11 .12 13 14 15 16 17 18 19 1P 18 I C I D 1E I F

I O0

GENERAL PURPOSE REGISTER

FILE (ALL TYPES)

GENERAL PURPOSE REGISTER FILE

(PIC1 6C57 ONLY)

(BANK O) (***) (BANK 3) p*) (BANK 2) y) (BANK l)(’**) 3F 7F SF

(*) NOT A PHYSICALLY IMPLEMENTED REGISTER. r*) FILE 17 IS A GENERAL PURPOSE REGISTER ON THE PIC1 6C54K56 (,,,) BANK O IS AVAILABLE ON ALL MICROCONTROLLERS W E BANK 1 TO BANK 3 ARE ONLY AVALABLE

ON THE PIC1 6C57.

El código principal define recursos permitiendo especificar nombres lógicos para posiciones de bit, puertos y registros. El código principal establece los pines de U0 de manera que los puertos A y B son configuiados como salidas.

Siempre que sea posible añada’comentarios en el código para simplificar algunas de las aplicaciones. Cualquier cosa que sigue a un “ ; ” (punto y coma) es considerado como un comentario.

La declaración ORG es usada para colocar código en una dirección particular dentro del espacio de memoria de la EPROM.BEGIN es una palabra reservada para el usuario o etiqueta (las etiquetas siempre comienzan en el margen izquierdo del programa) que el ensamblador utiliza como una referencia de dirección. Durante el proceso de ensamblado, el ensamblador nota la localización de BEGIN y recuerda que siempre que encuentra BEGIN de nuevo en el código fuente automaticamente sustituye la dirección que representa BEGIN. Las instrucciones GOTO y CALL utilizan etiquetas como referencias en el código fuente. Así, se puede brincar inmediatamente a la dirección representada por BEGIN mediante la ejecución de GOTO BEGIN o llamar a una subrutina marcada con la etiqueta START empleando CALL START.

Las etiquetas scc especialmente útiles en la implementación de procedimientos recursivos (loops) y subrutinas. La etiqueta END notifica al ensamblador que ahí termina el código ejecutable.

D) El conjunto de instrucciones:

A continuación se hecha un vistazo a cada una de las 33 instrucciones de programación:

NOP.

Esta instrucción significa No Operación. Es muy útil cuando se requiere temporizar adecuadamente un procedimiento ya que toma sÓ10 un ciclo para efectuarse y no afecta en nada más.

MOVLW; MOVWFf,d; GOTO.

MOVLW simplemente carga una literal o valor constante en W. M O W , mueve un valor de 8 bits de W a un registro designado (0, como se puede apreciar en la tabla 2. El operando “d’ dirige el resultado de la operación al registro W cuando d = O, o al registro ( f) con el que se encuentra trabajando la instrucción.

El siguiente código fuente escribe el patrón binario O1 O1 O 1 O 1 en el registro W y luego mueve el contenido de éste al puerto B:

MOVLW B’10101010’ ; CARGA W CON EL BINARIO 10101010 MOVWF DATAPORT ; ESCRIBE W EN EL PUERTO B (DATAPORT) GOTO .S ; RECURSIVIDAD INFINITA

La instrucción GOTO es una operación de control. El comando $ significa la posición actual del PC (Controlador de programa). Así, la declaración GOTO $ quiere decir brinca a donde ya se está. Por lo tanto, la recursividad es infinita.

0 CLRW.

Esta instrucción limpia al registro W poniéndolo en OH. Vamos simplemente a añadir una linea al código anterior para ilustrar esto:

MOVLW B’10101010’ ; CARGA W CON EL BINARIO 10101010 CLRW ; LIMPIA A W CON OH MOVWF DATAPORT ; ESCRIBE W EN EL PUERTO B (DATAPORT) GOTO .S ; RECURSIVIDAD INFINITA

CLFWf.

Esta instrucción hace para los registros lo que CLRW hace para W. La siguiente linea pone al puerto B en OH:

CLRF DATAPORT ; LIMPIA AL PUERTO B (DATAPORT)

SUBWF f; ADDWF f, d.

SUBWF hace la substracción del contenido de W de un registro de propósito general f. Esta instrucción también afecta los bits de CARRY (acarreo) y al bit ZERO en el registro de estados. La examinación de estos bits después de la ejecución de esta instrucción le hace posible al programador o al programa determinar si el resultado es O, negativo o positivo. Nuestro siguiente ejemplo carga al registro SCRATCH (registro de propósito general) con FFH y carga al registro W con 1H. SUBWF es entonces ejecutado y el resultado es dirigido al registro W:

MOVLW OFFFH ; CARGA A W CON FFH MOVWF SCRATCH ; CARGA A SCRATCH CON W MOVLW OlH ; CARGA W CON OlH SUBWF SCRATCH’O ; EJECUTA LA SUBSTRACCION

ADDWF es la instrucción opuesta y se comporta justo como la instrucción de substracción para establecer los bits de estado:

MOVLW OH ; CARGA A W CON O MOVWF SCRATCH ; CARGA A SCRATCH CON W MOVLW 1H ; CARGA A W CON 1 ADDWF SCRATCH,O ; EJECUTA LA ADICION

No:,:- que un O precede al operando FFH de la instrucción MOVLW en el segmento de código +e ilustra el uso de SUBWF. El O le dice al ensamblador que el número que sigue debe ser real y no una etiqueta. De otra manera, el ensamblador buscaría la etiqueta FF y al no encontrarla se generaría un error. La H después del operando OFF indica que el valor se encuentra en formato hexadecimal.

DECF f, d; INCF f, d.

DECF decrementa a un registro en 1 mientras que INCF incrementa a un registro en l . El resultado puede ser colocado de nuevo en el registro original o dirigido al registro W. Tenemos el siguiente ejemplo.

MOVLW OFFH ; CARGA W CON FFH MOVWF SCRATCH ; CARGA A SCRATCH CON W DECF SCRATCH,O ; DECREMENTA AL SCRATCH

El siguiente segmento de código incrementa a SCRATCH de O a 1:

CLRF’ SCRATCH ; LIMPIA AL SCRATCH INCF SCRATCH,O ; INCREMENTA AL SCRATCH

0 IORWF f, d; ANDWF f, d; XORWF f, d.

Estas instrucciones representan a las funciones de archivo - registro: OR - inclusiva, AND y OR - exclusiva del código del PIC. La función OR - inclusiva es útil cuando se establecen bits múltiples en registros. Estos mismos bits pueden ser entonces reseteados ejecutando la instrucción ANDWF. Cuando tales bits pasan a la función OR - exclusiva, el resultado es O. De esta manera, la funcion OR -exclusiva es frecuentemente utilizada para probar la condición de un conjunto de bits dentro de un registro.

El siguiente código de ejemplo emplea a la instrucción IORWF para apagar un LED y a la instrucción ANDWF para encenderlo.

CLRF DATAPORT ; LIMPIA AL PUERTO B (ENCIENDE AL LED) MOVLW B’10000000’ ; PONE UNA MASCARA EN W IORWF DATAPORT,l ; REALIZA W OR DATAPORT (APAGA AL LED) GOT0 ; RECURSIVIDAD INFINITA

El término máscara (MASK), se refiere simplemente a un patrón de bits que es lógicamente combinado con otro patrón de bits.

Ahora se enciende el LED mediante la instrucción ANDWF con el siguiente código:

MOVLW B’11111111’ ; CARGA A W CON FFH. MOVWF DATAPORT ; APAGA AL LED CLRW ; LIMPIA A W CON O ANDWF DATAPORT,! : ENCIENDE AL LED

Asuma que se ha incrementado al registro SCRATCH y se desea saber si se ha llegado a 04H.

MOVLW 04H ; CARGA A W CON 04H MOVWF SCRATCH ; CARGA AL SCRATCH CON 04H XORWF SCRATCH,O ; REALIZA W XOR SCRATCH

Puesto que SCRATCH íüe efectivamente 04H, el resultado de la OR - exclusiva íüe O. El bit de estado ZERO ha sido puesto.

0 IORLW k; ANDLW k; XORLW k

Estos operadores lógicos operan como sus contrapartes para archivos y registros, excepto que la operación es simplemente efectuada con un operando constante. Piense en k como una máscara y W como la referencia de la máscara. Así se tienen los siguientes ejemplos:

MOVLW OFFH ; CARGA A W CON FFH ANDLW O ; REALIZA W AND O

MOVLW OOH ; CARGA A W CON O IORLW OFFH ; REALIZA W OR FFH

MOVLW B’00100000’ ; CARGA A W CON 40H XORLW B’llllllll’ ; REALIZA W XOR DFH

Se puede apreciar que estas instrucciones realizan exactamente las mismas operaciones que sus contrapartes, pero de una manera más directa.

0 MOVF f, d.

Esta es una instrucción única. Es usada principalmente para mover el contenido de un registro de propósito general al registro W. Puede ser utilizada también para cargar a un registro consigo mismo poniendo d = l . Con el siguiente segmento de código, se carga el registro SCRATCH con OFH y luego se carga al registro W con el contenido del primero:

MOVLW OFH ; CARGA A W CON OFH MOVWF SCRATCH ; CARGA AL SCRATCH CON OFH CLRW ; LIMPIAA W MOVF SCRATCH’O ; CARGA A W CON SCRATCH

o COMF f, d.

El complemento de 1 es O y vice-versa. Esto es lo que esta instrucción hace, realiza el complemento de los bits en un registro. Para ilustrar esto, se complementa al patrón binario 01010101:

MOVLW B’01010101’ ; CARGA A W CON EL PATRON MOVWF SCRATCH ; CARGA A SCRATCH CON W COMF SCRATCH,O ; COMPLEMENTA A SCRATCH

0 DECFSZ f, d; INCFSZ f, d.

DECFSZ, decrementa a un registro f y salta a la siguiente instrucción si f = O. INCFSZ, incrementa a f y salta a la siguiente instrucción si f = O. Son utilizadas para implementar rutinas recursivas temporizadas, contadores, relojes de software, lazos de retardo y procedimientos para comunicación serial. A continuación se presenta un lazo típico:

START MOVLW OFFH MOVWF SCRATCH CLRF DATAPORT

DECFSZ SCRATCH,l COTO LOOP MOVLW 80H MOVWF DATAPORT GOTO START

LOOP

; CARGA A W CON FFH ; CARGA A SCRATCH CON W ; ENCIENDE AL LED

; DECREMENTA A SCRATCH ; SALTA SI SCRATCH = O ; CARGA A W CON 80H ; APAGA AL LED ; EMPIEZA DE NUEVO

Note el uso de etiquetas aquí. El lazo comienza con la etiqueta LOOP y termina en la instrucción GOTO LOOP. El LED se encuentra encendido durante la secuencia del lazo y es apagado al poner en 1 al MSB(bit más significativo) del puerto B. GOTO START lleva al programa a repetirse por siempre. “Por siempre” en el mundo de los PIC significa mientras la polarización este presente. Se puede utilizar el mismo código y trabajar con la instrucción INCFSZ. Puesto que se incrementará ahora, se debe cargar a SCRATCH con OH. Problablemente, se haya descifrado ya el hecho de que los registros simplemente giran. Esto es, se incrementa un registro que contiene FFH y el resultado es OOH, se decrementa un registro que contiene OOH y se obtiene el límite superior FFH.

SWAPF f,d.

Esta instrucción simplemente guarda nibbles en registros. Un nibble son cuatro bits, asi como un byte son ocho bits. El siguiente código es un ejemplo auto explicativo:

MOVLW B’00001111’ ; CARGA A W CON OFH MOVWF SCRATCH ; CARGA A SCRATCH CON OFH SWAPF SCRATCH,O ; ALMACENA NIBBLES

RRF f,d; RLF f,d.

Las instrucciones de rotación consisten de RRF, la cual rota al registro a la derecha y RLF, que rota al registro hacia a la izquierda. Las instrucciones de rotación son algunas veces utilizadas para multiplicar mediante la rotación a la izquierda ó para dividir mediante la rotación a la derecha. RRF y RLF son tambien útiles en la transferencia bit a bit requerida en rutinas de comunicación serial. El siguiente código es un ejemplo de rotación a la derecha:

BCF STATUS,C ; LIMPIA AL BIT DE ACARREO MOVLW OFFH ; CARGA A W CON FFH MOVWF SCRATCH ; CARGA A SCRATCH CON FF RRF SCRATCH,l ; ROTA AL LSB HACIA AFUERA

Ahora se rota a la izquierda:

BCF STATUS’C ; LIMPIA AL BIT DE ACARREO MOVLW OFFH ; CARGA A W CON FFH MOVWF SCRATCH ; CARGA A SCRATCH CON FF RLF SCRATCH,l ; ROTA AL MSB HACIA AFUERA

0 BCF f, d; BSF f, d.

BCF y BSF son usados para limpiar o poner en 1 los bits de un registro en forma individual. No son dificilies de comprender y emplear. Se pretende encender el LED utilizando a la instrucción BCF como sigue:

MOVLW OFFH ; CARGA A W CON FFH (LED APAGADO) MOVWF DATAPORT ; ENCIENDE AL LED BCF DATAPORT,7 ; LIMPIA AL BIT 7 DEL DATAPORT GOT0 $

El resultado es el encendido del LED al cambiar un simple bit. Recuerde que se hizo lo mismo utilizando una máscara y la instrucción A N D W F . La diferencia es que se necesita afectar sólo a un simple bit en una operación sencilla, mientras que ANDWF afectaría a múltiples bits en una operación simple. También, las hnciones de poner en 1 (set) y limpiar (clear) no afectan al registro de estados. Así, las instrucciones BCF y BSF son usadas comunmente para afectar un resultado que no requiere una revisión de estados de bits,

BTFSC f,b: BTFSS f,b.

Son comandos de verificación de bit. BTFSC, verifica a un determinado bit de un registro f y salta a la siguiente instrucción si el bit está en clear (O). BTFSS, verifica a un

determinado bit de f y salta a la siguiente instrucción si el bit está en set (1). Estas instrucciones encuentran aplicación en programas para entrada de teclado, rutinas de comunicación y aplicaciones con sensores. Como ejemplo tenemos lo siguiente:

MOVLW OFFH 9

MOVWF DATAPORT 9

MOVLW B'00000001' 9

MOVWF SCRATCH 9

LOOP BTFSS SCRATCH,O 9

GOTO LOOP 9

BCF DATAPORT,7 7

GOTO S

CARGA A W CON FFH APAGA AL LED CARGA A W CON OlH CARGA A SCRATCH CON W

VERIFICA AL BIT O EN SCRATCH SALTA SI BIT O = 1 ENCIENDE AL LED

Este segmento de código encuentra al bit 7 del registro SCRATCH en set (1) y sale del LOOP para encencer al LED. Al cambiar BTFSS por BTFSC, lo que ocurrirá es que nunca se saldrá del LOOP que comprende las instrucciones BTFSC y GOTO. Estas instrucciones se emplean también para verificar a los bits de estado en el registro de estados (status word register):

; verifica al bit CARRY BTFSS STATUS, C ; SI C ESTA EN SET SALTAR A GOTO INSTRUCCION GOTO WHERE-EVER ; A OTRA PARTE

Este código verifica al bit O en el registro STATUS y salta a la siguiente instrucción si bit0 = 1. Si se emplea BTFSC:

; verifica al bit ZERO BTFSC STATUS ; SI Z ESTA EN SET SALTAR A GOTO INSTRUCCION GOTO WHERE-EVER ; A OTRA PARTE

CALL K; RETLWK.

CALL se utiliza para saltar a una subrutina en una dirección particular, ejecuta tal subrutina donde debe encontrar una instrucción RETLW, la cual regresa a la instrucción (CALL+l). Esto se ilustra como sigue:

START BSF DATAPORT,7; APAGA AL LED CALL TURNON GOTO START TURNON BCF DATAPORT,7; ENCIENDE AL LED RETLW O ; RETORNA CON O EN W

TURNON es la subrutina que termina con RETLWO. La única observación para RETW es que k puede tomar cualquier balor de ocho bits.

2) Comunicación serial RS-232:

La mayoría de las computadoras personales tienen uno o más puertos seriales. Son utilizados popularmente en interfaces con modems, impresoras y mouse. Otro uso común es la formación de un enlace con un circuito sencillo de microcontrolador. Esta última aplicación permite facilmente trabajar con programas en sistemas que no tienen sus propios teclados, pantallas o discos. Los puertos seriales son también interfaces populares para los registradores de datos, controladores de motores, programadores EPROM y para casi todo dispositivo externo que pueda intercambiar información con una computadora.

1

Por otra parte, una computadora podría ser de lógica de nivel TTL mientras que un periférico utilizaría 15V CMOS. Ellos serían completamente incompatibles. En consecuencia, es necesario tener una norma adicional que gobierne el nivel de señal de las transmisiones. La norma más ampliamente aceptada y generalmente utilizada es la EIA RS- 232.

Aún cuando los niveles TTL podrían ser usados para comunicación, no son apropiados para transportar señales a más de 6 metros. El problema se origina por el hecho de que solamente 2 V separan a un nivel lógico O de un nivel lógico l .

Con sólo 2 V de inmunidad para los ruidos, la comunicación podría ser susceptible a interferencias de motores y c : tnterruptores.

Un comité industrial acordó un interfaz normalizado para resolver este problema, así como para sugerir normas para la industria. La EIA RS-232 se utiliza por los equipos modems. Esta especificación se aplica no sólo a las tensiones asignadas al nivel lógico O y 1, sino también al tipo de conector, asignaciones de terminales, impedancias de fbente y de carga, así como a una variedad de otras hnciones afines.

Los niveles de señal del RS-232 son bipolares y utilizan una tensión negativa entre -3 y -1 5V para representar un nivel lógico 1 y una tensión positiva de 3 a 15 V para representar un nivel lógico O. Es decir, las señales usan lógica negativa. La región entre -3 y +3 V ayuda a la inmunidad contra ruidos y es una región “muerta”. Aun cuando +15V podrían proporcionar una transmisión óptima, +3 V y -7V son también aceptables.

Un puerto serial estándar de una computadora personal manda y recibe información de un bit a la vez, aunque puede mandar y recibir bits simultaneamente. Para un enlace de dos caminos, se necesitan sólo tres hilos, un hilo para llevar datos para cada dirección y otro para referencia de tierra. Algunas aplicaciones utilizan hilos adicionales para señales de control. En contraste el puerto paralelo de una PC puede transmitir ocho bits simultaneamente, pero requiere un hilo por separado para cada bit.

Popular RS-232 Signal Pin Number Signal Abbreviation Designation Name DB-25 DB-9 Direction TD RD

RTS

CTS

R1

DTR

DSR

CD

SG

BA Transmitted Data BB Received Data

CA Request To Send

CB Clear To Send

CE Rmg Indicator

CD Data Terminal Ready

CC Data Set (DCE) Ready

CF Carrier Detect

AB Signal Ground

2 3

4

5

22

20

6

8

7

To DCE From DCE

To DCE

To DTE

To DTE

To DCE

To DTE

To DTE

-

Comments Carries data from DTE to DCE. Carries data fiom DCE tc DTE . Telles DCE that DTE has data to send. See CTS. Response to RTS. DTE it’s okay to send data. Indicates that ringing voltage i s present on telephone line. See DTR. Response to N. Tells modem answer phone o f signals that DTE is ready to operate. See DSR. Tells computer that DCE is ready to operate. Indicates that DCE is receiving suitable signal, such as a carrier in expected, frequency band. Common ground for all signals.

DTE: Data Terminal Equipment. Computer in a computer/modem l ink. Usually has male connector. DCE: Data Communications Equipment. Modem in a computer/modem link. Usually has female :onnector.

Generalmente, el puerto serial estándar de una computadora 8086 o compatible con IBM, conforma a la interfase estándar RS-232 para comunicación serial. La “Electronics Industries Association (EIA)” es la fuente que define las funciones de las señales, las locaciones de los pines y otras características de la interface. La norma se ha sometido a varias revisiones desde su introducción en los ~ O ’ S , siendo la ultima versión la RS-232E en 1991.

El puerto serial tiene las siguientes ventajas sobre otras interfaces:

( I ) Toda computadora tiene un puerto serial.

(2) Los puertos RS-232 no están limitados a un tipo de computadora. Se puede utilizar un enlace RS-232 para intercambiar información con cualquier computadora o dispositivo que cuente con un puerto RS-232.

(3) Se pueden mandar datos a 50 pies o más lejos. A diferencia de la interface en paralelo estándar, cuyos cables estan limitados a 1 O o 15 pies de longitud, la norma RS-232 fue diseñada para transmitir a través de distancias más largas. Además, mediante el uso de modems a cada extremo del enlace, se pueden utilizar redes telefónicas para transmitir datos a casi cualquier parte del mundo.

(4) Se necesitan sólo tres hilos para un enlace por dos caminos. En un enlace paralelo, el costo de proveer un hilo por cada bit comienza a aumentar.

Las desventajas del puerto serial serían:

(1) Si se necesitan datos en paralelo en otro extremo del enlace, se deben convertir los datos en serie al formato en paralelo. Esto es usualmente realizado mediante un chip especial llamado UART (Universal Asynchronous Receiver/Transmitter).

(2) Los parámetros en la comunicación, deben ser idénticos en ambos extremos del enlace. Cuando se transmite, se debe seleccionar una velocidad de trasmisión número de bits de finalización y de inicio (stop and start bits) y si se manda o no un bit de verificación de error con cada byte. Ambos extremos del enlace deben estar de acuerdo en todo esto. Si no lo están el extremo que recibe no entenderá lo que está siendo mandado.

(3) Puede ser dificil encontrar un puerto disponible. Incluso si una computadora cuenta con varios puertos seriales, puede que no logre encontrar alguno que este libre para usarse. Aunque la mayoría de las computadoras personales permiten por lo menos cuatro puertos para comunicación serial (conocidos como COMI, C O W , COM3 y COM4), únicamente dos niveles de interrupción son reservados para ellos.

Un problema mayor con puertos seriales múltiples es que sólo se cuenta con dos niveles de petición de interrupción normalmente reservados para COM1 a COM4.COMl y COM3 convensionalmente usan a IRQ4;: mientras que COM2 y COM4 emplean a IRQ3. Sin embargo, asignar el mismo nivel ,IRQ a dos puertos puede conducir a problemas. En muchos casos, aunque se tengan cuatro puertos seriales sólo se pueden utilizar dos a la vez. La razón de esto tiene que ver con las lineas de interrupción y los componentes qie las controlan.

(4) RS-232 no está diseñado para redes. Si se desea tener más de dos dispositivos conectados al mismo par de hilos , una interfase RS-485 es una mejor opción.

(5) La velocidad máxima especificada para un enlace RS-232 es de 20,000 bits por segundo (20K bps). Aunque se puede exceder de vez en cuando este límite, especialmente con cables más cortos, se debe emplear una interface diferente para transferencias de más alta velocidad y/o mayor distancia.

A) El UART (Universal Asynchronous Receiver/Transmitter):

En computadoras 8086, el dispositivo que controla al puerto serial es usualmente uno de tres chips populares UART o un componente que los emula. Los UART originales son todos de la misma familia de la “National Semiconductor”.

El UART convierte datos en serie y en paralelo. Esto es, el UART convierte datos recibidos en serie en datos en paralelo y convierte datos en paralelo en datos en serie para transmisión.

Asíncrono significa que los dispositivos en ambos extremos del enlace no utilizan una señal de reloj común para temporizar las transmisiones. En lugar de eso, ambos dispisitivos deben ponerse de acuerdo en la velocidad de transmisión, por lo que cada dispositivo temporiza su propia transmisión independientemente. Puesto que las velocidades a cada extremo puede variar ligeramente, el UART suministra bits de inicio y terminación para indicar el comienzo y final de cada byte.

En una interface RS-232 cada camino de transmisión utiliza su propio hilo. Con una interfase de duplex completa (comunicación por dos caminos) se puede transmitir y recibir al mismo tiempo, mientras que en una interface de media duplex (comunicación por un sólo camino) las dos direcciones deben turnarse. La mayoría de las comunicaciones seriales con computadoras personales son de duplex completa.

Computadoras personales más antigüas utilizan una UART 8250. Modelos más recientes pueden usar un 16450, el cual es más rápido y adiciona un registro auxiliar. El 16550 es un modelo aún más reciente que suministra buffers de transmisión y recepción hmadas FEOS (first in, first out), lo que significa que los datos son leidos de la FIFO en el mismo orden en que son recibidos. Así, el primer bit en entrar o recibido, es el primer bit en salir o ser leido del buffer.

Cada buffer puede almacenar 16 bytes. Los buffers permiten transferencias mucho más rápidas de datos. En el lado receptor, la CPU no tiene que preocuparse en leer cada byte antes de que el siguiente arrive. Si la CPU está ocupada, el buffer almacena los bytes recibidos, de manera que la CPU pueda leerlos todos cuando este libre. En el lado transmisor, la CPU puede escribir una serie de bytes a la UART, y la UART los transmitirá en la secuencia adecuada temporizada.

Los más reciente chips son completamente compatibles. Los pines de salida del 8250 y del 16450 son idénticos. El 16550 cuenta además con dos salidas, TXRDY y RXRDY, las cuales son usadas en transferencias DMA mediante buffers, y elimina una salida, CSOUT, la cual indica cuando el chip es seleccionado. Ninguna de éstas son requeridas para operación normal.

Al ser reseteado, el 16550 actúa como un 16450. Es hasta la llegada del software para el puerto serial que se habilitan y se utilizan los buffers.

Mucha de la terminología RS-232 se remonta a sus orígenes como norma para la comunicación entre la terminal de una computadora y un modem. La norma llama al extremo del enlace formado por la computadora como DTE del inglés Data Terminal Equipment (Equipo Terminal de Datos) y al extremo formado por el modem DCE del inglés Data Comunication Equipment (Equipo Para Comunicación de Datos). En la práctica, RS- 232, se emplea actualmente para muchas cosas más allá de las comunicaciones de terminal a modem. Con frecuencia, se encontrará a una computadora de algún tipo en un extremo del enlace mientras que en el otro extremo se encontrará ya sea una segunda computadora, un microcontrolador, un mouse, una impresora o cualquier otro dispositivo con una interface serial.

La tabla X muestra a las nueve señales RS-232 más utilizadas, junto con sus hnciones designadas. Las señales escenciales son TD (Transmit Data), la cual lleva los datos del DTE al DCE; RD (Receive Data), que lleva datos del DCE al DT; y SG, que es una señal de tierra.

No importa cual dispositivo en un enlace sea el DTE y cual el DCE, pero se debe terner uno de cada tipo. Los nombres DTE y DCE definen la configuración de entradas y de salidas en el conector. Las señales son nombradas desde la perspectiva del D E . Por ejemplo, TD es una salida en un DTE y una entrada en un DCE mientras que RD es una entrada en un DTE y una salida en un DCE.

B) Formatos para transmisión:

En un enlace serial, los bits de datos llegan uno después de otro a través de un solo hilo. El extremo que recibe debe tener una referencia sincronizada de manera que pueda determinar donde termina un byte y comienza el siguiente. Hay dos maneras de proporcionar esta referncia de sincronismo.

En una transmisión síncrona, un extremo del enlace provee un reloj maestro el cual es sólo una señal a una frecuencia constante tal como una honda cuadrada. Los datos transmitidos son sincronizados por el reloj. En otras palabras, cada bit transmitido es válido a un tiempo definido después de una transición de reloj. El receptor utiliza el reloj para determinar cuando leer a los bits que van llegando.

Una interface síncrona requiere de una línea para la señal de reloj. De manera que, una interface de dos caminos típicamente contiene una linea para datos en cada dirección, más una línea para la referencia de reloj. Las intefaces síncronas son populares para enlaces a corta distancia. Si bien la interface completa RS-232 soporta transmisión síncrona, la mayoría de los enlaces RS-232 emplean un formato asíncrono. En este tipo de transmisión, cada extremo del enlace cuenta con su propio reloj. Aunque los relojes deben coincidir bastanre en frecuencia, una exacta sincronía no es requerida.

Aun cuando el formato puede variar, una transmisión típica manda datos en el formato de un bit de inicio, seguido de ocho bits de datos (comenzando con el bit O o el menos significativo) y un bit de terminación. Lafigura 5 muestra transmisión serial típica de un byte de información.

DATA - BIT VALUES I I 0 0 0 1 1 0 1 o

>+5v

WORD 111 BEGINS HERE

WORD #2 BEGINS HERE

C) La extensión de cables:

Las primeras versiones de la norma RS-232 recomendaban el uso de cables de 50 pies o más cortos. Esta es todavía una buena pauta general. En la mayoría de los casos, para transmisiones por encima del límite especificado de 20,000 bps, se pueden utilizar cables de hasta 5!’ pies de longitud sin una protección especial.

Últimas versiones del estándar elimian el límite de longitud y en lugar de eso, específica una capacitancia máxima de 2,500 pF en el receptor. Este valor incluye la

capacitancia del receptor, la capacitancia mutua entre conductores en el cable y la capacitancia entre el conductor y la tierra (o la protección del cable en caso de que la tenga).

La capacitancia del cable es importante por varias razones. Puesto que es una impedancia, atenúa o reduce el nivel de la señal en el receptor. La capacitancia también limita la velocodad de transmisión (que tan rápido el voltaje en el cable puede cambiar). Una capacitancia más grande significa también que un cambio de voltaje en el cable requiere más correinte, por lo que el consumo de potencia total de las transmisiones será mayor.

Como una regla tenemos que mientras más grande sea la longitud de un cable, la capacitancia en el receptor será mayor. Algunos cables son especificados por los fabricantes en picofaradios por pie.

De acuerdo a la Nota de Aplicación AN-2 de “Maxim Semiconductor”, la capacitancia para un par torcido (Twisted Pair) es de alrededor 12pF/ft.

Si la capacitancia total queda dentro del límite, y si se utilizan transmisores y receptores que siguen las especificaciones RS-232, se esta en condiciones de transmitir datos a una razon de 20,000 bps, inclusive a través de cables muy largos.

Si se desea emplear cables que exceden el límite de capacitancia, se puede estar todavía en posibilidades para comunicarse, siempre y cuando las velocidades de transmisión de bits sean más lentas. También, a través de cables de corta longitud, con baja capacitancia, se está en condiciones de comunicación más rápida a los 20,000 bps.

Otras consideraciones que afectan la velocidad de transmisión incluye al software que controla las comunicaciones seriales (como son las deficiencias del lenguaje de

i

programación y el programa mismo) y la habilidad del hardware del puerto serial para manejar altas velocidades de transmisión.

3) Servos:

El término “Servo” es una forma abreviada para “Servomecanismos” se refiere a muchos tipos de dispositivos mecánicos y electromecánicos, todos los cuales tienen la característica de contar con alguna forma de autoregulación por medio de retroalimentación.

En el caso de servos para uso en aparatos de entrenamiento o industrial, la retroalimentación se presenta en forma de información de posición. El eje del servo se encuentra acoplado a un potenciometro cuyo valor es proporcional a la posición del eje.

Es una cuestión bastante simple comparar electrónicamente la posición del pot con la señal que representa la posición comandada. La comparación puede resultar en uno de tres casos: la posición actual es mayor que, menor que o igual a la posición comandada. Una vez que el circuito tiene esta información, todo lo que tiene que hacer es dirigir al motor hacia atras o hacia adelante hasta que las posiciones sean iguales.

Debido a que los servos buscan el equilibrio entre la posición comandada y la actual, requieren poca atención de un controlador. Una vez que el controlador a comandado la nueva posición del servo, no tiene que hacer nada más. El servo hará todo lo que este en su poder para obedecer al comando. Cuando el servo alcanza la posición comandada, éste incluso resistirá esfberzos para moverlo.

El truco en los servos radica en responder a una diferencia dada entre la posición comandada y la actual (conocida como “señal de error”) con justamente el suficiente movimiento para eliminar el error. Al desviarse un servo, la nueva señal de error generada lo dirigirá hacia la posición comandada. Esto podría conducir a otra desviación y a otra corrección. Este proceso de ajuste para anular el error respecto a la posición comandada es conocida como “setting”.

Para prevenir al servo de oscilaciones continuas alrededor de la posición comandada los diseñadores especifican una “banda de guarda’’ o “banda muerta”. Esto es, un rango de error tolerable que no causaría que el servo se moviera..

De esta concisa descripción de los servos, el siguiente esquema para un servomotor resulta claro:

I“ referencia

I

aparato de medida referencia

detector de error

amplificador

IV. DESCRIPCION DEL CONTROLADOR:

El controlador de servomotores acepta datos del puerto serial de una computadora personal mediante el protocolo RS-232. Estos datos deben estar en un formato de 5 bytes, los cuales forman un paquete de datos válidos. (Ver tabla 3). Si alguna porción del paquete es incorrecta o no está presente, la transmisión completa es ignorada. Esta característica permite al controlador compartir la misma línea serial sin confbsión.

Sync Marker Address (Servo Board) Data 1 Data 2 Data 3

Ffh (Always) SSSBBBB Oh to FFh Oh (See Text) Oh (see text)

El primer byte en el paquete de datos es el indicador de sincronía. Este byte es siempre FFh (255 en decimal). El indicador el dice al IC3 que un nuevo paquete se encuentra en la línea. Sincronizar el IC3 en esta manera previene que éste entregue datos incorrectos al IC4 en el caso de un problema de comunicación.

Debido a que los datos y direcciones no pueden ser actualizados simultáneamente (ya que toma dos instrucciones al PIC escribir en tales puertos), es importante asegurarse de que el IC4 no lee estos bytes cuando se está efectuando una actualización. Si esto pasa, se asignaran datos anteriores a una nueva dirección del servomotor, lo cual puede causar grandes problemas en el sistema que es controlado.

Con este sencillo controlador de servomotores, se pueden actualizar todos los ocho servos 48 veces por segundo, lo cual es considerablemente más rápido de lo que los servos pueden responder.

El segundo byte contiene dos direcciones: una dirección de tres bits para seleccionar el número de servomotor (O a 7) y una dirección de cinco bits (O a 31) para determinar al circuito que comparte la misma línea serial (en caso de que hubiera otros). Esta última dirección se almacena dentro de la ROM que pertenece al IC3, el cual ignora cualquier transmisión cuya dirección no coincida con la almacenada. Si la dirección coincide, IC3 pasa la dirección del servomotor (O a 7).

El tercer byte es el dato de posicionamiento. Un valor de Oh corresponde a un ángulo de O" para el servomotor direccionado y Fah correspondea 90" Un servo típico tiene

90' de rango de movimiento proporcional a I ms de cambio en el ancho de onda de entrada (jig. 3). Además, 8 bits de entrada proveen 256 posiciones posibles para una resolución teórica de 90/256 = 0.35'. En realidad el controlador divide al rango de 1 ms en aproximadamente 250 partes con una duración de 4-ms por parte, para una resolución de 0.36"

Position Delay between pulses

(1.5 ms = (for 50- to 6 0 - H ~ centered] update rate]

2ms 14 to 18 rns m ax

scrvo direction: $ # #

El controlador acepta valores que exceden de Fah, hasta Ffh, lo cual produce ancho de pulsos ligeramente mayores a los 2-ms de máximo. Esto es, la mayoría de los servomotores aceptan pulsos que son ligeramente más anchos o angostos que el rango nominal de 1 a 2 - ms; por lo que esto no representa ningún problema.

El cuarto y quinto bytes están reservados para uso futuro. Si el circuito que se direcciona es el controlador de servomotores, estos bytes deben ser Oh o de otra manera, las direcciones y los datos en los dos bytes precedentes serán ignorados.

Una vez que un paquete de datos ha pasado la prueba de sincronía, direcciones y datos válidos, IC3 coloca los datos y direcciones de los servomotores en sus líneas de salida a IC4.

Para decirle al IC4 cuando es seguro leer los datos y direcciones, se añadió un bit de validación de datos (DV). Justo antes que 1C3 escriba los nuevos datos en sus puertos de salida, coloca al bit DV en alto, lo cual le dice al IC4 que debe ignorar los datos y las líneas de direcciones. Con el bit DV en alto, IC3 fija a los nuevos datos y direcciones, espera un momento y entonces pone en bajo al bit DV. Esto le dice al IC4 que los datos y las líneas de direcciones son ahora válidos.

El chip IC4 genera las formas de onda moduladas por ancho de pulso (PWM waveforms) para los ocho servomotores, basado en los datos suministrados por IC3.

Por medio del software, IC4 trabaja como un simple temporizador de ocho canales. Este chip guarda el tercer byte (dato de posición) de cada canal en R A M . Cuando da servicio a uno de sus canales, activa el bit de la salida apropiada (SVO-SV6) y espera durante 1-ms. Luego, entonces, copia el valor apropiado de la RAM en una variable temporal y decrementa una rutina recursiva de 4 - ms (a 4 - ms loop) el número de veces dictado por la variable. Cuando termina, desactiva el bit apropiado de salida.

Como un ejemplo de lo anterior, si se manda al servomotor 3 el valor 100, el ancho del pulso para este servo será:

W = Ims + (100 ms X 4 ms) = 1 ms + 400 p s = 1 ms + 0.4 ms = 1.4 ms

Esto provocará que la posición de tal servo cambie en:

4 PS - 0.36' 1.4 ms - P

P = 1.4 ms X 0.36' = 126" 4 PS

El diagrama esquemático del circuito para el controlador de servomotores se muestra en la figura 7.

q =.

u

t

V) COMENTARIOS FINALES

La elección de la velocidad en la trasmisión de datos afecta el valor del resonador s:erámico CRI . Para una transmisión d,e 19,200 bps debe utilizarse un resonador de 8 MHz, mientras que para una de 9,600 bps un resonador de 4 MHz.

El chip empleado para iC4 puede ser ya sea un XT o un HS (XT para oscilador a cristal y HS para alta velocidad), pero CR2 debe ser siempre un resonador de 4 MHz. para que los servos operen correctamente. Lafigura X muestra las diferentes velocidades para transmisión de datos y los respectivos valores para CR1

CR1 Value Serial Bit Rate* 8 M H z 19,200 bps 4 Mhz 9,600 bps 2 Mhz 4,800 bps

* Bits per second

Varias normas han sido escritas para hacer al equipo de diferentes manufacturas compatibles. La más popular h e a publicada en 1962 por la EIA (Electronics Industries Association). Esta í%e la norma recomendada RS-232: Interface entre Equipo Terminal de Datos y Equipo de Comunicación de Datos Empleando Intercambio de Datos Seriales Binarios. RS-232 ha sufrido varias revisiones. Siendo la de mayor duración la RS-232C, publicada en 1969 sin ser reemplazada sino hasta 1986 por EIA-232D. La última versión es la EINTIA-232E publicada en 1991 (TIA significa Telecommunications Industries Association). El estándar EIA/TIA-232E facilita la afinidad entre computadoras y dispositivos perifericos conectados a través de puertos seriales.

Para la entrada serial, se utiliza un conector hembra DB-25 de acuerdo a la norma RS-232 alambrado a un cable modem de manera que se pueda conectar al controlador con diferentes computadoras sin tener que emplear un cable distinto cada vez. Esto se muestra en lafig. X+ I.

VI) BIBLIOGRAFIA:

COMPUTERCRAFT. “Build a Serial Servo Controller” Scott Edwards. May 1993 pags: 10 - 19

MICROCOMPUTER JOURNAL. “Serial Ports Inside and Out” Part I Jan Axelson ’* ,ovember/December 1994 pags: 61 - 69

MICROCOMPUTER JOURNAL. “Serial Ports Inside and Out” Part I1 Jan Axelson JanuaryFebruary 1995 pags: 50 - 58

MICROCOMPUTER JOURNAL. “Use a Serial Port Discrete U 0 Operations” Robert Moon September/October 1994 pags: 34 - 45

MICROCOMPUTER JOURNAL. “Getting to Know the PIC 16C54 Microcontroiler” Fred Eady May/June 1994 pags: 28 - 44

CINVESTAV - I.P.N. “ARQUITECTURAS RISC”

S. Pfleger Marzo 1991 pags: 44 - 45

SISTEMAS DIGITALES MONOGRAFIA De Luca/Rojas/Téllez

DOCUMENTO - RESUMEN

U.A.M. - I pags: 39 - 143

8) MICROELECTRONICS MillmadGrabel McGraw - Hill 1988 pags: 264 - 306

9) BUILD YOUR OWN COMPUTER Steve Ciarcia McGraw - Hill Mayo 1981 pags: 147 - 154

10) THE ART OF ELECTRONICS HayesIHorowitz Cambridge University Press 1989 pags: 479 - 489

11) CIRCUITOS ELECTRONICOS Y SUS APLICACIONES Bernard Grob McGraw - Hill Julio 1983 pags: 259 - 28 1

12) DICCIONARIO DE LA ELECTRONICA LAROUSSE Marzo 1970 pags: 300 - 302