Notas Técnicas de Uso y Aplicación -...

14
F.I.E., C.D.P., 2005 NT1001 NT1001 La velocidad del bus es limitada por el tamaño del cristal externo u oscilador que se fije a las terminales del microcontrolador. Anteriormente se informó que la velocidad de bus del microcontrolador es la cuarta parte del cristal externo; aunque parezca poco creible, nuestra pastilla puede correr a velocidades de bus diferentes independientemente de la velocidad del cristal que se situe en las terminales de oscilación, todo esto gracias a un módulo especial que posee un “PLL” 1 y permite generar frecuencias múltiplos del cristal. En principio, se explica a grandes razgos que función tiene un PLL en general y en detalle: Cálculo de la frecuencia de bus: En la configuración del PLL para GP32 se analizan los parámetros que deben calcularse para su buen desempeño. Configuración del Módulo de Generación de Reloj: Inicializar el módulo para generar una frecuencia máxima de bus, dependiendo del cristal de entrada. Código: Muestra el listado del programa de configuración del PLL específico para un cristal de 4.9152 MHz; la función del código es conmutar un LED con un retardo de “software” a 50 Hz configurada una frecuencia de bus máxima. Simulación: Corroborar de manera gráfica, cómo varían los registros del módulo de reloj y deducir que acción retoma el microcontrolador, configurado estos registros; finalmente, se utiliza el PLL para generar una frecuencia de bus y un retardo de “software” para generar una frecuencia de cincueta hertz (50 Hz). 1 Lazos Enganchados de Fase o “Phase Locked Loop” Notas Técnicas de Uso y Aplicación 3.1 MÓDULO DE GENERACIÓN DE RELOJ – CGMC GENERACIÓN DE FRECUENCIA DE BUS CON EL MÓDULO CGMC (SOLO GP32) Preparado por: Rangel Alvarado Estudiante Graduando de Lic. en Ing. Electromecánica Universidad Tecnológica de Panamá Panamá, Panamá “e-mail”: [email protected] “web site”: http://www.geocities.com/issaiass/ 3.1.1 Introducción ÍNDICE 3.1.1 Introducción 321 3.1.2 Lazos Enganchados de Fase - PLL 322 3.1.3 Registros de Estado y Control del Módulo de Reloj 322 3.1.4 Diagrama de Flujo 325 3.1.5 Código 327 3.1.6 Simulación 333 3.1.7 Conclusión 334 3.1.8 Referencias 334 3.1.9 Problemas Propuestos 334

Transcript of Notas Técnicas de Uso y Aplicación -...

F.I.E., C.D.P., 2005 NT1001

NT1001 La velocidad del bus es limitada por el tamaño del cristal externo u oscilador que se fije a las terminales del microcontrolador. Anteriormente se informó que la velocidad de bus del microcontrolador es la cuarta parte del cristal externo; aunque parezca poco creible, nuestra pastilla puede correr a velocidades de bus diferentes independientemente de la velocidad del cristal que se situe en las terminales de oscilación, todo esto gracias a un módulo especial que posee un “PLL”1 y permite generar frecuencias múltiplos del cristal. En principio, se explica a grandes razgos que función tiene un PLL en general y en detalle:

Cálculo de la frecuencia de bus: En la configuración del PLL para GP32 se analizan los parámetros que deben calcularse para su buen desempeño.

Configuración del Módulo de Generación de Reloj: Inicializar el módulo para generar una frecuencia máxima de bus, dependiendo del cristal de entrada.

Código: Muestra el listado del programa de configuración del PLL específico para un cristal de 4.9152 MHz; la función del código es conmutar un LED con un retardo de “software” a 50 Hz configurada una frecuencia de bus máxima.

Simulación: Corroborar de manera gráfica, cómo varían los registros del módulo de reloj y deducir que acción retoma el microcontrolador, configurado estos registros; finalmente, se utiliza el PLL para generar una frecuencia de bus y un retardo de “software” para generar una frecuencia de cincueta hertz (50 Hz).

