Академический Документы
Профессиональный Документы
Культура Документы
q
Objetivo del Curso
En este curso se presenta una descripcin general del microcontrolador MC68HC11 de Motorola. Se describen sus diferentes subsistemas internos, se da una breve descripcin de su programacin as como el uso de las herramientas de desarrollo, tales como el mdulo de evaluacin MC68HC11EVBU, el ensamblador AS11 y el modo de operacin Boot-Strap. Al final se presenta una aplicacin completa de este microcontrolador en la medicin de transitorios de velocidad angular.
Contenido:
1. Caractersticas generales del MC68HC11 1.1 Descripcin general del 68HC11 1.2 Descripcin de las lneas del 68HC11 1.3 El CPU 1.4 Modos de operacin 1.5 Memoria interna 1.6 Reset e interrupciones Operacin del Mdulo de Evaluacin MC68HC11EVBU Los puertos paralelos de entrada/salida El puerto serie de comunicaciones asncrono El sistema del temporizador El convertidor analgico digital Sistema mnimo para medicin de velocidad angular
2. 3. 4. 5. 6. 7.
E MODA/LIR
MODB/VSTBY
XTAL
EXTAL
IRQ
XIRQ
RESET
512 BYTES DE RAM CPU 68HC11 512 BYTES DE EEPROM SISTEMA DEL TIMER BUS EXPANDIDO DE DIRECCIONES BUS DE DATOS Y DIRECCIONES INTERFACE SERIE PERIFERICA SINCRONA SINCRONIZACION Y PROTOCOLO DE LOS PUETOS PARALELOS DE ENTRADA/SALIDA
CONVERTIDOR
TX RX
A/D
Figura 1.1 .- Diagrama a bloques del microcontrolador. La figura 1.1 muestra en forma de bloques los diferentes sistemas que se encuentran en el microcontrolador. En dicha figura se puede apreciar la interaccin entre los diferentes sistemas, as como la de stos con las lneas externas del 68HC11. En este captulo se describe cada uno de estos sistemas, presentando con mayor detalle los que fueron utilizados en este trabajo. Como se explic, existen diferentes empaquetados para el 68HC11, en la figura 1.2, se muestra en detalle el tipo de empaquetado utilizado en este trabajo
XTAL PC0/ADDR0/DATA0 PC1/ADDR1/DATA1 PC2/ADDR2/DATA2 PC3/ADDR3/DATA3 PC4/ADDR4/DATA4 PC5/ADDR5/DATA5 PC6/ADDR6/DATA6 PC7/ADDR7/DATA7 RESET XIRQ IRQ PD0/RxD
8 9 10 11 12 13 14 15 16 17 18 19 20
46 45 44 43 42 41
PE5/AN5 PE1/AN1 PE4/AN4 PE0/AN0 PB0/ADDR8 PB1/ADDR9 PB2/ADDR10 PB3/ADDR11 PB4/ADDR12 PB5/ADDR13 PB6/ADDR14 PB7/ADDR15 PA0/IC3
MC68HC11E1
40 39 38 37 36 35 34
V DD
10 k
RESET
0.01
uF
Figura 1.3 .- Circuito de Reset en base a un arreglo RC Lneas EXTAL y XTAL Estas dos lneas proveen el modo de introducir al microcontrolador la seal oscilante de un cristal o reloj compatible con la tecnologa CMOS, para la excitacin del circuito de generacin del reloj interno del microcontrolador La frecuencia de reloj aplicada a estas lneas debe de ser cuatro veces mayor a la frecuencia deseada en el bus interno. En este trabajo se utiliz un cristal de 8 Mhz. En caso de que se aplique un reloj externo al MCU la seal del reloj se aplica a la lnea EXTAL mientras que la lnea XTAL es recomendable conectarla a tierra a travs de una resistencia de entre 10k y 100k. La salida XTAL puede ser utilizada para la excitacin de otro MCU. La figura 1.4 muestra el arreglo recomendado para la conexin del cristal a las lneas EXTAL y XTAL.
25 pF
EXTAL
10 M
CRISTAL 4XE
XTAL
25 pF
Figura 1.4.- Modo de conexin de un cristal a las lneas EXTAL y XTAL Lnea E (Salida de Reloj del Bus Interno) La lnea E es una salida del reloj interno generado por el sistema del oscilador del MCU. Esta
5
frecuencia es usada como una referencia de tiempo. Como ya se mencion anteriormente la seal E es una cuarta parte de la seal aplicada a los lneas EXTAL y XTAL. Es importante sealar que en modo de Bajo consumo de energa todos los clocks del MCU se congelan incluyendo ste. Lnea IRQ (Requerimiento de Interrupcin). Esta entrada nos da un medio de solicitar una interrupcin asncrona enmascarable al MCU. Esta entrada de requerimiento de interrupcin est configurada para operar en el flanco de bajada, es decir en la transicin de un nivel alto a un nivel bajo de voltaje, pero puede ser programado para su activacin en un flanco de subida. Para evitar disparos en falso de esta lnea es recomendable colocar una resistencia "Pull Up" de 4.7k de esta lnea a VDD. Lnea XIRQ (Requerimiento de interrupcin no enmascarable). Esta lnea de entrada nos proporciona al igual que la anterior, un medio para solicitar una interrupcin, pero en este caso es del tipo no enmascarable. Durante el ciclo de RESET el bit X del registro de banderas es puesto, por lo que cualquier solicitud de interrupcin el la lnea XIRQ , es ignorada. El bit X es limpiado por una instruccin de software, para la habilitacin de esta interrupcin. Una vez realizdo esto, no puede ser vuelto a poner este bit por software. Esta bandera nicamente es puesta por el hardware del MCU en el ciclo de RESET o al atender una interrupcin para evitar el anidamiento de rutinas. Lneas MODA/LIR y MODB/VSTBY (Seleccin de Modo de Operacin) Estas lneas son las encargadas de seleccionar el modo de operacin del MCU. El modo de operacin es capturado durante la aplicacin de un pulso bajo de la lnea RESET, de acuerdo a la Tabla 1.1 Niveles de las lneas MODA y MODB MODB 1 1 O O MODA 0 1 0 1
Tabla 1.1 Modo de operacin del MCU seleccionado por MODB y MODA Despus de que el modo de operacin ha sido seleccionado, la lnea MODA/LIR se convierte en el registro de carga de instruccin (LIR), el cual nos proporciona una salida del tipo de colector abierto, la cual nos indica que se ha cargado la siguiente instruccin ha ejecutar.
6
Despus de que se ha reconocido el modo de operacin del MCU, la lnea MODB/VSTBY comparte la funcin de proporcionar la energa para la conservacin de la memoria RAM en ausencia o disminucin del voltaje de polarizacin. Es importante sealar en este punto que en el modo de ahorro de energa llamado STOP, no es necesario proporcionar una fuente de energa adicional, ya que en este modo se conservan los datos contenidos dentro de la memoria RAM y los registros. Lneas VRL y VRH (Voltajes de referencia para el Convertidor A/D) Estas lneas, proporcionan la referencia de voltaje para el Convertidor analgico/digital en su modo de operacin radiomtrica, donde VRL es la referencia de voltaje inferior y que normalmente es tierra o cero volts, y VRH es la referencia positiva o superior y que normalmente es conectada a VDD, para utilizar el rango de entrada de 0 a +5 volts. Para una correcta operacin del convertidor analgico/digital es necesario que VRH sea por lo menos 3 volts mayor que VRL adems VRL y VRH tengan valores entre VSS y VDD. Lnea STRA/AS Esta lnea tiene dos funciones separadas, dependiendo del modo de operacin en que se encuentre el MCU, as en el modo Single Chip y Bootstrap esta lnea es una entrada del tipo "Strobe", que permite guardar en un registro especial el estado del puerto C. En modo expandido y "special Test", esta misma lnea se denomina AS y acta como una lnea de salida que nos proporciona el medio para multiplexar el puerto C, ya que como se recordara en este puerto se encuentran multiplexados el bus de datos y la mitad menos significativa del bus de direcciones. La lnea AS se activa cuando las lneas AD0 a AD7 actan como bus de direcciones. Lnea STRB/R/W Al igual que en la lnea anterior, este tiene dos funciones dependiendo del modo de operacin en que se encuentre operando el MCU. As, si se encuentra operando en modo de Single Chip o Bootstrap esta lnea se denomina STRB y acta como una lnea de salida de sincronizacin que junto con STRA, proporciona un protocolo de comunicacin para el puerto B y C. En modo de operacin expandido multiplexado esta lnea es denominada R/W y es utilizada para indicar la direccin de transferencia del dato contenido en del bus de datos.
como las lneas de orden superior del bus de direcciones. El puerto C contiene 8 lneas de Entrada/Salida Bidireccional de propsito general, cuando el MCU se encuentra operando en modo de Single Chip o Bootstrap. Cuando el MCU se encuentra operando en modo Expandido Multiplexado, las lneas de este puerto se utilizan como las 8 lneas menos significativas del bus de direcciones multiplexadas con el bus de datos (AD0 ... AD7). La tabla 1.2 muestra las funciones de los puertos y lneas del MCU.
Puerto A
En todos los modos de operacin, el puerto A es el responsable de la manipulacin del contador de carrera libre para las operaciones de tiempo. Es conveniente aclarar en este punto, que el contador de carrera libre funciona a una velocidad igual a la frecuencia del reloj o cristal conectado al MCU dividida entre 4, es decir la frecuencia de la seal E, por lo que tenemos una frecuencia conocida y por lo tanto una base de tiempo real. Este puerto posee 8 lneas, de las cuales 3 estn diseadas para la captura de eventos IC (Input Capture), y 4 estn diseadas para la funcin de comparacin con el contador de carrera libre, OC (Output Capture), de esta manera se puede producir una seal a travs de una lnea "OC" de comparacin de eventos que produzca una accin en funcin del tiempo. Se tiene un lnea ms, la cual es programable, ya sea como entrada de captura de eventos (IC), o como comparacin de eventos (OC). Dentro de este puerto existe otro subsistema, al cual se le conoce como "Acumulador de pulsos o eventos", este pequeo sistema contiene un contador de 8 bits. Este puerto tambin puede funcionar como un puerto de salida sencillo de 3 lneas, un puerto sencillo de entrada de 3 lneas y 2 lneas configurables como entrada o salida. Es importante mencionar que cada una de estas lneas puede ser programada individualmente, pero con una sola de sus funciones a la vez.
Puerto B
Este es un puerto de salida de 8 bits. Durante la operacin del MCU en modo de Single Chip las lneas del puerto B se comportan como salidas de propsito general, por lo que es considerado como un puerto sencillo de salida En modo expandido multiplexado todos los bits del puerto B actan como la mitad ms significativa del bus de direcciones. En este modo de operacin el registro del puerto B es tratado como una direccin de puerto externa.
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PD0 PD1 PD2 PD3 PD4 PD5 PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7 STRA STRB PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
PA3/OC5/IC4/OC1 PA4/OC4/OC1 PA5/OC3/OC1 PA6/OC2/OC1 PA7/PAI/OC1 ADDR8 ADDR9 ADDR10 ADDR11 ADDR12 ADDR13 ADDR14 ADDR15 ADDR0/DATA0 ADDR0/DATAO ADDR1/DATA1 ADDR2/DATA2 ADDR3/DATA3 ADDR4/DATA4 ADDR5/DATA5 ADDR6/DATA6 ADDR7/DATA7 PD0/RxD PD1/TxD PD2/MISO PD3/MOSI PD4/SCK PD5/SS AS R/W PE0/AN0 PE1/AN1 PE2/AN2 PE3/AN3 PE4/AN4 PE5/AN5 PE6/AN6 PE7/AN7
Puerto C
Cuando el MCU se encuentra operando en modo de Single Chip, todas las lneas del puerto C estn habilitadas como Entradas/Salidas de propsito general. Las entradas del puerto C son almacenadas en un registro denominado PORTCL, en el momento en que ocurre una transicin reconocida en la lnea STRA del MCU. En caso de que el MCU se encuentre operando en modo Expandido Multiplexado, este puerto se encuentra compartiendo la mitad menos significativa del bus de direcciones y el bus de datos.
Puerto D
Las lneas del puerto D pueden ser usadas como entradas/salidas de propsito general. Estas lneas, adems tienen compartida la funcin de comunicacin, ya sea como puerto de comunicaciones asncrono (SCI) o como puerto de comunicaciones sncrono (SPI). El puerto de comunicaciones asncrono se utiliza como interfase entre el MCU y dispositivos externos. El puerto de comunicaciones sncrono se utiliza para la comunicacin entre dos MCU a alta velocidad o con dispositivos cercanos al MCU.. La lnea PD0 es el receptor de datos asncrono (RxD) La lnea PD1 es el transmisor de datos asncrono (TxD) Las lneas PD2-PD5 estn dedicadas al puerto de comunicaciones sncrono (SPI).
Puerto E
El puerto E es usado como un puerto de entrada de 8 bits de propsito general, pero tambin tiene compartida la funcin de entrada analgica al Convertidor A/D. Las funciones realizadas por las lneas de los puertos como se ve, dependen del modo de operacin del MCU. En la tabla 1.3 se resumen las funciones de cada puerto.
Lneas de entrada 3 8
Lneas de salida 3 8 -
Lneas bidireccionales 2 8 6 -
Funciones compartidas Temporizador Direccionamiento de orden superior Direccionamiento de orden inferior Comunicacin por el SCI y SPI convertidor Analgico / Digital
10
ACUMULADOR B
0 0
A:B D IX IY SP PC CCR
DOBLE ACUMULADOR D
15
REGISTRO INDICE X
15
REGISTRO INDICE Y
15
APUNTADOR DE PILA
15
C BANDERA DE ACARREO V BANDERA DE SOBREFLUJO Z BANDERA DE CERO N BANDERA DE SIGNO NEGATIVO I BANDERA DE INTERRUPCION GLOBAL H BANDERA DE MEDIO ACARREO X HABILITACION DE INTERRUPCION NO ENMASCARABLE S DESHABILITA EL MODO STOP
Figura 1.5 Registros de la CPU Acumuladores A, B y D Los registros A y B son de propsito general y tienen una longitud de 8 bits, estos registros pueden almacenar, operandos y resultados de operaciones aritmticas, clculo y manipulacin de datos. Algunas instrucciones manejan estos dos acumuladores como si fueran un solo acumulador doble con una longitud de 16 bits. A este acumulador doble se le da el nombre de acumulador D.
11
Registro ndice X (IX) La longitud de este registro es de 16 bits. Este registro es del tipo ndice o apuntador, por lo que se utiliza para el direccionamiento base de una localidad de memoria, dentro de los 64 kbytes. A este ndice se le puede agregar un offset para lograr un desplazamiento y obtener una direccin especfica dentro del mapa de memoria. Adems este registro es utilizado como un registro auxiliar en operaciones de divisin o multiplicacin, en las que el dato o los datos tengan una longitud mayor a los 8 bits. Registro Indice Y (IY) El registro ndice IY tiene una longitud de 16 bits y funciona en forma similar al registro IX. Sin embargo este registro no es utilizado en ningn tipo de operacin aritmtica. Las instrucciones que involucran a este registro requieren un byte extra de cdigo, adems de un ciclo extra de tiempo de ejecucin ya que las instrucciones referentes a este registro quedan mas all de la pgina principal de instrucciones y requieren un prebyte. Registro apuntador de Stack (SP) El CPU del M68HC11 tiene un sistema automtico para la utilizacin del stack, el rea de memoria del stack puede ser localizada en cualquier lugar dentro de la memoria disponible del MCU y esta puede ser incluso del tamao de memoria total disponible en el sistema. A continuacin se describe el modo de operacin de esta rea de memoria: El funcionamiento de est rea de memoria, comienza con la introduccin de un dato dentro del Stack, con lo que el registro apuntador de Stack SP es decrementado en 1, as este registro queda apuntando a la prxima localidad de memoria inferior. Cada vez que un dato es sacado del stack, este registro apuntador es incrementado automticamente en 1. La cantidad en que este registro es incrementado o decrementado depende de el numero de bytes que son introducidos o sacados, algunas instrucciones introducen automticamente todos los registros o la prxima direccin a ser ejecutada en el llamado a una rutina, pero por regla por cada introduccin de un dato se debe de sacar otro para as no perder el control de esta rea de memoria. Operaciones del Stack Cuando una subrutina es llamada por una instruccin de salto a subrutina (JSR) o Brinco a subrutina (BSR), la direccin siguiente a la instruccin de salto es automticamente introducida al Stack, introducindose primeramente el byte menos significativo de direccionamiento. Cuando la ejecucin de la rutina es finalizada una instruccin de retorno de subrutina (RTS) es ejecutada, est instruccin regresa el valor de la direccin contenida en el stack, y lo coloca dentro del contador del programa (PC), por lo que la ejecucin contina en la prxima instruccin donde fue llamada la subrutina. Cuando una interrupcin es reconocida, la instruccin que en ese momento se esta ejecutando finaliza normalmente, posteriormente se almacena el valor actual del contador del programa (PC) en el Stack, adems todos los registros del CPU tambin son introducidos al stack, y el programa continua su ejecucin
12
en la direccin especificada en el vector de interrupcin. Al finalizar la rutina de interrupcin una instruccin RTI es ejecutada, esta instruccin regresa los valores anteriores a la interrupcin de los registros por lo que no son afectados por la rutina de interrupcin, y el programa continua con su ejecucin en el lugar donde fue interrumpido (ver figura 1.6) Estas son slo algunas de las operaciones del Stack, dentro de sus aplicaciones adems se deben de mencionar el paso de parmetros a subrutinas y el almacenamiento temporal de variables. Contador del programa (PC) El Program Counter (PC) o contador del programa es un registro de 16 bits, el cual contiene la prxima direccin de la instruccin a ser ejecutada. Despus del RESET el contador del programa (PC) es inicializado con alguna de las 6 direcciones posibles de los vectores de RESET dependiendo del modo de operacin y de la causa del reset, de acuerdo a la tabla 1.4.
Tabla 1.4 Localizacin de los vectores de interrupcin en el mapa de memoria. Registro de Banderas o Estado del Programa (CCR) Este registro tiene una longitud de 8 bits, y como su nombre lo indica, nos da un panorama general del estado de ejecucin del programa. Este registro tiene 5 bits de indicacin del estado del programa, los cuales son C, V, Z, N y H, un bit global de habilitacin de interrupciones enmascarables (I), un bit de habilitacin de requerimiento de interrupcin no enmascarble (X) y un bit de deshabilitacin del modo STOP (S). Muchas de las instrucciones del CPU del MC68HC11 actualizan automticamente el registro de banderas, dependiendo del estado del dato que se encuentra manipulando. Por ejemplo la instruccin LDAA (carga al acumulador A) y STAA (almacena el acumulador A), automticamente actualizan los bits N, Z y V de acuerdo al valor contenido en el registro A. Algunas de las instrucciones que no afectan el registro de banderas son: Almacenar o retornar un dato en el stack, sumar los registros A con X, A con Y, etc. En caso de requerir una mayor informacin puede consultar el set de instrucciones del MCU (Ver apndice A). A continuacin se describe cada uno de los bits del registro de banderas Bandera de Acarreo (C) Este bit es puesto en caso de que la unidad lgica aritmtica (ALU), genere un acarreo durante una operacin aritmtica. Otra de las funciones que desempea este bit, es la de indicar que ocurri un error en una operacin de multiplicacin o divisin
13
STACK
$9D = JSR dd Proxima Instr. Programa principal $AD = JSR ff Proxima Instr Programa principal $18 = PRE $AD = JSR ff Proxima Instr Programa principal
SP-2 SP-1 RTN H RTN L Stack
PC
CODIGO DE CONDICIONES ACUMULADOR B ACUMULADOR A REGISTRO INDICE (XH) REGISTRO INDICE (XL) REGISTRO INDICE (YH) REGISTRO INDICE (YL) RTN H RTN L
STACK
$BD = JSR hh ll Proxima Instr Programa principal
SP-9 SP-8 CODIGO DE CONDICIONES SP-7 ACUMULADOR B SP-6 ACUMULADOR A SP-5 REGISTRO INDICE (XH) SP-4 REGISTRO INDICE (XL) SP-3 REGISTRO INDICE (YH) SP-2 REGISTRO INDICE (YL) SP-1 RTN H SP RTN L
SP-2 SP-1 RTN H RTN L
$3E = WAI
RTN H RTN L
RTN Direccin de la proxima instruccin en el programa principal a ser ejecutada al finalizar la subrutina RTN H Byte mas significativo de la direccin de retorno RTN L Byte menos significativo de la direccin de retorno La parte sombreada muestra la posicin del Stack despues de que la operacin es completada dd Direccin efectiva de 8 bits donde el byte mas significativo es asumido como $00 ff Un offset positivo de 8 bits es sumado al registro indice hh byte de orden alto de una direccin de 16 bits ll byte de orden bajo de una direccin de 16 bits rr ofset con signo relativo (de -128 a +127)
14
Tambin las instrucciones de corrimiento y rotacin de mltiples bits utilizan ampliamente esta bandera, ya que facilita estas operaciones. Bandera de Sobreflujo (V). Este bit es puesto cuando una operacin aritmtica causa un sobreflujo, en caso contrario este bit es limpiado. Bandera de cero (Z). El bit cero (Z) es puesto en caso de que en alguna operacin lgica, matemtica o de manipulacin de datos el resultado sea cero. En caso contrario este bit es limpiado. Algunas instrucciones de carga o comparacin que implican una substraccin, afectan a esta bandera. Bandera de signo negativo (N). Al igual que las banderas anteriores, esta es puesta, en caso que en una operacin matemtica, lgica o de manipulacin de datos, el resultado sea negativo, es decir el bit mas significativo es igual a 1. En caso contrario este bit es limpiado. Esta bandera solo resulta de inters cuando se estn manejando datos en complemento a 2, si se manejan slo nmeros positivos, esta bandera puede ser ignorada Bandera de Enmascaramiento de Interrupcin (I). Este bit es una mscara global de solicitudes de interrupcin para los sistemas internos del MCU, en caso de que este bit se encuentre puesto, deshabilita todas las fuentes de interrupcin enmascarable, y en caso de que exista una solicitud de interrupcin, esta queda pendiente, y el MCU contina ejecutando el programa sin atender la interrupcin, hasta que este bit sea limpiado. Despus de cualquier reset, el bit I es puesto automticamente, y solo puede ser limpiado por una instruccin de software. Cuando una interrupcin es reconocida, este bit es puesto antes de saltar a la rutina de atencin y despus de que los registros son guardados en el stack, despus que la rutina ha sido atendida, una instruccin de retorno de interrupcin es ejecutada (RTI) restaurando los valores que los registros tenan antes de la atencin a la interrupcin, as como tambin es limpiada esta bandera para la atencin de la prxima interrupcin. Es decir, en una rutina de atencin a interrupcin este bit es puesto automticamente para evitar el anidamiento de interrupciones, pero nada evita que dentro de la propia rutina pueda existir una instruccin que la limpie para permitir dicho anidamiento. Bandera de Acarreo Intermedio (H). La bandera de acarreo intermedio es colocada en caso de ocurrir dicho acarreo entre los bits 3 y 4, durante una operacin realizada por la unidad lgica aritmtica (ALU), las instrucciones que afectan a esta bandera son ADD, ABA, ADC, en caso contrario esta bandera es limpiada. El uso de esta bandera es requerido en las operaciones en formato BCD. Mscara de Interrupcin (X). Este bit enmascara el requerimiento de una interrupcin en la lnea XIRQ, en caso de que se encuentre puesto, deshabilita las interrupciones de esta entrada. Despus de cualquier reset este bit es colocado automticamente por hardware, y puede ser limpiado mas no puede ser puesto por una instruccin de software. Cuando una interrupcin XIRQ es reconocida, los bits X e I son puestos despus de que los registros son guardados, y posteriormente se salta a la rutina de atencin a la interrupcin. Despus de que una rutina de atencin ha sido ejecutada se reestablecen los valores de los registros, y se limpian las banderas X e I, por medio de la instruccin RTI.
15
Bandera de deshabilitacin del modo STOP (S). Al colocar el bit S se deshabilita el modo STOP, as se prev que la instruccin STOP ponga al MCU en condicin de bajo consumo, en el caso de que se ejecute una instruccin STOP cuando se encuentre colocado el bit S el MCU interpreta sta como una instruccin NOP y prosigue con la prxima instruccin. Este Bit es puesto al reinicializar el sistema por cualquier fuente de reset.
uno de ellos. gModo Inmediato En el modo de direccionamiento inmediato el argumento se encuentra contenido en los bytes siguientes inmediatos al cdigo ejecutable. El nmero de bytes por instruccin en este modo puede variar entre 2 y 4.
gModo Directo (o de pgina cero). En este modo de direccionamiento, el byte de orden superior de la direccin efectiva de memoria, es asumida como $00, por lo que la direccin del operando est contenida en un slo byte, este tipo de direccionamiento se reduce a los primeros 256 bytes de memoria, a esta rea de memoria se le denomina como pgina 0 Con este modo de direccionamiento se reduce tanto el cdigo del programa como el tiempo de ejecucin del mismo. En muchas aplicaciones esta rea de memoria es reservada para datos, por su velocidad en el manejo de datos y la reduccin del tamao del cdigo.
gModo Extendido En el modo de direccionamiento extendido, la direccin efectiva del argumento, es contenida en 2 bytes seguidos del byte de cdigo, por lo que esta instruccin se forma por tres bytes (o 4 en caso de que requiera un prebyte), por lo que se deduce que 1 o 2 bytes son requeridos para el cdigo y 2 para la direccin efectiva.
gModo Indexado En el modo de direccionamiento indexado un offset con una longitud de 8 bytes sin signo esta contenido dentro de la instruccin el cual es sumado al contenido del registro ndice (IX o IY), el resultado de esta suma es la direccin efectiva. Este modo puede requerir de 2 a 5 bytes de longitud por instruccin, dependiendo del requerimiento del prebyte o no.
17
gModo Inherente En este modo de direccionamiento, toda la informacin necesaria para ejecutar la instruccin se encuentra contenida en el cdigo. Esta instruccin puede tener 1 o 2 bytes de longitud
gModo Relativo El modo de direccionamiento relativo es usado por instrucciones de saltos condicionales, o saltos a subrutinas, si la condicin del salto es verdadero un offset con una longitud de 8 bits con signo es sumado al contenido del registro contador del programa (PC), para formar la direccin efectiva del salto. En caso contrario el control del programa prosigue en la siguiente instruccin. La longitud de esta instruccin normalmente es de 2 bytes.
Ejemplo: 0119: 27 FE
BEQ $0119
18
En este modo de operacin los puertos B y C, adems de las lneas de Strobe A (STRA) y Strobe B (STRB) estn disponibles para Entradas/Salidas de propsito general. En este modo de operacin todo el software necesario para el control del MCU est contenido dentro del mismo circuito integrado. Los vectores de interrupcin y Reset estn disponibles en las localidades de memoria $FFC0 - $FFFF. g Modo Expandido En la operacin en modo expandido, El MCU puede accesar los 64 kbytes de espacio direccionable. Este espacio lo comparte con la memoria interna del MCU. El Bus de expansin para el funcionamiento en modo expandido se realiza con las lneas de los puertos B y C, mientras que las seales de control se realizan con las lneas AS y R/W . El bus de direcciones de orden bajo, y el bus de datos se encuentran multiplexados, compartiendo las mismas lneas, por lo que se requiere de seales auxiliares para establecer cuando stas se encuentran operando como bus de datos y cuando se encuentran operando como bus de direcciones bajo, as como para especificar si se efectuar una lectura o una escritura al rea de memoria, sto se logra mediante las lneas AS (Adress Strobe) y R/W (Read/Write). R/W controla la direccin de transferencia del dato colocado en el bus de datos, mientras que AS nos indica el estado de las lneas del puerto C, ya sea como bus de datos o como bus de direcciones bajo. Las seales R/W y AS se encuentran activas en todos los ciclos del bus, inclusive cuando se encuentra accesando localidades de memoria interna. La figura 1.7 muestra una forma de obtencin del bus de datos y direcciones.
PB7 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 DATA1 DATA2 DATA3 DATA4 DATA5 DATA6 DATA7 DATA8 LE AS R/W E
DATO7 DATO6 DATO5 DATO4 DATO3 DATO2 DATO1 DATO0
ADDR15 ADDR14 ADDR13 ADDR12 ADDR11 ADDR10 ADDR9 ADDR8 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 OE ADDR7 ADDR6 ADDR5 ADDR4 ADDR3 ADDR2 ADDR1 ADDR0
MCU
74HC373
WE
Figura 1.7 Obtencin del bus de datos y direcciones en modo multiplexado. g Modo Test
19
El modo de operacin especial llamado TEST es una variacin del modo expandido multiplexado, este modo de operacin es utilizado principalmente durante la prueba de fbrica, durante la programacin del registro CONFIG, para la calibracin y programacin de la memoria EEPROM, adems de la depuracin de programas durante su realizacin. g Modo BootStrap Cuando el MCU es reinicializado en modo de bootstrap, un pequeo programa interno en ROM es habilitado en la direccin $BF00 - $BFFF. Esta memoria ROM contiene un Programa denominado Bootloader (de carga y ejecucin) el cual cambia los vectores de interrupcin al rea de memoria RAM. El modo Bootstrap es una variacin del modo Single Chip, este programa carga programas de propsito especial al rea de memoria RAM contenida dentro del propio MCU. La forma de operacin de este modo es la siguiente: Cuando se aplica un nivel bajo a la lnea de Reset, y las lneas MODA y MODB se encuentran configurados para modo de bootstrap, el programa "Bootloader" se ejecuta para realizar lo siguiente: | Redirige los vectores de interrupcin al rea de memoria RAM | Inicializa el puerto de comunicaciones SCI | Carga un programa a travs del puerto de comunicaciones serie asncrono (Puede utilizarse una computadora personal como transmisor del programa). La longitud del programa a cargar dentro del MCU, depende de la cantidad de memoria RAM interna del MCU. Despus de cuatro caracteres de retardo, o despus de recibir la ultima direccin de memoria RAM a cargar, el control del MCU pasa al programa cargado a la direccin $0000. Nota: Basados en este modo de operacin, se pens en un mtodo para lograr que el control del MCU pasara al rea de memoria EEPROM interna del MCU, ya que si el primer carcter que recibe el MCU por el puerto de comunicaciones (SCI) es $00, el control del programa pasa al rea de memoria EEPROM. Para poder obtener un $00 en el puerto serie de comunicaciones, no basta con conectar una resistencia entre la entrada del puerto serie y tierra, ya que este puerto reconoce un cero como una transicin de "1" a "0" lgico, el mtodo utilizado se describir ms adelante en detalle.
evitar este tipo de conflictos es deshabilitar la memoria interna, ya sea RAM o EEPROM (si es que se tiene) por medio del registro de control (CONFIG).
$0000 0000 EXT $1000
1000 103F BLOQUE DE REGISTROS
512 BYTES DE EEPROM
VECTORES DE
EXT
00FF
MODO ESPECIAL
BFC0
BFFF
$D000
VECTORES DE INTERRUPCION EN
MODO NORMAL
D000
FFC0
$FFFF MODO CIRCUITO SENCILLO MODO EXPANDIDO MODO BOOTSTRAP ESPECIAL TEST
FFFF
FFFF
MAPA DE MEMORIA
Fig 1.8 Mapa de memoria del MC68HC11E1 Como se ilustra en la figura 1.8 la memoria RAM es colocada en la localidad $0000 del mapa de memoria del MCU. Pero esta localidad puede ser modificada y colocada en cualquier localidad de memoria con una paginacin de 4 Kbytes de memoria. es decir puede ser ubicada en las localidades ($x000), donde x puede variar de 0 a F, esta paginacin se logra haciendo una escritura al registro INIT. El bloque de registros de 64 bytes es localizado en la direccin $1000 despus del reset, y puede tambin ser relocalizado en cualquier pgina de 4 Kbytes de memoria dentro del mapa. Las localidades de memoria donde pueden ser ubicados estos registros son ($x000) donde al igual que en la localizacin de la memoria RAM x puede variar de 0 a F. En caso que la memoria RAM y los registros se encuentren en la misma pgina de memoria, los primeros 64 bytes no son utilizables, la tabla 1.5 muestra los 64 registros adems de su direccin y los bits de control que los componen. El MCU posee un sistema, de prioridad de hardware, por lo que los registros tienen prioridad sobre la RAM, y la RAM tiene prioridad sobre la ROM. Cuando una fuente de baja prioridad es localizada en la misma direccin de una fuente de alta prioridad, una accin de Escritura/Lectura a esta localidad resulta a una Escritura/Lectura del dispositivo de mayor prioridad. Por ejemplo si el bloque de registros, y la memoria RAM se encontraran en la misma rea de memoria, solo el bloque de registros puede ser accesado, y los 64 bytes de memoria RAM permanecen deshabilitados. Si la memoria RAM y ROM se encuentran localizadas en la misma rea de memoria la RAM es la que tiene prioridad.
21
El contenido de la memoria RAM puede ser conservado durante perodos de inactividad del MCU por dos mtodos: | El mtodo por software est basado en el modo STOP del MCU. Este mtodo detiene todos los relojes, siempre que se encuentre conectada la alimentacin al MCU, en este mtodo el MCU consume muy poca corriente, del orden de microamperes, pero conservando los valores de la memoria RAM del MCU. El segundo mtodo de conservacin de los datos en la memoria RAM es el de la aplicacin de un voltaje de conservacin de valores en la lnea MODB/VSTBY el cual proporciona la energa necesaria para la conservacin de los datos en la memoria RAM en caso de que no exista actividad del MCU o ausencia del voltaje de alimentacin en la lnea VDD
El modo de operacin bootstrap tiene acceso a un programa llamado bootloader, este programa se encuentra ubicado en la memoria ROM de este MCU en la direccin $BF00 - $BFFF, este pequeo programa es habilitado nicamente si el MCU reconoce el modo de operacin Bootstrap despus del reset. En dispositivos (Tales como el MC68HC11E1) que contienen memoria EEPROM (512 Bytes), sta est localizada en la direccin $B600 - $B7FF y tiene un ciclo de lectura similar al de una memoria ROM interna. Estos 512 bytes de EEPROM no pueden ser relocalizados en otra direccin. Esta memoria EEPROM puede ser programada o borrada por software y la ayuda de una bomba de carga interna que proporciona el voltaje necesario para la programacin de esta memoria, para el funcionamiento de esta bomba de carga no es necesario la aplicacin de otro voltaje, ya que funciona con el voltaje de 5 volts de alimentacin del MCU.
22
23
En esta seccin se describen con mayor detalle los eventos que tienen lugar cuando ocurre una interrupcin, ya sea por reset o por atencin a una interrupcin. En forma global, una operacin de RESET o interrupcin, carga el registro PC (Program Counter) con un valor que se encuentra colocado en el vector de interrupcin asociado a sta, as en caso de que ocurra una interrupcin, la ejecucin del programa salta a la direccin que se encuentra en el vector de interrupcin. En caso de que se aplique un reset al MCU, este detiene inmediatamente la ejecucin de la instruccin que se encuentra ejecutando y carga al PC con el valor del vector de interrupcin del RESET. El proceso de reset del MCU comienza con la inicializacin de los registros de control interno del MCU, carga el valor del vector de reset y coloca las banderas de interrupcin para deshabilitarlas. En caso de que una interrupcin sea reconocida, el proceso de interrupcin suspende temporalmente la ejecucin normal del programa, y el control de ste pasa a la rutina de atencin a la interrupcin. Despus de que una rutina de atencin ha sido atendida, el control del programa regresa al programa principal, sin alterar los registros del CPU y prosigue con la ejecucin normal del programa principal.
El reset externo y el Power On Reset comparten el mismo vector de interrupcin, el sistema de monitoreo del MCU y el monitor del reloj contienen cada uno su propio vector de interrupciones. n Power On Reset (POR) Una transicin positiva en la lnea VDD genera un reset del tipo Power On Reset (POR), o reset de encendido el cual es usado slo en condiciones de encendido, este tipo de reset no puede ser utilizado para la deteccin de una cada o interrupcin de energa. n Reset Externo El CPU del MC68HC11 es capaz de distinguir entre un fuente de reset interna y una externa, sto lo logra monitoreando el estado de la lnea de reset. El circuito que monitorea la lnea de reset, hace la distincin entre un reset interno y uno externo en base al tiempo en que la lnea de reset permanece en estado lgico bajo, por lo que en caso de que la lnea reset permanezca menos de 7 ciclos de reloj, en estado bajo se considera que el reset fue del tipo interno, en caso contrario hace la consideracin que el reset fue del tipo externo. No es recomendable la colocacin de un arreglo RC (Resistencia Capacitor) para provocar un retardo en bajo de la lnea reset, ya que la constante de tiempo de este arreglo puede confundir el tipo de reset que fue requerido, sin embargo se puede escoger una constante RC lo suficientemente grande, para forzar el tipo de reset a externo. n Reset del COP Este MCU incluye un sistema denominado COP (Computer Operating Properly), el cual monitorea
25
continuamente el correcto funcionamiento del sistema. Este monitor opera de la siguiente manera: Cuando es habilitado este sistema, un contador de carrera libre es inicializado, e interrumpe su cuenta si un programa est siendo ejecutado normalmente, de esta forma este contador es reinicializado por lo que este contador no puede alcanzar su cuenta mxima. En caso de que este contador alcance su cuenta mxima este sistema lo interpreta como una falla del sistema y es aplicado un reset al MCU. El estado del bit NOCOP, en el registro CONFIG es el que determina la habilitacin o no del sistema de monitoreo (COP). CONFIG $103F Bit 7 --------NOSEC NOCOP --EEON
Para la habilitacin del sistema COP se prosigue con la siguiente secuencia: 1.- Primeramente se limpia el bit de control NOCOP del registro CONFIG para habilitar el sistema. 2.- Se escribe un $55 en el registro COPRST para la activacin e inicializacin de su timer. 3.- Posterior a sto se debe de aplicar un reset para que el registro CONFIG pueda leerse y entonces queda habilitado el sistema (COP). En caso de que se desee limpiar este sistema se debe de escribir un $AA a el registro COPRST. COPRST $103A Bit 7 7 6 5 4 3 2 1 0
n Reset del monitor del reloj. El circuito del monitor del reloj, es un dispositivo que nos ayuda a determinar, si el reloj del sistema se encuentra funcionando adecuadamente. El principio de funcionamiento de este monitor est basado en un retardo provocado por un arreglo interno RC, en caso de que este circuito detecte una variacin de la frecuencia, entre los retardos provocados por el arreglo RC este circuito puede generar un reset. Este monitor del reloj puede ser habilitado o deshabilitado por el bit de control CME del registro OPTION. OPTION $1039 Bit 7 ADPU CSEL IRQE DLY CME -CR1 CR0
Este monitor es principalmente usado como un respaldo del sistema (COP). Este sistema reconoce una variacin en la frecuencia del reloj de alrededor de 10 khz como un error del reloj. La utilizacin de este monitor del reloj es recomendable siempre que la frecuencia interna del MCU sea mayor de 200 Khz.
En caso de que una condicin de reset sea reconocida, los registros internos y los bits de control son forzados a un estado de inicio definido. El vector del reset puede situarse en diferentes localidades de memoria dependiendo del modo de operacin y de la fuente del reset.
q Interfase de Comunicaciones Serie (SCI) La condicin de reset en el sistema SCI es independiente del modo de operacin, en el reset, el registro de control de la velocidad de transmisin BAUD, es inicializado a $04. Todas las interrupciones de transmisin y recepcin son enmascaradas y deshabilitadas. Las Lneas del puerto D se habilitan como entradas/salidas de propsito general. q Interfase Perifrica Serie (SPI). El sistema SPI es deshabilitado por el RESET. Las lneas de este puerto se configuran como Lneas de entrada/salida de propsito general. q Convertidor Analgico Digital La configuracin del convertidor Analgico/Digital se encuentra indeterminada despus del reset; se deshabilita el sistema del convertidor A/D y la bandera de fin de conversin es limpiada. q Resets y prioridades de interrupcin El reset y las interrupciones tienen una prioridad establecida por hardware. La prioridad, determina cual servicio de interrupcin es atendido primeramente cuando ocurre ms de un requerimiento de interrupcin al mismo tiempo. Las primeras seis interrupciones de mayor prioridad son no-enmascarables, y su prioridad se muestra a continuacin:
Prioridad 1.2.3.4.5.6.Fuente de Reset POR o Reset externo Reset del monitor de reloj Reset del sistema COP Interrupcin por la lnea XIRQ Interrupcin por cdigo de operacin ilegal Interrupcin por Software (SWI)
En la tabla 1.7 se muestran las prioridades de las interrupciones enmascarables comenzando con la de mayor prioridad. Cualquiera de las interrupciones enmascarables puede ser ascendida de prioridad, por la escritura apropiada a los bits de control PSEL[3:0]. Los vectores de interrupcin no son afectados por la variacin en el nivel de prioridad de la interrupcin. El registro que controla la prioridad de estas interrupciones es HPRIO. HPRIO $103C
Bit 7 RBOOT 6 SMOD 5 MDA PSEL [3,0] 0000 4 IRVNE 3 PSEL3 2 PSEL2 1 PSEL1 0 PSEL0
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Sobreflujo del acumulador de pulsos Detector de flanco del acumulador de pulsos Transferencia serie completada (SPI) Sistema serie SCI Reservado (predeterminado IRQ )
IRQ
Interrupcin de tiempo real Entrada de captura de eventos 1 Entrada de captura de eventos 2 Entrada de captura de eventos 3 Salida de comparacin de eventos 1 Salida de comparacin de eventos 2 Salida de comparacin de eventos 3 Salida de comparacin de eventos 4 Entrada de captura de eventos 4 / Salida de comparacin 5
1.6.3 Interrupciones.
El MCU contiene 18 vectores de interrupcin, los cuales soportan 22 fuentes de interrupcin, las 15 fuentes de interrupcin enmascarables son generadas por los sistemas perifricos del MCU. Estas interrupciones son reconocidas cuando una mscara de interrupcin global (I) en el registro CCR est limpia. Las tres fuentes de interrupcin no enmascarables aparte de las fuentes de reset son como ya se mencion: t Cdigo de operacin ilegal t Interrupcin de Software (SWI) t Lnea XIRQ. En la tabla 1.8 se muestran las diferentes fuentes de interrupcin y la asignacin de vectores a cada una de stas.
Direccin de los vectores FFC0,C1- FFD4,D5 FFD6,D7 Reservado Sistema de comunicacin SCI Fuente de interrupcin Mscara del registro de banderas -I Mscara local --
29
Tabla 1.8 Vectores de interrupcin y Reset del MCU La interrupcin del SCI contiene varias mscaras locales, que indican cual de todos los procesos ha realizado solicitud de interrupcin. Por lo que nicamente requiere de un vector de interrupcin.
30
Tabla 1.9 Orden de almacenamiento de los registros en el Stack Antes de que cualquier registro sea introducido al stack el bit X e I son puestos para deshabilitar la ejecucin de una interrupcin dentro de la rutina de atencin que es atendida y para evitar posibles anidamientos. Al finalizar la rutina de atencin a la interrupcin, la instruccin RTI es ejecutada, y los registros guardados en el stack son obtenidos en forma inversa de como fueron introducidos, por lo que el control del programa contina en la prxima instruccin despus de que fue interrumpido el programa sin alterar el valor de los registros. g Requerimiento de interrupcin no enmascarable ( XIRQ ) Este tipo de interrupcin no enmascarable, se utiliza en casos extremos, en los cuales se pierde el control del programa o se detecta una interrupcin de la energa. Al inicio, el Bit X del registro de banderas es puesto, por lo que esta fuente de interrupcin se encuentra deshabilitada, la forma de habilitacin de esta interrupcin se hace mediante una instruccin TAP. Esta instruccin, adems de transferir el contenido del registro de banderas(CCR) al registro A, limpia el bit de habilitacin de XIRQ . Despus de habilitar esta interrupcin, sta no puede ser deshabilitada por software, y slo permanece deshabilitada en el caso de que la solicitud de interrupcin se realice en una rutina de atencin a una interrupcin de este mismo tipo. g Interrupcin por deteccin de cdigo ilegal Debido a que no todos los posibles cdigos o secuencia de cdigos se encuentran definidos por el MCU, un circuito de deteccin de cdigo ilegal es incluido, el cual genera una interrupcin en caso de que sea detectado un cdigo no definido. El proceso de interrupcin es muy similar a las dems fuentes de interrupcin. g Interrupcin de Software La instruccin SWI genera una interrupcin de software, esta interrupcin es del tipo no enmascarable.
31
La ejecucin de una interrupcin SWI deshabilita las interrupciones enmascarables, cuando una interrupcin de software se comienza a ejecutar, las otras fuentes de interrupcin son deshabilitadas hasta que la interrupcin de software es finalizada, o hasta que la bandera I es limpiada por software del registro CCR. h Interrupcin enmascarable (lnea IRQ ) La estructura de la interrupcin enmascarable del MCU puede ser extendida para la atencin de ms de una fuente de interrupcin, ya que esta lnea puede configurarse en modo OR alambrada. Cuando un evento externo dispara la interrupcin, la bandera asociada a sta es puesta para prevenir cualquier anidamiento de interrupciones.
se mantienen. Si se usa la lnea IRQ como un medio de regresar del modo STOP el bit de enmascaramiento global debe ser limpiado. En cambio, si se utiliza la lnea XIRQ para regresar de la condicin de stop, se puede realizar de dos modos: P En caso de que el bit X se encuentre puesto al aplicar un nivel bajo en esta lnea, el control del programa continuar en la prxima instruccin inmediatamente despus de su reconocimiento sin requerimiento de la rutina de atencin a la interrupcin. P Si el bit X es limpiado, una rutina de atencin a interrupcin, es ejecutada normalmente despus del la aplicacin del nivel bajo en el lnea XIRQ.
33
3.1 EL PUERTO A
El puerto A tiene 3 lneas de salida (PA4,PA5,PA6), 3 lneas de entrada (PA0,PA1,PA2) y dos lneas bidireccionales (PA7,PA3), este puerto se encuentra compartiendo las funciones del TIMER. PORTA $1000 Bit 7 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
3.2 EL PUERTO B
En modo de Single Chip o Bootstrap las lneas del puerto B son lneas de salidas de propsito general. En modo extendido, las lneas del puerto B son las lneas de orden alto del bus de direcciones. PORTB $1004 Bit 7 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
3.3 EL PUERTO C
En modo de operacin normal (Bootstrap o Single Chip), el registro DDRC es inicializado por el reset en $00, por lo que el puerto C es inicializado como un puerto de entrada de 8 bits de alta impedancia. El registro DDRC nos proporciona la configuracin del puerto C, ya sea como lneas de entrada (mediante la escritura de un "0" lgico) o como lneas de salida ("1" lgico). En modo de operacin expandido o TEST el puerto C contiene las lneas del bus de direcciones de orden bajo multiplexados con el bus de datos. DDRC $1007
34
Bit 7 DDC7 PORTC $1003 Bit 7 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 DDC6 DD65 DDC4 DDC3 DDC2 DDC1 DDC0
3.4 EL PUERTO D
En todos los modos de operacin los bits del puerto D (D0:D5) pueden ser usados como entradas/salidas de propsito general o como lneas de comunicacin serie, ya sea por el SCI o por el SPI. Durante el reset, las lneas del puerto D estn configuradas como lneas de entrada de alta impedancia, sto debido a que el reset inicializa el registro DDRD con $00. El registro DDRD proporciona la configuracin del puerto D, en forma similar a DDRC DDRD $1009 Bit 7 --DDD5 DDD4 DDD3 DDD2 DDD1 DDD0
3.5 EL PUERTO E
El puerto E es usado como un puerto de entrada de propsito general (digital), o alternativamente como la entrada al convertidor analgico digital. En caso de que algunas lneas del puerto E estn siendo utilizadas como entradas de propsito general, y otras como entradas al convertidor analgico/digital. El registro PORTE, no debe ser ledo durante la porcin de muestreo del proceso de conversin analgico-digital.
PORTE $100A Bit 7 PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0
serie asncrono (SCI) y un sistema serie de comunicacin sncrono (SPI), en estas notas solamente se describe el primero.
36
reloj Velocidad del de transmision (Solo escritura) SCDR Tx BUFFER Registro de corrimiento de 10 o 11 bits H (8) 76543210 L 8
LINEA DE BUFFER Y CONTROL
PD1 TxD
TDRE TIE
SCCR2 CONTROL 2 DEL SCI
37
RECUPERA DATO
RIE
RIE
5 registros estn asociados al puerto de comunicaciones serie asncrono, de los cuales tres controlan el estado del puerto., Estos son SCCR1, SCCR2 y BAUD. Un registro proporciona el dato paralelo a transmitir o recibir denominado SCDR .El registro SCSR nos proporciona el estado del puerto serie. A continuacin se describe cada uno de estos registros SCCR1 Registro de control de comunicacin serie 1 Este registro nos da un control sobre la longitud de la palabra, la forma de transmisin y una llave para habilitar al SCI. SCCR1 $102C Bit 7 R8 T8 -M WAKE ----
R8 : Bit 8 del dato recibido Si el bit M es puesto, R8 almacena el noveno bit del dato que fue recibido T8 : Bit 8 del dato a ser transmitido Si el bit M es puesto, T8 almacena el noveno bit del dato que ser transmitido M : Modo (Selecciona el formato del dato) 0 = Bit de inicio, 8 bits de dato, 1 bit de stop 1 = Bit de inicio, 9 bits de dato, 1 bit de stop WAKE: Activar por direccin de marca o paro 0 = Activar por Reconocimiento de lnea de parada 1 = Activar por marca de direccin (Bit mas significativo del dato en alto) BITS [5, 2:0] No utilizados Siempre se leen Ceros SCCR2 Registro de control de comunicacin serie 2 Este registro de control provee los bits de habilitacin o deshabilitacin de funciones individuales del SCI. SCCR2 $102D Bit 7 TIE TCIE RIE ILIE TE RE RWU SBK
TIE : Habilitacin de interrupcin por transmisin 0 = Deshabilita interrupcin de TDRE (Registro de transmisin vaco) 1 = Requerimiento de interrupcin del SCI cuando la bandera de TDRE se encuentra puesta. TCIE : Habilitacin de interrupcin por transmisin de dato completada 0 = Deshabilita interrupcin de transmisin Completada (TC) 1 = Requerimiento de interrupcin del SCI cuando la bandera TC se encuentra puesta.
39
RIE : Habilitacin de interrupcin de recepcin 0 = Interrupciones RDRF y OR Deshabilitadas 1 = Requerimiento de interrupcin del SCI Cuando la Bandera RDRF o OR se encuentran puestas. ILIE : Habilitacin de interrupcin por lnea parada (idle) 0 = Interrupcin por lnea de paro deshabilitada. 1 = Requerimiento de interrupcin si la bandera IDLE se encuentra puesta TE : Habilitacin de transmisin Cuando el bit TE vara de 1 a 0 un caracter de espera es puesto en seguida 0 = Transmisin deshabilitada 1 = Transmisin Habilitada RE : Habilitacin de recepcin 0 = Recepcin deshabilitada 1 = Recepcin habilitada RWU : Control de activacin de recepcin 0 = Recepcin normal del SCI 1 = Habilitacin por "wakeup" e inhibicin de la interrupcin de recepcin. SBK : Enva Break 0 = Apagado del generador de break. 1 = Encendido del generador de cdigo Break
SCSR Registro de estado de comunicacin serie El registro SCSR (Registro de estados del SCI) nos da informacin generada por el circuito de interrupciones para obtener la fuente de interrupcin particular del SCI.
TDRE : Bandera de Transmisin de datos Vaco Esta bandera es puesta cuando el SCDR est vaco. La limpieza de esta bandera, se efecta con la lectura del registro SCSR cuando TDRE est puesto y la escritura al SCDR 0 = SCDR Ocupado 1 = SCDR Vaco
TC : Bandera de transmisin finalizada Esta bandera es puesta cuando la transmisin est parada (idle esto es no hay dato prembulo o se transmite un break). La limpieza de esta bandera, se efecta con la lectura de SCSR, cuando la bandera TC se encuentra puesta y la escritura al registro SCDR
40
0 = Transmisor ocupado 1 = Transmisor parado (idle) RDRF : Bandera de registro de recepcin de datos lleno. Esta bandera es puesta, si un caracter se encuentra listo para ser ledo en el registro SCDR. La limpieza de esta bandera se efecta con la lectura del registro SCSR con la bandera RDRF puesta y la lectura del registro SCDR. 0 = Registro SCDR Vaco 1 = Registro SCDR Lleno IDLE : Bandera de lnea parada (idle) detectada. Esta bandera es puesta cuando la lnea RxD est parada (idle). Esta lnea es deshabilitada si RWU=1. Esta lnea se puede limpiar leyendo SCSR cuando IDLE esta puesto y posteriormente leer SCDR. 0 = Lnea RxD activa 1 = Lnea RxD parada idle. OR : Bandera de error de Sobreescritura Esta bandera es puesta en caso de que un nuevo caracter es recibido, antes de que el caracter anteriormente recibido es ledo del SCDR. La limpieza de la bandera OR, se efecta por la lectura del registro SCSR con el bit OR puesto , y la lectura de SCDR. 0 = No ocurri sobreescritura 1 = Sobreescritura detectada. NF : Bandera de Error de Ruido Esta bandera es puesta, si la mayora de las muestras lgicas detectadas no presentan una definicin unnime. 0 = Decisin unnime (No se detecto ruido) 1 = Se detecto ruido FE : Error de cuadratura Esta bandera es puesta, en caso de que un cero sea detectado donde se espera un bit de paro. 0 = Bit de stop es detectado 1 = Es detectado un cero en el bit de paro Bit 0 : No implementado, siempre se lee como cero BAUD Registro de velocidad de transmisin. BAUD $102B
TCLR -SCP1 SCP0 RCKB SCR2 SCR1 SCR0
Este registro es usado para seleccionar diferentes velocidades de transmisin del sistema SCI, la velocidad de transmisin es seleccionada por dos grupos de bits, los bits SCP[0,1] determinan una primera velocidad base, la cual puede ser disminuda por SCR[2,1,0], la forma en que se divide la frecuencia se muestra en las tablas 4.1 y 4.2
Seleccin de SCP1 preescalador SCP0 Divisor del reloj interno Frecuencia del cristal (Mhz) 4 4.9152 8 8.3886 12
41
El Sistema del Temporizador 0 0 1 1 0 1 0 1 1 3 4 13 62500 20833 15625 4800 76800 25600 19200 5907 125000 41667 31250 9600 131072 43691 32768 10082 187500 62500 46875 14423
Tabla 4.1 Velocidad de transmisin (SCP1, SCP2) SCR[2:0] Divide el preescaler Alta velocidad de transmisin (Salida del preescaler de la tabla anterior) 131072 000 001 010 011 100 101 110 111 1 2 4 8 16 32 64 128 131072 65536 32768 16384 8192 4096 2048 1024 76800 76800 38400 19200 9600 4800 2400 1200 600 32768 32768 16384 8192 4096 2048 1024 512 256 19200 19200 9600 4800 2400 1200 600 300 150 4800 4800 2400 1200 600 300 150 75 --
OSCILADOR Y GENERADOR DE RELOJ SEAL E E/4 RELOJ INTERNO (PH2) PREESCALER (/ 2, 4, 16, 32) SPR [1:0]
SPI
E/2
Q
TCNT
FF2
Q Q Q
FORZA A RESET POR COP
IC / OC
RESET DEL
Figura 5.1 Sistema del Temporizador. El sistema del timer est compuesto por un reloj principal, el cual proporciona 5 canales de divisin (ver figura 5.1). Uno de los canales del reloj principal contiene un contador de carrera libre de 16 bits, este contador se puede programar para variar su velocidad, el control de velocidad est dado por dos bits de control. Las principales actividades del sistema del timer hacen referencia al contador de carrera libre; en el reset este contador es iniciado en $0000 y se comienza a incrementar despus de la aplicacin del reset, la cuenta de este contador aumenta hasta $FFFF, en ese momento se consigue la mxima cuenta, y el contador es reciclado a $0000, activando en este momento la bandera de sobreflujo. Este contador no puede ser reinicializado, cambiado o interrumpir su cuenta, ya que es un registro de solo lectura. El sistema de captura/comparacin de eventos est compuesto por 3 canales de captura de eventos, 4 canales de comparacin y un canal programable como comparacin o captura de eventos. Cada una de las tres lneas de captura de eventos funciona como un registro de captura (Latch) de 16 bits y cada una de las lneas de comparacin tienen un registro comparador de 16 bits. Cada una de estas funciones del timer tiene asociado su propio vector de interrupcin, incluyendo la interrupcin de sobreflujo y la interrupcin de tiempo real RTI. El acumulador de pulsos contiene un contador de 8 bits con seleccin de flanco. el acumulador de pulsos puede operar en modo de conteo de eventos internos o en modo de contador de eventos externos. Su forma de operacin es la siguiente:
43
Durante el modo de operacin como contador de eventos externos, el contador del acumulador de pulsos es incrementado, cuando un flanco activo es detectado en la entrada. Durante el modo de operacin de contador de eventos internos, una fuente de reloj incrementa el contador, cuando una seal de entrada es reconocida. La interrupcin de tiempo real RTI es una interrupcin peridica programable, la cual es ejecutada peridicamente, el perodo con que esta rutina es ejecutada es seleccionada por dos bits de control. El reloj del sistema COP WatchDog es independiente del contador de carrera libre, el sistema COP genera un pulso, el cual es deshabilitado por una secuencia de software correcta, en caso de que no exista ningn problema. En caso contrario se genera una secuencia de reset.
44
Reloj E del MCU POR 1, 4, 8, o 16 PR1 PR0 TCNT (HI) TCNT (LO) TOF Bus del timer para otros sistemas 8 BIT 7 FOC1 OC2F TOC2 (HI) TOC2 (LO) OC3F TOC3 (HI) TOC3 (LO) OC4F TOC4 (HI) TOC4 (LO) FOC4 14/O5F TI4/O5(HI) TI4/O5(LO) I4/O5 IC1I LATCH 16 BITS CLK TIC1(HI) TIC1(LO) IC2F BIT 1 IC3I IC3F Estado de las banderas Habilitacin de interrupcines Control de las lneas del puerto A 1 BIT 0 IC1F IC2I BIT 2 OC5 FOC5 I4/O5I BIT 3
PA3/OC5/ IC4/OC5
LIBRE DE 16 BITS
Al acumuladoor de pulsos
PA7/OC1 /PAI
7 BIT 6
PA6/OC2 /OC1
BIT 5 5 BIT 4
PA5/OC3 /OC1
PA4/OC4
LATCH 16 BITS CLK TIC2 (LO) TIC2(HI) LATCH 16 BITS CLK TIC3(HI) TIC3(LO)
EDGxB 0 0 1 1
EDGxA 0 1 0 1
Configuracin Deshabilita captura Captura solo en flanco de subida Captura solo en flanco de bajada Captura en ambos flancos
Tabla 5.1 Control de flanco de las lneas IC TIC1-TIC3 Registro de captura de eventos
45
En caso de que un flanco sea reconocido, el valor del contador de carrera libre es transferido al registro de captura de eventos, el registro al que es transferido este valor depende de cual lnea de entrada fu la que reconoci el flanco.
TIC1 $1010 - $1011 BIT15 BIT7 TIC2 $1012 - $1013 BIT15 BIT7 TIC3 $1014 - $1015 BIT15 BIT7 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0
TI4/O5 Lnea programable de Captura/comparacin de eventos El bit 3 del puerto A puede ser programado como captura o comparacin de eventos, el registro TI4/05 se comporta como un registro de comparacin de 16 bits o como registro de captura del timer, la forma en que opera este registro depende de como se encuentre programado el bit I4/O5 del registro PACTL.
TI4/O5 $101E - $101F BIT15 BIT7 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0
en el reset.
TOC1 $1016 - $1017 BIT15 BIT7 T0C2 $1018 - $1019 BIT15 BIT7 T0C3 $101A - $101B BIT15 BIT7 T0C4 $101C - $101D BIT15 BIT7 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0 14 6 13 5 12 4 11 3 10 2 9 1 BIT8 BIT0
TCNT Registro contador del TIMER Este registro es de slo lectura y tiene una longitud de 16 bits. El registro TCNT corre a una velocidad dada por el reloj principal y los bits del divisor (preescaler)
TCNT $100E - $100F BIT15 BIT7 BIT8 BIT0
TCTL1 Registro de control del Timer 1 Los bits de este registro especifican la accin que se ejecutar en la lnea de comparacin reconocida de acuerdo a la tabla 5.2. La accin de la salida de comparacin puede ser: } } } } Colocar la salida a Cero lgico Colocar la salida a uno lgico Efectuar un cambio en la salida. Desconexin de la lnea del sistema del timer
TCTL1 $1020 bit 7 OM2 OL2 OM3 OL3 OM4 OL4 OM5 OL5
47
OMx 0 0 1 1
OLx 0 1 0 1
Accin en la lnea de salida de comparacin Desconexin de la lnea del sistema del timer Cambio del estado en la lnea de salida Limpia la salida (0 lgico) Coloca un 1 lgico en la salida
Tabla 5.2 Accin de salida de las lnea de comparacin TMSK1 Registro de mscaras de interrupcin del timer 1 Este registro de 8 bits, es usado para habilitar o deshabilitar las interrupciones de entrada de captura de eventos o salida de comparacin. Para habilitar alguna de sta, se deber colocar el bit correspondiente en uno lgico. TMSK1 $1022 Bit 7 OC1I OC2I OC3I OC4I I4/O5I IC1I IC2I IC3I
TMSK2 Registro de mscaras de interrupcin del timer 2 Este registro de 8 bits es usado para habilitar o deshabilitar la interrupcin del sobreflujo del timer y la interrupcin de tiempo real. Los bits de control del preescaler del contador de carrera libre se encuentran includos en este registro(PR0, PR1), el preescalador es puesto de acuerdo a la tabla 5.3 TMSK2 $1024 Bit 7 TOI RTII PAOVI PAII 0 0 PR1 PR0
TOI ; Habilitacin de interrupcin de sobreflujo del temporizador 0 = Deshabilita la interrupcin de sobreflujo del timer 1 = Requerimiento de interrupcin cuando la bandera TOF es puesta a uno RTII ; Habilitacin de interrupcin de tiempo real 0 = Deshabilita interrupcin de tiempo real 1 = Requerimiento de interrupcin cuando la bandera RTIF es puesta a uno PAOVI ; Habilitacin de interrupcin de sobreflujo del acumulador de pulsos 0 = deshabilita la interrupcin de sobreflujo del acumulador de pulsos 1 = Requerimiento de una interrupcin del acumulador de pulsos cuando la bandera PAOVF sea puesta a uno PAII ; Habilitacin de interrupcin del flanco de entrada al acumulador de pulsos
48
0 = Inhibe el modo de operacin por interrupciones, y opera en modo de poleo 1 = Requerimiento de interrupcin cuando un flanco seleccionado es detectado a la entrada del acumulador de pulsos Bits[3:2] ; No utilizados (siempre se leen ceros) PR[1:0] ; Seleccin del preescalador del temporizador (Ver tabla 5.3) PR[1:0] 00 01 10 11 Preescalador 1 4 8 16
Tabla 5.3 Divisin del preescalador TFLG1 Registro de banderas de interrupcin del timer 1 Los bits de este registro indican cuando un evento en el sistema del timer ha ocurrido. Este registro permite operar el timer en base a interrupciones o poleo (consulta continua por software). En caso de que se quiera operar por poleo, el bit asociado a la entrada o salida debe ser consultado por software. Para trabajar por interrupciones el MCU consulta las banderas en forma asncrona, en caso de que de la bandera est puesta, un requerimiento de interrupcin es generado. La limpieza de las banderas, se realiza por la escritura de un uno en la posicin correspondiente al bit. TFLG1 $1023 Bit 7 OC1F OC2F OC3F OC4F I4/OC5F ICIF IC2F IC3F
TFLG2 Registro de banderas de interrupcin del timer 2 Los bits de este registro, indican cuando un evento como la interrupcin de tiempo real, interrupcin de sobreflujo o acumulador de pulsos a ocurrido. En caso de que se encuentren habilitadas las mscaras de interrupcin de estas banderas, y los bit's sean puestos por alguna condicin que se reconoci, se genera un requerimiento de interrupcin. Para limpiar estas banderas se debe escribir un 1 en el bit correspondiente, en caso de que se requiera otro requerimiento de interrupcin. TFLG2 $1025 Bit 7 TOF RTIF PAOVF PAIF 0 0 0 0
Es puesta cuando el TCNT cambia de $FFFF a $0000 RTIF : Bandera de interrupcin de tiempo real Este bit es puesto automticamente a uno al finalizar un perodo de la interrupcin RTI PAOVF : Bandera de interrupcin de sobreflujo del acumulador de pulsos Esta bandera es colocada, cada vez que el contador del acumulador de pulsos pasa de $00 a $00. PAIF : Bandera de interrupcin de entrada de flanco al acumulador de pulsos Esta bandera es puesta cada vez que un flanco seleccionado es detectado por la entrada del acumulador de pulsos. Bits[3:0] : No implementados (Siempre se leen ceros).
DDRA7 : direccin del bit 7 del puerto A 0 = Entrada 1 = Salida PAEN : Habilitacin del sistema de acumulador de pulsos 0 = Acumulador de pulsos deshabilitado. 1 = Acumulador de pulsos habilitado
50
PAMOD : Modo de operacin del acumulador de pulsos 0 = Modo de contador de eventos (la entrada acta como reloj) 1 = Acumulador de tiempo controlado por una seal externa (la entrada acta como habilitadora del reloj) PEDGE : Selector de la transicin activa. 0 = el acumulador de pulsos responde a transiciones de bajada 1 = el acumulador de pulsos responde a transiciones de subida DDRA3 : Direccin del bit 3 del puerto A 0 = Entrada 1 = Salida I4/O5 : entrada de captura 4/Salida de Comparacin 5 0 = Habilitacin de salida de comparacin 5 1 = Habilitacin de funcin de Captura de eventos 4 RTR : [1:0] Seleccin de la velocidad de la interrupcin de tiempo real RTI. La velocidad esta dada por la tabla 5.4 RTR[1:0] 00 01 10 11 Cristal de 8 Mhz (E= 2Mhz) 4.096 ms 8.192 ms 16.384 ms 32.768 ms Tabla 5.4 Velocidad de la interrupcin RTI PACNT Registro contador del acumulador de pulsos Este registro de lectura/escritura contiene la cuenta de los eventos externos ocurridos en la lnea PAI o la cuenta del contador de carrera libre en modo de acumulador de pulsos. El registro PACNT puede ser ledo o escrito en cualquier momento. La cuenta de este registro no es afectada por el RESET PACNT $1027 Bit 7 BIT 7 6 5 4 3 2 1 BIT0
Estado del acumulador de pulsos y bits de habilitacin de interrupcin Los bits de control del acumulador de pulsos se encuentran en los registros TMSK2 y TFLG2, los cuales fueron descritos anteriormente. Los bits PAOVI y PAOVF son los bits de habilitacin de la interrupcin del acumulador de pulsos y la banderas de sobreflujo respectivamente. El bit PAIF es la bandera de la entrada del flanco de habilitacin y su respectiva habilitacin de interrupcin PAII
51
VRH
PE2 AN2
VRL
Registro de aproximaciones sucesivas y control
PE3 AN3
PE4 AN4
PE5 AN5
PE6 AN6
PE7 AN7
Resultado1 ADR1
Resultado2 ADR2
Resultado ADR3
Resultado ADR4
Figura 6.1 diagrama de bloques del converidor A/D El sistema del convertidor analgico digital, se puede dividir en 4 bloques funcionales y estos son: ~ El multiplexor analgico. ~ El convertidor Analgico/Digital. ~ El control del convertidor. ~ Registros de almacenamiento de resultados A continuacin se describir cada uno de los bloques que componen el sistema del convertidor A/D.
6.1 El multiplexor
El multiplexor es el encargado de seleccionar una de las 8 posibles entradas para su conversin, la seleccin de la entrada, es controlada por los bits CD,CC,CB y CA del registro ADCTL (ver tabla 6.1). Los 8 canales de conversin del puerto E son lneas unidireccionales para las entradas analgicas al multiplexor. Las lneas de este puerto tambin pueden ser usadas como lneas de entrada digital. Pero la lectura de estas entradas digitales no es recomendable durante el tiempo de muestreo del convertidor.
52
0 0 0 0 0 0 0 0 1 1 1 1 1
0 0 0 0 1 1 1 1 0 1 1 1 1
0 0 1 1 0 0 1 1 * 0 0 1 1
0 1 0 1 0 1 0 1 * 0 1 0 1
AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 Reservado VRH* VRL* (VRH)/2* Reservado*
El convertidor A/D puede usar dos tipos de reloj para la sincronizacin, uno de estos relojes es el reloj base de tiempo interno E o puede sincronizarse con un oscilador interno del tipo RC. En caso de que la frecuencia del reloj E sea inferior a 750 Khz es recomendable utilizar el reloj RC.
12 ciclos
MSB 4 ciclos
Bit6
Bit5
Bit4
Bit3
Bit2
Fin
32
64
96
128
ciclos de E
Figura 6.2 Diagrama de tiempo de conversin analgico - digital 6.3.1 Encendido del convertidor. El bit 7 del registro OPTION controla el encendido del convertidor A/D. Limpiando el bit ADPU del registro OPTION se apaga, es decir se desenergiza y deshabilita el sistema del convertidor A/D. Poniendo el bit ADPU el sistema del convertidor es habilitado y encendido.
OPTION $1039 Bit 7 ADPU CSEL IRQE DLY CME -CR1 CR0
6.3.2 Proceso de conversin Una secuencia de conversin A/D comienza con un ciclo de reloj E despus de una escritura al registro al registro ADCTL. Una entrada de voltaje igual a VRL ,convierte a $00 el valor de la entrada y una entrada de voltaje igual a VRH convierte este voltaje a $FF sin indicacin de sobreflujo, de manera que cualquier entrada entre VRL y VRH producir un valor entre $00 y $FF; as estas lneas pueden ser usadas para
54
conversin radiomtrica.
Esta bandera es puesta cuando los registros que almacenan el resultado de la conversin contienen un dato vlido. Cada vez que el registro ADCTL es sobrescrito este bit es limpiado automticamente (Puesto a Cero) y una secuencia de conversin es iniciada. SCAN: Control de modo continuo. Si este bit de control es limpiado una secuencia de conversin es iniciada, de modo de que nicamente se realiza una secuencia de conversin. Si este bit es puesto a uno, la secuencia de conversin es ejecutada continuamente. MULT: Control de mltiples canales o canal sencillo. Si este bit es puesto a cero, el sistema del convertidor A/D es configurado para realizar la conversin de nicamente un canal especificado por los bits CD-CA. Si este bit es puesto a1, el sistema del convertidor es configurado para realizar la conversin consecutiva de cuatro canales elegidos, y el resultado es colocado en el registro correspondiente al canal que fue convertido. CD-CA: Estos bit's son los encargados de seleccionar el canal a convertir en modo de conversin sencilla. En modo de mltiple conversin, nicamente se utilizan los bits CD y CC para indicar que grupo de cuatro canales se convertir.
6.6 Registros de resultados del convertidor A/D (ADR1, ADR2, ADR3 y ADR4)
Estos 4 registros de slo lectura, almacenan el resultado de la conversin de 8 bits como se describi arriba. Los datos del resultado del convertidor A/D son vlidos cuando la bandera CCF est puesta, indicando que una secuencia de conversin ha sido completada. ADR1 $1031 Bit 7 ADR2 $1032 Bit 7 ADR3 $1033 Bit 7 ADR4 $1034 Bit 7 6 5 4 3 2 1 Bit 0 6 5 4 3 2 1 Bit 0 6 5 4 3 2 1 Bit 0 6 5 4 3 2 1 Bit 0
56