NT1001 - Ceres Controls

Transcripción

NT1001 - Ceres Controls
Notas Técnicas de Uso y Aplicación
NT1001
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
ÍNDICE
Universidad Tecnológica de Panamá
3.1.1 Introducción
Panamá, Panamá
3.1.2 Lazos Enganchados de Fase - PLL
“e-mail”: [email protected]
3.1.3 Registros de Estado y Control del
“web site”: http://www.geocities.com/issaiass/
Módulo de Reloj
3.1.4 Diagrama de Flujo
3.1.5 Código
3.1.6 Simulación
3.1.7 Conclusión
3.1.8 Referencias
3.1.9 Problemas Propuestos
3.1.1 Introducción
321
322
322
325
327
333
334
334
334
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
F.I.E., C.D.P., 2005
Lazos Enganchados de Fase o “Phase Locked Loop”
NT1001
322
3.1.2 Lazos Enganchados de Fase - PLL
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).
(1) Detecta si la señal está desplazada y (2) Elimina frecuencias (3) Genera una señal de oscilación hacia el detector de
fase e incrementa la frecuencia ligeramente.
genera pulsos hacia el filtro.
fuera de rango.
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.
3.1.3 Registros de Estado y Control del Módulo de Reloj
3.1.3.1 Registros de Control del PLL
1 = PLL disponible. Si PLLIE está habilitado, genera una P, Bits de Programación
del preescalar.
interrupción.
0 = PLL bloqueado, no debe ser usado aún.
(a)
E, Multiplicador
de
potencia
base dos del
VCO.
1 = PLL habilitado
1 = Reloj del sistema depende del PLL
0 = Reloj del sistema depende del Cristal.
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 = Control Automático 1 = Modo “Tracking”
0 = Control Manual
0 = Modo de Adquisición
(b)
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.
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”.
Nota Técnica
Módulo de Generación de Reloj
323
(a)
(b)
Los registros de
la figura 181 y
182 no se podrán
configurar si
PLLON = 1
N, Selector Multiplicador de la Frecuencia del PLL.
Nota: NMáx = 212 – 1 = 409510.
N = 0, impone por defecto N = 1.
(c)
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.
3.1.3.2 Pasos para la Programación del PLL del GP32
Tabla 69. Parámetros de Configuración del PLL
Valor actual de N
0 < N ≤ NMáx
NMáx < N ≤ NMáx × 2
NMáx × 2 < N ≤ NMáx × 4
NMáx × 4 < N ≤ NMáx × 8
P
0
1
2
3
(a) P = Registro PCTL_PRE[1:0]
Rango de Frecuencias [MHz]
0 < ƒVCLK < 9.8304
9.8304. ≤ ƒVCLK < 19.6608
19.6608 ≤ ƒVCLK < 39.3216
E
0
1
2
(b) E = Registro PCTL_VPR[1:0]
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

 f
R = round  RMáx ×  VCLK
 f RCLK


 f
 − int  VCLK

 f RCLK
 


Ecuación 10. Selector Divisor de Referencia del PLL
324
f BUS = f VCLK / 4
5. Calcular N para extraer P de la tabla
61(a).
 R × f VCLKDES
N = round
f RCLK

9. Recalcular:
Ecuación 13. Frecuencia de Bus
7. Seleccionar un valor de E de la tabla
69(b).
8. Calcular:



Ecuación 11. Multiplicador de Referencia
6. Calcular la frecuencia del VCO y del
bus:
 f
L = round E VCLK
 2 f NOM
f VCLK = 2 × N × f RCLK / R
P
)
Ecuación 15. Verificación del VCO
10. Verificar:



f VRS − f VCLK ≤ f NOM × 2 E −1
Ecuación 16. Verificación de Parámetros
del PLL
Ecuación 14. Selector de Rango del VCO
En donde fNOM = 38.4 kHz.
Ecuación 12. Frecuencia del VCO
(
f VRS = L × 2 E ⋅ f NOM
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
ƒBUS [MHz]
2.0
2.5
4.0
4.9152
7.3728
8
P
0
0
0
0
0
0
E
0
1
1
2
2
2
N
F
2
D
4
6
34
L
D5
80
D0
80
C0
D0
(a) ƒXTAL = 4.9152 MHz
(a)
R
9
1
4
1
1
8
ƒBUS [MHz]
2.0
2.5
4.0
4.9152
7.3728
8
P
0
0
0
0
0
0
E
0
1
1
2
2
2
N
F
1
F
2
3
D
L
D5
80
D5
80
C0
D0
(c.1)
R
9
1
9
1
1
4
(c.2)
(b) ƒXTAL = 9.8304 MHz
(b)
(d)
(e)
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.
Nota Técnica
Módulo de Generación de Reloj
325
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
Bandera
PLLF
Máscara
AUTO,
PLLIE
Dirección
FFF2
FFF3
Vector (Dirección)
Vector del PLL (Alto)
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.
3.1.4 Diagrama de Flujo
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)
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.
Nota: Para que el PLL funcione, se necesita realizar la
siguiente conexión adicional de componentes pasivos,
elija cualquiera de las dos configuraciones.
GP32
GP32
(a)
0.033uF 10k
0.01uF
VDDaPTA7
VSSaPTA6
CGMX
PTA5
Osc2 PTA4
Osc1 PTA3
RST PTA2
PTC0PTA1
PTC1PTA0
PTC2REFL
PTC3REFH
0.47uF
VDDaPTA7
VSSaPTA6
CGMX
PTA5
O 2 PTA4
326
(a)
(b)
(c)
(d)
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.
3.1.5 Código
Nota Técnica
Módulo de Generación de Reloj
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
;
NT1001
Rev. 1 del 07.08.05
Nota Técnica
328
; 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
NT1001
Rev. 1 del 07.08.05
Nota Técnica
Módulo de Generación de Reloj
MUL7_0
N
329
; VCO, Bits OFF
; PMSL, Multiplicador de la frecuencia del
; VCO, valor de 7
equ MUL11_8|MUL7_0 ; PMS[H:L] = N, Multiplicador de la frecuencia
; del VCO
equ $34
VRS7_0
L
RDS3_0
equ $D0
equ VRS7_0
equ $08
R
equ RDS3_0
; PMRS, Selector de Rango del VCO
; PMRS = L, Selector de Rango del VCO
; PMDS, Selector de Divisor de Referencia,
; por defecto, siempre 1
; 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_STARTequ $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
Nota Técnica
330
;=============================================
; 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
NT1001
Rev. 1 del 07.08.05
Nota Técnica
Módulo de Generación de Reloj
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
Nota Técnica
332
;=============================================
; 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.
NT1001
Rev. 1 del 07.08.05
Nota Técnica
Módulo de Generación de Reloj
333
3.1.6 Simulación
PCTL PBWC
PMSH
(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).
(a) Sitúe “breakpoints” en la
inicialización del PLL
PMSL PMSR PMDS
(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.
(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.
(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
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.
Nota Técnica
334
3.1.7 Conclusión
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 Referencias
3.1.8.1 Data Técnica del MC68HC908GP32, MC68HC08GP32
(a) http://www.freescale.com/files/microcontrollers/doc/data_sheet/MC68HC908GP32.pdf
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) http://www.profesores.frc.utn.edu.ar/electronica/electronicaaplicadaiii/descargas.htm
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 Problemas Propuestos
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.
NT1001
Rev. 1 del 07.08.05

Documentos relacionados