1 Lazos Enganchados de Fase o “Phase Locked Loop”

Notas Técnicas de Uso y Aplicación

3.1 MÓDULO DE GENERACIÓN DE RELOJ – CGMC GENERACIÓN DE FRECUENCIA DE BUS CON EL MÓDULO CGMC (SOLO GP32) Preparado por: Rangel Alvarado Estudiante Graduando de Lic. en Ing. Electromecánica Universidad Tecnológica de Panamá Panamá, Panamá “e-mail”: [email protected] “web site”: http://www.geocities.com/issaiass/

3.1.1 Introducción

ÍNDICE 3.1.1 Introducción 321 3.1.2 Lazos Enganchados de Fase - PLL 322 3.1.3 Registros de Estado y Control del Módulo de Reloj 322 3.1.4 Diagrama de Flujo 325 3.1.5 Código 327 3.1.6 Simulación 333 3.1.7 Conclusión 334 3.1.8 Referencias 334 3.1.9 Problemas Propuestos 334

322

Figura 181. Registros de Estado y Control del Módulo de Reloj. (a) Registro de Control del PLL. Controla el estado del PLL, interrupciones, activación y variables P, E. (b) Registro de Control del Ancho de Banda del PLL. Configura el PLL para modo automático, define cuando esta

listo y su modo de operación entre adquisición o “tracking”.

(1) Detecta si la señal está desplazada y genera pulsos hacia el filtro.

(2) Elimina frecuencias fuera de rango.

(3) Genera una señal de oscilación hacia el detector de fase e incrementa la frecuencia ligeramente.

Figura 180. Lazo Enganchado de Fase o PLL. Para el microcontrolador GP32, el PLL

incorporado genera una frecuencia de oscilación la cual es utilizada como reloj del sistema.

(4) Lazo de retroalimentación.

1 = PLL habilitado 0 = PLL inhabilitado

1 = Interrupciones habilitadas 0 = Interrupciones deshabilitadas Nota: Si el bit AUTO en PBWC está habilitado, PLLF siempre leerá un 0. Nunca Programar E para un valor igual a 112

1 = Reloj del sistema depende del PLL 0 = Reloj del sistema depende del Cristal.

1 = PLL disponible. Si PLLIE está habilitado, genera una interrupción. 0 = PLL bloqueado, no debe ser usado aún.

E, Multiplicador de potencia base dos del VCO.

P, Bits de Programación del preescalar. 1 = Control Automático 1 = Modo “Tracking”

0 = Control Manual 0 = Modo de Adquisición

1 = La frecuencia del VCO es cercana a la deseada. 0 = La frecuencia del VCO está lejos de la deseada. Nota: Si AUTO = 1, el bit LOCK siempre leerá un 0.

Cuando el bit LOCK = 1 se puede cambiar la referencia del reloj del sistema.

Un PLL es un circuito que permite que una señal de referencia externa controla la frecuencia y la fase de un oscilador, el mismo, detecta la señal de entrada, la filtra y compara con la señal de oscilación ajustando así la diferencia de fase (señal desplazada). 3.1.3.1 Registros de Control del PLL (a) (b)

3.1.2 Lazos Enganchados de Fase - PLL

3.1.3 Registros de Estado y Control del Módulo de Reloj

Nota Técnica Módulo de Generación de Reloj

323

N, Selector Multiplicador de la Frecuencia del PLL. Nota: NMáx = 212 – 1 = 409510. N = 0, impone por defecto N = 1.

R, Selector del Divisor de Referencia del PLL. L, Selector de Rango del VCO del PLL Nota: 1510 ≥ R > 0; 25510 ≥ L > 0 L = 0, Deshabilita el PLL. R = 0, impone por defecto R = 1

Figura 182. Registros de Estado y Control del Módulo de Reloj (Continuación). (a) Registros Selectores de Multiplicador de la Frecuencia del PLL. Controlan el Módulo del divisor de la retroalimentación del VCO. (b) Registro Selector de Rango del VCO del PLL. Controla el rango lineal

