Professional Documents
Culture Documents
Anexo VI. Guía de configuración del adaptador J-Link para carga y depuración 111
VI.1. Introducción .................................................................................... 111
VI.2. Instalación del controlador de USB del adaptador J-Link .............. 111
Anexo IX. Entradas analógicas y conversión ADC en tarjeta con LPC1768_H.. 141
IX.1. Introducción .................................................................................... 141
IX.2. El conversor analógico-digital ........................................................ 141
IX.3. Descripción de pines relacionados con el ADC .............................. 142
IX.4. Descripción de los registros implicados.......................................... 143
Práctica 1
introducción
" " " " " " " " " " " " " " "
12 " " " " "Prácticas de laboratorio
" " de" sistemas
" "
electrónicos "
digitales "
" " " " " " " " " "
46
"
Tabla 1.2. Valores
" almacenados
" " en memoria" " "
Dir Numeros Numeros+0x4 Numeros+0x8 Numeros+0xC …..
" " " " " "
Valor 0x00000001 0x00000002 0x00000003 0x00000004 …..
" " " " " "
"
"
" " " " " " " " " " " " " " " "
" " " " " " "
Práctica 1 - modos de direccionamiento. emsamblador 15
• Modifique el programa para que la duración del ´1´ en cada posición sea
igual al número de su puesto de trabajo en el laboratorio multiplicado
por 2 µs. Haga uso de un bucle y del conocimiento que ya tiene de la
duración de ejecución de algunas instrucciones.
introducción
/̋ŒæøÆ̇"
4̋̌Æœßøæœ"
"
Figura 2.1.
" E"ntorno" dE" simulación
" .
"
"
Programa "
2.1.
"
c ódigo En Ensamblador Para El Estudio dE los modos
" " " " " " " " " " "
dE dirEccionamiEnto.
" " " " " " " " " " " " " " "
" " de
Antes " realizar la simulación
" " del
" programa,
" " indique
" " con qué instrucciones se
dere necesario, para hacer un seguimiento y ver la utilidad de las ventanas que
se indican.
6. Una vez se haya ejecutado el salto a la rutina Suma siga ejecutando paso a
paso e indique:
• Qué hace dicha rutina.
• Razone por qué no se ha utilizado aquí la instrucción PUSH {lr} ni
posteriormente POP {pc}.
en qué registro?
9. Cuando se vuelve al programa principal ¿qué función realizan las dos ins-
trucciones siguientes y qué registros o posiciones de memoria se modifi-
can? ¿con qué valores?
• LDR r1,=dato
• STR r0,[r1,#0x00]
" " " " " " " " " " " " "
"
"
" " " " " " " " " " " " " " " "
" "
2.2. actividad 2.2. Programación modular y pila ii (Presencial)
"
En la Actividad 2.2 se sigue trabajando con el mismo objetivo de la Actividad
2.1, y se hace uso de las herramientas que proporciona Keil µVision®4 para el
seguimiento
" de la pila, así" como
" de ciertas variables" en memoria "y "registros
" "del
microprocesador LPC1768. En este caso la funcionalidad se programa en C y se
analiza" la" correspondencia
" " " entre" C y ensamblador.
" " " " " " " " " " "
" " " " " " " " " " " "
" " " " " " " " " "
2.2.1. Utilización" de" Breakpoints
" " " " " " " " " " "
Los breakpoints
" o puntos
" " de ruptura son " marcas que podemos colocar delante
de las líneas de código para ayudar a depurarlo durante la simulación. Evitan, por
ejemplo," tener que ejecutar
" " paso " a" paso una " porción
" de "código
" que lleva " mucho" " "
" " " " " " "
tiempo y sabemos a priori que funciona correctamente. De este modo, permiten " " " " "
ejecutar "el "programa
" y" que éste" quede " detenido " "cuando " se encuentre
" una" "línea que " " "
" " " " " " "
se ha marcado en el simulador con un breakpoint. A partir de ahí, se puede seguir " " " " "
"
ejecutando paso a" paso" para" depurar " " cuidadosamente
" " " el" código que" sigue" o" seguir " "
" " " " " " "
ejecutando el programa hasta que se encuentre el siguiente breakpoint, etc. " " " " "
" " " " " " " " " " ""
Para "insertar un" breakpoint,
" sitúese
ı " en una línea
" "de código
" y hacer
" "click en " " "
.""""
" " " " " " " " " " " " "
Existen muchas otras posibilidades de utilizar breakpoints a través de la ven-
tana" de comandos,
" " "
por ejemplo, condicionalmente. " recomienda
Se " " consultar" el " " "
" " " " "" ®
comando breakset en la ayuda del entorno Keil µVision 4, pestaña ‘índice’.
" " " "
2.2.2." Programa" en C
" " " " " " " " " " " "
" " " " " " " " " " ""
El Programa 2.2 Pila_en_c.c que se encuentra disponible en el Aula Virtual y
"
cuyo código se muestra a continuación, será "utilizado en el desarrollo de esta acti-
" " " " "
vidad.
" " " " " " "
"
" "
"
"" " " "
"" "
" " " " " " " " " " " " " "
" " " " " " " " " " " " "
" " " " ""
Función Multiplica
Programa principal
MOVS r2,#0x0A
MOVS r1,#0x08
MOVS r0,#0x05
BL.W Multiplica
LDR r1,=dato
while STR r0,[r1,#0x00]
B while
" "
Compárelo con el código ensamblador del fichero Pila_en_asm.s, incluyendo
en la Tabla 2.2 el código del fichero Pila_en_asm.s que corresponde con el códi-
go obtenido del desensamblado del fichero en C que se muestra.
26 Prácticas de laboratorio de sistemas electrónicos digitales
Función Multiplica
0x000001AA E92D41F0 PUSH {r4-r8,lr}
0x000001AE 4605 MOV r5,r0
0x000001B0 460E MOV r6,r1
0x000001B2 4614 MOV r4,r2
0x000001B4 4631 MOV r1,r6
0x000001B6 4628 MOV r0,r5
0x000001B8 F7FFFFF4 BL.W Suma
(0x000001A4)
0x000001BC 4607 MOV r7,r0
0x000001BE FB04F807 MUL r8,r4,r7
0x000001C2 4640 MOV r0,r8
0x000001C4 E8BD81F0 POP {r4-r8,pc}
Programa principal
0x000001C8 220A MOVS r2,#0x0A
0x000001CA 2108 MOVS r1,#0x08
0x000001CC 2005 MOVS r0,#0x05
0x000001CE F7FFFFEC BL.W Multiplica
(0x000001AA)
0x000001D2 4902 LDR r1,[pc,#8]
0x000001D4 6008 STR
r0,[r1,#0x00]
0x000001D6 BF00 NOP
0x000001D8 E7FE B 0x000001D8
4. Se procederá ahora a ejecutar el programa paso a paso. Para ello, una vez
iniciado el simulador haga clic sobre el código en ensamblador de la ven-
tana disassembly. De esta manera al ejecutar paso a paso con F11 (step
one line) ejecutaremos cada una de las instrucciones en ensamblador. De
no hacerlo así, cada paso será cada una de las sentencias de C. Ejecute
paso a paso hasta que entre en la función Multiplica y deténgase
justo antes de la llamada a la función Suma, sin llegar a ejecutarla. En la
ventana de desensamblado la flecha amarilla debe quedar en la línea mos-
trada en la Figura 2.2.
" " " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " "" " " " " "
" " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " " "
28 " " " " " " " " " " " "
Prácticas de laboratorio de sistemas electrónicos digitales "
" "
" " " " " " " " "
"
Figura "2.2." VEntana
" " dE dEsEnsamblado
" .
"
" " " " " " " " " " " " " " " "
b. Compruebe
" " cuál
" "es" el "nuevo valor" del
" registro
" SP y, en caso de haberse
modificado, indique el contenido que se ha almacenado en pila.
" " " " " " " " " " " " " " "
"
5. Localice " "
e indique " "qué
en " posiciones
" "
de memoria o registros se almace-
"
nan las variables temporales temp_suma y temp de la función Mul-
tiplica.
" " " " " " " " " " " " " " " " "
" " " " " " "
" 6. Continúe con la ejecución paso a paso hasta entrar en la función Suma.
Detenga la ejecución según se indica en la Figura 2.3.
"
Figura 2.3.
" " VEntana
" " dE dEsEnsamblado
" " " al
" inicio
" dE la Función SUmA.
" "
" " " " " " " " " " " " " " " "
b. Compruebe el valor del SP y en caso de haberse modificado indique qué
" " "
se ha almacenado en pila.
"
" " " " " " " " " " " " " " " " "
" " 7. "Continúe ejecutando paso" a paso
" " para" salir de" la" función Suma
" " y detenga
" "
" " la ejecución antes
" " de
" la sentencia
" " temp=c*temp_suma.
" " " " Localice
" " en qué
" "
registros" o posiciones
"
de
" "
memoria se" encuentran
" "
los operandos de dicha
"
sentencia y dónde se almacena el resultado. Copie imágenes del simulador
" que evidencien la localización de esos datos.
" " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
8.
" Tras ejecutarse la sentencia return temp de la función Multiplica
indique qué registros y direcciones de memoria se modifican. Explique
" cómo se utiliza la pila por parte de esta instrucción.
Práctica 3
introducción
(Æ̌ø̇"ぬ
" な ""6̇øª̋ß̇"¸̋"¸̋œ̇øøæØØæ".2%なばはぱ
" " " /ÆºÆ &-に "
"
"
(Æ̌ø̇"ぬ
" な ""6̇øª̋ß̇"¸̋"¸̋œ̇øøæØØæ".2%なばはぱ
" "
Práctica 3 - Puertos de e/s y tarjeta de desarrollo
" /ÆºÆ &-に " 33
"
"
Figura (Æ̌ø̇"ぬ
3.2. c" onexión
に ""%æº̋®Æde " led
" los " " la lPc1768-M
s "y""ıØœ̇¸æø̋œ"̋º"Ø̇".2%なばはぱ
º"¸̋"Øæœ".'&œ"
" Pulsadores" en ini" -dK2.
/ÆºÆ &-に
""#̊ßƩƸ̇¸"ぬ" に な ""6̇øª̋ß̇"¸̋"¸̋œ̇øøæØØæ
" " ""̊̇ø̌̇"" ""¸̋ıø̇̊Æ º"¸̋"ıøæ̌ø̇Œ̇œ"
" " " 0æ"2ø̋œ̋º̊Æ̇Ø
" "
Actividad
2̇ø̇"Ø̇"ø̋̇ØÆ
" " 3.2.1: Tarjeta de desarrollo, carga y depuración
̇̊Æ º"¸̋"̋œß̇"̇̊ßƩƸ̇¸"¸̋̈̋"œ̋̌Æø"Øæœ"œÆ̌Æ̋ºß̋œ"ı̇œæœ
" " " " " " " " de " programas
(No Presencial)
な " .̋̇"̋Ø"#º̋®æ"8+
" " " "")Þ̇"¸̋"̊æº̨Æ̌ø̇̊Æ
" " º"¸̋Ø"̇¸̇ıß̇¸æø",
" " " .ƺŁ"ı̇ø̇"̊̇ø̌̇"
" " " ""¸̋ıø̇̊Æ º "
" Para
" la realización" de " esta actividad
" " debe seguir
" " los siguientes pasos:
に " #º̇ØÆ̊̋"Ø̇"̨º̊Ææº̇ØƸ̇¸"¸̋Ø"ıøæ̌ø̇Œ̇"¸̋Ø"#º̋®æ"8+"&̋ıø̇̊Ææº,.+0-" " 2øæ̌ø̇Œ̇"8+" な"
ぬ " /æ¸Æ̨Æł̋"̋Ø"ıøæ̌ø̇Œ̇"&̋ıø̇̊Ææº,.+0-
1." Lea ̊"ı̇ø̇"ł̋"̊̇º¸æ"̋œßÎ"ıØœ̇¸æ"̋Ø"ıØœ̇¸æø"-';に"
" el Anexo" VI. Guía de configuración
" " del" adaptador
" J-Link
" para" carga
" y " "
ıøæ¸ ̊̇"ł̋"̋Ø".'&"&な
" depuración.
" " " ""̊æº̋̊ß̇¸æ"̇Ø"ıƺ"ぬ
" " " にの"̊̇Œ̈Æ̋"¸̋"̋œß̇¸æ"̊̇¸̇"ばのど"Œœ
" " " " " " " ""ł̋"̊̇º¸æ"
" "
̋Ø"ıØœ̇¸æø"-';に"ºæ"̋œßÎ"ıØœ̇¸æ"̋Ø".'&"に"̊æº̋̊ß̇¸æ"̇Ø"ıƺ"ぬ
" 2. "Analice" la" funcionalidad
" " "del programa
" " " " VIには"̊̇Œ̈Æ̋"¸̋"̋œß̇¸æ"̊̇¸̇"にのど"
del "Anexo " " "
depuracionjlinK " " "
Œœ ""+º̊Ø ̇"̋Ø"̊" ¸Æ̌æ"̨̋ºß̋"ø̋̇ØÆ
"(Programa "VI.1) " ̇¸æ"̊æŒæ"̋©Æ¸̋º̊Æ̇
" " "
" 3. Modifique el programa depuracionjlinK.c para que cuando esté pulsado
el pulsador KEY2 produzca que el LED D1, conectado al pin 3.25 cambie
" de estado cada 750 " ms, y que cuando el pulsador KEY2 no esté pulsado el
LED 2 conectado al pin 3.26 cambie de estado cada 250 ms. incluya el
código fuente realizado como evidencia.
#̊ßƩƸ̇¸"ぬ" に に ""6̇øª̋ß̇"¸̋"¸̋œ̇øøæØØæ
" " ""̊̇ø̌̇"" ""¸̋ıø̇̊Æ º"¸̋"ıøæ̌ø̇Œ̇œ"
" " " ++ " 2ø̋œ̋º̊Æ̇Ø "
Keil µVision®4. Se trata de continuar con la tarea desarrollada en la actividad 3.2.1
'º"̋œß̇"ı̇øß̋"¸̋"Ø̇"ıø³̊ßÆ̊̇"œ̋"©̇º"̇"̨̇Æ̇º
" " y "desarrollar,
" " " " presencial,
de forma " " ̇ø"Øæœ"̊æºæ̊ÆŒÆ̋ºßæœ"̇¸łÆøƸæœ"̋º"Ø̇"#̊ßƩƸ̇¸"ぬ
un" programa
" "
en C de configuración " y "manejo
" de " に な "
̊æºßƺ̇º¸æ" " ̊æº" " ̋Ø"
" Œ̇º̋ªæ" " ¸̋"" Ø̇œ"
" ̶̋øø̇ŒÆ̋ºß̇œ" " ł̋"" ıøæıæø̊Ææº̇" "
puertos, así como descargarlo en la tarjeta utilizando el adaptador J-Link.-̋ÆØ"
" ヅ8ÆœÆæº kね " 5̋"" ßø̇ß̇"" ¸̋""
̊æºßƺ̇ø"" ̊æº"" Ø̇"" ß̇ø̋̇"" ¸̋œ̇øøæØØ̇¸̇"" ̋º"" Ø̇"" ̇̊ßƩƸ̇¸"" ぬ に な"" " ¸̋œ̇øøæØØ̇ø " ¸̋"̨æøŒ̇"
" " ıø̋œ̋º̊Æ̇Ø " º""
" " " "
ıøæ̌ø̇Œ̇"̋º"%"¸̋"̊æº̨Æ̌ø̇̊Æ º"" ""Œ̇º̋ªæ"¸̋"ı̋øßæœ
" " ""̇œÞ"̊æŒæ"¸̋œ̊̇ø̌̇øØæ"̋º"Ø̇"ß̇øª̋ß̇"ßÆØÆ
" " " " " " ̇º¸æ""
"
̋Ø"̇¸̇ıß̇¸æø"," .ƺŁel" programa modificado en la actividad no presencial:
sobre
" " "
• Visualice " " del
5æ̈ø̋"̋Ø"ıøæ̌ø̇Œ̇"Œæ¸Æ̨Æ̊̇¸æ"̋º"Ø̇"̇̊ßƩƸ̇¸"ºæ"ıø̋œ̋º̊Æ̇Ø
el estado " pulsador " Key2 " en tiempo" real. Para ello se debe
"
&̋œ̇øøæØØæ"¸̋"º"ıøæ̌ø̇Œ̇"ı̇ø̇"̊æº̨Æ̌ø̇̊Æ
"desarrollo
" " " "
de un programa º"" ""Œ̇º̋ªæ"¸̋"Øæœ"ı̋øßæœ"
para configuración y" manejo
" " de los puertos
"
'Ø"" ıøæ̌ø̇Œ̇"̇"¸̋œ̇øøæØØ̇ø"¸̋̈̋ø³"̌̋º̋ø̇ø"º̇"œ̋ó̇Ø"¸Æ̌Æß̇Ø"¸̋"
" "El programa "a desarrollar
" " generar
deberá " "una señal " な* ""̊æº"º"̊Æ̊Øæ"¸̋"ßø̇̈̇ªæ"
" digital " " con un
de 1Hz " ciclo
" " ł̋""
¸̋ı̋º¸̋ø³"" ¸̋" ¸æœ"" ̋ºßø̇¸̇œ
de "trabajo " &な"" &ど "de
que dependerá 'Ø""dos
̋œł̋Œ̇" " ¸̋""D1
entradas, Øæœ""D0.
ß̋øŒÆº̇Ø̋œ" " ̋ŒıØ̋̇¸æœ"
El esquema " œ̋"" Œ̋œßø̇"" ̋º"" Ø̇""
de los terminales
(Æ̌ø̇"ぬ" ぬ "" empleados se muestra en la Figura 3.3.
ヰ"
7ヰ
7 ヰくヰ"
vヰくヰ
v vンくヲヵ"
""vンくヲヵ ;7"7ヱ"
]];7"7ヱ
7ヱ"
7ヱ ヰくヱ"
vヰくヱ
v
v1ヱΑヶΒ"
]]v1ヱΑヶΒ
} ヲヲ""
ヲくヱヲ"
vヲくヱヲ
v
ふふ[; ヲぶぶ"
[; ヲ
"
Figura 3.3." tぬerMinales
(Æ̌ø̇"ぬ "eMPleados" Para
" "el PrograMa
" " a desarrollar
""6̋øŒÆº̇Ø̋œ"̋ŒıØ̋̇¸æœ"ı̇ø̇"̋Ø"ıøæ̌ø̇Œ̇"̇"¸̋œ̇øøæØØ̇ø " .
2̇ø̇"̋œß̇̈Ø̋̊̋ø"̋Ø"©̇Øæø"¸̋"Ø̇œ"̋ºßø̇¸̇œ"&な"
" " " establecer
Para " " "el valor de" las" "entradas
"&ど"º̋̊̋œÆß̇ø³"̇Ø"Œ̋ºæœ"に"̊̇̈Ø̋œ"¸̋"̊æº̋®Æ
" " " necesitará
D1 y D0 " " al menos
" " 2 cables
º"̶̋Œ̈ø̇
"
̶̋Œ̈ø̇ ""æ"̈Æ̋º"œÆ"¸Æœıæº̋"¸̋"̊̇̈Ø̋œ"Œ̶̇̊æ
" de conexión
" " " " " ̶̋Œ̈ø̇"ßÆØÆ̊̋"º̇"ıØ̇̊̇"̈æ̇ø¸"ı̇ø̇"̊æº̋̊ß̇øØæœ
" " " " "
hembra-hembra, o bien si dispone de cables macho-hembra utilice " ""©̋ø""
(Æ̌ø̇"ぬ
" ね ""'Ø"ºÆ©̋Ø"̇Øßæ"Øæ"æ̈ß̋º¸ø³"¸̋"̊̇ØłÆ̋ø"ıƺ"¸̋"̊æº̋̊ßæø"Ƹ̋ºßÆ̨Æ̊̇¸æ"̊æº"ぬ8ぬ
" placa
una " board
" " para conectarlos,
" " " " 3.4.
ver Figura " El nivel "alto lo obtendrá
" de" cual-" ""̋Ø"ºÆ©̋Ø"
" "
̈̇ªæ"¸̋"Øæœ"ıƺ̋œ"Ƹ̋ºßÆ̨Æ̊̇¸æœ"̊æº")0&
" " " quier "pin de conector " identificado
" "" con 3V3, y el nivel bajo de los pines identifi-
cados con GND.
(Æ̌ø̇"ぬ
" ぬ ""6̋øŒÆº̇Ø̋œ"̋ŒıØ̋̇¸æœ"ı̇ø̇"̋Ø"ıøæ̌ø̇Œ̇"̇"¸̋œ̇øøæØØ̇ø
" " " " " " "
2̇ø̇"̋œß̇̈Ø̋̊̋ø"̋Ø"©̇Øæø"¸̋"Ø̇œ"̋ºßø̇¸̇œ"&な"
" " " " " " " " ""&ど"º̋̊̋œÆß̇ø³"̇Ø"Œ̋ºæœ"に"̊̇̈Ø̋œ"¸̋"̊æº̋®Æ
" " " " " " " º"̶̋Œ̈ø̇
"
̶̋Œ̈ø̇ ""æ"̈Æ̋º"œÆ"¸Æœıæº̋"¸̋"̊̇̈Ø̋œ"Œ̶̇̊æ
" " " " " " ̶̋Œ̈ø̇"ßÆØÆ̊̋"º̇"ıØ̇̊̇"̈æ̇ø¸"ı̇ø̇"̊æº̋̊ß̇øØæœ
" " " " " " ""©̋ø""
(Æ̌ø̇"ぬ
" ね ""'Ø"ºÆ©̋Ø"̇Øßæ"Øæ"æ̈ß̋º¸ø³"¸̋"̊̇ØłÆ̋ø"ıƺ"¸̋"̊æº̋̊ßæø"Ƹ̋ºßÆ̨Æ̊̇¸æ"̊æº"ぬ8ぬ
" " " " " " " " " " " " " ""̋Ø"ºÆ©̋Ø"
" "
Práctica 3 - Puertos de e/s y tarjeta de desarrollo 35
̈̇ªæ"¸̋"Øæœ"ıƺ̋œ"Ƹ̋ºßÆ̨Æ̊̇¸æœ"̊æº")0&
" " " " " " ""
"
Figura 3.4." cねables
(Æ̌ø̇"ぬ de
" conexión
""%̇̈Ø̋œ"¸̋"̊æº̋®Æ
" " heMbra
º"̶̋Œ̈ø̇ -heMbra
̶̋Œ̈ø̇" y Macho
" ""Œ̶̇̊æ -heMbra
̶̋Œ̈ø̇ " .
"
El modo de funcionamiento será el siguiente:
introducción
%kpenwfg">NRE39zz0J@"
"
ejct"c?3."d?3."e?3="
""
11Hwpekqpgu"swg"kpkekcnk|cp"ncu"kpvgttwrekqpgu"
xqkf"kpkekqRKPUGN*+}"
"11Eqphkiwtcek„p" fg" nqu" rkpgu" R4032" c" R4034." eqoq" gpvtcfcu" fg"
kpvgttwrek„p"
"NREaRKPEQP/@RKPUGN6"~?"3">>"*32,4+=""""
"NREaRKPEQP/@RKPUGN6"~?"3">>"*33,4+=""""
"NREaRKPEQP/@RKPUGN6"~?"3">>"*34,4+=""""
11Eqphkiwtcek„p"fg"nqu"rkpgu"R402"c"R404."eqoq"IRKQ"
"NREaRKPEQP/@RKPUGN6"(?"\"*5">>"*2,4++="""
"NREaRKPEQP/@RKPUGN6"(?"\"*5">>"*2,4++="""
"NREaRKPEQP/@RKPUGN6"(?"\"*5">>"*2,4++="""
"
"
xqkf"kpkekqKTSu*+}"
11Cukipcek„p"fg"rtkqtkfcfgu"
""PXKEaUgvRtkqtkv{Itqwrkpi*6+="
""PXKEaUgvRtkqtkv{*GKPV2aKTSp."2z6+="
""PXKEaUgvRtkqtkv{*GKPV3aKTSp."2z8+="
""PXKEaUgvRtkqtkv{*GKPV4aKTSp."2z4+="
"
11Jcdknkvcek„p"fg"ncu"kpvgttwrekqpgu"
""PXKEaGpcdngKTS*GKPV2aKTSp+="
""PXKEaGpcdngKTS*GKPV3aKTSp+="
""PXKEaGpcdngKTS*GKPV4aKTSp+="
"
"
11KUT"fg"ncu"kpvgttwrekqpgu"
xqkf"GKPV2aKTSJcpfngt*+}"
""NREaUE/@GZVKPV"~?"*3+="""11"Dqttct"gn"hnci"fg"nc"GKPV2"//@"GZVKPV02"
""NREaIRKQ4/@HKQUGV?2z22222223="""11"Cevkxct"gn"rkp"R402"
""yjkng*c+"="
""NREaIRKQ5/@HKQENT?2z22222223="""11"Fgucevkxct"gn"rkp"R402"
"
"
" "
"" " " " " """ " " " " " "
"" """ " " " " "
"" "
"" """ " " " " "
"
"" "
"
"
" " " "
" "
"" " " """
" " " " " " " "
"" """ " " " " "
Práctica
"" 4 - controlador
" " de interruPciones (nVic) 39
"" """ " " " " "
"
"
xqkf"GKPV3aKTSJcpfngt*+}"
""NREaUE/@GZVKPV"~?"*3">>"3+="""11"Dqttct"gn"hnci"fg"GKPV3"/@GZVKPV03"
""NREaIRKQ4/@HKQUGV?2z22222224="""11"Cevkxct"gn"rkp"R403"
""yjkng*d+="
""NREaIRKQ4/@HKQENT?2z22222224="""11"Fgucevkxct"gn"rkp"R403"
"
"
xqkf"GKPV4aKTSJcpfngt*+}"
""NREaUE/@GZVKPV"~?"*3">>"4+="""11"Dqttct"gn"hnci"fg"GKPV4"/@"GZVKPV04"
""NREaIRKQ4/@HKQUGV?2z22222226="""11"Cevkxct"gn"rkp"R404"
""yjkng*e+="
""NREaIRKQ4/@HKQENT?2z22222226="""11"Cevkxct"gn"rkp"R404"
"
"
11Rtqitcoc"rtkpekrcn"
ockp"*+""
}"
""kpkekqRKPUGN*+="
""kpkekqKTSu*+="
""yjkng*3+="
"
"
Programa 4.1.
" "código " main.c.
" "del ejemPlo
"
"
Figura 4.1. Ventana del nVic.
" " " " "
"
" " " " " " " " " " " " " "
" " " " "
" Para" entender
" " el funcionamiento
" " del NVIC" " durante " " la habilitación
" "
y asigna- " " "
" " " ción de
" "" prioridades,
" " " se recomienda
" "" " que antes
" " " " de solicitar la
" " " " " interrupción se
" "" " " " pare " " ""
" la" ejecución
" " " "continua;
" " tras" " solicitarla
"" se" vuelva
"" " " a lanzar
" " " para
" "que" el programa
" " " pro-" " "
" " cese la
" solicitud,
" " "y a continuación
" la vuelva
" " a parar para
" " " poder comprobar" " su efec-
" " " "
" to, como" se" muestra " en la" secuencia
" de
" la " Figura
" 4.2. " " " " "
Dado que al ejecutar el código se están configurando los pines P2.10 a P2.12
como
" " entradas" de" interrupción
" externa,
" ver Figura
" 4.3, otra forma de simular las
interrupciones es solicitarlas desde los propios pines del puerto.
" " " " " " "
" "
Figura 4.3. Ventana
" " " "conFiguración
" " " y" Visualización
" "" " " de" estado
"" " " de" gPio2.
"
" " " " " " " " " " " " "
" " " " " " " " " " " " " "
" " " " " "" " " " " " " " " "
Figura 4.4.
" " V"entana de conFiguración y Visualización del estado
" "" " " " " " " " " " " "
de las interruPciones externas.
" " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " "
42 " electrónicos digitales
Prácticas de laboratorio de sistemas
" " " " " " " " " " " " "
" " En" el menú Peripherals/Pin
" " connect
" block,
" cuando
" " desde "el "programa se" " "
" configuran
" " los " pines," se "puede ver" cómo "estos
" se cambian
" desde
" su
" anterior" fun- " "
ción a "entradas
" externas
" " de interrupción, ver Figura 4.5.
"
Figura 4.5. Ventana
" " de conFiguración
" " y Visualización
" " " " del estado
" " " de " Pines.
los
" "
A partir del programa de ejemplo conteste " "
a las siguientes "
preguntas: " " "
3. ¿Cuál es el valor inicial del stack pointer tras un Reset? Muestre evidencias
utilizando la tabla de vectores.
5. Indique el valor del registro AIRC (en la ventana de NVIC), antes y después de
ejecutar la función inicioirQs(). Muestre evidencias y justifique la respuesta.
ね" %³Ø̋œ"œæº"Ø̇œ"¸Æø̋̊̊Ææº̋œ"¸̋"ƺÆ̊Ææ"¸̋"ockp*+"
" " " " " " " " ""¸̋"Ø̇"øßƺ̇"¸̋"̇ß̋º̊Æ
" " " " º"̇"Ø̇"ƺß̋øøı̊Æ
" " " º""
'+06に ""/̋œßø̋"̋©Æ¸̋º̊Æ̇œ"ßÆØÆ
" " " " " "
̇º¸æ"Ø̇"ß̇̈Ø̇"¸̋"©̋̊ßæø̋œ" " ""Ø̇"Œ̋ŒæøÆ̇"¸̋"ıøæ̌ø̇Œ̇
" " " "
"
の " +º¸Æł̋"" ̋Ø"" ©̇Øæø"" ¸̋Ø"" ø̋̌Æœßøæ"" #+4%"" ̋º"" Ø̇"" ©̋ºß̇º̇"" ¸̋"" 08+% " ̇ºß̋œ"" " ¸̋œıÎœ"" ¸̋"" ̋ª̋̊ß̇ø"" Ø̇""
Práctica 4 - controlador de interruPciones (nVic) 43
̨º̊Æ º"ƺÆ̊Ææ+435
" ""/̋œßø̋"̋©Æ¸̋º̊Æ̇œ"
" " ""ªœßÆ̨Æł̋"Ø̇"ø̋œı̋œß̇
" " "
" 6. Rellene la Tabla 4.1, suponiendo la ocurrencia de los eventos en el orden
" "indicado.
" な Muestre
は " 4̋ØØ̋º̋"Ø̇"6̇̈Ø̇"ね evidencias de simulación.
" " " Para generar
" " "interrupciones
""œıæºÆ̋º¸æ"Ø̇"æ̊øø̋º̊Æ̇"¸̋"Øæœ"̋©̋ºßæœ"̋º"̋Ø"æø¸̋º"ƺ¸Æ̊̇¸æ
" " " y""/̋œßø̋""
modificar
̋©Æ¸̋º̊Æ̇œ"¸̋"œÆŒØ̇̊Æ
" " las variables a, b y c abra una
º ""2̇ø̇"̌̋º̋ø̇ø"ƺß̋øøı̊Ææº̋œ"
" " ventana Watch (Ver Figura
" ""Œæ¸Æ̨Æ̊̇ø"Ø̇œ"©̇øÆ̇̈Ø̋œ"
" " 4.6) y " " ̊""̇̈ø̇""
" ̇ ""̈
" coloque
"
º̇"©̋ºß̇º̇"9̇ß̶̊" en ella las
" 8̋ø"(Æ̌ø̇"ね
" variables y el puerto, y modifique
" は " ""̊æØæł̋"̋º"̋ØØ̇"Ø̇œ"©̇øÆ̇̈Ø̋œ"
" " " " los valores
" ""̋Ø"ı̋øßæ
" desde la
" ""Œæ¸Æ̨Æł̋"Øæœ" " "
" misma " " para conseguir que las" ISR " finalicen.
©̇Øæø̋œ"¸̋œ¸̋"Ø̇"ŒÆœŒ̇"ı̇ø̇"̊溜̋̌Æø"ł̋"Ø̇œ"+54"̨ƺ̇ØÆ̊̋º
" " " " "
"
Figura 4.6.
(Æ̌ø̇"ね
Ventana" Watch
" は ""8̋ºß̇º̇"9̇ß̶̊ " .
" な ""'œß̇¸æ"¸̋"Ø̇œ"ƺß̋øøı̊Ææº̋œ"
6̇̈Ø̇"ね " " " "
Tabla 4.1. Estado de las interrupciones
" Estado
'œß̇¸æ"" ® ""2(x,
""# P," A)
Orden Evento EINT0 EINT1 EINT2
1ø¸̋º '©̋ºßæ"" '+06ど '+06な '+06に
1 Solicita atención EINT1
2 な"" Solicita atención
" EINT0
5æØÆ̊Æß̇"̇ß̋º̊Æ º"'+06な
" " " "
3 Solicita atención EINT2
に"" "
5æØÆ̊Æß̇"̇ß̋º̊Æ "
º"'+06ど " " "
4 c=0
5 ぬ"" a=0
"
5æØÆ̊Æß̇"̇ß̋º̊Æ "
º"'+06に " " "
6 b=0
ね"" ̊サど"" " " "
x à(ha terminado o no ha solicitado); Pàpending; aà active)
の"" ̇サど"" " " "
7. Cambieは""el grupo de prioridad
̈サど"" " la Tabla
a 5 y rellene " 4.2, suponiendo
" la
ocurrencia de los eventos en el orden indicado. Muestre evidencias de
®"å
" ̶̇"ß̋øŒÆº̇¸æ"æ"ºæ"̶̇"œæØÆ̊Æß̇¸æ
" " " " " ""2åı̋º¸Æº̌ ""#å"#̊ßÆ©̋
" "
simulación.
&̋ı̇øß̇Œ̋ºßæ"¸̋"'Ø̋̊ßø
" " ºÆ̊̇ ""7ºÆ©̋øœÆ¸̇¸"¸̋"#Ø̊̇س"
" " " にぬ""
44 Prácticas de laboratorio de sistemas electrónicos digitales
• Habilitar los pines P0.4, P0.6 y P0.8 como salidas configuradas sin
resistencia de Pull-Up ni Pull-down y sin Open-Drain. Conectar las sali-
das a los LEDs a través de una resistencia de valor entre 470 Ω y 1K Ω.
• Habilitar los pines P0.5, P0.7 y P0.9 como entradas configuradas con
resistencia de Pull-Up, de forma que cuando estén al aire se interprete
un nivel alto.
• Ejecutar línea a línea el código de configuración comprobando cómo
van quedando los diferentes pines de los puertos y sistema de interrup-
ciones.
Práctica 4 - controlador de interruPciones (nVic) 45
introducción
1. Lea las páginas 515 a 519; capítulo 23 del “UM10360 LPC17xx User
manual Rev 4.1“. Analice la utilidad de cada uno de los 4 registros de
SysTick (del registro STCALIB tenga en cuenta solamente los bits 23:0
TENMS) y analice también la funcionalidad de cada bit o campo de bits de
dichos registros.
2. Realice los ejercicios propuestos en este apartado 5.1 a partir del programa
ejemplo suministrado.
"
" " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
48 " " " " " " PrácTicaS de laboraTorio de SiSTemaS elecTrónicoS digiTaleS
"
" " " " " " " " " " " " " "
5.1.1. Programa "
de ejemplo
" " " "
El Programa 5.1 SYSTicK_interrupt.c disponible en el Aula Virtual de la asig-
" " " " " " " " " " " " " "
natura
" " será utilizado
" " " en el desarrollo
"" de esta actividad.
1,/////////////////////////////////////////////////////////////////////////"
","Pcog<""""U[UVKEakpvgttwrv0e"
",///////////////////////////////////////////////////////////////////////,1"
"
%kpenwfg"$NRE39zz0J$" """"
wkpv54av"rwnucfqt="
wkpv54av"U{uvgoHtgswgpe{?322222222="
"
xqncvkng"wkpv54av"ewgpvc=""" 11"Eqpvcfqt"fg"xgegu"fg"z"ou""
"
xqkf"U{uVkemaJcpfngt"*xqkf+" 11"Twvkpc"*KUT+"fg"cvgpek„p000"
"""""""""""""""""""""""""""""11000"c"nc"gzegrek„p"37"/fgn"U{uVkem/"
}"
""ewgpvc"--=" """""""""""11"Kpetgogpvct"eqpvcfqtgu"ecfc"32ou""{"ecfc"3u"
"
"
kpv"ockp"*xqkf+"
""}" " " " " " " "
""NRE IRKQ5/@HKQFKT"~?"*3>>47+=" 11"R5047"fghkpkfq"eqoq"ucnkfc"
""NREaIRKQ5/@HKQFKT"~?"*3>>48+="
"" N R E I R K Q 5 / @ H K Q F K T" ~ ? "* 3 > > 4 8 + = " 1
11"R5048"fghkpkfq"eqoq"ucnkfc"""
1"R5048"fghkpkfq"eqoq"ucnkfc"""
""NREaIRKQ4/@HKQFKT"(?"\*3>>34+="""
""NREaIRKQ4" /@" HKQFKT"(? " "\*3>>34+" =""" " 1
11"R4034"fghkpkfq"eqoq"gpvtcfc"""
1"""R4034"fghkpkfq"eqoq"gpvtcfc""" "
"""
" "
""11"U{uvgoKpkv"*+=""""""""""""""""11"Kpkekcnk|ct"tgnqlgu"$enqemu$"
""11"U{uvgoKpkv"*+=""""""""""""""""11"Kpkekcnk|ct"tgnqlgu"$enqemu$"
" "
""U{uVkemaEqphki"*U{uvgoHtgswgpe{1322+=""""11"Eqphkiwtct""U{uVkem"
""U{uVkemaEqphki"*U{uvgoHtgswgpe{1322+=""""11"Eqphkiwtct""U{uVkem"
"
""yjkng"*3+"}"
""yjkng"*3+"}"
""""rwnucfqt?**NREaIRKQ4/@HKQRKP"("*3>>34++@@34+="""
""""rwnucfqt?**NREaIRKQ4/@HKQRKP"("*3>>34++@@34+="""
""""kh"*rwnucfqt??2+}"""""""""""""""11"rwnucfqt"rwnucfqA""
"""" kh"*rwnucfqt??2+}"""""""""""""""11"rwnucfqt"rwnucfqA""
""""
""""""kh"*ewgpvc??5+NREaIRKQ5/@HKQRKP"~?"*3>>47+=""11"gpekgpfq"NGF"
"""""" kh"*ewgpvc??5+NRE IRKQ5/@HKQRKP"~?"*3>>47+=""11"gpekgpfq"NGF"
"""""""kh"*ewgpvc@?5,4+}"
""""""" kh"*ewgpvc@?5,4+}"
" """"NREaIRKQ5/@HKQRKP"""(?"\*3>>47+="""""""""11"crciq"NGF"
"""" NREaIRKQ5/@HKQRKP"""(?"\*3>>47+="""""""""11"crciq"NGF"
" """"ewgpvc?2="
"""" ewgpvc?2="
"""""""""" "
""""""" "
""""gnug}"
"""" gnug}"
"""""""kh"*ewgpvc??8+"NREaIRKQ5/@HKQRKP"(?"\*3>>48+="11"gpekgpfq"NGF"
""""""" kh"*ewgpvc??8+"NREaIRKQ5/@HKQRKP"(?"\*3>>48+="11"gpekgpfq"NGF"
"""""""kh"*ewgpvc@?8,4+}"
""""""" k h" * e w g p v c @ ? 8 , 4 + } "
""""""""""NREaIRKQ5/@HKQRKP"~?"*3>>48+=""""""""""""""11"crciq"NGF""
"""""""""" NRE IRKQ5/@HKQRKP"~?"*3>>48+=""""""""""""""11"crciq"NGF""
""""ewgpvc?2="
""""" """" ewgpvc?2="
"""""""""" "
"""" ""
"" "
"
Programa 5.1. código
" " del " SYSTICK_InTerrupT
" Programa
" " .C
" " " " " " " " " " " " " " " " " "
" " " " " " " " " " " " "
" "
" " " " " " " " " " " " " " " "
PrácTica 5 - funcionamienTo Y manejo del SYSTem Timer 49
• SysTick->RELOAD =
• SysTick->VAL (SysTick-CURR)=
• SysTick->CTRL =
• SysTick->CALIB =
50 Prácticas de laboratorio de sistemas electrónicos digitales
4. Ponga puntos de ruptura en todas las líneas de main() que llamen a una
función y en la línea que en su programa indique el cumplimiento de la
PrácTica 5 - funcionamienTo Y manejo del SYSTem Timer 51
introducción
1. Lea las páginas 501a 511 del “UM10360 - LPC17xx User manual
Rev4.1”. Excluya de la lectura todo lo referente a la aplicación de los
Timers al DMA (acceso directo a memoria), así como el modo captura
(capture mode) ya que no son necesarios para esta práctica. Analice cui-
dadosamente la utilidad que tienen los registros TCR, TC, PR, PC,
MR0/1/2/3 y MCR.
2. Realice los ejercicios propuestos en esta Actividad 6.1, a partir del progra-
ma ejemplo suministrado, al tiempo que vuelve a leer en el manual la uti-
lidad de los registros implicados en este ejemplo.
54 Prácticas de laboratorio de sistemas electrónicos digitales
11,/////////////////////////////////////////////////////////////////////////"
,/ // // //// /// // //// /// / / /// //// / / /// //// // /// //// /// / / /// //// / / /// //// // //"
"","Pqodtg<""""Vkogt3aGlgornq0e""
,"Pqodtg<""""Vkogt3aGlgornq0e""
"",///////////////////////////////////////////////////////////////////////,1"
,/ // // //// /// // //// /// / / /// //// / / /// //// // /// //// /// / / /// //// / / /// //// // ,1 "
"
%%kpenwfg"$NRE39zz0J$"
kpenwfg"$NRE39zz0J$" """"
xxqkf"kpkekcnk|c"*xqkf+}"
qkf"kpkekcnk|c"*xqkf+}"
"
""111"NREaUE/@REQPR"~?"3">>"4"""Eqpgevct"nc"cnkogpvcek„p"cn"Vkogt3"
1"NREaUE/@REQPR"~?"3">>"4"""Eqpgevct"nc"cnkogpvcek„p"cn"Vkogt3"
"" ""NREaIRKQ5/@HKQFKT"~?"*3>>48+=""11"R5048"fghkpkfq"eqoq"ucnkfc"
NREaIRKQ5/@HKQFKT"~?"*3>>48+=""11"R5048"fghkpkfq"eqoq"ucnkfc"
"" ""NREaUE/@RENMUGN2"~?"3">>"7="11"Enqem"rctc"gn"Vkogt"?"EENM14"
NREaUE/@RENMUGN2"~?"3">>"7="11"Enqem"rctc"gn"Vkogt"?"EENM14"
"" ""NREaVKO3/@OT2"?"4;4;8:="11"Ug"cukipc"xcnqt"crtqrkcfq"rctc"nc"htgewgpekc"fg"
NREaVKO3/@@OOT2"?"4;4;8:="11"Ug"cukipc"xcnqt"crtqrkcfq"rctc"nc"htgewgpekc"fg"
""""""""""""""""""""""""""11"rctrcfgq"fgn"NGF"dcucfq"gp"htgewgpekc"fgn"tgnql"
"""""""""""""""""""""""""" 11"rctrcfgq"fgn"NGF"dcucfq"gp"htgewgpekc"fgn"tgnql"
""NREaVKO3/@OET"~?"2z5=""11"Kpvgttworkt"ewcpfq"ug"cnecpeg"Ocvej2"*dkv2+"{"
""NREaVKO3/@@OOET"~?"2z5=""11"Kpvgttworkt"ewcpfq"ug"cnecpeg"Ocvej2"*dkv2+"{"
"" 111"tgugvgct"gn"eqpvcfqt"fgn"Vkogt"
1"tgugvgct"gn"eqpvcfqt"fgn"Vkogt"
""""""""""""""""""""""""11"ewcpfq"cnecpeg"gn"xcnqt"fgn"Ocvej2"*dkv3+"
""""""""""""""""""""""""11"ewcpfq"cnecpeg"gn"xcnqt"fgn"Ocvej2"*dkv3+"
""NREaVKO3/@RT"?"733="
""NREaVKO3/@RT"?"733=" "11"Ecfc"xg|"swg"gn"Rtguecngt2"cnecpeg"guvg"xcnqt"
"11"Ecfc"xg|"swg"gn"Rtguecngt2"cnecpeg"guvg"xcnqt"
" 111"ug"kpetgogpvc"gp"wpq"gn"eqpvcfqt"fgn"Vkogt"
1"ug"kpetgogpvc"gp"wpq"gn"eqpvcfqt"fgn"Vkogt"
""NREaVKO3/@VET"~?"3">>"3="11"Tgugvgct"Vkogt""
""NREaVKO3/@VET"~?"3">>"3="11"Tgugvgct"Vkogt""
""NREaVKO3/@VET"(?"\*3>>3+="11"Ug"xwgnxg"c"rqpgt"c"2"rctc"gnkokpct"gn"Tgugv"
""NREaVKO3/@VET"(?"\*3>>3+="11"Ug"xwgnxg"c"rqpgt"c"2"rctc"gnkokpct"gn"Tgugv"
""PXKEaGpcdngKTS*VKOGT3aKTSp+="11"Jcdknkvct"kpvgttwrek„p"Vkogt"
""PXKEaGpcdngKTS*VKOGT3aKTSp+="11"Jcdknkvct"kpvgttwrek„p"Vkogt"
""NREaVKO3/@VET"~?"3">>"2="11"Cttcpect"gn"Vkogt"
""NREaVKO3/@VET"~?"3">>"2="11"Cttcpect"gn"Vkogt"
"
"
xxqkf"VKOGT3aKTSJcpfngt"*xqkf+"}"
qkf"VKOGT3aKTSJcpfngt"*xqkf+"}"
""""kh**NREaVKO3/@KT"("2z23+"??"2z23+"11"Uk"ug"jc"kpvgttworkfq"rqt"OT2"""""}"
""""kh**NREaVKO3/@KT"("2z23+"??"2z23+"11"Uk"ug"jc"kpvgttworkfq"rqt"OT2"""""}"
""""""""NREaVKO3/@KT"~?"3">>"2="11"Dqttct"hnci"fg"kpvgttwrek„p"OT2"
""""""""NREaVKO3/@KT"~?"3">>"2="11"Dqttct"hnci"fg"kpvgttwrek„p"OT2"
""""""""NREaIRKQ5/@HKQRKP"`?"3">>"48="11"Eqpowvct"guvcfq"fgn"NGF""
""""""""NREaIRKQ5/@HKQRKP"`?"3">>"48="11"Eqpowvct"guvcfq"fgn"NGF""
"""" "
"
"
kkpv"ockp"*xqkf+}"
pv"ockp"*xqkf+}"
""kpkekcnk|c*+="
""kpkekcnk|c*+="
""yjkng*3+="
""yjkng*3+="
"
Programa 6.1. código de Timer1_ejemPlo.c
" " " " "
" A partir
" " del Programa
" " " 6.1
" " y tras la" simulación
" " del código,
" conteste
" " razonada-
" "
mente a las
" siguientes preguntas:
"
" " " " " " " " " " " " " " " " "
" " "" " " " " " "
56 Prácticas de laboratorio de sistemas electrónicos digitales
1. Explique cuál es el funcionamiento global del sistema cuando se ejecute
dichocódigo.
2. Apartirdelcódigodelejemplo,indiquecuálesladefinicióndelosregis-
trosdeconfiguracióndelTimerutilizadosydelregistrousadoenlaISR.
3. Ayudándosedelavisualizacióndelasventanasderegistros“Pheripheral-
sà Clocking&Power Control à Clock Dividers”,determinecuálesla
frecuenciaderelojparaelTimer0(presenteevidencias),eindiquecómose
podríaconseguirquedichafrecuenciaderelojfueseCCLK/4.
4. ¿Cada cuánto tiempo se produce una interrupción por parte del Timer1?
Presente evidencias tomando una captura de la señal P3.26 mediante el
analizadorlógico.
NOTA: Si lo necesita reduzca los tiempos para que las simulaciones no
seanexcesivamentelentas.
5. Calculeteóricamenteelvaloranteriorapartirdelosvaloresdelaseñalde
relojseleccionada(PCLK),delregistroPRydelregistroMR0.
6. ¿Cuálesladireccióndeiniciodelarutinadeatenciónalainterrupcióndel
Timer1?Muestreevidenciasutilizandolatabladevectoresylamemoriade
programa.
EnestaactividadpresencialsetrabajaráconeldepuradorJ-Link,ejecutando
sobrelatarjetaLPC1768-Mini-DK2elprogramadelaActividad6.1ycreando
Práctica 6 - FUncionamiento Y maneJo de los timers 57
dos nuevos programas. De este modo, se pondrán en práctica todos los conoci-
mientos adquiridos en la Actividad 6.1 y en la lectura del capítulo de los Timers
en el manual del fabricante.
Los pasos para la realización de la Actividad son los siguientes:
En este caso debe crear un programa que genere una señal cuadrada de 5Hz
por el pin P1.25 haciendo uso de la funcionalidad que pueden proporcionar los
bits external match control del registro external match register (lPc_tim1-
>emr, y sin necesidad de usar interrupción alguna (MAT1.1) (Apartado 21.6.11
del manual de usuario del LPC17xx).
Ahora realizará un programa para generar por P1.29 una señal cuadrada de
2KHz con un ciclo de trabajo del 30%. Tenga en cuenta que en este apartado no
se puede usar P1.25 porque interferiría con el bloque de Match. Para ello confi-
gure el timer1 para que interrumpa tanto cuando el tc (contador del Timer)
alcance el valor match0 (cada 0,5ms) como el de match1 (0,15ms) (Apartado
21.6.3 Count Control Register del manual de usuario). Además, cada vez que se
58 Prácticas de laboratorio de sistemas electrónicos digitales
2ø³̊ßÆ̊̇œ"¸̋"Ø̇̈æø̇ßæøÆæ"¸̋"5Æœß̋Œ̇œ"'Ø̋̊ßø
" " " " " ºÆ̊æœ"&Æ̌Æß̇Ø̋œ"
" "
/̇ß̶̊ね"œ̋"¸̋̈̋"ø̋œ̋ß̋̇ø"̋Ø"6%
" "
interrumpa " por match0
" " se""6̇Œ̈Æκ"¸̋̈̋"̊溜Øß̇ø"̋Ø"ø̋̌Æœßøæ"¸̋"ƺß̋øøı̊Ææº̋œ"¸̋Ø"6ÆŒ̋ø"
"
debe resetear "el TC. También
" " debe" consultar
" el regis- " " "
ı̇ø̇"" ̊æºæ̊̋ø" " Ø̇"" ̨̋ºß̋"
" ¸̋"
" ƺß̋øøı̊Æ º"
" " ̈æøø̇øØ̇"
" 6̇̈Ø̇"
" ねには " .̇"
" (Æ̌ø̇"
" は
tro de interrupciones del Timer para conocer la fuente de interrupción y borrarlaな"
" ̋œł̋Œ̇ßÆ ̇"
" ̋Ø"
"
̨º̊Ææº̇ŒÆ̋ºßæ "
(Tabla 426). La Figura 6.1 esquematiza el funcionamiento:
"
6ÆŒ̋øな" ƺß̋øøŒı̋" ıæø" /4ど ""4̋œ̋ß̋̇"̋Ø"6%"ı̇ø̇"
6ÆŒ̋øな"ƺß̋øøŒı̋"ıæø"/4ど 4̋œ̋ß̋̇" ̋Ø" 6%" ı̇ø̇"
" ̊̊æŒ̋º
æŒ̋º ̇̇ø"º"º̋©æ"̊Æ̊Øæ"
ø"º"º̋©æ"̊Æ̊Øæ" ""ıæº̋"2な
ıæº̋"2な に
にひ"̇"ºæ"
ひ"̇"ºæ"
な " +ºœ̋øß̋"̋Ø"̊
" " ¸Æ̌æ"̇"̊æºßƺ̇̊Æ
" " º"
1. Inserte el código a continuación:
"
に " %æº̋̊ß̋"̋Ø"æœ̊ÆØæœ̊æıÆæ"̇Ø"ıƺ"2な
" " " " " にひ ""/Ƹ̇"" ""̇ºæß̋"̋Ø"ı̋øÞæ¸æ"¸̋"Ø̇"œ̋ó̇Ø"
" " " " " " ""̋Ø"ßÆ̋Œıæ"̋º"ºÆ©̋Ø"
" " " "
2. Conecte" el osciloscopio
" " " al pin
̇Øßæ ""6æŒ̋"º̇"̊̇ıßø̇"¸̋"Ø̇"ı̇ºß̇ØØ̇"
" P1.29.
" ""ı Mida
" " y anote elºperíodo
º̌̇Ø̇"̇"̊æºßƺ̇̊Æ " de la señal y
el tiempo en nivel alto. Tome una captura de la pantalla y póngala a conti-
" nuación:
"
"
Práctica 6 - FUncionamiento Y maneJo de los timers 59
2. ¿Qué sucede con la intensidad luminosa del LED conectado a P1.29 (se
conectará un LED+Resistencia externos a este pin), al modificar el ciclo de
trabajo? ¿A qué es debido?
Práctica 7
un valor de recarga para el temporizador que envía datos al DAC vía DMA, y por
lo tanto no se empleará tampoco. Se dejará a su valor por defecto: 0x0000.
El único registro que se empleará será el registro de operación Dacr. Este
registro tiene dos campos:
• VALUE, bits 15:6, que es el valor de 10 bits que se convierte a tensión ana-
lógica.
• BIAS, bit 16, que permite establecer el tiempo de asentamiento. Para este
caso se configurará a valor 1, es decir, un tiempo de asentamiento de 2,5 us.
1. Lea las páginas 593 a 596 del “UM10360 LPC17xx User manual Rev4.1”.
Preste especial atención a los apartados 30.1 a 30.4, puesto que el apartado
30.5 explica el funcionamiento de la conversión empleando acceso directo
a memoria (DMA) que no se estudiará en esta práctica.
2. Simule el Programa 7.1 Practica_7_nP.c suministrado a través del Aula
Virtual. Puesto que es una simulación, para comprobar su funcionamiento
se visualizarán los registros del DAC en el entorno Keil µVision®4. Para
ello una vez dentro del simulador vaya al menú Peripherals ð D/A con-
" " verter" y "le mostrará
" una ventana
" como" la de la Figura 7.1.
"
Programa 7.1. ejemPlo De manejo Del Dac.
" " " " " " " "
" "
" " "" " " " " " "
"
" "
"
" " "
"
"" " " " " "
"""
"" " " " ""
"" "
"
PRÁCTICA 7 - ConveRsoR dIgITAl AnAlógICo (dAC) 63
" " " " " " " "
%kpenwfg"$nre39zz0j$"
%fghkpg"FCEaDKCU" 2z22232222""11"Ugvvnkpi"vkog"c"xcnqt"4.7wu"
"
xqkf"FCEKpkv*xqkf+="
"
kpv"ockp"*xqkf+"
}"
""wkpv54av"k"?"2."o="
"""
""11"Kpkekcnk|coqu"gn"FCE""
""FCEKpkv*+="
"""
""yjkng"*3+"
""}"
" NREaFCE/@FCET"?"*k">>"8+"~"FCEaDKCU=" "
" k--="
" "
" hqt*o"?"3222="o"@"3="o//+="
" kh"*"k"??"3246"+"
" k"?"2="
"" "
"
"
xqkf"FCEKpkv*"xqkf"+"
}"
""11"Eqphkiwtcoqu"gn"rkp"r2048"eqoq"ucnkfc"FCE""
""11"Gp"RKPUGN3"dkvu"42"c"2"{"dkv"43"c"3"
""NREaRKPEQP/@RKPUGN3"(?"\*2z3>>42+="
""NREaRKPEQP/@RKPUGN3"~?"*2z3>>43+=""
"
Figura 7.1. Ventana de control
" "
del d/a conVerter.
" " " " "
" " " " " " " " " " " " " " "
3. LealaActividadpresencial7.2.yrespondaalosapartadosdelpunto7.3.2
""
“Desarrollodelaactividad”.
8̇Øæø"
ど" "
" ど" 0(Œ̋øæ"¸̋"Œ̋œßø̇" ねひ"
Figura 7.1. esquema
" " De llenaDo
" " Del" array
" "con" una
" señal
" sinusoiDal
" .
"" " " " " " " " " " " " " " " " " " "
" " Las 50" muestras
" de" la" forma
" de onda " que están " almacenadas
" " " " "en el array se
" " "
" deben" sacar
" por el
" " " DAC en
" " un tiempo
" " que depende
" " de la
" " frecuencia seleccionada
" " " " "
para
" "la señal,
" y "a continuación
" " "se volverá
" " a" sacar" otro
" ciclo" de la forma
" " de onda. " " "
Para ello se necesitará
" " " un
" temporizador de manera que cada vez que se ejecute su
ISR permita sacar por el DAC una nueva muestra. Se empleará para las tempori-
"zaciones
" " " 0.
el Timer " " " " " " " " " "
" " " " " " " " " " "
" "
" "
" " "
" " "
" " "
"
" "
" " "
"
" " " "
" " "
" " " " " " " " " " "
" " " " " " " " " " " "" " " " " " " "
" " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " " " "
PrácticA 7 - conversor DigitAl AnAlógico (DAc)
" " " " " " " " " " " " " " " " " 65"
" " " "
" " " " " " " " " " " " "
A partir" de las
" definiciones
" " " "de" variables y" declaraciones
" " " prototipo
" que se indi-
can,
" desarrolle las siguientes funciones del programa:
" " " " " " " " " " " "
1. " Escriba
" "
la función
"
void DACInit(void) que inicializa el DAC. La
configuración del terminal P0.26 no debe afectar a la configuración de los
"
demás terminales.
" " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " "
" 2. Escriba la función void InicializaArray(void) necesaria para
" inicializar
" " el" array de"la forma de onda. " " " " " " " "
" " " " " " " " " "
"
"
" " " " " " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " " "
" " " " " " "
66 PrácticAs De lAborAtorio De sisteMAs electrónicos DigitAles
introDucción
" "
Figura 8.1. conexión De un Potenciómetro Para obtener una señal analógica
" " " " " " " " " "
variable a la entraDa Del aDc.
" " " " " " "
" " " " " " " " " " " " " " " " "
" "Para" indicar la lectura
" " " " " " " " " "
de la tensión convertida a digital, mediante los LED’s que " " " "
" " " la tarjeta" posee conectados
" " a los " " terminales " "(P3.25
" " " se indicará" el código
y P3.26), " " " "
" “00”" si la tensión
" " se encuentra" " entre" 0" y 0,825V
" (códigos
" " " entre 0x0 " y" 0x3FF); si" la " " "
" tensión" se encuentra
" " entre
" 0,826 " y" l,65V (códigos
" " " 0x400
entre " " " y "0x7FF) se " indica-
" " "
" " rá "el código" “01”;" si la tensión" " se encuentra
" " entre
" " 1,66 y " 2,475V " (códigos entre
0x800 y 0xBFF) se indicará el código “10” y si la tensión se encuentra entre 2,47V
" y 3,3V (códigos
" " entre 0XC00 " y" 0xFFF)
" se indicará el código “11”.
" " " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " "
Práctica 8 - conVersor analógico digital (adc) 71
Desarrolle una función para inicializar el canal 5 del ADC. Tenga en cuenta que:
• Tiene que habilitar el pin correspondiente del puerto como entrada ADC, y
asegúrese de que no se configura con resistencia ni de PULL-UP ni de
PULL-DOWN.
• Debe habilitar el reloj del periférico controlador adc (registro
PCONP “lPc_sc->PconP”), ya que por defecto está inhabilitado para
disminuir el consumo.
• Debe activar el canal ADC que desea en el registro ADCR.
• Debe desactivar la conversión del ADC, (No START en el registro ADCR),
para lanzarla cuando el programa lo indique.
• Debe programar la frecuencia de conversión del conversor en el registro
ADCR (por ejemplo con un factor de división 0x0A).
• Active la conversión generada por software (no modo burst).
72 Prácticas de laboratorio de sistemas electrónicos digitales
• Desactivelageneracióndeinterrupciones.
• PongaelADCoperativoPDN=1.
2. Desarrolleunafunciónque:generelaordendeconversión,muestreehasta
comprobarquelaconversiónhafinalizado,parelaconversióncuandoesto
hayaocurrido,leaelcódigodigitalcorrespondientealvalordetensióny
retornealprogramaprincipal.
3. DesarrolleunafuncióndeinicializacióndePuertosparadefinirlosLEDSde
latarjetacomosalidas,conresistenciadePULL-UPysindrenadorabierto.
Para comprobar la inicialización haga que parpadeen simultáneamente dos
vecesconunacadenciadedossegundos.Alfinalizardebenquedarapagados.
4. Generelafunciónmain()delprogramaapartirdelasfuncionesanteriores,
deformaqueserealicelafuncionalidaddescrita.
5. Escribaelprogramacompletoconsiderandotodaslasdefinicioneseinclu-
des necesarios.
Unavezgeneradoelproyectobasadoenelprogramadescárgueloenlatarjetay
compruebesufuncionamiento.Escribalasobservacionesquecreapertinentes.
8.2. Actividad8.2.Deteccióndelfindeconversiónmedianteinterrupción
(Presencial)
En este caso se deben repetir los pasos de laActividad 8.1 (no presencial),
perovariandoalgunosaspectosenelprocedimientoyfuncionalidad.
Práctica 8 - conVersor analógico digital (adc) 73
I.1. IntroduccIón
"
®
FIgurA I.1. módulos
" " Que" IntegrAn
" el
" " entorno
" "de desArrollo
" " KeIl µV
" IsIon 4.
" " " " " " " " " " " " " " " "
table. Los ficheros ejecutables (.HEX) se utilizan, por ejemplo, para programar la
" " " " " " " " " " " "
memoria Flash del microcontrolador.
" " " gestor de "librerías
El " permite " "la utilización
" "
de librerías " de módulos " "
de objetos " "
" " previamente" " " " " " "
generadas con el compilador o el macroensamblador. Keil µVi- "
®
" " sion
" 4 también
" incluye
" " una serie de " librerías,
" por" ejemplo,
" las "que" incluyen" cier- "
tas
" " " funciones matemáticas,
" " " etc. " " " " " " " "
" " " " " " " " " "
I.3. creAcIón de un Proyecto en ensAmblAdor
" " " " " " ""
Para la ejecución y prueba de un programa ensamblador es necesario seguir
" " los siguientes
" " pasos:
" " " " " " " " " " "
" " " 1. Ejecute" el programa
" " " µVision
Keil " " ®4 y cree
" "
un nuevo " ejecutando
proyecto, " " " "
" " en" el menú:" Project
" -> new" " uVision "Project.
" " Debe aparecer
" " " la ventana
" "
" que se muestra en la Figura I.2.
"
FIgurA" I.2.
"
VentAnA
"
N
"
ew Project.
"
""
"
"
" " VentAnA
FIgurA I.3. " " " device.
" " " Select
" "
" " " " " " " " " " " " " " "
" " " que
3. Indique " NO
" copie
" " código
el " " "
de" inicialización " LPC17xx,
del " " " ver Figura I.4.
" " " " "
"
" " " " " " " " " " " " " "
"
"
"
FIgurA I.4. " VentAnA
" " de
" seleccIón
" " " StartuP
del " code.
" " " " " " " "
" "
" En "muchos
"
" "
programas
" "
" necesario
es "
"
"
" tener
"
" " algún
" "
" tipo
"
" " de código
" "
" de iniciali- "
"
"
" " " " "" " " " " "" " " "" " " " " "
" zación (startup" code) " del
" microcontrolador " " " que debe " " coincidir
" " con
" la con-"
" " " " " " " " " " " "
" "" "
figuración " " "su
de " " " " "" " " " " "" " " " " ensam-
" " "
" " " " diseño de " hardware. " " " Cuando se trabaja " " en lenguaje"
" " "" "
" " la inicialización
blador, " " " "" "
" microcontrolador
del " realiza
se " "" " "
mediante un con- "
" " " " " " " " " " " " " "" " " " "" " " " " " " " ""
" " "junto de " directivas
" " propias de" ""las" herramientas
"" " " " " de" " "
desarrollo. "" " " "
" " " " " " " " "
4." En" la ventana
" " del proyecto, despliegue el árbol, y pulse con el botón dere-
" " " cho en " “source
" "group 1”," ver " Figura " " " " "
I.5. " " " " "
" " " "
"
"
" " " " "
" " " " "
" " " " " " " " " " " " " " " " "
" " " " IgurA
F " " I.5. V
" entAnA " del" Proyecto
" " ." " " " " "
" " " " " " " " " "" "" " " " " "
" " " " " " " " " " " " " "
" " " " " "" " " " " " " " "" " " " " " "" "" " " "" " " "
" " " " " " " " " " " "
"" " " " " " " " "" " " " " """ " "" " ""
" " "" " " " "" " " " " "" "
" " " "" " " " " "
"" " " " " " "" " " " " " " "" " "
"
" " " " " " "" " " " " " " " "
""
" " " " " " " " " " " " "
anexo i - Programación en ensamblador con Keil µVision®4 79
5. Seleccione “add existing files to group ‘source group 1’…” y añada el fiche-
ro “fichero.s” que contiene el código fuente en ensamblador, ver Figura I.6.
Dicho fichero tiene que haberse creado con anterioridad utilizando una herra-
mienta cualquiera de edición de texto o la del propio Keil µVision®4 (File/new).
También se puede crear en el propio entorno añadiendo un new file y luego guar-
" " dándolo y" añadiéndolo
" " a “add existing
" "files to group ‘source group 1’…”.
"
"
"
FIgurA I.6. VentAnAs
" " PArA
" AñAdIr
" " un
" FIchero
" exIstente
" " " Proyecto.
Al
" "
80 Prácticas de laboratorio de sistemas electrónicos digitales
""
6. En la ventana de proyecto pulse con el botón derecho sobre “Target 1” y
" "seleccione
" " “Options
" " for Target
" " " ‘Target
" 1’…”,
" ver" Figura
" I.7.
" " " "
" " " " " " "
"
FIgurA I.7. VentAnA
" " de "conFIgurAcIón
" " " del dIsPosItIVo
" .
" " " " " " " " " " " " " " " " " "" "
7. Vaya" a" la solapa
" "“linker”" " y active la casilla “Use memory layout from tar-
" " "get dialog”.
" " " " " " de diálogo,
Cierre el cuadro " " ver Figura
" " " "
I.8. " "
" " " " " " "
"
"
FIgurA I.8. V
" entAnA
" "de" conFIgurAcIón
" " del “l
" iNker”.
" " " " " " "
" " " " " " " " " " " " " " " " " "
" "
" " " " " "
anexo i - Programación en ensamblador con Keil µVision®4 81
8. " Para
" compilar:
" " Project
" -> build
" target
" o el botón que se indica en la Figu-
" " ra I.9. " " " " " " " " " " " " " " ""
" " " " " " "
" " " " " " " " " " " " " " " " ""
"
FIgurA I.9." c" omPIlAr
" Proyecto
" .
"
" " " " " " " " " " " " " " " " " "
9. Si no hay errores, pulsar
" " el botón
" de Iniciar
" Simulación que se muestra en
" " " "
la Figura
"
I.10.
" " " " " " " " " " " " "
"
+ºÆ̊Æ̇ø"
œÆŒØ̇̊Æ º"
"
" "
" " " " " %æŒıÆØ̇̊Æ º"
"
" " " " " " " " " " " " œÆº"̋øøæø̋œ"
" " "
FIgurA" " " " " Proyecto.
" " " " " " I.10. s"ImulAcIón
" " del
" " " " " " " "
" " " " "" " " "" " " "" " "" " " " " " " "" " " "
" " "10. "En la "simulación
" " puede
" ver
" "los valores
" " de registros
" " "internos, memoria,
" " "
" "ejecutar el programa
" " " " paso" a paso,
" " poner "puntos
" " " " ver los "tiem-
de ruptura,
"
"
pos de ejecución de una instrucción o un conjunto de instrucciones, etc.
" En la Figura I.11 se muestran los resultados de la simulación.
"
"
"
"
"
"
"
82 Prácticas de laboratorio de sistemas electrónicos digitales
""
8̋ºß̇º̇"¸̋" 8̇Øæø̋œ"¸̋"
Øæœ"ø̋̌Æœßøæœ" 8̋ºß̇º̇"¸̋" º̇" æº̇"¸̋"
¸̋œ̋ºœ̇Œ̈Ø̇¸æ" Œ̋ŒæøÆ̇"
""
""
6Æ̋Œıæ"ßø̇ºœ̊øøƸæ"
"
FIgurA I.11. resultAdos de lA sImulAcIón del Proyecto.
" " " " " " " "
Se" pueden
" "
visualizar " "
hasta " "
4 zonas del" mapa
" " " " " "
de memorias a la vez, "en venta- "
" " " " " " " " " " "
nas diferentes. Para añadir una nueva ventana de memoria ir al menú
View/memory Windows.
Anexo II
AreA section{,attr}...
Num DCB 10
grama (10 datos word). La tercera, Numeros SPACE 80, reserva espacio de 80
bytes para almacenar el resultado de la ejecución del programa (20 datos word).
entrY
end
"
" "
iV.1. introducción " " " " " "
" Este anexo presenta una introducción al manejo del entorno de desarrollo Keil
µVision®4, una herramienta software para el desarrollo de proyectos en lenguaje
C basados
" en microcontroladores.
" Entre otras cosas, permite compilar, simular,
depurar y cargar el código en un chip microcontrolador (LPC1768, en este caso).
" " " " " " " " " " " " " "
A continuación
" "
se hará
" "
una introducción
" "
a este "entorno
"
de desarrollo
" "
a " través
"
de un ejemplo sencillo
" " que
" ilustra
" la " creación" de un" proyecto,
" " su "simulación
" " " y
depuración
" " para visualizar
" variables
" " " así como
" el empleo de los breakpoints.
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " "
iV.2. " reación
c " " " de un" Proyecto
" " en" c
La
" Figura IV.1
" esquematiza
" " de" una
" "manera muy general los pasos que se deben
seguir en el diseño de un programa para desarrollar una determinada aplicación
" " " " " " " " " " " " " " " " " " "
con
" un microcontrolador.
" " " " " " " " "
"
#º³ØƜƜ"¸̋"Ø̇"̇ıØÆ̊̇̊Æ º"
"
¸̋œ̋̇¸̇"
"
"
&Æœ̋óæ"¸̋"Ø̇"̇ıØÆ̊̇̊Æ º "¸Æ̇̌ø̇Œ̇"¸̋"̈Øæł̋œ"
"
"
%æ¸Æ̨Æ̊̇̊Æ º"
"
"
" &̋ıø̇̊Æ º"
" " " " " " " " " " "
Figura iV.1. Pasos en el diseño de un Programa Para microcontrolador.
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " "
" " " " " " " " " " " " "
90 Prácticas de laboratorio de sistemas electrónicos digitales
"
"
"
"
"
"
"
&"
"
"
%"
"
"
"
"
Figura" iV.2.
" Ventanas
" " Para
" " crear
" un" nueVo Proyecto
" " " ," seleccionar
" "
el Fabricante y el disPositiVo.
" " " " " " " " " " " " " "
" " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " ""
"
Figura iV.3. Ventana
" de
" conFiguración
" " " de
" entorno
" . "
" " " " " " "
" " " "
" " " "
" " " " " " " " " " " " " " "
" " " " " " " " "" "" " " " " " " "" " " " " "" " "
" " " " " "" " "" "" " " " " "" " " "" " " " "
"" " " " " " " " " " " " "
92 Prácticas de laboratorio de sistemas electrónicos digitales
"
" " " " " " "
iV.2.2. configuración de opciones
" " " "
" Se
" puede renombrar
" " la" entrada" Target
" "1 como LPC1768
" (haciendo
" " click
" sobre
" " "
ella, tras
" estar previamente
" " seleccionada).
" " " Hacer
" click
" " con el " botón derecho
" " " del "
" ratón
" sobre la" entrada
" " lPc1768" para " que aparezca
" su" menú
" contextual
" y selec- " "
"cionar options for target ‘lPc1768’… (Figura IV.4).
"
Figura iV.4." m"enú contextual
" " " de lPc1768.
"
"
" " " " " " " "
"
"
"
"
"
"
"
"
"
"
Figura iV.5." oPciones
" " Para
" " la Pestaña
" "target.
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
Figura
" " iV.6. o
" Pciones
" " Para
" " d
la" Pestaña " . "obserVar
" ebug " " que
" " sólo " será
" " "
simulación, y no se Volcará el código" " sobre " ninguna Placa externa.
" "
"
Figura iV.7. oPciones
" "
Para la Pestaña c/c++.
" " " " "
"
Figura iV.8. " menú
" contextual
" " de
" la
" entrada
" ‘start
" uP’.
"
"
" " " " " " " "
"
" " " " " " " "
anexo iv - Programación en c con keil µvision®4 " 95
"
"
" " " " " " " "
""
Figura iV.9. F" ichero
"
system_LPC17xx.C a ser agregado al Proyecto.
" " " " " " "
"
"
"
Figura iV.10. "agregar
" " " " " " "
" lPc1768.
gruPo sourceFiles a la entrada
"
" " " " " " " " "
" " " " " " " "
" " " " " " " "
" "
96 Prácticas de laboratorio de sistemas electrónicos digitales
" "
"
"
" " " " " " " "
Figura iV.10. agregar
" gruPo
" source
" " F" iles
" a la " lPc1768.
" entrada
"
"
xqkf"EcnewncEwcftcfq*kpv",qtkigp."kpv",fguvkpq."kpv"p+""
" " " " " " ""
}"
"
"""kpv"k="
""" " "
"""hqt*k?2=k>p=k--+"
""" "
"""" ,*fguvkpq-k+?*,*qtkigp-k++,*,*qtkigp-k++="
"""" "
""
"
"
"
"
ockp*+"" ""
}""
"" "
""uvcvke"ejct"xct3=" " "
""
""kpv"Vcdnc3]7_?}4.5.;.34.37" ="
"
"" "
""kpv"VcdncEwcftcfqu]7_=""
"" " " "
""uvcvke"kpv"k="
"
"
"" "
""xct3?2z34="
"" " " "
""EcnewncEwcftcfq*Vcdnc3."VcdncEwcftcfqu."7+="
"
"
"" "
""yjkng*3+"
"" "
""}"
""""" "
"""""k?2="
""""" "
"" "
"""""k?3="
""" "
"
" " " "
Figura iV.11. agregar main.C a la entrada sourceFiles.
" " " "" " " " " " " "
" " " " completa
" del" proyecto
" " " y el "
En la Figura IV.12 se muestra la estructura ejemplo
resultado de su compilación y enlazado mediante" "el comando " Build (F7) " " o " "
haciendo click sobre cualquiera de los iconos"" . "Obsérvese "la "ventana infe-
" " "
" " " " " " " "
"
"
" " " " " " "
" " " " " " " " " " " " "
" " " " " " " " " " " " "
" " " " " " " " " " "" " " " " " " " " " " " " " " " " " " " " "
" " " " "" " " " " " " " " " " " "" " " " " " " "" " " " " " " " "
""" " " " " "en "c" con "" "" " " "" """ " " "" " " " " " " " " " " 97" " "" ""
" " "
anexo "
iv - Programación " " " " "®4 "
keil µvision
" " "" " "" " " """ " " " " " " " " "" " " " "" " " " " " " " " " "" " "
" " " " " " " "
" " " " " " " " " " " " " " " "
" " " "rior"" "build" output
" " " "que indica "si se ha producido algún error durante la compila-
" informa" " " "" " " " " " " " " " " "
" " " ción " " y" "también " "" " sobre
" " el tamaño
" " "que ocupa
" " el programa.
" " "
" "
"
"
" "
" "
"
" "
"
"" "
"
"" "
"
"
" "
" "
" "
" "
"" "
"
"" "
"
"
" "
" "
" "
" "
" F"igura " iV.12. " c " omPilado " " y “Linkado " ”" del"" Proyecto " "(Zi-data " :" Zero initialiZed
" " "
" " "constantes
data, ro-data" son "" " " " .t
" " "amaño " " "" de
" total " " ram
"" " =" rW" " data" + Zi data
" . " " "
" " "tamaño
" " " " "
total de rom = code " " " " " " "
" + ro data)." " " " " " " " " "" "
" " "" " "" " "
" " " " " " " " " " " " " " " "" "" "" " "" " " "
" " " " " "" " " " "" " " "
" " " " " " " " " " " " " "
" " " iV.2.4.
" " " simulación
" " " "
"" " " " " " " " " " "" " " " " " " "
" " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" Una " " "que" se"ha compilado
" " vez " " " " el" "programa " " "tiene
" " " " se " " la "" " " " " " de ejecutar
" " posibilidad " " """ " el
""" pro-""" "" " " "
" " " grama " " " " " " " " " " " " ® " " " " " " "" " " " " "" " " " "" "
" " " en " el " simulador
"" " que
" " " "incluye "Keil " " µVision
"" " " 4 o "de cargarlo " " en una" placa de "des-"
" " " "arrollo " " externa """ " para " que " " "se" " ejecute
"" " físicamente " "" " en"el microcontrolador.
"" " " "" " De " "" momento, " "" " " " "
" " se hará "
" uso " "
" del" "simulador " "" para " ver" algunas " de "
" sus " " " " "
interesantes" posibilidades. " " " Para ello, " " " " " "
" " " " " " " " " "" " "" " " " " " "" " "" " " "
" " " " "se arranca "" " el" simulador " " " haciendo " " " " click " " " sobre " "el " botón
" " " "(F5) " y" aparecerá"" " la ventana
"" " " " " "
de" la "Figura "
" "
IV.13.
" " Estos"
" son " algunos" " "
comandos " "
que "
resultarán
" "
" de " utilidad:
"
" " "
" " " " " " " " "
" " " "" " " " " " " " " "" " " " "" " " "" "" " " " "
"• Se" " ejecuta" el" programa " paso "a " paso "haciendo " " un
" click
" " " "sobre " (F11)
" " por
" " " " " "
" " " " " cada " " " " " " " " " " " " " " "" "
" " instrucción. "
" "" " " "
" "" "
" "" " " "
"• Si" " se" "desea" que""se" ejecute "con "un simple " " " toda
" click " " " función,
una " " " sin " nece- "" " " " ""
" " " "sidad de " ejecutar " " " " "" " " " " " " " " " "
paso " a paso cada" una de las instrucciones que la compo-
" " " "" "
" " " " " " " "" " " " " " " "" " " " " "
" " " " " " "
" " " " "
" " " nen, "se" "debe "hacer "click" sobre " "(F10). "
" • " Para " " ejecutar
" " " todo " el
" código " " "hasta
" " la" "línea
" " donde" "" " hemos " " " " colocado
" " " el
" cursor," " " "
" " click "" "sobre el " " " " "" "
icono (Ctrl.+F10). " " " " " "" " " " "" " " " " " " " " " " " " "" " " "
" " " " " " " " " " "
" " " " " "
" " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " "
" "" " " " " " " " " " " " ""
" " " " " " " " " " " " " " " " "" " "" ""
" " " " " " "" " " "" " " " " " "" " " " "
" " " " " " " " " " " " " " " " " " "" "" " " " " " " " " "
" " " " " " "
" " " " " " " " " " " " " " " " "
" " " " " "
" " " " " " " " " " " " " " " "
" " " "" " " "
"
98 " " " " " " de" laboratorio
Prácticas " de"sistemas electrónicos
" " digitales
" " "
" " " " " " "
" " "
• Para hacer reset y llevar la ejecución al comienzo del código se debe pul-
" " " " " " " " " " " " " " " " " "
" " " " sar "en "el "icono " "
" • " Si" lo que " " se desea " es " ejecutar " todo" el" código" de" una" vez,"" " (F5) "y " " para " "
"" " " " " detenerlo." "
" " " " " " " " " " " " "
" " "" A continuación
" " " "
se comentan algunas observaciones sobre las ventanas que
aparecen en la Figura IV.13:
" " " " " " " " " " " " " "
" " " " " "" " " " " " " " " "
" • En la ventana disassembly aparece el código traducido a ensamblador a
partir del código fuente en C de las funciones startup_lPc17xx.s y main.c.
" " " " " " "
" " •" En la zona " de " la izquierda
" aparece la ventana registers, con el nombre y
valor actual de todos los registros del microcontrolador. Se observa una
marca grisácea sobre el/los registros que se ven modificados cada vez que " "
" ejecutamos
" " " " un " paso con " Step(F11). " " " " " " " " " " "
• Se "puede " apreciar" "una flecha o cursor " " de color" amarillo " "que apunta " siem-
" "
" instrucción
pre a la " " " que se "va a " ejecutar " " (tanto en" la" ventana " " de ensambla- "
" "dor como " " "
en la de código c). " " " " " " " " " " "
" " " " " " " " " " " " " " " " "
• "También se muestra el tiempo transcurrido desde que se inició la ejecución del
" programa
" " hasta el " comienzo
" " de la instrucción " " actual
" " (parte " " inferior derecha).
" " "
• En" la" ventana "locals " " (parte inferior " " derecha) " vemos
" el valor " actual que van
" " "
tomando " variables
las " "del programa. " " " " " " " " " "
" " "
""
Figura iV.13.
" Ventana
" " inicial
" " del simulador
" .
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " " "
" " " " " " " " " "
anexo iv - Programación en c con keil µvision®4 99
" " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
100 " " " " " " Prácticas de laboratorio de sistemas electrónicos digitales
" " " " " " " " " " "
" " " " " " " " " " " " " " " "
"
Figura iV.14. contenido
" " de la
" " memoria
" " donde
" " se
" ha almacenado
" " " la Variable
"
tabla1.
"
"
"
"
"
Este anexo continua con la presentación del manejo del entorno de desarrollo
Keil µVision®4. En este caso se trata de la utilización del analizador lógico para
visualizar señales o variables en el dominio del tiempo, uso de puertos y breakpoints.
"
" " " " " " " "
" " " " " " " " " " "
" " " FigurA" V.1."" A"ñAdir
"
VAriAble deSde
" " " lA" VentAnA de Setup del AnAlizAdor.
" " " " " " "
" " " " " " " " "
"" "" " " "" " " " " " "" " " " " " " " " " "
" " "" En la Figura
"" " " " V.2 aparece un
" " " " " " " " " ejemplo que
" muestra
" una porción
" " " de la señal sobre " "
" "" " el analizador
" " configurado
"" " " " con una escala
" " "" de
"" 0.1us/div.
" Es importante
" resaltar
" " que " "
el" microcontrolador
" " " ofrece " varias
" posibilidades
" " " como" fuente
" " de reloj" " para su" fun- "
" " cionamiento.
" " " Tras el reset,
" " " queda
" seleccionado
" " como reloj
" " " por defecto
" la
" " salida
" de " "
" un oscilador
" " " RC" de 4MHz " " que posee internamente,
" " " pero la selección
" " " de un cris-" " "
tal de 12 MHz (Figura V.3), junto a los ficheros que se han incluido para el arran-
" " " " " " " "
que en la entrada StartUp del árbol de proyecto garantizan que la velocidad de
" reloj interna en la CPU sea de 100 MHz.
"
"
"
104 Prácticas de laboratorio de sistemas electrónicos digitales
" "
"
FigurA V.2. ejemplo
" " que ViSuAlizA
" " lA
" VAriAble
" " " i Sobre " lógico.
" " el AnAlizAdor
"
"
"
FigurA V.3. " conFigurAción
"
de lA FrecuenciA del criStAl en lAS opcioneS del
" " " " " " " " " " "
proyecto.
En este caso se presenta un ejemplo que hace uso del puerto 0 para activar cua-
tro pines del mismo de manera secuencial, seleccionando el sentido de activación
de acuerdo al valor de una variable que podrá ser modificada de forma interacti-
va en el simulador. Las señales serán visualizadas mediante el analizador lógico.
Comience cerrando el proyecto actual (Projectàclose Project) y creando uno
nuevo. Llame analizador_puertos al nuevo proyecto y almacénelo en una carpe-
ta diferente. El código fuente para este ejemplo, analizador_puertos.c, es el mos-
trado en" el" Programa
" "
V.2. " " "
%kpenwfg">NRE39zz0J@"""""1,"Fghkpkekqpgu"rctc"gn"NRE39zz",1"
"
kpv54av"ugpvkfq="
"
11"Hwpekqp"fg"tgvctfq"
xqkf"fgnc{a3ou*wkpv54av"ou+"
}"
""wkpv54av"k="
""hqt*k?2=k>ou,364:5=k--+="
"
"
kpv"ockp*xqkf+"
}"
""kpv54av"p="
"
""11"Nqu"rkpgu"R20]2005_""eqphkiwtcfqu"eqoq"ucnkfcu."
""11"""""""""""R20]60053_"eqphkiwtcfqu"eqoq"gpvtcfcu0"
""NREaIRKQ2/@HKQFKT?2z2222222H=""
"
""11"Ug"rqpgp"c"egtq"nqu"rkpgu"R20]2005_0""
""NREaIRKQ2/@HKQENT?2z2222222H=""
"""
""ugpvkfq?3="
""p?3="
" "
""yjkng*3+}"
""""kh*ugpvkfq+"}"
""""""p?p>>3="
" kh*p??*3>>6++""
""""""""p?3="
"""" "
""""gnug}"
""""""p?p@@3="
""""""kh*p??2+""
""""""""p?*3>>5+="
"""" "
"""""11"Cevkxct"nc"ucnkfc"swg"eqttgurqpfc0"
""""NREaIRKQ2/@HKQRKP?*p>>2+=""
""""11Tgvctfq"fg"47"ou0"
""""fgnc{a3ou*47+=""
"" "
"
progrAmA V.2. código
" " del
" progrAmA
" " analizador_
" puertos.c.
Una vez compilado el proyecto sin errores inicie el simulador, muestre la ven-
tana del analizador lógico y configúrelo para visualizar los cuatro bits de menor
peso del puerto 0 P0.[3..0]. Para poder visualizar estos cuatro bits, primero se
busca el puerto 0 (Fio0Pin) haciendo clic en el símbolo ‘+’ de la entrada special
Function registers (ventana symbols) para expandirla (Figura V.4). Como
Fio0Pin hace referencia conjunta a todos los bits del puerto 0, se arrastra y suel-
ta hasta cuatro veces Fio0Pin a la ventana del analizador lógico y a continuación
se selecciona un bit diferente en cada variable Fio0Pin.
" "
"
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" FigurA V.4. locAlizAción
" " " "puerto
del " p0
" " en
" lA VentAnA
" S" ymbolS.
" " " " " " " "" " " " " " " " "" " " " " "" "" " "
" Para" configurar " el bit "a visualizar
" " " pulse" en setup " de" la" ventana
" del" analizador." "
" " " " " " " " " " " " " " " " "
La Figura " "V.5 ilustra " este proceso" " " para seleccionar
" " " el" bit de menor" peso " (b0) " de
" la "
" " " " " " " " " " " " " "
" " variable
primera " Fio0Pin, " configurando
" " el" valor
" 0x00000001 " " en" el" campo and " " "
" " " " " " " " " " " " " "
" " "
mask y estableciendo " " " un rango" " "
de amplitud "min/max "
de" 0x0-0x1." " "
Siguiendo " "
un
" " " " " " " " " " " " "
proceso
" " similar, se configuran
" " " " " "" " " el resto de variables.
" " " "" " " Así, para
" " " " seleccionar el
" " "" bit b3 " " "
en la Fio0Pin inferior se escribe 0x00000008 en su campo and mask.
"notA:
" " Otra " " "forma " " "especificar
de " " " directamente" " " pin
un "" de "" un" puerto "" " " en el analizador
" "" " " "
" "
lógico, por ejemplo " " " " " "
" " el "pin" 18 del " puerto " "1, sería " la " siguiente:" hacer" clic" en" " de"la "ven- " "
tana del analizador " lógico
" (Figura
" " V.1) e
" " introducir " el texto FIO1PIN.18.
"
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
aneXo V - simUlación de los PUertos en el analiZador lógico
" " " " " " " " " " " " " " " " " " 107 "
" " " " " " " "
"
FigurA V.5. Selección
" " " " b0" del
del bit " "p0
" "puerto " y conFigurAción
" " " " Su eScAlA.
de
" " " " " " "
"
" " " "
" modificación interactiva " de variables
" " " " " "
" " " " " " " " " " " " " " " "
"" " " " " poder interactuar
"
Para " " " con el programa " " " y así modificar " " la " variable " sentido " en" " "
" "
" tiempo de
" " " " " "
ejecución "
" " " " y que "
cambie" " " el " "
sentido
"" " de " " "
desplazamiento
" " " " "
en la "
activación
" de " " " "
" " " " "pines
los " P0.[0..3]," se
" creará
" " una ventana " "" compuesta
" " " " de" dos " botones:
" "" ‘right’
" y ‘left’." " "
" " Al " "hacer clic "" sobre
" " ellos
" " "asignarán
" " " " los " " " valores
" " " ‘sentido=0’
"" " y" ‘sentido=1’,
" " " " " respecti- " " "
" " vamente.
"" Para ello, " se comienza
" " visualizando
" " la ventana command
" " haciendo
" clic
" " "sobre "el "icono " " ," si" no" estaba" ya" visualizada" en" el" interface" gráfico" del" simulador.
" " " Escriba a continuación" " del" símbolo
" de" prompt
" " (>) " de la ventana
" " " el
command " "
" comando define button " " " "
“right”,”sentido=0” " ""y pulse enter (Figura V.6).
" " " " " " " " " " " " " "
" " " " " ""
"
"
FigurA V.6. introducción de unA orden en lA VentAnA de command.
" " "
"" "
" " " "
" " " "" " "" " " " "
"" " " " " "" " "" " " " " "" " " " " " " " " " "
" """ " " " "" " " """ " " " " " "" "" " " " " " " " " " "
" " " " " "" " "" " " " "" " " " " " " " "" " "
108 Prácticas de laboratorio de sistemas electrónicos digitales
"
" " " " " " " " " " "
A continuación teclee el otro comando define button “left”,”sentido=1” y
" pulse" enter. " El" resultado
" es la "ventana
" con dos
" botones que aparece " " en "la Figura
" " "
" " V.7." Tenga
" presente
" " esto
que " sólo tiene
" "sentido
" en" el simulador.
" " En una "aplicación
" " " "
" "ejecutándose
" " " una
sobre " placa con" un microcontrolador
" " real" se podría
" "controlar
" el "
" " sentido
" de activación,
" " leyendo
" " el valor que" se introduzca
" " por
" otro" pin
" de un puer-
" " " "
" " to "determinado. "
"
"
"
"
FigurA V.7. V
" entAnA
" con
" doS
" botoneS
" " pArA" interActuAr
" " con
" el progrAmA
" .
"
FigurA V.9. " ViSuAlizAción
" " de
" " lA VentAnA
" " del" puerto
" 0. "
" " " " " " " " " " "" " "" " " " " " " "" " " " " "
La ventana que aparece es la de la Figura V.10. Ejecute el programa paso a
" " " " " " " "
" " se" activan
" " " " " " los
" pines P0.[0..3].
" " " " " " "
paso y observe cómo progresivamente
" " " " " "
"
" " " " " " " " "
" FigurA V.10. V
" entAnA
" de" ViSuAlizAción
" " del
" " " p0.
puerto
"
VI.1. IntroduccIón
"
fIGurA" VI.1.
" r utA
" " de Acceso
" " Al InstAlAdor
" " del" controlAdor
" " " usB
" " pArA
""
el J-lInk de Segger.
" " " " " " " " " " " " " " "
" " " " " "
Una vez instalado el controlador (Driver) USB de para el adaptador J-Link,
" " " un
para depurar " programa
" " son necesarios
" "
los pasos siguientes:
" " " " " " " "
" 1. Conexión
" " de la " Tarjeta de desarrollo (LPC1768-Mini-DK2).
" 2. Configuración
" " del entorno
" de desarrollo Keil µVision®4.
3. Edición del programa.
4. Depuración del programa.
" " " " " "" "
A continuación se describe detalladamente cada uno de estos pasos.
"
fIGurA VI.2. Menú en el que se puede seleccIonAr el tIpo de depurAcIón que
" " " " " " " " " " " " " " " " " " " " "
se VA A reAlIzAr: Simulator u on-Chip
" " " " " " " " " " " " " " " " "
" Aparte
" " de" las demás opciones
" " que "proporciona
" " el cuadro
" de" diálogo
" " mostrado
""
en la Figura VI.2, es importante que no se modifiquen las librerías (cPU DLL,
" Dialog" DLL)" y Drive DLL).
" " " " " " " " " " " " "
" La" depuración" on-chip
" permite"el volcado
" " "de" programas " en la "memoria
" "
Flash, " " "
" para ello,
" se" debe seleccionar
" " el" hardware" para
" " depuración
" "" que se va a emplear
"
" " " " " " " " " " " " " " " " " " " " " "
" "
114 PráctIcaS De LaboratorIo De SIStemaS eLectróNIcoS DIgItaLeS
" " " " " " " " " " " " " " " "
" desde" la solapa
" " de
Utilities " las mismas" opciones
" " " "según "se muestra
del proyecto, " " "
" "en la" Figura
" "
VI.3. " " " " " " " " " " " "
" " " " " " " " " "
"
fIGurA VI.3. Menú que perMIte seleccIonAr el hArdwAre con el que se VA A
" " " " " " " " "
reAlIzAr el VolcAdo en flAsh de los proGrAMAs A depurAr.
" " " " " " " " " " " " " " " "
" " "Una "vez seleccionado
" " "
el Hardware "de depuración,
" " se pulsa" " " "y en el " "
Settings "
" " " siguiente " cuadro
" "
de diálogo, " " " Flash "Download,
solapa " " se seleccionan " las" caracte-
" " " "
" rísticas
" " de la Flash" del LPC1768,
" " " según
" se" muestra
" " en la" Figura " VI.4." A" esta" " "
" misma
" " ventana
" " también se tiene
" " acceso pulsando
" " el botón
" Settings
" del cuadro
" " de " "
" " diálogo
" mostrado
" en la Figura
" " VI.2.
" " "
" "
" " " "" " " " " " " " " " " "
" " " " " " " " " " " " " "
" " " vI "- gUÍa De "coNFIgUracIóN
aNexo " " "DeL aDaPtaDor
" J-LINK" Para carga" Y DePUracIóN
" " " 115 " " "
" " " " " " " " " "
"
fIGurA VI.4. especIfIcAcIones soBre lA MeMorIA flAsh del lpc1768.
" " " " " " " " "
" " Desde " esa misma " " "ventana," en la pestaña
" " "Debug se debe
" seleccionar
" " como
" " "
" " interface
" " el USb, mientras
" " " " " " ® " " "
que el propio Keil µVision 4 actualiza los datos" " " "
" " " referidos " al" J-Link, como
" son" el" número
" " serie" (SN)
de " y la versión
" de" Hardwa- " " " "
" re" (HW). " Si se desea " hacer" el" seguimiento
" " " en tiempo
" " real" de una
" variable
" " se " " "
" " seleccionar
debe " " " como Port" el "SW (serial" wire) " y pulsar
" "
sobre auto clk" para " " "
" " que " tome la frecuencia
" " reloj
de " " del dispositivo.
" Las "opciones que deben estar
seleccionadas se muestran en la Figura VI.5, resaltando aquellas que es nece-
" " sario modificar.
"
fIGurA VI.5. especIfIcAcIones de depurAcIón del J-lInk.
" " " " " " "
"
fIGurA
"
VI.6. opcIones
" "
requerIdAs pArA el Muestreo AdecuAdo de VArIABles en
" " " " " " " " "
depurAcIón.
"
" "
Una vez configuradas las opciones anteriores, la depuración on-chip se reali-
" " " "los mismos
za siguiendo " pasos que "en "la opción de "Simulación,
" " iniciándola
" con " "
" " opción
la " " Start/Stop
" " Debug
" " ver Figura" VI.7.
Session, " " " " " "
"" " " " " " " " " "
"
fIGurA VI.7.
" " opcIón
" de
" InIcIo
" " de
" lA depurAcIón
" " J-lInk.
eMpleAndo
"
" " "" " " " " " " " " " "
El entorno Keil µVision®4 también permite la compilación de un mismo pro-
" " " " " " " " " " " " " " "
yecto para ser depurado en simulación o cualquier otro medio, como el J-Link.
" " " " " " " " " " " " " " "
Para ello se pueden generar distintos proyectos de manera paralela y que se modi-
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
" " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " "
"
"
a) """"""""""""""""""""""""""""""""""""""""""""""""" b)
"
"""""""""""""""""""""""""""""" "
fIGurA VI.8. creAr nueVo proyecto utIlIzAndo el Gestor de coMponentes.
" " " " " " " " " " "
"""""""""""""""""""""""""""""" " """"""""""""""""""""""""""""""""""""""""""""""""" "
" " " " " " " " " " " " " " " " " "
" Una" vez generadas " " las dos copias
"" "" " " " " "
del proyecto, "" " " " "es
una "
posible
" " " "cambiar
" de
"
copia a la otra usando el menú desplegable situado en la barra de comandos, como
se" recoge
"
en la" Figura
" "
VI.9." " " " " " " " " " " " "
" " " " " " " " " " " " " " " "
"
" " " " " " " " " " " " " " "
" "
"
fIGurA VI.9.
" " Menú
" despleGABle
" " que
" perMIte
" " seleccIonAr
" " " el
" "tIpo
" de proyecto
"
que se está depurAndo.
"
"
"
" " " " " " "
" VI.2.3. depuración del programa
" " " " " " "
El programa que se va a utilizar como punto de partida es el programa llamado
DepuracionJLINK, cuyo funcionamiento consiste en hacer parpadear el LED 1. La
" " "
aNexo vI - gUÍa De coNFIgUracIóN DeL aDaPtaDor J-LINK Para carga Y DePUracIóN 119
"
" " "
cadencia" de" encendido
" " "
y apagado " LED se multiplica
del " por 2 si se mantiene pulsa-
" " "
do el pulsador KEY2. Este programa está formado "por dos ficheros .C (Depura-
" " " " " " " " "
" " " "" "" "" "
y" un fichero
" " " " " "
cionJLINK.c y delay.c) include (delay.h)." Debe añadir los dos ficheros
" " "" " " "" " " " " " " "
.C al proyecto, pero no el fichero " include, ya que éste se añade automáticamente.
" " " " " " " " " " "
" Una vez " generado
" " " " el proyecto
" " basado " " en el" programa " " DepuracionJLINK
" " y de "
" " " "haber " configurado
" " el adaptador
" " " " " J-Link,
" " se "debe " proceder
" "" " " a realizar
" " el volcado
" " del "
" " " " "" " en "la memoria
programa "" " " " Flash
" " " del " " microcontrolador
"" " " "" pulsando" " Start Debug
" " Ses- "
" " " " " " " " " " "
" " sion " ( " " ) "" y" debe" aparecer la pantalla del
"" depurador. Los pasos" para" depurar" " "
el
" " "" " " " " " " "" " " "
" programa
" " empleando" " " el J-Link "son los siguientes:
" " " " " " " " " " " " " " "
" " 1. El" primer " " " "paso " para " " comprobar
" " " " el" "funcionamiento" " "" del" programa
" " es "realizar" "
" " " una "ejecución " " " paso " " a "paso del " mismo." " " "Para " " " ello,
" " coloque " " breakpoints " " en las "
" " " " " " líneas "" " " " " " " " " " " ""
del programa en las que se produce un cambio en el estado del pin " " " "
" " 3.25" de salida " " que lleva " "conectado el LED1. " " " " " " " "
" " " " " " " " "
2.
" Una " vez " puestos
" " los "breakpoints " se puede " " realizar
" " una" ejecución " "continua
" " "
" " " " " " " " """ " " " " "que" "la "ejecución " " " " ""
del" programa, " comprobando se "para en la" línea " "
que pro-
" " " " " " " " " " " "
" "
duce "
el encendido
" "
del LED " "
D1, tal"
y como "
se
"
muestra "
en la Figura
" "
VI.10, "
" " " y que " cambia
" " "" " el" estado " " del " LED " " de "" la "tarjeta. " " " " " " " " " "
" " " 3. A " continuación
"" " " " " "" se debe " " hacer" " " un " seguimiento
" " "" " " del
" estado
" " " de los " pines a
través de la ventana del puerto GPIO 1 del Fast Interface. En esta ven-
" " " tana se debe " " ver " reflejado
" " " del"
el estado pin" 3.25" " durante " " la "ejecución
" " " "
del
"
programa. " " " " " " " " " " " " " " " " "
" " " " "
" "
" " fIGurA
" VI.10.
" d" epurAcIón
" " " " ""
eMpleAndo" breakpointS
" " del proGrAMA
" "" eJeMplo.
" " " " " " "" " " " " "" "" " " " "" " " " " "
" " " " " " " " " " "" " " "" " " " " " " "" " " " " " " "
" " " " " " " "
"" " " "
" " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " "
120 PráctIcaS De LaboratorIo De SIStemaS eLectróNIcoS DIgItaLeS
4. También se puede hacer un seguimiento del estado del pin 3.25 empleando
el analizador lógico, tal y como se estudió en la parte no presencial. Para
ello, basta con añadir el registro fIo3pIn.25 al analizador lógico. Depu-
rando en ejecución continua y manteniendo los breakpoints se puede deter-
minar el tiempo que está encendido y apagado el LED pulsando y sin pul-
sar el pulsador KEY2.
programa depuracionJlInk.c
" "
A continuación se muestra el código del Programa VI.1 DepuracionJLINK.c
empleado " como punto de partida
"
para el estudio de la depuración con el J-Link.
" programa
Este " produce
" " el" parpadeo
" " del LED " D1
" con una frecuencia
" que" depende
" "
" " " " " " " " " " " " " " " " "
de la pulsación del KEY2.
" " " " " " " " " " " "
1,"ockp0e",1"
%kpenwfg"$fgnc{0j$"
%kpenwfg"$nre39zz0j$"
"
xqkf"eqphkiaIRKQ"*xqkf+"
}"
""NREaIRKQ5/@HKQFKT"~?"*3>>47+=" " 1,"R5047"fghkpkfq"eqoq"ucnkfc",1""
""NREaIRKQ4/@HKQFKT"(?"\*3>>34+=" " 1,"R4034"fghkpkfq"eqoq"gpvtcfc",1""
""NREaIRKQ5/@HKQUGV"~?"*3>>47+=" " 1," crciq" gn" NGF" eqpgevcfq" c" R5047"
,1"
"
""""""
""kpv"ockp"*xqkf+"
}""
"""
eqphkiaIRKQ*+="
yjkng*3+"}"
"
""kh"**NREaIRKQ4/@HKQRKP"("*3>>34++??2+}""1,"rwnucfqt"rwnucfqA",1"
""""NREaIRKQ5/@HKQRKP"~?"*3>>47+=""""""" " 1,"crciq"NGF",1"
""""fgnc{a3ou"*422+=" " " """ 1,"tgvctfq"fg"422ou",1"
""""NREaIRKQ5/@HKQRKP"(?"\*3>>47+=""""""""1,"gpekgpfq"NGF",1"
""""fgnc{a3ou"*622+=" " " """ 1,"tgvctfq"fg"622ou",1"
"""" "
""gnug"}"
""""NREaIRKQ5/@HKQRKP"~?"*3>>47+=" " 1,"crciq"gn"NGF",1"
""""fgnc{a3ou"*322+=" " " " 1,"tgvctfq"fg"322ou",1"
""""NREaIRKQ5/@HKQRKP"(?"\*3>>47+=" " 1,"gpekgpfq"gn"NGF",1"
""""fgnc{a3ou"*422+=" " " " 1,"tgvctfq"fg"422ou",1"
"""" ""
"" "
"
"
"
"
" " "
" "
"
"
"
" " "
""""
"""" " "
""
"" "
" "
"
""""
"""" "
" " " "
" " " "
" "
" " " "
" "
"
""""
"""" "
" "
" "
" "
" "
" "
" "
" " " "
" " "
""""
"""" "
" " " "
""" "
" "
" " " "
" " "
""""
"""" "
" "
" "
" "
" "
" "
" "
" " " "
" " "
""""
"""" "" ""
"" " "
""
aNexo vI - gUÍa De coNFIgUracIóN DeL aDaPtaDor J-LINK Para carga Y DePUracIóN 121
"
"
"
"
"
"
"
"
"
1,"fgnc{0e",1" " "
"
%kpenwfg"$nre39zz0j$" "
"
"
"
"
"
"
"
xqkf"fgnc{a3ou*wkpv54av"ou+" " "
}""
"""" wkpv54av"k="
"""" " "
""""
"""" hqt*k?2=k>ou,364:5=k--+=" "
"
"
"
"
"
"
1,"fgnc{0j",1"
" " "
"
"
"
"
xqkf"fgnc{a3ou*wkpv54av"ou+=
" " "
"
"
"
proGrAMA VI.1. códIGo del proGrAMA DepuraCionJlink.C.
"" "" "" "" ""
LPC17xx.h"
" " " " " " " " " " " " "
Para facilitar la programación en lenguaje C de los microcontroladores de
" " " " " " " " " " "
la familia LPC17xx, ARM proporciona el fichero lPc17xx.h. En dicho
" " " " " " " " " " "
fichero se puede encontrar la definición de los registros estudiados anterior-
" "
mente, utilizando la misma nomenclatura que en Manual de Usuario del
LPC17xx.
" " " " " " " " " " " " "
En el caso
" de" los
" puertos
" "GPIO,
" " la estructura
" LPC_GPIO_TypeDef
" " " " defi- " " "
ne la estructura de dichos puertos. Como se puede ver en la tabla siguiente
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
"
"
" " "" "
"
"
" " " " " " "
" " " " " " " "
" " " " " " " " " " " " " "
124 " " " " de
Prácticas " laboratorio
" " electrónicos
de sistemas " " "digitales
" "
" "
"dicha
" "estructura
" " " formada
está " " "
por varias " se definen
uniones, donde " " los "regis-
" "
" " " " " " " " " " " " "
tros de configuración. En dichas uniones se puede ver que se declaran los " " "
" " " " " " " " " " " " " " " "
registros enteros, divididos en parte alta y parte baja, y divididos en cuatro
" " " " " " " " " " " " " " "
bytes.
"
"
"
Tgikuvtq"HKQFKT"gpvgtq"
Rctvg"dclc"{"cnvc"fgn"tgikuvtq"HKQFKT""
"
Nqu"ewcvtq"d{vgu"fgn"tgikuvtq"HKQFKT""
"
"
"
"
" " " " " "" " "
"
"
"
"
"
" "
ÈÈÈÈÈÈÈÈÈÈ00"
"
4̋̌Æœßøæ"(+1%.4"̋ºß̋øæ"
""
2̇øß̋"̈̇ª̇" "̇Øß̇"¸̋Ø"ø̋̌Æœßøæ"(+1%.4""
"
"
.æœ"̊̇ßøæ"̈ ß̋œ"¸̋Ø"ø̋̌Æœßøæ"(+1%.4""
"
"
" "
En el "fichero LPC17xx.h,
" " "
también se " encuentran
"
definidas:
" "
u " " "base
La dirección " de" la" zona de" memoria
" " "de los GPIO:
En ambas líneas de código se escribe un ‘1’ en los bits 1 y 3 del registro FIO-
SET del Puerto 0, sin necesidad de recordar la localización de memoria de dicho
registro.
Anexo VIII
VIII.1. IntRoduccIón
Cada una de las entradas de los puertos GPIO0 y GPIO2 puede ser configura-
da como interrupción externa activa por flanco de subida, de bajada o por los dos
flancos. Esto se realiza con los registros IO0IntEnR e IO2IntEnR para la activa-
ción por flanco de subida, y los registros IO0IntEnF e IO2IntEnF para la activa-
ción por flanco de bajada (apartado 9.5.6 del “LPC17xx User Manual Rev4.1”).
Las interrupciones asociadas al GPIO0 y GPIO2 comparten en el NVIC los
recursos con la Interrupción Externa 3 (/EINT3) con el número de interrupción
IRQ21.
Los flags de interrupción asociados a cada una de las líneas de los puertos
GPIO0 y GPIO2 se almacenan en los registros IO0IntStatR e IO2IntStatR cuan-
do se produce un flanco de subida y en IO0IntStatF e IO2IntStatF cuando se pro-
duce un flanco de bajada. En el registro IOIntStatus se puede comprobar en un bit
si hay alguna interrupción pendiente del GPIO0 y en otro bit si hay alguna del
GPIO2. Para borrar los flags de interrupción asociados a cada pin de los puertos
es necesario escribir un 1 en los registros IO0IntClr e IO2IntClr.
132 Prácticas de laboratorio de sistemas electrónicos digitales
Si los programadores utilizan las funciones CMSIS, su código puede ser reu-
tilizable en otros procesadores de la familia ARM y con otro entorno de compila-
ción diferente.
Para utilizar las funciones CMSIS es necesario incluir en los ficheros .C los
includes core_cm3.h y system_lPc17xx.h. Estos se incluyen automáticamente al
añadir el fichero lPc17xx.h y en el proyecto el fichero core_cm3.c. Los ficheros
.H se encuentran en el directorio C:/Keil/CMSIS/INCLUDE y el fichero .C en
C:/Keil/ARM/Startup.
anexo Viii - interruPciones externas del lPc1768 133
listado de funciones cmsis relacionadas con el acceso a los registros " del"
corex-m3
" " " " " " " " " " " " "
xqkf"aagpcdngakts"*xqkf+"
Inqdcn"Kpvgttwrv"gpcdng"*RTKOCUM"?"2+"wukpi"vjg"kpuvtwevkqp"ERUKG"k"
"
xqkf"aafkucdngakts"*xqkf+"
Inqdcn"Kpvgttwrv"fkucdng"*RTKOCUM"?"3"+"wukpi"vjg"kpuvtwevkqp"ERUKF"k"
"
wkpv54av"aaigvaEQPVTQN"*xqkf+"
Tgvwtp"Eqpvtqn"Tgikuvgt"Xcnwg"wukpi"vjg"kpuvtwevkqp"OTU""
"
xqkf"aaugvaEQPVTQN"*wkpv54av"xcnwg+""
Ugv"EQPVTQN"tgikuvgt"xcnwg"wukpi"vjg"kpuvtwevkqp"OUT""
"
wkpv54av"aaigvaKRUT"*xqkf+"
Tgvwtp"KRUT"Tgikuvgt"Xcnwg"wukpi"vjg"kpuvtwevkqp"OTU"
"
wkpv54av"aaigvaCRUT"*xqkf+"
Tgvwtp"CRUT"Tgikuvgt"Xcnwg"wukpi"vjg"kpuvtwevkqp"OTU"
"
wkpv54av"aaigvazRUT"*xqkf+"
Tgvwtp"zRUT"Tgikuvgt"Xcnwg"wukpi"vjg"kpuvtwevkqp"OTU"
"
wkpv54av"aaigvaRUR"*xqkf+""
Tgvwtp"Rtqeguu"Uvcem"Rqkpvgt"*RUR+"wukpi"vjg"kpuvtwevkqp"OTU""
"
xqkf"aaugvaRUR"*wkpv54av"VqrQhRtqeUvcem+"
Ugv"Rtqeguu"Uvcem"Rqkpvgt"*RUR+"xcnwg"wukpi"vjg"kpuvtwevkqp"OUT""
"
wkpv54av"aaigvaOUR"*xqkf+"
Tgvwtp"Ockp"Uvcem"Rqkpvgt"*OUR+"wukpi"vjg"kpuvtwevkqp"OTU""
"
xqkf"aaugvaOUR"*wkpv54av"VqrQhOckpUvcem+"
Ugv"Ockp"Uvcem"Rqkpvgt"*OUR+"wukpi"vjg"kpuvtwevkqp"OUT""
"
wkpv54av"aaigvaRTKOCUM"*xqkf+"
Tgvwtp"Rtkqtkv{"Ocum"Tgikuvgt"*RTKOCUM+"wukpi"vjg"kpuvtwevkqp"OTU"
"
xqkf"aaugvaRTKOCUM"*wkpv54av"xcnwg+""
Cuukip"xcnwg"vq"Rtkqtkv{"Ocum"Tgikuvgt"*RTKOCUM+"wukpi"vjg"kpuvtwevkqp"OUT"
"
xqkf"aagpcdngahcwnvakts"*xqkf+""
Inqdcn"Hcwnv"gzegrvkqp"cpf"Kpvgttwrv"gpcdng"*HCWNVOCUM?2+"wukpi"kpuvtwevkqp"ERUKG"h"
"
xqkf"aafkucdngahcwnvakts"*xqkf+"
Inqdcn"Hcwnv"gzegrvkqp"cpf"Kpvgttwrv"fkucdng"*HCWNVOCUM?3+"wukpi"kpuvtwevkqp"ERUKF"h"
"
wkpv54av"aaigvaDCUGRTK"*xqkf+"
"Tgvwtp"Dcug"Rtkqtkv{"*DCUGRTK+"wukpi"vjg"kpuvtwevkqp"OTU""
"
xqkf"aaugvaDCUGRTK"*wkpv54av"xcnwg+"
Ugv"Dcug"Rtkqtkv{"*DCUGRTK+"wukpi"vjg"kpuvtwevkqp"OUT"
"
wkpv54av"aaigvaHCWNVOCUM"*xqkf+"
Tgvwtp"Hcwnv"Ocum"Tgikuvgt"*HCWNVOCUM+"wukpi"vjg"kpuvtwevkqp"OTU"
"
xqkf"aaugvaHCWNVOCUM"*wkpv54av"xcnwg+"
Cuukip"xcnwg"vq"Hcwnv"Ocum"Tgikuvgt"*HCWNVOCUM+"wukpi"vjg"kpuvtwevkqp"OUT"
"
" " " " " " " " " "
"
"
" " " "
" " " " " " ""
"
" " "
" " " " " " ""
"
" " " "
" " " " " " " "
"
" " "
" " " " " " " " "
"
" " " "
" " " " " " " " " " "
134
" Prácticas de laboratorio de sistemas electrónicos digitales
" " " " " " " " " "
" listado de funciones cmsis relacionadas más concretamente con el nVic
"
xqkf"PXKEaUgvRtkqtkv{Itqwrkpi"*wkpv54av"Rtkqtkv{Itqwr+"
Ugv"vjg"Rtkqtkv{"Itqwrkpi"*Itqwru"0"Uwditqwru+""
"
wkpv54av"PXKEaIgvRtkqtkv{Itqwrkpi"*xqkf+"
" " " " " " "
Igv"vjg"Rtkqtkv{"Itqwrkpi"*Itqwru"0"Uwditqwru+""
"
xqkf"PXKEaGpcdngKTS"*KTSpaV{rg"KTSp+"
Gpcdng"KTSp""
"
" " " " "
xqkf"PXKEaFkucdngKTS"*KTSpaV{rg"KTSp+"
" "
Fkucdng"KTSp""
"
wkpv54av"PXKEaIgvRgpfkpiKTS"*KTSpaV{rg"KTSp+"
Tgvwtp"3"kh"KTSp"ku"rgpfkpi"gnug"2""
"
xqkf"PXKEaUgvRgpfkpiKTS"*KTSpaV{rg"KTSp+"
Ugv"KTSp"Rgpfkpi""
"
xqkf"PXKEaEngctRgpfkpiKTS"*KTSpaV{rg"KTSp+"
Engct"KTSp"Rgpfkpi"Uvcvwu""
"
wkpv54av"PXKEaIgvCevkxg"*KTSpaV{rg"KTSp+"
Tgvwtp"3"kh"KTSp"ku"cevkxg"gnug"2""
"
xqkf"PXKEaUgvRtkqtkv{"*KTSpaV{rg"KTSp."wkpv54av"rtkqtkv{+"
Ugv"Rtkqtkv{"hqt"KTSp"
"
wkpv54av"PXKEaIgvRtkqtkv{"*KTSpaV{rg"KTSp+"
Igv"Rtkqtkv{"hqt"KTSp""
"
wkpv54av" PXKEaGpeqfgRtkqtkv{" *wkpv54av" Rtkqtkv{Itqwr." " wkpv54av" RtggorvRtkqtkv{.""
wkpv54av"UwdRtkqtkv{+"
Gpeqfg"rtkqtkv{"hqt"ikxgp"itqwr."rtggorvkxg"cpf"uwd"rtkqtkv{""
"
xqkf" PXKEaFgeqfgRtkqtkv{" *wkpv54av" Rtkqtkv{." " wkpv54av" Rtkqtkv{Itqwr." " wkpv54av,"
rRtggorvRtkqtkv{.""wkpv54av,"rUwdRtkqtkv{+"
Fgeqfg"ikxgp"rtkqtkv{"vq"itqwr."rtggorvkxg"cpf"uwd"rtkqtkv{""
"
xqkf"PXKEaU{uvgoTgugv"*xqkf+"
Tgugvu"vjg"U{uvgo""
" " " " " " " " " " "
""" " " " " " " " " "
""" " " " " "
"
""" " " " " " " " " "
""" " " "
"
"
" "
" A lAs InteRRupcIones " " " " " " " "
"
Tabla de nombres de las diferentes rutinas de interrupción obtenidas de la
" " " " " " " " " " " " " " " "
Tabla de Vectores
"
de Interrupción
" " " "
definida en"" el archivo startup_lPc17xx.h.
""""""""""""""""FEF"""""TgugvaJcpfngt"""""""""""""="Tgugv"Jcpfngt"
""""""""""""""""FEF"""""POKaJcpfngt"""""""""""""""="POK"Jcpfngt"
""""""""""""""""FEF"""""JctfHcwnvaJcpfngt"""""""""="Jctf"Hcwnv"Jcpfngt"
""""""""""""""""FEF"""""OgoOcpcigaJcpfngt"""""""""="ORW"Hcwnv"Jcpfngt"
""""""""""""""""FEF"""""DwuHcwnvaJcpfngt""""""""""="Dwu"Hcwnv"Jcpfngt"
""""""""""""""""FEF"""""WucigHcwnvaJcpfngt""""""""="Wucig"Hcwnv"Jcpfngt"
""""""""""""""""FEF"""""2"""""""""""""""""""""""""="Tgugtxgf"
""""""""""""""""FEF"""""2"""""""""""""""""""""""""="Tgugtxgf"
""""""""""""""""FEF"""""2"""""""""""""""""""""""""="Tgugtxgf"
""""""""""""""""FEF"""""2"""""""""""""""""""""""""="Tgugtxgf"
""""""""""""""""FEF"""""UXEaJcpfngt"""""""""""""""="UXEcnn"Jcpfngt"
""""""""""""""""FEF"""""FgdwiOqpaJcpfngt""""""""""="Fgdwi"Oqpkvqt"Jcpfngt"
""""""""""""""""FEF"""""2"""""""""""""""""""""""""="Tgugtxgf"
""""""""""""""""FEF"""""RgpfUXaJcpfngt""""""""""""="RgpfUX"Jcpfngt"
""""""""""""""""FEF"""""U{uVkemaJcpfngt"""""""""""="U{uVkem"Jcpfngt"
""""""""""""""""="Gzvgtpcn"Kpvgttwrvu"
""""""""""""""""FEF"""""YFVaKTSJcpfngt""""""""""""="38<"Ycvejfqi"Vkogt"
""""""""""""""""FEF"""""VKOGT2aKTSJcpfngt"""""""""="39<"Vkogt2"
""""""""""""""""FEF"""""VKOGT3aKTSJcpfngt"""""""""="3:<"Vkogt3"
""""""""""""""""FEF"""""VKOGT4aKTSJcpfngt"""""""""="3;<"Vkogt4"
""""""""""""""""FEF"""""VKOGT5aKTSJcpfngt"""""""""="42<"Vkogt5"
""""""""""""""""FEF"""""WCTV2aKTSJcpfngt""""""""""="43<"WCTV2"
""""""""""""""""FEF"""""WCTV3aKTSJcpfngt""""""""""="44<"WCTV3"
""""""""""""""""FEF"""""WCTV4aKTSJcpfngt""""""""""="45<"WCTV4"
""""""""""""""""FEF"""""WCTV5aKTSJcpfngt""""""""""="46<"WCTV5"
""""""""""""""""FEF"""""RYO3aKTSJcpfngt"""""""""""="47<"RYO3"
""""""""""""""""FEF"""""K4E2aKTSJcpfngt"""""""""""="48<"K4E2"
""""""""""""""""FEF"""""K4E3aKTSJcpfngt"""""""""""="49<"K4E3"
""""""""""""""""FEF"""""K4E4aKTSJcpfngt"""""""""""="4:<"K4E4"
""""""""""""""""FEF"""""URKaKTSJcpfngt""""""""""""="4;<"URK"
""""""""""""""""FEF"""""UUR2aKTSJcpfngt"""""""""""="52<"UUR2"
""""""""""""""""FEF"""""UUR3aKTSJcpfngt"""""""""""="53<"UUR3"
""""""""""""""""FEF"""""RNN2aKTSJcpfngt"""""""""""="54<"RNN2"Nqem"*Ockp"RNN+"
""""""""""""""""FEF"""""TVEaKTSJcpfngt""""""""""""="55<"Tgcn"Vkog"Enqem"
""""""""""""""""FEF"""""GKPV2aKTSJcpfngt""""""""""="56<"Gzvgtpcn"Kpvgttwrv"2"
""""""""""""""""FEF"""""GKPV3aKTSJcpfngt""""""""""="57<"Gzvgtpcn"Kpvgttwrv"3"
""""""""""""""""FEF"""""GKPV4aKTSJcpfngt""""""""""="58<"Gzvgtpcn"Kpvgttwrv"4"
""""""""""""""""FEF"""""GKPV5aKTSJcpfngt""""""""""="59<"Gzvgtpcn"Kpvgttwrv"5"
""""""""""""""""FEF"""""CFEaKTSJcpfngt""""""""""""="5:<"C1F"Eqpxgtvgt"
""""""""""""""""FEF"""""DQFaKTSJcpfngt""""""""""""="5;<"Dtqyp/Qwv"Fgvgev"
""""""""""""""""FEF"""""WUDaKTSJcpfngt""""""""""""="62<"WUD"
""""""""""""""""FEF"""""ECPaKTSJcpfngt""""""""""""="63<"ECP"
""""""""""""""""FEF"""""FOCaKTSJcpfngt""""""""""""="64<"Igpgtcn"Rwtrqug"FOC"
""""""""""""""""FEF"""""K4UaKTSJcpfngt""""""""""""="65<"K4U"
""""""""""""""""FEF"""""GPGVaKTSJcpfngt"""""""""""="66<"Gvjgtpgv"
""""""""""""""""FEF"""""TKVaKTSJcpfngt""""""""""""="67<"Tgrgvkvkxg"Kpvgttwrv"Vkogt"
""""""""""""""""FEF"""""OERYOaKTSJcpfngt""""""""""="68<"Oqvqt"Eqpvtqn"RYO"
""""""""""""""""FEF"""""SGKaKTSJcpfngt""""""""""""="69<"Swcftcvwtg"Gpeqfgt"Kpvgthceg"
""""""""""""""""FEF"""""RNN3aKTSJcpfngt"""""""""""="6:<"RNN3"Nqem"*WUD"RNN+"
""""""""""""""""FEF"""""WUDCevkxkv{aKTSJcpfngt""""="6;<"WUD"Cevkxkv{"kpvgttwrv"vq"ycmgwr"
""""""""""""""""FEF"""""ECPCevkxkv{ KTSJcpfngt""""="72<"ECP"Cevkxkv{"kpvgttwrv"vq"ycmgwr"
"
" " " " " " " " " " " " "
Por ejemplo, las funciones de interrupción de las interrupciones externas de
" " " "
definen
""""""" así:"
"
" " " "
""""""" "
"
" " " "
""""""" "
"
" " " "
""""""" "
"""""""""""""""" """"" """""""""""" " " " " "
"""""""""""""""" """"" """""""""""" " " "
"""""""""""""""" """"" """"""""""" " " "
"""""""""""""""" """"" """""""""""" " " " " "
"""""""""""""""" """"" """""""""" " " " " "
"""""""""""""""" """"" """""""""""" " " " " "
"""""""""""""""" """"" """"""""""" " " " " " "
"""""""""""""""" """"" """" " " " " " " "
"""""""""""""""" """"" """" " " " " " " "
140
" Prácticas de laboratorio de sistemas electrónicos digitales
" " " " " " " " " " " " "
xqkf"GKPV2aKTSJcpfngt"*xqkf+"}"
"""""""ÈÈ0"
"
xqkf"GKPV3aKTSJcpfngt"*xqkf+"}"
"""""""ÈÈ0"
"
xqkf"GKPV4aKTSJcpfngt"*xqkf+"}"
"""""""ÈÈ0"
"
xqkf"GKPV5aKTSJcpfngt"*xqkf+"}"
"""""""ÈÈ0"
Ix.1. IntroduccIón
El Reloj para la conversión A/D se obtiene a partir del reloj del APB. Cada
conversor incluye un divisor para obtener a partir de este reloj el reloj final de
conversión que necesita el proceso de aproximaciones sucesivas (máximo 13
MHz).
142 Prácticas de laboratorio de sistemas electrónicos digitales
Los pines en los que se conectan las entradas analógicas son AD0.7…AD0.0
(pines configurables de P0 y P1) accesibles varias de ellas en la tarjeta LPC1768-
Mini-DK2.
Los pines de las tensiones de referencia VREFN y VREFP suministran los
niveles de tensión de referencia para el conversor.
Los pines de alimentación analógica y masa VDDA y VSSA alimentan al blo-
que de conversión.
" " " " " " "
"
"
"
"registro de control A/d (Ad0cr - 0x4003 4000)
" La funcionalidad de los bits del registro es, entre otras:
" " " " " " " " " " " " " " " "
" ""
" " " " " " " "" " " "
" " " "" " "
144 " " " "
Prácticas de" laboratorio
" " " " electrónicos
de sistemas " "digitales
" "
" " " " " " " " "
•" " " cuándo " y" cómo se
Controlar " "realiza " la conversión" si no se ha programado
" " " "
conversión continua. " " " " " " " " " " "
"
"
"
" " " " " " " " " " "
" "
registro de habilitación de Interrupciones. A/d Interrupt enable register
" " " " " " " " " " " " "
(Ad0Inten
" "
- 0x4003" "
400c)" " " " " " " " " " "
" " " " " " " " " "
Este registro permite controlar qué canal(es) del A/D genera una interrup-
" ción cuando se completa la conversión de datos. Hay que recordar que cuando
" se convierten varios canales, se empieza la conversión por el de índice menor
0,1,2, etc.
146 Prácticas de laboratorio de sistemas electrónicos digitales
" "
"
"
"
" " " " " " " " " " " " " "
"
registros de datos. A/d. data registers (Ad0dr0 to Ad0dr7 - 0x4003
" " " " "
4010 to 0x4003 402c) " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " "
Contienen
" " "el dato de la" última" conversión
" " " de cada canal.
" " También
" " incluyen
" los
" "
flags
" " que indican
" "si la conversión
" se ha completado y si ha ocurrido una sobres-
critura (se produjo una nueva conversión de datos y no se había consultado el
resultado de la anterior). Como se comentó, el resultado de las conversiones tam-
bién se puede ir consultando en a/d global data register según se va produ-
ciendo la conversión.
"
"
"
" " " " " " " " " " " " " "
"
" " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " " "
" " " " " " " " " " " " " " " " "
anexo ix - entradas analógicas y conversión adc en tarjeta con lPc178_h
" " " " " " " " " " " " "
147
" "
" " " " "
"
"
"registros de estados. A/d status register (AdstAt - 0x4003 4030)
" " " " " " "
" "
Este "registro
" " " comprobar
permite " " estado " de
el " todos" los canales
" simultánea-
mente " " " " " " "
" " " " " " " " " " "
"
" " " " " " "" " "
" " " " " " " " " " " " " " " " "
" " " " " " " " " " " " " ""
148 Prácticas de laboratorio de sistemas electrónicos digitales
"
"