en el cual opera el detector de fase. (c) Selector del Divisor de Referencia del PLL. Igualmente, este registro controla el rango lineal.

Los registros de la figura 181 y 182 no se podrán configurar si PLLON = 1

Valor actual de N P 0 < N ≤ NMáx 0

NMáx < N ≤ NMáx × 2 1 NMáx × 2 < N ≤ NMáx × 4 2 NMáx × 4 < N ≤ NMáx × 8 3

Rango de Frecuencias [MHz] E 0 < ƒVCLK < 9.8304 0

9.8304. ≤ ƒVCLK < 19.6608 1 19.6608 ≤ ƒVCLK < 39.3216 2

1. Escoger una frecuencia de bus deseada menor o igual a ocho Megahertz (8 MHz), ƒBUSDES.

2. Calcular la frecuencia del VCO, ƒVCLKDES = 4 × ƒBUSDES

Ecuación 8. Frecuencia Deseada de Oscilación 3. Apuntar el Cristal de referencia

ƒRCLK = ƒXTAL Ecuación 9. Cristal de Referencia PLL

4. Si, 30 kHz ≤ ƒRCLK ≤ 100 kHz, escoger R = 1, de lo contrario

×=

RCLK

VCLK

RCLK

VCLKMáx f

fffRR intround

Ecuación 10. Selector Divisor de Referencia del PLL

(a) (b) (c) 3.1.3.2 Pasos para la Programación del PLL del GP32

Tabla 69. Parámetros de Configuración del PLL (a) P = Registro PCTL_PRE[1:0] (b) E = Registro PCTL_VPR[1:0]

324

Figura 183. Configuración del PLL a frecuencia máxima de Bus con Cristal de 4.9152 MHz. (a) PCTL. Inhabilitar el PLL y luego configurar P y E. (b) PBWC. Habilitar el modo automático. (c) PSM[H:L]. (c.1) y (c.2); configurar N. (d) PMRS. Configurar L. (e) PMDS. Configurar R y

luego, habilitar el PLL en el registro PCTL, PLLON = 1.

5. Calcular N para extraer P de la tabla

61(a).

×=

RCLK

VCLKDES

ffR

N round

Ecuación 11. Multiplicador de Referencia 6. Calcular la frecuencia del VCO y del

bus: RfNf RCLK

PVCLK /2 ××=

Ecuación 12. Frecuencia del VCO

4/VCLKBUS ff = Ecuación 13. Frecuencia de Bus

7. Seleccionar un valor de E de la tabla 69(b).

8. Calcular:

=

NOMEVCLK

ff

L2

round

Ecuación 14. Selector de Rango del VCO En donde fNOM = 38.4 kHz.

9. Recalcular:

( ) NOME

VRS fLf ⋅×= 2 Ecuación 15. Verificación del VCO

10. Verificar: 12 −×≤− E

NOMVCLKVRS fff Ecuación 16. Verificación de Parámetros

del PLL

3.1.3.3 Ejemplo de Programación y Configuración del PLL Sea un Cristal Externo de 4.9152 MHz y la frecuencia de bus de 8 MHz, configure el PLL.

1. ƒBUSDES = 8 MHz. 2. ƒVCLKDES = 32 MHz. 3. ƒRCLK = 4.9152 MHz.

4. R = 8. 5. P = 0. 6. ƒVCLK = 31.9488 MHz.

7. E = 2. 8. L = D016 9. ƒVRS = 31.9488 MHz.

10. 0 ≤ 76.8 k

Tabla 70. Parámetros de Configuración para Frecuecias de Bus (c.1) (c.2) (a) ƒXTAL = 4.9152 MHz (b) ƒXTAL = 9.8304 MHz (d) (a) (b) (e)

ƒBUS [MHz] P E N L R 2.0 0 0 F D5 9 2.5 0 1 2 80 1 4.0 0 1 D D0 4 4.9152 0 2 4 80 1 7.3728 0 2 6 C0 1 8 0 2 34 D0 8

ƒBUS [MHz] P E N L R 2.0 0 0 F D5 9 2.5 0 1 1 80 1 4.0 0 1 F D5 9 4.9152 0 2 2 80 1 7.3728 0 2 3 C0 1 8 0 2 D D0 4

Nota Técnica Módulo de Generación de Reloj

325

Figura 184. NT1001 – CGM. (a) Programa principal. Configura el Módulo CGMC para generar una frecuencia

máxima de bus basada en un cristal de 4.9152 MHz y conmuta un LED a 50 Hz. (b) Reinicio del Sistema. Al

presionar “reset”, reinicia el sistema.

Bandera Máscara Dirección Vector (Dirección) FFF2 Vector del PLL (Alto) PLLF AUTO,

PLLIE FFF3 Vector del PLL (Bajo)

Si el bit AUTO está en 1 y las interrupciones están habilitadas (PLLIE = 1) el CPU generará interrupciones si el bit LOCK cambia de estado. Además, cuando el bit AUTO, esté en 0, las interrupciones estarán deshabilitadas y el bit LOCK leerá siempre 0.

10k

0.01uF

0.033uF

VDDaVSSaCGMXOsc2Osc1RSTPTC0PTC1PTC2PTC3REFH

REFLPTA0PTA1PTA2PTA3PTA4PTA5PTA6PTA7

GP32

Nota: Para que el PLL funcione, se necesita realizar la siguiente conexión adicional de componentes pasivos, elija cualquiera de las dos configuraciones.

0.47uF VDDaVSSaCGMXO 2 PTA4

PTA5PTA6PTA7

GP32

3.1.2.4 Vector de Interrupción del Módulo de Generación de Reloj Tabla 71. Vector de Interrupción del Módulo PLL El programa configura el microcontrolador GP32, para que se genere una frecuencia máxima de bus con un cristal externo de 4.9152 MHz y utilizar un retardo de “software” para conmutar el LED PTA6 a una frecuencia de cincuenta hertz (50 Hz). (b) (a)

3.1.4 Diagrama de Flujo

326

Figura 185. NT1001 – CGMC (continuación, subrutinas). (a) INIT_PLL. Configura el módulo de generación de reloj para que en base a un cristal de 4.9152 MHz genere una frecuencia de bus máxima. (b) INIT_PORTS. Inicializa el puerto A6 en bajo y luego lo ubica como salida para el LED.

(b) INIT_ADC. Configura para conversión en el puerto A5. (c) INIT_CONFIG. Inicializa el registro de configuración 1 para inhabilitar el “watchdog” y hacer que el LVI trabaje a 5V. (d) Delay. Subrutina de retardo programable de un milisegundo (1 ms) de base de tiempo.

(a) (b) (c) (d)

Nota Técnica Módulo de Generación de Reloj

NT1001 Rev. 1 del 07.08.05

327

;================================================================= ; ARCHIVO : NT1001 - CGMC - 23 07 04.asm ; PROPÓSITO : Configura el microcontrolador para que con un Cristal ; Externo de 4.9152 MHz, genere una frecuencia de bus de ; 8 MHz y conmute el estado del LED PTA6 a una rata de 50 Hz ; ; NOTA : ; 1 - Observar la rutina de inicialización del PLL. ; 2 - El módulo PLL puede generar una frecuencia máxima o ; cualquiera deseada por el usuario independientemente del ; cristal externo que se tenga. ; REFERENCIA : ; MC68HC908GP32, MC68HC08GP32 Technical Data ; http://www.freescale.com/files/microcontrollers/doc/ ; data_sheet/MC68HC908GP32.pdf ; Págs. 113 @ 116 - Programación del PLL, sección 7.4.6 ; ; LENGUAJE : IN-LINE ASSEMBLER ; --------------------------------------------------------------------------- ; HISTORIAL ; DD MM AA ; 22 07 04 Creado. ; 15 09 04 Modificado. ;================================================================= ; Pasos para iniciar el PLL. ; Nota : Utilizar siempre los últimos valores si estos son redundantes en la ; calibración, p.e. N ; 1 - Escoger una frecuencia de bus, Fbusdes ; 2 - Calcular Fvclkdes = 4 * Fbusdes ; 3 - Calcular la frecuencia del Cristal externo Frclk ; 3.1 - Si 30 kHz <= Frclk <= 100 kHz -----> R = 1 ; 3.2 - Si Frclk > 100 kHz, utilizar la ecuación: ; R = round{Rmáx*[(Fvclkdes/Frclk) - int(Fvclkdes/Frclk)]} ; 4 - Calcular N = round(R*Fvclkdes/Frclk) ; 5 - Seleccionar P de la tabla en la pág. 114 del manual ; 6 - Nuevamente calcular: ; 6.1 - N = round[R*Fvclkdes/(Frclk*2^P)] ; 6.2 - Fvclk = 2^P*N*Frclk/R ; 6.3 - Fbus = Fvclk/4 ; 7 - Seleccionar E de la tabla de la página 115 ; 8 - Calcular L = round[Fvclk/(2^E*Fnom)], en donde ; Fnom = 38.4 kHz ; 9 - Calcular Fvrs = L*2^E*Fnom ; 10- Verificar que |Fvrs - Fvclk| <= (Fnom * 2^E)/2 ; 11- Los Registros correspondientes de cada variable son: ; 11.1 PCLT_PRE[1:0] = P ; 11.2 PCTL_VPR[1:0] = E ; 11.3 PMS[H(3:0):L] = N ; 11.4 PMRS = L ; 11.5 PMDS = R ;

3.1.5 Código

NT1001

Rev. 1 del 07.08.05

328 Nota Técnica ; Pasos para programar el PLL. ; 1 - Desactivar el PLL, PCTL_PLLON = 0 ; 2 - ¿Necesito Interrupciones?, Programar P & E, PCTL_BCS = 0 ; 3 - Programar N, PMSH[3:0] + PMSL ; 4 - Programar L, PMRS = L ; 5 - Programar R, PMDS = R ; 6 - Seleccionar modo automático (recomendado), PBWC_AUTO = 1 ; 7 - Activar el PLL, PCTL_PLLON = 1 ; 8 - Esperar la interrupción o que la bandera PLLF = 1 ; 9 - Cambiar a la referencia interna del VCO, PCTL_BCS = 1 ;================================================================= $SET ICS08 ; ICS08 = 1, Vamos a simular en la pastilla ; la velocidad de simulación es menor en la ; PC. ;$SETNOT ICS08 ; ICS08 = 0, Vamos a programar la pastilla ; la aplicación debe correr en tiempo real ;============================================= ; Definiciones del Usuario ;============================================= DELAY32 equ $03E4 ; Retardo para 8 MHz de Bus PTA6 equ 6T ; Puerto A, Bit 6 DDRA6 equ 6T ; Registro de Direccionamiento A, Bit 6 LVI5OR3 equ %00001000 ; CONFIG1, Bit de Operación del LVI, LVI @

; 5V COPD equ %00000001 ; CONFIG1, Bit de Inhabilitación de Watchdog,

; BIT 0 ON PLLIE equ %10000000 ; PCTL, Bit de Habilitación de interrupciones,

; Bit 7 ON PLLF equ 6T ; PCTL, Bandera de Interrupciones

; pendientes, Bit 6 PLLON equ 5T ; PCTL, Bandera de activación del PLL, por

; defecto en alto BCS equ 4T ; PCTL, Seleccionador del Reloj Base, Bit 4 PRE1 equ 0T ; PCTL, Divisor de la Frecuencia a la potencia

; de Dos, Bit 3 OFF PRE0 equ 0T ; PCTL, Divisor de la Frecuencia a la potencia

; de dos, Bit 2 OFF P equ PRE1|PRE0 ; PCTL_PRE[1:0] = P, Divisor de la frecuencia

; a la potencia de dos VPR1 equ %00000000 ; PCTL, Multiplicador a la potencia de dos del

; VCO, Bit 1 ON VPR0 equ %00000010 ; PCTL, Multiplicador a la potencia de dos del

; VCO, Bit 2 OFF E equ VPR1|VPR0 ; PCTL_VPR[1:0] = E, Multiplicador a la

; potencia de dos del VCO AUTO equ 7T ; PBWC, Habilitador del Modo Automático de

; Control del Ancho de Banda, Bit 7 ON LOCK equ 6T ; PBWC, Bandera de Aviso del PLL

; Inicializado (Cuando AUTO = 1 y LOCK = 1) ; el PLL corre a la frecuencia programada MUL11_8 equ $0 ; PMSH, Multiplicador de la frecuencia del

Nota Técnica Módulo de Generación de Reloj

NT1001 Rev. 1 del 07.08.05

329

; VCO, Bits OFF

MUL7_0 equ $34 ; PMSL, Multiplicador de la frecuencia del ; VCO, valor de 7

N equ MUL11_8|MUL7_0 ; PMS[H:L] = N, Multiplicador de la frecuencia ; del VCO

VRS7_0 equ $D0 ; PMRS, Selector de Rango del VCO L equ VRS7_0 ; PMRS = L, Selector de Rango del VCO RDS3_0 equ $08 ; PMDS, Selector de Divisor de Referencia,

; por defecto, siempre 1 R equ RDS3_0 ; PMDS = R, Selector de Divisor de

; Rererencia ;============================================= ; Mapa de Memoria del Microcontrolador ;============================================= ;============================================= ; Registro de E/S ;============================================= PORTA equ $0000 ; Dirección, Puerto 0 DDRA equ $0004 ; Registro de Direccionamiento, Puerto 0 ;============================================= ; Módulo Generador de Reloj ;============================================= PCTL equ $0036 ; Registro de Control del PLL, también

; parámetros P & E PBWC equ $0037 ; Registro de Control del Ancho de Banda del

; PLL PMSH equ $0038 ; Registro Selector del Multiplicador N (Alto) PMSL equ $0039 ; Registro Selector del Multiplicador N (Bajo) PMRS equ $003A ; Registro Selector del Rango Lineal L PMDS equ $003B ; Registro Selector del Divisor de Referencia R ;============================================= ; Registro de Configuraciones ;============================================= CONFIG1 equ $001F ; Vector de configuración 1 ;============================================= ; Memoria FLASH ;============================================= FLASH_START equ $8000 ; Puntero - Mem.FLASH ;============================================= ; Vectores de Usuario ;============================================= PLLH equ $FFF8 ; Vector de Módulo de Lazo de Fase Cerrada RESET_VEC equ $FFFE ; Puntero del RESET

NT1001

Rev. 1 del 07.08.05

330 Nota Técnica ;============================================= ; OBJETIVO : Inicio de Codif. del Ensam- ; blador en Memoria FLASH. ;=============================================

org FLASH_START ; Inicio Mem. FLASH ;============================================= ; OBJETIVO : Inicializa el PLL para operar ; a la máxima frecuencia de bus ; (8 MHz). ; Prende y apaga el LED cada ; 10 ms, lo que causa una fre- ; cuencia de 50 Hz ;============================================= START

rsp ; Inic.Stack = $00ff clra ; Borra A clrx ; Borra X jsr INIT_CONFIG ; Inicializa el módulo de Configuración jsr INIT_PORTS ; Inicializa Puertos jsr INIT_PLL ; Inicializa Módulo Fase de Lazo Cerrado ESPERA

ldhx #10T ; A retardar 10 ms $IFNOT ICS08 ; Solo retarda si se está en modo de

; programación jsr Delay ; Retarda

$ENDIF com PORTA ; Conmuta el puerto (50 Hz) bra ESPERA ; Salta al modo de bajo consumo

;============================================= ; INIT_CONFIG : Inicializa registro de confi- ; guración. ; OBJETIVO : Habilita pin Reset, LVI a 5 V ; y Watchdog inhabilitado. ; ENTRADA : Ninguna ; SALIDA : Ninguna ; REGISTROS ; AFECTADOS : CONFIG1 ;============================================= INIT_CONFIG

mov #{LVI5OR3|COPD},CONFIG1 ; LVI a 5V, Watchdog inhabiliado rts ; retorna

Nota Técnica Módulo de Generación de Reloj

NT1001 Rev. 1 del 07.08.05

331

;============================================= ; INIT_PORTS : Inicializa variables y re- ; gistros. ; OBJETIVO : Inicializa los registros de ; direccionamiento. ; PTA6 = LOW ; PTA6 = HIGH ; ENTRADA : Ninguna ; SALIDA : Ninguna ; REGISTROS ; AFECTADOS : PORTA ;============================================= INIT_PORTS

bclr PTA6,PORTA ; Puerto A 6 en bajo bset DDRA6,DDRA ; Puerto A 6 es salida rts ; retorna

;============================================= ; INIT_PLL : Inicializa el módulo de PLL. ; OBJETIVO : Módulo PLL operando a la fre ; cuencia de bus MÁXIMA. ; ENTRADA : Ninguna ; SALIDA : Ninguna ; REGISTROS ; AFECTADOS : PCTL, PMS[H:L], PMSR, PMDS, ; PBWC ;============================================= INIT_PLL

bclr PLLON,PCTL ; Inhabilita PLL mov #{P|E},PCTL ; Selecciona reloj del sistema CGMOOUT =

; CGMXCLK/2, ; Programa P = 0T, E = 2T ldhx #N ; Registro de Seleccionador del Multiplicador,

; N = 52T sthx PMSH ; Almacena en el registro mov #L,PMRS ; Selector de Rango, L = 208T mov #R,PMDS ; Selector de Divisor de referencia, R = 8T bset AUTO,PBWC ; PLL decide entre los modos de adquisición y

; tracking bset PLLON,PCTL ; Enciende el PLL brclr PLLF,PCTL,* ; Espera a que se configure el PLL bset BCS,PCTL ; Cambia el PLL a la referencia interna del

; VCO ; CGMOUT = CGMVCLK/2 rts ; Retorno

NT1001

Rev. 1 del 07.08.05

332 Nota Técnica ;============================================= ; DELAY : Genera un retardo de tiempo ; OBJETIVO : Retardo de tiempo, base 1ms ; ENTRADA : H:X = Retardo en ms ; SALIDA : H:X = 0 ; REGISTROS ; AFECTADOS : H:X ; USO : ; MIN = H:X = 1T ; MÁX = H:X = 65535T ; ldhx #500 ; jsr Delay ; retarda 0.5 seg ;============================================= Delay pshx ; [2] Salva X en la pila pshh ; [2] Salva H en la pila ldhx #DELAY32 ; [3] Carga constante de bucle fino Delay0 aix #-1 ; [2] Decrementa H:X en 1 cphx #0 ; [3] LLegó a cero (0) bne Delay0 ; [3] Si no es igual, salta a Delay0 pulh ; [2] Si es igual, recupera H de la pila pulx ; [2] Recupera X de la pila aix #-1 ; [2] Decrementa H:X en 1 cphx #0 ; [3] LLegó a cero (0) bne Delay ; [3] Si no es igual, salta a Delay rts ; [4] retorna ;============================================= ; OBJETIVO : Inicializa el Vector de Reset ; Arranque del programa en la ; memoria Flash y búsqueda de ; la interrupción del módulo de ; fase de lazo cerrado. ;============================================= ;===== Vector de Reinicio de Sistema =======

org RESET_VEC ; Puntero Vec - RESET dw START ; al darse reset salta a Start

Listado 21. NT1001 – CGMC. El programa principal inicializa el Módulo de Generación de Reloj con un cristal externo de 4.9152 MHz y generar una frecuencia

de bus máxima para luego hacer conmutar el LED PTA6 a 50 Hz.

Nota Técnica Módulo de Generación de Reloj

333

(a) Sitúe “breakpoints” en la inicialización del PLL

(b) Al llegar al “breakpoint” ejecute cada instrucción paso a paso (a excepción de la línea brclr PLLF,PCTL,*; ejecútela en “Go”) y observe la configuración de un PLL.

Figura 186. Simulación del Programa Principal. (a) “Breakpoint”. Sitúe “breakpoints” para visualizar la configuración del módulo de generación de reloj. (b) Registros del Módulo de Generación de Reloj. Ejecute cada instrucción y cuando haya llegado a la subrutina de inicialización, deduzca

la variación que causa en el registro. (c) Frecuencia de Bus Límite. Luego de la última línea, el microcontrolador cambia al PLL como reloj de referencia, el cual actúa en el límite del bus.

(a) Inicie WinIDE. (b) Cargue el archivo NT1001 – CMGC – 23 07 04.asm. (c) Compile. (d) Entre al simulador. (e) Añada “breakpoints” según la figura 186(a). (f) Corra su programa y en la sección de llamado a la rutina de inicialización del módulo reloj (INIT_PLL) observe la ejecución de cada instrucción, ver figura 186(b). (g) Observe la ventana de ciclos, figura 186(c) y note que la frecuencia del bus ha cambiado a aproximadamente 8 MHz. (h) Ejecute el programa en modo multipaso y observe el resultado de la conmutación del LED. (i) Si desea “quemar” su pastilla, revisar la NT0009, Sección 1.9.5. Nota: Recuerde mover su compilación condicional si desea que su programa corra en tiempo real:

; $SET ICS08 $SETNOT ICS08

(c) Luego de la última línea, el simulador (BCS = 1) capta la nueva frecuencia de bus, que es muy cercana a la máxima.

PCTL PBWC PMSH

PMSL PMSR PMDS

3.1.6 Simulación

NT1001

Rev. 1 del 07.08.05

334 Nota Técnica

http://www.freescale.com/files/microcontrollers/doc/data_sheet/MC68HC908GP32.pdf

http://www.profesores.frc.utn.edu.ar/electronica/electronicaaplicadaiii/descargas.htm

Independientemente del cristal que se posea, para el microcontrolador GP32, se pueden generar frecuencias de buses mayores a la actual. Como el bus del sistema varía, afecta directamente a los módulos como el temporizador, ADC, SCI, que empiezan a calcular en base a esta referencia. Para efecto práctico, se puede realizar un programa que calcule los parámetros de configuración del PLL; por otro lado, esta nota abarca la configuración a máxima frecuencia de bus, demostrando el poder del módulo de generación de reloj. 3.1.8.1 Data Técnica del MC68HC908GP32, MC68HC08GP32 (a) Pág. 108 – Diagrama de Bloques del Módulo de Generación de Reloj, figura 7-1 Pág. 109 – Lazos Enganchados de Fase (PLL), Sección 7.4.2 Pág. 110 – Descripción funcional de la figura 7-1 Págs. 113 – 117 – Programación del PLL. Págs. 119 y 135 – Circuito de Conexión Externa del PLL. Pág. 122 – 130 – Información General de Registros de Control. Págs. 131 y – Interrupción del PLL. 3.1.8.2 Manual de Referencia del CPU (a) http://www.freescale.com/files/microcontrollers/doc/ref_manual/CPU08RM.pdf 3.1.8.3 Información General de PLL (a) http://users.telenet.be/educypedia/electronics/pll.htm (b) 3.1.8.4 Otro Código Fuente de PLL en ensamblador (c) http://www.robotroom.com/PLL.html 3.1.8.5 Página “web” de Microcontroladores de esta nota (a) http://www.geocities.com/issaiass/index.htm 3.1.9.1 Calcule los parámetros de configuración del PLL para GP32, para un Cristal de 9.8304 MHz y frecuencia de bus de 8 MHz. 3.1.9.2 Calcule los parámetros del PLL para un Cristal de 4.9152 MHz y frecuencia de bus de 2.5 MHz, y hacer conmutar un LED a 60 Hz utilizando el temporizador.

3.1.7 Conclusión

3.1.8 Referencias

3.1.9 Problemas Propuestos