Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DsPIC Diseño Practico de Aplicaciones
DsPIC Diseño Practico de Aplicaciones
Di s e o p r c t i c o de a p l i c a c i o n e s
J os Mara Angulo Usategui
Aritza Etxebarr a Ruiz
Ignacio Angulo Martnez
Ivn Trueba Parra
dsPIC
Diseo Prctico de Aplicaciones
L T ) U i
s c 5
S L 2 t x =M *l t l 2 2L l ^l 2 a c r / J W- V y . - V . Mit
C ?- ;' V3 :,V:-' &W9I 0; , l
"*&&* . ' - -
P i ,'u to
iuiiti'n*^ .- -!t;r.rm~.saaw u w ^^a>'.<wtm:
dsPIC
Diseo Prctico de Aplicaciones
J os M.aAngulo Usatcgui
Dr. I ngeniero I ndustrial
Catedrtico de Arquitectura de Computadores
Universidad de Deusto
Aritza Etxebarra Ruiz
Licenciado en I nformtica
J efe del Departamento de I nformtica
Colegio Vizcaya
Ignacio Angulo Martnez
Licenciado en I nformtica
Profesor del Departamento de Arquitectura de Computadores
Universidad de Deusto
Ivn Trueba Parra
I ngeniero en Automtica y Electrnica Industrial
e I ngeniero en Organizacin Industrial
Profesor del Departamento de Arquitectura de Computadores
Universidad de Deusto
MADRID * BOGOT BUENOS AIRES CARACAS GUATEMALA LISBOA * MXICO
NUEVA YORK * PANAM SAN JUAN SANTIAGO SAO PAULO
AUCKLAND *HAMBURGO LONDRES MILN MONTREAL NUEVA DELHI PARS
SAN FRANCISCO SIDNEY SINGAPUR ST. LOUIS TOKIO TORONTO
Contenido
Prlogo xv
Primera parte: ARQUITECTURA, FUNCIONAMIENTO Y REPERTORIO
DE INSTRUCCIONES
Captulo 1. EL MUNDO DE LOS DSP..................................................................................... 3
1.1. El procesamiento digital de seales................................................................................ 3
1.1.1. Muestreo de las seales analgicas................................................................ 5
1.2. . DSP. Definicin y caractersticas principales.............................................................. 7
1.3. Microcontroladores y DSP................................................................................................ 8
1.4. DSP y DSC........................................................................................................................... 9
1.5. Mercado y aplicaciones..................................................................................................... 10
Captulo 2. CONTROLADORES DIGITALES DE SEALES (DSC)............................ 17
2.1. El concepto DSC................................................................................................................ 17
2.2. Caractersticas generales de los dsPIC30F..................................................................... 18
2.3. Los modelos de la familia dsPI C30F............................................................................. 20
2.3.1. Dispositivos dsPIC30F de propsito general................................................. 20
2.3.2. Dispositivos dsPIC30F para el control de sensores....................................... 22
2.3.3. Dispositivos dsPIC30F para el control de motores y sistemas
de alimentacin................................................................................................... 23
2.4. Encapsulados y diagramas de conexiones.................................................................... 23
2.5. La familia dsPIC33F......................................................................................................... 27
2.5.1. Modelos de la familia dsPI C33F..................................................................... 28
2.5.2. Dispositivos dsPIC33F de propsito general................................................. 28
2.5.3. Dispositivos dsPIC33F de control de motores y sistemas
de alimentacin................................................................................................... 28
2.5.4. Diferencias entre dsPIC30F y dsPIC33F....................................................... 31
v
vi CONTENIDO
2.6. Herramientas de desarrollo software............................................................................. 31
2.7. Herramientas de desarrollo hardware............................................................................ 32
2.8. Aplicaciones recomendadas............................................................................................ 34
Captulo 3. ARQUI TECTURA DE LA CPU........................................................................... 39
3.1. Descripcin del diagrama por bloques.......................................................................... 39
3.2. Las memorias.................................................................................................................... 41
3.3. El Camino de Datos......................................................................................................... 43
3.4. Pueitas de E/S multifuncin............................................................................................ 44
3.5. Perifricos integrados....................................................................................................... 45
3.6. Gestin del sistema y de la energa............................................................................... 46
Captulo 4. EL CAMI NO DE DATOS................................................................................... 49
4.1. Introduccin...................................................................................................................... 49
4.2. El banco de registros W .................................................................................................. 49
4.3. La ALU de 16 bits............................................................................................................ 50
4.4. El Motor DSP.................................................................................................................... 52
4.4.1. Multiplicador....................................................................................................... 53
4.4.1.1. Representacin en modo entero y en modo fraccional.............. 54
4.4.2. Acumuladores A y B .......................................................................................... 56
4.4.3. Sumador/Restador de 40 bits............................................................................. 56
4.4.4. Registro de Desplazamiento.............................................................................. 58
4.4.5. Unidad de Divisin............................................................................................. 58
Anexo. MANI PUL ACI N DE DATOS EN EL MOTOR DSP..................................... 60
A. 1. Representacin de datos.................................................................................... *............. 60
A.2. Saturacin de los acumuladores..................................................................................... 60
A.2.1. Saturacin normal............................................................................................... 61
A.2.2. Sper saturacin.................................................................................................. 62
A.2.3. Saturacin de escritura..................................................................................... 63
A.3. Redondeo....................................................*...................................................................... 63
Captulo 5. MODEL O DEL PROCESADOR PARA EL PROGRAMADOR............. 65
5.1. Los registros del programador....................................................................................... 65
5.2. El banco de registros de trabajo..................................................................................... 67
5.3. Registros sombra............................................................................................................... 67
5.4. Punteros de la cima de la pila y del marco de la pila................................................. 68
5.5. El registro de estado (SR)............................................................................................... 69
5.6. El registro de control del ncleo (CORCON)............................................................. 70
5.6. Otros registros de control................................................................................................. 71
CONTENIDO V
Captulo 6. LA MEMORI A DE DATOS................................................................................. 73
6.1. Los espacios de la memoria de datos.............................................................................. 73
6.2. Direccionamiento de la memoria de datos..................................................................... 75
6.3. Mapeado del espacio de datos en la memoria de programa....................................... 75
6.4. Direccionamiento modular o circular............................................................................... 76
6.5. Direccionamiento por inversin de acarreo o bit reverse........................................ 79
Captulo 7. LA MEMORI A DE PROGRAMA.................:................................................... 83
7.1. Estructura y distribucin................................................................................................... 83
7.2. Direccionamiento mediante el PC................................................................................... 84
7.3. Transferencia de datos desde la memoria de programa.............................................. 84
7.4. Las instrucciones de Tabla............................................................................................... 85
7.5. Visibilidad del Espacio de Programa (PSV)................................................................. 87
7.6. Grabacin de las memorias FLASH y EEPROM........................................................ 87
7.6.1. Autograbacin en tiempo de ejecucin (RTSP).............................................. 88
7.7. Grabacin serie en circuito (ICPSIM).............................................................................. 91
Captulo 8. I NTERRUPCI ONES Y EXCEPCI ONES......................................................... 93
8.1. I ntroduccin........................................................................................................................ 93
8.2. Tabla de vectores IVT y A1VT de los dsPI C30F......................................................... 93
8.3. Tabla de vectores IVT y AIVT de los dsPI C33F......................................................... 96
8.4. Nivel de prioridad de la CPU........................................................................................... 99
8.5. Nivel de prioridad de las interrupciones........................................................................ 100
8.6. Nivel de prioridad para las excepciones......................................................................... 100
8.6.1. Excepcin por Error Aritmtico...................................................................... 101
8.6.2. Excepcin por Error de Pila.............................................................................. 101
8.6.3. Excepciones por Error de Direccionamiento y Fallo del Oscilador......... 101
8.7. Procesamiento de las interrupciones.............................................................................. 102
8.8. Registros de control y estado para las interrupciones................................................. 104
Captulo 9. CARA CTER STI CAS DE LAS I NSTRUCCI ONES Y MODOS
DE DI RECCI ONAMI ENTO............................................................................... 109
9.1. Caractersticas generales de las instrucciones.............................................................. 109
9.2. Formato de las instrucciones...................................................................................*...... 110
9.3. Tiempo de ejecucin de las instrucciones..................................................................... 112
9.4. Modos de direccionamiento de la memoria de programa.......................................... 113
9.4.1. PSV: Visibilidad del Espacio de Programa (Program Space Visibility).... 114
9.5. Modos de direccionamiento de los datos...................................................................... 114
9.5.1. Direccionamiento directo.................................................................................. 114
9.5.2. Direccionamiento directo por registro............................................................. 115
viii CONTENIDO
9.5.3. Direccionamiento indirecto por registro....................................................... 115
9.5.3.1. Representacin en modo entero y en modo fraccional............... 117
9.5.4. Direccionamiento inmediato........................................................................... 117
9.6. Deteccin de dependencias............................................................................................ 118
Captulo 10. EL REPERTORI O DE I NSTRUCCIONES. I NSTRUCCIONES MCU... 119
10.1. Clasificacin de las instrucciones................................................................................. 119
10.2. Instrucciones de movimiento.............................. .......................................................... 119
10.3. Instrucciones lgicas....................................................................................................... 122
10.4. Instrucciones matemticas............................................................................................. 123
10.5. Instrucciones de rotacin y desplazamiento................................................................ 125
10.6. Instrucciones de bi t.......................................................................................................... 127
10.7. Instrucciones de comparacin y brinco....................................................................... 129
10.8. Instrucciones de control del flujo del programa......................................................... 131
10.9. Instrucciones de pila y registros sombra..................................................................... 133
10.10. Instrucciones de control................................................................................................... 135
Captulo 11. LAS INSTRUCCIONES DSP........................................................................... 139
11.1. Caractersticas especficas.............................................................................................. 139
11.2. Operaciones bsicas con los acumuladores................................................................. 140
11.2.1. Suma de acumuladores (ADD)........................................................................ 142
11.2.2. Resta de acumuladores (SUB)......................................................................... 143
11.2.3. Borrado de los acumuladores (CLR)............................................................. 144
11.2.4. Negacin del acumulador (NEG)................................................................... 145
11.2.5. Multiplicacin de registros y carga al acumulador (MPY y MPY .N)).... 145
11.2.6. La distancia eucldea (ED y EDAC)............................................................. 145
11.2.7. Multiplicacin de registros y resta al acumulador (MSC)........................ 146
11.3. Instrucciones de carga y almacenamiento de los acumuladores............................... 147
11.3.1. Carga del acumulador (LAC)......................................................................... 147
11.3.2. Almacenamiento del acumulador (SAC)..................................... ............... 148
11.3.3. Prebsqueda de operandos y almacenamiento
del acumulador (MOVSAC)............................................................................ 148
11.4. Desplazamiento de los acumuladores.......................................................................... 148
11.5. Instrucciones tipo MAC ............................................................................................. 149
Captulo 12. PERI FRI COS Y RECURSOS I NTEGRADOS ...................................... 151
12.1. El mundo que rodea a los DSC..................................................................................... 151
12.2. Patitas de E/S.................................................................................................................... 151
12.3. Temporizadores................................................................................................................ 156
12.4. Conversores AD................................................................................................................ 157
12.5. Mdulo de captura............................................................................................................ 158
CONTENIDO X
12.6. Mdulo de comparacin/PWM....................................................................................... 159
12.7. Mdulo PWM para el control de motores..................................................................... 160
12.8. Mdulo UART................................................................................................................... 161
12.9. Mdulo SPI ........................................................................................................................ 162
12.10. Mdulo 12C .......................................................................................................................... 163
12.11. Mdulo DCI ....................................................................................................................... 164
12.12. Mdulo CAN...................................................................................................................... 164
12.13. Mdulo QEI ....................................................................................................................... 165
12.14. El Perro Guardin (WDT) y los modos de bajo consumo......................................... 167
12.15.El controlador DMA.....................................................'................................................... 167
Segunda parte: PROGRA M A CI N Y SI M UL A CI N DE A PL I CA CI ONES
Aplicacin 0. LAS HERRAMIENTAS DE DESARROL L O............................................. 175
A0.1. Introduccin....................................................................................................................... 175
A0.2. Descripcin del dsPIC30F4013...................................................................................... 175
A0.2.1. Diagrama de conexionado................................................................................ 176
AO.2.2. Caractersticas principales................................................................................ 176
A0.3. Herramientas de software utilizadas.............................................................................. 177
AO.3.1. El entorno de desarrollo MPLAB I DE............................................................. 177
AO.3.2. El compilador de C MPLAB C30.................................................................... 178
A0.3.3. Herramienta de diseo de filtros dsPICFdLite................................................ 178
A0.3.4. Herramienta para el tratamiento de algoritmos de tratamiento
de seales dsPICworks..................................................................... .................. 179
A utoe valuacin.............................................................................................................................. 179
Aplicacin 1. DI SEANDO FI L TROS.................................................................................... 181
A 1.1. I ntroduccin....................................................................................................................... 181
A l .2. El plan de trabajo.............................................................................................................. 181
A 1.3. El problema........................................................................................................................ 181
A 1.4. Analizando la seal........................................................................................................... 182
A l .5. Filtrando la seal............................................................................................................... 186
A 1.6. Generando la seal sin ruido........................................................................................... 190
Autoevaluacin.............................................................................................................................. 196
Aplicacin 2. EL ENTORNO DE DESARROLLO MPLAB I D E ................................... 197
A2.1. I ntroduccin....................................................................................................................... 197
A2.2. Trabajando con proyectos................................................................................................ 197
A2.3. Un vistazo rpido.............................................................................................................. 197
A2.4. Primer proyecto en ensamblador.................................................................................... 201
A2.5. Primer proyecto en lenguaje C........................................................................................ 209
Autoevaluacin.............................................................................................................................. 212
X CONTENIDO
Aplicacin 3. PONI ENDO EN MARCHA EL SI MUL A DOR......................................... 215
A3.1. I ntroduccin....................................................................................................................... 215
A3.2. Simulando el primer programa en ensamblador......................................................... 215
A3.2. L. Explorando la memoria de programa............................................................. 216
A3.2.2. Estableciendo puntos de ruptura y ventanas de inspeccin........................ 217
A3.2.3. Resolviendo el ejercicio del tema anterior.................................................... 219
A3.3. Caractersticas del simulador.......................................................................................... 220
A3.3.1. Configurando el simulador y contando el tiempo....................................... 221
Autoevaluacin.................................................................. ........................................................... 224
Aplicacin 4. MANEJ ANDO LAS I NSTRUCCIONES T PI CAS DE LOS dsPI C .... 225
A4.1. Introduccin....................................................................................................................... 225
A4.2. Manejo de instrucciones de salto en ensamblador...................................................... 225
A4.3. Manejo de instrucciones DSP. Inicial aciones............................................................ 226
A4.3.1. Otras formas de inicializar los programas..................................................... 231
Autoevaluacin.............................................................................................................................. 232
Aplicacin 5. LEY ENDO Y ESCRI BI ENDO LAS MEMORI AS FLASH
Y EEPROM ........................................................................................................... 233
A5.1. Manej ando la memoria de programa FLASH.............................................................. 233
A5.2. Manejando la memoria de datos EEPROM................................................................. 237
Autoevaluacin.............................................................................................................................. 241
Aplicacin 6. PROGRAMANDO LOS PERI FRI COS CON VISUAL
I NI TI A L I ZER...................................................................................................... 243
A6.L Introduccin....................................................................................................................... 243
A6.2. Visual Initializer................................................................................................................ 243
A6.3. Controlando el mundo exterior. Puertas de E/S.......................................................... 247
A6.4. Manejo de temporizadores. El semforo....................................................................... 250
A6.5. Manejo de interrupciones. El semforo con pulsador................................................ 255
Autoevaluacin.............................................................................................................................. 258
Aplicacin 7. PERI FRI COS AVANZADOS........................................................................ 259
A7.1. Introduccin....................................................................................................................... 259
A7.2. El Motor DSP..................................................................................................................... 259
A7.3. Conversor analgico digital............................................................................................ 261
A7.3.L Descripcin del mdulo de Conversin Analgico Digital
de 12 bits............................................................................................................. 261
CONTENIDO xi
A7.3.2. Trabajando con el mdulo................................................................................ 262
A7.4. Comunicaciones UART................................................................................................... 266
A7.5. Mdulo de captura de entrada......................................................................................... 269
A7.6. Mdulo de comparacin de salida................................................................................. 271
A7.7. Consideraciones finales.................................................................................................... 274
Autoevaluacin.............................................................................................................................. 274
Apndice A. CONTENI DO DEL CD E INSTALACI N DE LAS HERRAMI ENTAS
DE TRABAJ O ........................................................................................................ 275
Apndice B. SOLUCI ONES A LOS EJ ERCI CI OS DE AUTOEVALUACIN ......... 281
Tercera parte: L A BORA TORI O EX PERI M ENTA L
Laboratorio 0. EL SI STEMA DE DESARROLLO PI C School...................................... 299
L0.1. I ntroduccin....................................................................................................................... 299
L0.2. El fabuloso liPlC School ................................................................................................ 300
L0.3. Arquitectura de PIC School............................................................................................ 302
L0.3.1. Fuente de alimentacin...................................................................................... 302
LO.3.2. El oscilador.......................................................................................................... 303
L0.3.3. Los microcontroladores..................................................................................... 304
LO.3.4. Entradas analgicas........................................................................................... 304
LO.3.5. Entradas digitales............................................................................................... 305
LO.3.6. El generador lgico........................................................................................... 306
LO.3.7. El teclado............................................................................................................. 307
L0.3.8. Salidas digitales.................................................................................................. 309
L0.3.9. Salidas digitales de alta corriente.................................................................... 310
L0.3.10. Interfaz serie RS-232......................................................................................... 310
LO.3.11. Interfaz bus CAN................................................................................................ 312
L0.3.12. Pantalla L CD....................................................................................................... 313
L0.3.13.Conectores para interfaz RJ 11y USB............................................................ 314
LO.3.14. Seccin de grabacin......................................................................................... 315
LOA El mdulo dsPIC para la PIC School............................................................................. 316
L0.5. Descripcin del software............................................................................................. 317
L0.5.1. Software WI NPI C800....................................................................................... 318
L aboratorio 1. APLI CACI N DE I NSTRUCCI ONES DSP CON ENTRADAS
Y SALIDAS DI GI TALES .............................................................................. 323
L l .l . Objetivos............................................................................................................................. 323
L1.2. Descripcin del laboratorio.............................................................................................. 324
L1.3. Esquema electrnico......................................................................................................... 326
L1.4. Construccin del programa............................................................................................. 326
L1.5. Conexin de los perifricos............................................................................................. 329
xii CONTENIDO
L1.6. Grabacin y ejecucin...................................................................................................... 330
L1.7. Librera matemtica.......................................................................................................... 331
L aboratorio 2. MANEJ ANDO A FONDO LOS TEMPORI ZADORES
DE 32 BI TS.......................................................................................................... 333
L2.1. Objetivos............................................................................................................................ 333
L2.2. Descripcin del laboratorio............................................................................ ................ 333
L2.3. Esquema electrnico.............................................J........................................................... 334
L2.4. Construccin del programa............................................................................................. 335
L2.5. Conexin de los perifricos............................................................................................. 340
L2.6. Grabacin y ejecucin...................................................................................................... 340
Laboratorio 3. OPTIMIZANDO LA CONVERSIN ANALGICO/DIGITAL
DE ALTA PRECISIN.................................................................................... 343
L3.1. Objetivos............................................................................................................................. 343
L3.2. Descripcin del laboratorio............................................................................................. 344
L3.3. Esquema electrnico........................................................................................................ 345
L3.4. Construccin del programa............................................................................................. 346
L3.5. Conexin de los perifricos............................................................................................. 348
L3.6. Grabacin y ejecucin...................................................................................................... 348
L aboratorio 4. COMUNICACIN ENCRIPTADA CON EL USART........................... 351
L4.1. Objetivos............................................................................................................................. 351
L4.2. Descripcin del laboratorio............................................................................................. 352
L4.3. Esquema electrnico......................................................................................................... 353
L4.4. Construccin del programa............................................................................................. 353
L4.5. Conexin de los perifricos.............................................................................................. 355
L4.6. Grabacin y ejecucin...................................................................................................... 355
L aboratorio 5. CONTROL DE UN MOTOR DE CC MEDI ANTE PWM ................... 359
L5.1. Objetivos............................................................................................................................. 359
L5.2. Descripcin del laboratorio............................................................................................. 360
L5.3. Esquema electrnico......................................................................................................... 360
L5.4. Conexin de los perifricos............................................................................................. 362
L5.5. Creacin del programa..................................................................................................... 362
L5.6. Grabacin y ejecucin del programa............................................................................. 364
CONTENIDO Xlll
L aboratorio 6. DISEANDO FI L TROS................................................................................. 367
L6.1. Objetivos............................................................................................................................. 367
L6.2. Descripcin del laboratorio.............................................................................................. 367
L63 . Esquema electrnico......................................................................................................... 368
L6.4. Conexin de los perifricos.............................................................................................. 369
L6.5. Creacin del programa..................................................................................................... 369
L6.6. Grabacin y ejecucin del programa............................................................................. 371
L aboratorio 7. GRABANDO LA MEMORI A FLASH DE PROGRAMA
CON UN BOOTL OADER.............................................................................. 375
L7.1. Objetivos............................................................................................................................. 375
L7.2. Descripcin del laboratorio............................................................................................. 375
L7.3. Esquema electrnico......................................................................................................... 377
L7.4. Conexin de los perifricos............................................................................................. 377
L7.5. Construccin del programa.............................................................................................. 377
L7.6. Grabacin y ejecucin del programa............................................................................. 381
L aboratorio 8. MANEJ ANDO A FONDO LAS I NTERRUPCI ONES.......................... 385
L8.1. Objetivos............................................................................................................................. 385
L8.2. Descripcin del laboratorio.............................................................................................. 385
L8.3. Esquema electrnico......................................................................................................... 386
L8.4. Conexin de los perifricos.............................................................................................. 387
L8.5. Construccin del programa.............................................................................................. 387
L8.6. Grabacin y ejecucin del programa............................................................................. 390
L aboratorio 9. Pn.OTANDO UN FRMULA 1................................................................... 393
L9.1. Objetivos............................................................................................................................. 393
L9.2. Descripcin del laboratorio.............................................................................................. 394
L9.3. Esquema electrnico......................................................................................................... 395
L9.4. Conexin de los perifricos.............................................................................................. 395
L9.5. Construccin del programa............................................................................................. 396
L9.6. Grabacin y ejecucin del programa............................................................................. 403
ndice...................................................................................................................................................... 405
Prlogo
dsPic es un nombre genrico que se utiliza para referirse a los Controladores Digitales de Sea
les (DSC) que ha diseado Microchip Technology Inc. para facilitar a los usuarios de sus micro-
controladores PTC la transicin al campo de las aplicaciones de los Procesadores Digitales de Se
ales (DSP), que van a propiciar en los prximos aos un crecimiento espectacular en reas como
las comunicaciones, los sensores, el procesamiento de la imagen y el sonido, el tratamiento mate
mtico de seales* los sistemas de alimentacin, el control de motores, la electro medicina, los sis
temas multimedia, la automocin e Internet.
Los DSC son unos dispositivos que combinan la arquitectura y la programacin de los micro-
controladores PIC de 16 bits con los recursos hardware y software necesarios para soportar las pres
taciones fundamentales de los DSP. Microchip ha prestado una gran atencin al mantenimiento de
la compatibilidad entre sus microcontroladores clsicos y los DSC.
El medio centenar aproximado de modelos de DSC que se comercializan en la actualidad se re
parten entre dos familias, llamadas dsPIC30F y dsPIC33F.
Los autores de este libro, experimentados pedagogos de la Universidad de Deusto, han intenta
do construir una herramienta sencilla y eficaz para poner en manos de todos los que conocen y ma
nejan los microcontroladores clsicos, y especialmente los PIC, que les permita dominar en el m
nimo tiempo a los dsPlC y as poderse introducir en las nuevas aplicaciones cuyos proyectos son
ms exigentes y complejos. Por eso han escrito esta obra intentando que fuese la que a ellos les hu
biese gustado encontrar cuando comenzaron el estudio de los dsPIC.
El contenido se ha estructurado en tres partes:
Primera Parte: Arquitectura, funcionamiento y repertorio de instrucciones
Segunda Parte: Programacin y simulacin de aplicaciones
Tercera Parte: Laboratorio experimental
En la Primera Parte que consta de 12 captulos se hace una descripcin de las caractersticas, es
tructura y funcionamiento de los bloques principales de la arquitectura del procesador, haciendo n
fasis en las partes nuevas que se aaden a los dsPIC como el Motor DSP, las especiales organiza
ciones de las memorias, los nuevos modos de direccionamiento, las instrucciones DSP, etc. Tambin
se explican los perifricos y el manejo bsico del repertorio de instrucciones. Los conceptos teri
cos comprenden a las familias dsPIC30F y dsPIC33F.
xv
xvi PRLOGO
El objetivo de la Segunda Parte es adiestrar al lector a programar aplicaciones en Ensamblador
y en C empleando nicamente las herramientas software que facilita libremente el fabricante y que
pueden encontrarse, al igual que los archivos de los ejercicios, en el CD que incluye este libro. To
do el conjunto de trabajos y prcticas que se proponen se desarrollan alrededor del entorno MPLAB
IDE y con los programas de ayuda de Microchip, tales como el dsPICWork, VD1, dsPIC FD Lite,
etctera. Esta parte se distribuye en 7 Aplicaciones que van recorriendo desde la instalacin y ma
nejo de todo el software de desarrollo hasta la descripcin detallada de numerosos ejercicios y pro
gramas. Al final de cada una de dichas aplicaciones el lector puede comprobar el nivel de asimila
cin de los conceptos estudiados a travs de varios ejercicios de autoevaluacin. Esta parte incluye
2 apndices en los que el lector encontrar las soluciones a J os ejercicios de autoevaluacin de ca
da aplicacin y el contenido del CD con las instrucciones de instalacin de los programas.
La tercera y ltima parte de la obra, que a los autores les parece la ms eficaz e interesante, ofre
ce una coleccin de 9 proyectos de complejidad progresiva en los que desarrolla ntegramente el
hardware y el software que los configuran. En todos se usa el dsPIC30F4013 y para su grabacin y
conexionado con los perifricos que manejan las experiencias se ha escogido el sistema de desarro
llo PIC School de Ingeniera de Microsistemas Programados (www.microcontroladorcs.com) dado
su excelente diseo tcnico, su facilidad de manejo, su flexibilidad, el soporte tcnico que lo garan
tiza y su bajo precio. Los proyectos que se resuelven son los recomendados para los dsPIC, como el
encriptado de datos, el diseo de filtros, el tratamiento matemtico, el control de motores, el manejo
y procesado de seales con potentes conversores AD, las comunicaciones con diversos protocolos,
el gobierno de pantallas LCD, la simulacin de un blido de Frmula 1, etc. Los programas de todas
estas experiencias se desarrollan en Ensamblador y en C y se incluyen en el CD.
Microchip nos ha brindado toda la informacin y colaboracin que hemos precisado y muy es
pecialmente D. J uan Gutirrez desde la sede central en Chandler (Arizona). Tambin el Sr. Bus-
tamante de Sagitron nos ha aclarado y enseado muchos conceptos y peculiaridades. La ayuda de
D. Mikel Echevarra de Ingeniera de Microsistemas Programados ha sido valiossima para la
puesta a punto de los proyectos realizados sobre la PIC School. Desde la empresa Biltron nos han
ayudado a encontrar todos los componentes que hemos necesitado. Los excelentes alumnos de las
asignaturas de Arquitectura e Ingeniera de Computadores y de Arquitectura de Computadores de
la Facultad de I ngeniera ESI DE de la Universidad de Deusto nos han servido para probar y co
rregir la estructura y el contenido del libro y nos han ayudado a revisar algunos temas y mejorar
esquemas, figuras y fotos de varios captulos. Tambin agradecemos la aportacin de Francisco
Bcnach que es el creador del software libre WinPICSOO que se emplea en la PIC School.
Los autores se han esforzado en crear el libro que a ellos les hubiese gustado encontrar cuando
comenzaron el estudio y manejo de los dsPIC.
Marcas registradas
El nombre y logo de Microchip, dsPIC, PIC, PICmicro, PICSTART, PICMASTER, PRO MATE y
MPLAB son marcas registradas por Microchip Technology Incorporated en EE. UU. y otros pases.
dsPICDEM, dsPIC.net, ICSP.Tn-Circuit Serial Programming (Programacin Serie En Circuito),
ICEPIC, MPASM, MPLIB, MPL1NK, MPSIM, PICC, PlCkit, PIC DEM y PICDEM.net son marcas
registradas por Microchip Technology Incorporated en EE. UU. y otros pases.
Determinados materiales e informaciones contenidos en esta obra y en el CD que le acompaa han
sido reproducidos con el permiso de Microchip Technology Incorporated. No se pueden reprodu
cir ni reeditar dichos materiales sin el previo consentimiento escrito de Microchip Technology Inc.
Las restantes marcas, logos y productos mencionados en este libro estn registrados por sus
respect i vos propietarios.
Primera parte
Arquitectura, funcionamiento
y repertorio de instrucciones
Captulo 1. EL MUNDO DE LOS DSP.............................................................................................. 3
Captulo 2. CONTROLADORES DIGITALES DE SEALES (DSC)........................................ 17
Captulo 3. ARQUITECTURA DE LA CPU................................................................................ 39
Captulo 4. EL CAMINO DE DATOS....................................................................................... 49
Anexo. MANIPULACIN DE DATOS EN EL MOTOR DSP........................................ 60
Captulo 5. MODELO DEL PROCESADOR PARA EL PROGRAMADOR............................ 65
Captulo 6. LA MEMORIA DE DATOS..................................................................................... 73
Captulo 7. LA MEMORIA DE PROGRAMA............................................................................ 83
Captulo 8. INTERRUPCIONES Y EXCEPCIONES.................................................................. 93
Captulo 9. CARACTERSTICAS DE LAS INSTRUCCIONES Y MODOS
DE DIRECCIONAMIENTO...................................................................................... 109
Captulo 10. EL REPERTORIO DE INSTRUCCIONES. INSTRUCCIONES MCU....................119
Captulo 11. LAS INSTRUCCIONES DSP.....................................................................................139
Captulo 12. PERIFRICOS Y RECURSOS INTEGRADOS..........................................................151
1.1. EL PROCESAMIENTO DIGITAL DE SEALES
El mundo que nos rodea est caracterizado por contar con un gran nmero de seales analgicas o
continuas que varan entre un valor mnimo y otro mximo pasando por infinitos valores. La tem
peratura, la luz, la presin atmosfrica, la humedad relativa y la concentracin de C02en el aire son
algunos ejemplos de magnitudes analgicas tpicas en nuestro entorno. El correcto tratamiento de
estas seales tiene una gran importancia para el control de procesos y dispositivos. Hasta mediados
del siglo XX se utilizaron recursos y tcnicas analgicas, cuyo esquema fundamental se muestra en
la Figura'1.1. Las enormes expectativas de aplicacin en el manejo de esas seales en un futuro in
mediato ha desembocado en una optimizacin de las tcnicas y recursos para su tratamiento.
' .7
ENTRADA V
l----------------^ v:;>
SISTEMA
SEAL . DE
analgica ^ PROCESAMIENTO
ANALGICO
SENSOR
I M m
O
SEAL
ANALGICA-
SALIDA
< ]
ACTUADOR
Figura 1.1. En una fase inicial se utilizaron tcnicas y dispositivos analgicos para el tratamiento de
las seales.
En el esquema de la Figura 1.1 el sensor de entrada es el encargado de medir el valor instant
neo de la seal a procesar, como podra ser la temperatura. El sistema de procesamiento analgico
recibe dicha seal y la manipula para transformarla en otra del mismo tipo que se aplica a un ac-
tuador, que podra ser una vlvula que regula el paso de combustible a una caldera. Cuando aumenta
la temperatura, disminuye la seal analgica de salida que se aplica a la vlvula para reducir el pa
so de combustible e intentar mantener el valor de la seal de entrada. En este caso, el sistema de pro
cesamiento de la seal est compuesto por dispositivos y circuitos analgicos.
4 dsPIC. DISEO PRCTICO DE APLICACIONES
Desde que en 1971 Intel comercializ el primer microprocesador, las posibilidades y ventajas del
procesamiento digital se incrementaron de forma exponencial. Un microprocesador es la pane ms
compleja e importante de un computador digital. En nuestros das, existe una gran variedad de cir
cuitos integrados con millones de transistores y otros elementos repartidos en pocos mm^de silicio
que configuran potentsimos computadores digitales a un coste asequible. (Figura 1.2.)
Figura 1.2. Los microprocesadorcs actuales contienen decenas de millones de transistores alcan
zando elevadas cotas de rendimiento en el procesamiento digital.
Los avances tecnolgicos en microelectrnica, as como el desarrollo de mtodos matemticos
eficientes facilit el anlisis y tratamiento de las seales continuas. As, la serie bsica de Fourier es
una extraordinaria herramienta para el procesamiento de seales peridicas, mientras que la Trans
formada de Fourier lo es para las seales aperidicas. Con la Transformada Discreta de Fourier
(DFT) y la Transformada Rpida de Fourier (FFT) se consigui reducir drsticamente el nmero de
multiplicaciones necesarias en los clculos, lo que unido a la aplicacin de la Transformada de La-
place y especialmente su evolucin a la Transformada Z constituyeron excelentes mtodos mate
mticos muy propicios para su resolucin mediante potentes computadores digitales.
As comienza una nueva etapa en el mundo del tratamiento de seales, la del procesamiento di
gital de las seales. Se puede definir un procesador digital de seales o DSP como un procesador
monochip diseado para resolver un conjunto de operaciones matemticas sobre una seal continua
o analgica expresada digitalmente como corresponde al sistema representado en la Figura l .3. Este
procesador de seales se ha convertido en una de las ms poderosas herramientas tecnolgicas en las
que se sustentarn la ciencia y la ingeniera del siglo XXI. El diseo de procesadores digitales orien
tados a soportar los algoritmos matemticos para el anlisis y tratamiento de las seales continuas en
tiempo real supuso la utilizacin de los mismos en sistemas de procesado de seales.
ENTRADA
>
DIGITAL DIGITAL
SENSOR
SEAL ;
DIGITAL :!
CDA
SALIDA
SEAL
ANALGICA
- 0
ACTUADOR
Figura 1.3. El procesamiento digital de seales bsicamente se descompone en tres etapas: la
conversin de la seal analgica en digital (CAO), el procesamiento de Ja seal digital y,
finalmente, la conversin de la seal procesada a una forma analgica (CDA).
EL MUNDO DE LOS DSP 5
En el esquema de la Figura 1.3 existe un Conversor de Analgico a Digital delante del procesa
dor digital y otro Conversor de Digital a Analgico detrs. El inconveniente de incluir los conver-
sores AD y DA queda compensado por las innumerables ventajas que aporta el procesamiento di
gital de las seales respecto al procesamiento analgico. Se citan las ventajas ms relevantes.
1 La informacin digital se almacena y se transfiere con seguridad y rapidez posibilitando la
realizacin de clculos matemticos complejos con gran exactitud y mnimo tiempo.
2* La tolerancia de los componentes activos y pasivos que conforman los circuitos electrnicos ana
lgicos (resistenpias, condensadores, transistores, etc.) unida a la variacin de sus valores y de su
comportamiento ante las condiciones ambientales externas y su edad, suponen una grave falta de
precisin que afecta ai funcionamiento general de dichos circuitos. Estas alteraciones contrastan
con la exactitud de los resultados obtenidos en los procesadores digitales que dependen exclusi
vamente del programa ejecutado.
3 a La modificacin de un parmetro o una operacin en un circuito electrnico analgico supone el
rediseo completo del mismo, mientras que esta misma situacin se resuelve rpidamente en
el procesamiento digital alterando el programa y manteniendo intacto el equipo fsico.
4.a El menor coste y volumen que caracterizan los sistemas digitales son otros factores clave en su uti
lizacin.
...........................> : ::'
Un claro ejemplo de procesamiento digital de seales en nuestro entorno es el tratamiento de la
seal de sonido captada por un micrfono, el cual queda ilustrado en la Figura 1.4.
Figura 1.4. El micrfono transforma en una seal analgica las presiones acsticas de la voz. Dicha
seal se aplica a un CAD, cuya salida se trata en un procesador digital do seales segn
el algoritmo implementado en el programa con el fin de eliminar ruido de la seal obte
nida del micrfono. El resultado de este procesamiento se aplica a un CDA para obtener
de nuevo una seal analgica que se reproduce en un altavoz.
No obstante, existen situaciones en las que el requerimiento de trabajar en tiempo real impide la
aplicacin del procesamiento digital debido a los retardos de los conversores, a la distorsin produ
cida en la toma de muestras y a la exigencia de gran precisin en los clculos. Debido a que en ta
les casos hay que generar una respuesta a gran velocidad, se opta por utilizar sistemas analgicos pa
ra el procesamiento de seales.
1.1.1. Muestreo de las seales analgicas
El sistema tpico de aplicacin de un DSP dispone de un sensor como entrada que capta una seal
analgica correspondiente a la magnitud a tratar. Dicha seal analgica se muestrea para ir pasando
6 dsPIC. DISEO PRCTICO DE APLICACIONES
estas muestras a un Conversor Analgico Digital (CAD) que las convierte a un formato digital pa
ra introducirlas al procesador. Una vez obtenidos los resultados digitales, nuevamente se convierten
los mismos en una seal analgica (CDA) de salida que puede transformarse de nuevo en una mag
nitud fsica por medio de un actuador. (Figura 1.5.)
CAPTURA Y
MANTENIMIENTO
SALIDA
SEAL
DIGITAL
CDA
S E AL .
ANAL GIC A1
ACTUADOR
MUESTREO
Figura 1.5. Esquema general por bloques de un sistema de procesamiento digital de seales.
La seal analgica generada por el sensor se muestrea mediante un circuito de Captura y Man
tenimiento o Sample-and-Hold (S&H) que va tomando cada cierto tiempo (t) una muestra que car
ga y mantiene su valor en el condensador mientras el CAD realiza su conversin a digital. El tiem
po entre cada muestra se denomina perodo de muestreo (TM=1/Frecuencia de muestrea). Un gran
inconveniente del proceso de muestreo de la seal analgica es la prdida de informacin entre
muestras. (Figura 1.6.)
AMPLITUD
MUESTRAS
TIEMPO
AMPLITUD
Figura 1.6. Muestreo de una seal analgica. La seal analgica inicial se convierte en muestras dis
cretas tomadas cada cierto tiempo(t) en el circuito S&H.
La frecuencia de muestreo es el nmero de muestras que se realizan por segundo. Cuanto mayor
sea esta frecuencia, ms parecido ser el resultado obtenido a la seal original. Para representar con
precisin una seal analgica, el Teorema de Muestreo (Nyquist-Shannon) establece que la fre
cuencia de muestreo debe ser igual o mayor que dos veces la mxima componente de frecuencia de
la seal original {ancho de banda de la seal a muestrear), segn la frmula: Fmuestreo^ 2 *Fmx..
Tanto el CAD como el procesador digital deben disponer del tiempo suficiente entre cada dos
muestras para llevar a cabo las labores que tienen asignadas. Muy frecuentemente el procesa
miento de las seales digitales exige la aplicacin de las transformadas de Fourier y Laplace, las
cuales hacen un uso intensivo de la funcin suma de productos (LCi F(x)). Por esta razn, los
procesadores especializados en trabajar en el campo de las seales deben disponer de un conjunto
EL MUNDO DE LOS DSP 7
de instrucciones muy potentes y rpidas, siendo la multiplicacin la operacin ms importante que
deben soportar de forma ptima, ya que en caso contrario, supondra un verdadero cuello de bote
lla en el clculo de la mayora de los algoritmos.
Existen varias formas de medir la velocidad de un procesador digital de seales, aunque el pa
rmetro de medida ms usual es el tiempo de ciclo de instruccin, que es el tiempo necesario para
ejecutar la instruccin ms rpida del procesador. Su inverso dividido por un milln da lugar al ren
dimiento del procesador en millones de instrucciones por segundo o MIPS.
1.2. DSP. DEFINICIN Y CARACTERSTICAS PRINCIPALES
Recibe el nombre de DSP (Procesador Digital de Seales) un circuito integrado que contiene un pro
cesador digital y un conjunto de recursos complementarios capaces de manejar digitalmente las se
ales analgicas del mundo real, como los sonidos y las imgenes.
A principios de la dcada de los 80 del siglo pasado ya se comercializaban varios modelos de
DSP, siendo pioneros los fabricantes Texas Instruments, NEC e Intel. En la actualidad Texas Ins
truments mantiene el liderazgo en el mercado de DSP, fabricando modelos cada vez ms potentes
para acoplarse a las aplicaciones ms complejas y cambiantes.
Los DSP pueden asemejarse a los clsicos microcontroladores, pero incorporando arquitecturas
y recursos especiales para poder controlar de forma ptima los requerimientos especficos y los al
goritmos manejados en el procesamiento digital de seales analgicas. Se destacan las siguientes
prestaciones de los DSP:
a) Las procesadores preferentemente son RISC; con un reducido juego de instrucciones que se eje
cutan, generalmente, en un solo ciclo.
b) Utilizan la arquitectura Harvard y disponen de dos memorias independientes, una dedicada a con
tener las instrucciones y otra los datos, posibilitando el acceso simultneo a ambas informaciones.
Adems, la memoria de datos suele dividirse en dos espacios independientes que aportan el ac
ceso paralelo. (Figura 1.7.)
c) Disponen de recursos fsicos complejos para soportar las operaciones especficas de los algorit
mos DSP. Son imprescindibles un multiplicador rpido y un flexible registro de desplazamiento.
Una operacin DSP tpica es la de *multiplicar y acumular" ( x = a b + x) y que la suele imple-
mentar a instruccin de nemnico MAC, ejecutndose en un solo ciclo. Se realizan varios accesos
a memoria en un solo ciclo, para que el procesador pueda buscar una instruccin mientras reali
za la bsqueda de operandos y/o almacena el resultado de la instruccin anterior. Esto es posible
gracias a que fa memoria de datos se divide en dos partes para posibilitar el acceso simultneo
de datos
d) El repertorio de instrucciones contiene algunas especficas para resolver los algoritmos matemti
cos habituales en el procesamiento de seales.
e) Los modos de direccionamiento son muy sofisticados, ya que localizan los datos y almacenan los
resultados de forma ptima para los algoritmos empleados.
f) Disponen de un conjunto de interrupciones muy amplio y veloz, con niveles de prioridad.
g) En el DSP se integran numerosos recursos y perifricos que minimizan el tamao y simplifican el
diseo del sistema.
h) Poseen mdulos para el control y optimizacin del consumo de energa.
8 dsPIC. DISEO PRCTICO DE APLICACIONES
Figura 1.7. La arquitectura Harvard dispone de buses independientes para instrucciones y datos.
1.3. MICROCONTROLADORES Y DSP
Los microcontroladores clsicos, denominados de forma resumida MCU, son circuitos integrados
que contienen un procesador digital completo junto a diversos perifricos auxiliares que facilitan el
desarrollo de las aplicaciones a las que se dedican. Su parecido con los DSP es muy grande, pero las
diferencias que los distinguen hacen que sus campos de aplicacin sean diferentes.
De forma resumida puede decirse que los DSP son microcontroladores dotados de los recursos
fsicos y lgicos necesarios para poder soportar las aplicaciones especficas del procesamiento di
gital de seales.
Las instrucciones aritmticas complejas de los MCU se ejecutan en varios ciclos, mientras que
las de los DSP slo precisan uno. En los DSP siempre se dispone de conversores AD rpidos y pre
cisos. Dado el carcter marcadamente matemtico de los programas para DSP, stos estn prepara
dos para ser programados con lenguajes de alto nivel, como el C. La velocidad y el rendimiento de
los DSP son muy superiores a los habituales en los MCU.
En el momento que la expansin de las aplicaciones de los MCU ha alcanzado cotas extraordi
narias y se fabrica un sin fin de productos y sistemas que llevan embebidos uno o varios, el nivel
cientfico y los avances tecnolgicos han logrado fabricar DSP que aaden al MCU los recursos ne
cesarios para soportar el procesamiento digital de las seales y cubrir as todo el campo de posibi
lidades y aplicaciones que envuelve. (Figura 1.8.)
Figura 1.8. Fotografa de un microcontrolador convencional o MCU a la izquierda y de un DSP a
la derecha. Detrs del parecido de ambos dispositivos existen diferencias que les orien
tan hacia aplicaciones diferentes.
EL MUNDO DE LOS DSP 9
Al analizar el comportamiento del MCU se espera que ejecute la secuencia de instrucciones tal
como la especifica el programa, siendo las interrupciones la nica causa que puede apartarle de
Lamisma. Su funcionamiento es claramente previsible y su actuacin determinstica. Por el con
trario, en muchas aplicaciones con DSP los resultados son consecuencia inmediata del flujo de da
ros que suministra la seal muestreada y la ejecucin es dependiente de los datos obtenidos en
nempo real.
1.4. DSP Y DSC
La empresa Mi crochi p Technology Inc. ocupa el primer puesto en el ranking mundial de micro-
controladores de 8 bits desde el ao 2003; sus modelos son conocidos popularmente con el nombre
genrico de PIC. Tras el exitoso lanzamiento de las familias de microcontroladorcs de 16 bits
-IC24FXXX y PTC24HXXX, los usuarios necesitan nuevos dispositivos que soporten funciones de
procesamiento digital de seales para atender las nuevas tendencias del mercado orientadas al au
mento de la conectividad por Internet, las mejoras relacionadas con la imagen y el sonido, el con
trol de motores, etc.
Las aplicaciones modernas mezclan las funciones tpicas MCU con las de procesamiento digi-
de seales (DSP). Esta situacin ha impulsado a Microchip a fabricar un circuito hbrido
NICU/DSP, cuyo manejo es similar a los clsicos microcontroladores pero que incluye las principa
les prestaciones de los DSP. As ha nacido el Controlador Digital de Seales, abreviadamente
DSC (Digital Signal Controller), que rene las caractersticas de un microcontrolador PIC de 16
bits y las de un DSP de gama baja. En base a este controlador digital de seales, Microchip consi
gue reunir lo mejor de ambos mundos, marcando el comienzo de una nueva era en el mercado de
controladores. (Figura 1.9.)
Figura 1.9.
LU
----------
PRECIO
Los controladores digitales de seales (DSC) comparten reas de aplicacin de los MCU
de 32 bits y DSP.
10 dsPIC. DISEO PRCTICO DE APLICACIONES
La primera generacin de DSC, denominada dsPIC30F, constituy un intento por parte de Mi-
crochip de facilitar el acercamiento al mundo del procesamiento digital de seales a sus usuarios de
MCU de 8 y 16 bits. Con esta intencin se ha mantenido el entorno de la arquitectura y juego de ins
trucciones de los MCU tradicionales, pero aadiendo la funcionalidad y los principales requisitos de
los DSP, para facilitar la transicin a sus clientes habituales. Posteriormente, la segunda generacin
de DSC, llamada dsPIC33F, ha potenciado las capacidades, el nmero de perifricos y el rendi
miento, permitiendo acceder a campos de aplicacin ms complejos.
1.5. MERCADO Y APLICACIONES
Las ventas de DSP en el mercado mundial crecen a un ritmo aproximado al 30 por l anual, ocu
pando el primer puesto del escalafn el fabricante Texas Instruments que consigue casi la mitad de
las ventas totales. En la Figura 1.10 se muestra la distribucin porcentual de las ventas de DSP en
el mundo, segn EE Times durante el ao 2004.
FREESCALE
SEMICONDUCTORS
Figura 1.10. Distribucin porcentual de las ventas mundiales de DSP en 2004.
En el ao 2005 se alcanz un total de 1,3 billones de unidades DSP vendidas, lo que supone un
volumen de ventas de 7,8 billones de dlares, que se incrementar notablemente en un futuro in
mediato. El sector de las comunicaciones ser el principal responsable de este crecimiento.
La cuota en volumen de ventas de los sectores ms importantes en el mercado DSP fue de 6,4
billones de dlares en el sector de comunicaciones, 414 millones de dlares en el de computadores
y 312 millones de dlares en el sector del automvil, segn IC InSights durante el ao 2005.
En cuanto a la distribucin de las aplicaciones de DSP en el mercado global, Forward Concepta
las ha dividido en seis secciones (2004). (Figura 1.11.)
En lo que respecta a la fabricacin de DSP sobresale Asia que abarca un 52 por 100, destacan
do China, Taiwn y Corea del Sur. Seguidamente Europa posee una cuota del 20 por 100 del total y
luego se sitan J apn y Estados Unidos con un 17,3 por 100 y 10,7 por 100, respectivamente. Esta
dos Unidos est a la cabeza en lo que se refiere a consumo de DSP.
Dentro de los campos de aplicacin de los DSP destacan las Telecomunicaciones, la Multime
dia y el Control de Motores. Esto incluye una amplia variedad de soluciones como la mejora de
TEXAS
INSTRUMENTS
AGERE
SYSTEMS
OTROS
FABRICANTES
PHILIPS
SEMICONDUCTOR
ANALOG
DEVICES
EL MUNDO DE LOS DSP 11
TECNOLOGA INALMBRICA 71,4
GRAN CONSUMO 8,4
MULTIPROPSITO 7
TECNOLOGA NO INALMBRICA 5,7
COMPONENTES Y PERIFRICOS 4,7
AUTOMOCIN 2,8
Figura 1.11. Distribucin porcentual del mercado en las aplicaciones en las que estn presentes
los DSP.
imgenes, el reconocimiento y la generacin de voz, la compresin de datos para el almacena
miento y transmisin, etc. A continuacin se describen algunas aplicaciones concretas en las que
se pueden encontrar DSP como dispositivos imprescindibles de las mismas.
GRAN CONSUMO
i ' ; : - !
El uso cada vez ms extendido de DSP en aplicaciones porttiles como la telefona celular hace que
el consumo de energa sea un factor a tener muy en cuenta en el momento de decidirse por un DSP u
olro. Otros productos de consumo con DSP son televisores, radios, reproductores de msica digital,
reproductores de -CD, rganos y sintetizadores musicales, frigorficos, lavadoras y equipos de aire
acondicionado.
MEDICINA
Aparatos como los equipos destinados a la monitorizacin de pacientes, MNR, scanner, electrocar
diogramas.. electroencefalogramas y tomografas, han logrado que sus imgenes sean mostradas con
mucho ms detalle que las tcnicas convencionales gracias a los DSP, permitiendo un diagnstico y
tratamiento significativamente mejor. Hay otros aparatos destinados al diagnstico asistido, las eco-
grafas y la resonancia magntica, que pueden proporcionar informacin acerca de la fisiologa y del
flujo de sangre a travs de las arterias.
12 dsPIC DISEO PRCTICO DE APLICACIONES
INDUSTRIA
l DSP ha revolucionado reas como la exploracin petrolera, minera, submarina y espacial, el control
de motores, la instrumentacin y la robtica. (Figura 1.12.)
Figura 1.12. La placa de la fotografa corresponde a un radar para tiburones y contiene un DSP
ADSP-TS2105 cuya funcin es optimizar su deteccin.
CONTROL DE MOTORES
:;; />. , -, - , .>: V,- , O:: - . . , , m&y+Xs r! -.-v -:>:>x::
El control de motores es un campo al que los fabricantes de DSP se estn dedicando ampliamente ya
que al estar presentes en casi todos los procesos industriales el desarrollo de mdulos de control de po
tencia es una inversin segura. De este modo se emplean DSP en sistemas como controladores de mo
tores, inversores de potencia, controladores de posicin, impresoras y fotocopiadoras, compresores de
alta potencia, etc. Los DSP presentan excelentes caractersticas debido a su potencia en el clculo nu
mrico, permitiendo implementar controles de velocidad, de sistemas de energa magnetizante, de fac
tor de potencia y otros, con niveles de eficiencia nunca alcanzados anteriormente.
- :
. -- - o'. : .
AUTOMOCIN
La introduccin de DSP en esta rea ha supuesto un incremento de las prestaciones de los automvi
les. Se aplican en los activadores de airbag, sistemas de chequeo, control de velocidad de crucero,
suspensin activa, control del motor, ordenador de a bordo, ABS y control de la combustin. General
Motors, por ejemplo, utiliza un DSP en su sistema de rastreo de automviles aprovechando la red glo
bal de satlites GPS para establecer su ubicacin precisa.
EL MUNDO DE LOS DSP 13
MILITAR
El sonar, el radar, el piloto automtico y el guiado automtico de misiles son algunos de los ejemplos
de la utilizacin DSP en el mbito militar.
TELECOMUNICACIONES
El DSP ha revolucionado la industria de las telecomunicaciones en muchas reas como la generacin
y deteccin de tonos, filtrado para eliminar el ruido de la linea elctrica, multiplexado, compresin, con
trol de eco, etc. y en productos como son los telfonos mviles e inalmbricos, mdems, emisoras, vi
deoconferencia, GPS, PDA, cmaras digitales, fax, RDSI, redes de sensores, receptores DRM y en-
criptadores de datos entre muchos otros. Utilizando un telfono mvil en una habitacin ruidosa, muy
poco de ese ruido Jlegar a la persona que est al otro lado del telfono, ya que el DSP emplea com
plejos algoritmos matemticos que realzan la diferencia entre el ruido de fondo y la voz del usuario.
Figura 1.13. Cmara estabilizador de imagen con GPS para helicpteros. El cometido del DSP es gra
bar las imgenes absorbiendo la vibracin del helicptero adems de disponer de un
complejo sistema CPS incorporado.
Figura 1.14. Receptor de DRM. El receptor est basado en DSP y puede conectarse directamente a
un PC para visualizar los parmetros de la emisin. Tiene la posibilidad do recibir texto,
imgenes y hasta pequeos videoclips junto con la seal de audio.
14 dsPIC. DISEO PRCTICO DE APLICACIONES
Figura 1.15. La emisora de la fotografa contiene un DSP cuya funcin es eliminar la interferencia de
seales de emisoras adyacentes y reducir al mnimo la distorsin de sonido causada por
una mala recepcin.
IMAGEN Y S ONIDO
EDSP puede realizar muchas funciones importantes durante el procesado del sonido y las imgenes.
Permite aadir ecos, soportar la visin artificial, ef reconocimiento de patrones, la compresin/des
compresin de imgenes, el reconocimiento y la generacin de audio, la cancelacin de ruido, la can
celacin de eco, el encriptado y la sntesis de voz.
Figura 1.16. Dskc.am. Cmara c.on TCP/IP Ethernet, que gracias a un DSP soporta la videoconferen-
cia, el reconocimiento de imgenes, adems de disponer de filtros y compresin.
EL MUNDO DF LOS DSP 15
Figura 1.17. Mdulo de vdeo "5g DM642 multichannel". Soporta diversos formatos de. vdeo y
codifica y decodifica vdeo. Tiene un DSP que permite convertir las seales de vdeo
y audio analgicas en archivos digitales con calidad de vdeo DVD.
Figura 1.18. Placa PCI. Contiene un DSP y capacidades de grabacin y reproduccin a gran calidad.
CAPTULO
2
} Controladores
Digitales
I de Seales (DSC)
" *' :;.' ? v/*, .v "
2.1. EL CONCEPTO DSC
Mkrrochip ha unido toda la potencia y posibilidades de sus microcontroladores de 16 bits (MCU)
; xi las prestaciones ms interesantes de los DSP para fabricar un nuevo circuito integrado denomi
n o DSC, que intenta ser una respuesta eficaz a las necesidades de las modernas aplicaciones que
: >mbinan las funciones tpicas de los microcontroladores con las del procesamiento digital de se-
rIes de los DSP.
Dada la similitud del DSC con los MCU en cuanto arquitectura y repertorio de instrucciones, los
_' _arios d las familias de microcontroladores PC no encuentran dificultades para introducirse en
ei fabuloso campo del procesamiento digital de seales.
- DSC esiruy parecido a un microcontrolador MCU de 16 bits en cuanto a la arquitectura, repertorio
ce instrucciones y precio, pero con el rendimiento y las prestaciones de un DSP.
Estos dispositivos se caracterizan por alcanzar un rendimiento de 40 MIPS e integrar memoria
FLASH de alta calidad junto a novedosos recursos hardware, apoyndose en herramientas de desa
rrollo muy fciles de manejar y manteniendo la compatibilidad de los diversos modelos con encap
azados de diferente patillaje. (Figura 2.1.)
cebrado en estados y e.ec>jcin predociblc
Uso intensivo de interrupciones
3ae co'.e
Menwria FLASH
Perifricos robuetc>3
-se frecuente de Ht-il para programas grandes
Variedad de perifricos
Rendimiento DSP
ntecrupaones avanzadas
Memoria FLASH robus
Encapsuados con pocas patitas
Optimizado para enguaje C
Manejo parecido a MCU
Flujo centrado en datos
Contrarios a interrupciones
Orientado ai rendimiento
Uso de memona FLASH
Perifricos brollados
Poco frecuente uso de HLL
^igura 2.1. Los DSC renen lo mejor de los mundos MCU y DSP.
17
Los DSC se comercializan en la actualidad en diferentes dispositivos agrupados en dos familias:
1.aFamilia dsPIC30F
2. Familia d sPIC33F
18 dsPIC. DISEO PRCTICO DF APLICACIONES
2.2. CARACTERSTICAS GENERALES DE LOS DSPIC30F
Inicialmenle Microchip fabric la familia dsPIC30F de la que se ofrece en la tabla de la Figura 2.2
sus caractersticas ms destacables.
\ RECURSO RAN GO DE VALO RES
Memoria de Programa FLASH 12Kb-144 Kb
Memoria de Datos RAM 512 Bytes - 8 Kb
Memoria de Datos EEPROM 1Kb - 4 Kb
Patillaje de Encapsulado 18 - 80 patitas
Temporizadores de 16 bils Hasta 5
Mdulo de Captura Hasta 8 entradas
Mdulo Comparador / PVVM Hasta 8 salidas
Mdulo PVVM de Control de Motores De 6 a 8
Conversor A/D de 10 bits 500 kbps, hasta 1f>canales
Conversor A/D de 12 bits 100 kbps, hasta 16 canales
UART 1- 2
SPI ( 16 bits)
1- 2
i2c1M
1 Mdulo
QEI 1
Interfaz CODEC 1
CAN 1- 2
Figura 2.2. Tabla que presenta las caractersticas ms importantes de la familia dsPIC30F.
El voltaje de alimentacin admite un rango comprendido entre 2,5 y 5,5 VDC. Se tolera una
temperatura interna entre -40 y 85 C y una externa entre -40 y 125 C. El rendimiento alcanza
los 30 MIPS cuando el voltaje de alimentacin tiene un valor entre 4,5 y 5,5 VDC.
En cuanto a la arquitectura de la CPU los dsPIC30F se sustentan en un ncleo RISC con ar
quitectura Harvard mejorada. Actuando como soporte central de informacin existe un banco de
16 registros de 16 bits cada uno; se dispone de un bus de datos de 16 lneas y otro de instruccio
nes de 24. Para potenciar la velocidad de las operaciones aritmticas complejas existe un Mo
tor DSP que contiene un multiplicador hardware rpido de 17 x 17 bits, dos acumuladores de 40
bits y un robusto registro de desplazamiento. La memoria de programa, tipo FLASH, puede al
canzar un tamao de 4 M instrucciones de 24 bits cada una, aunque actualmente slo hay mode
los con una capacidad mxima de 256 K bytes. La memoria de datos SRAM puede alcanzar 32
K posiciones de 16 bits, aunque en los modelos actuales slo se llega a la mitad. La memoria de
datos se divide en dos espacios, X e Y, que pueden ser accedidos simultneamente en las opera
ciones matemticas DSP. Toda esta estructura admite operaciones MCU y operaciones DSP con
CONTROLADORES DIGITALES DE SEALES (DSC) 19
j repertorio de 84 instrucciones, la mayora de 24 bits de longitud y ejecutables en un ciclo de
instruccin. (Figura 2.3.)
Figura 2.3. Arquitectura bsica de ia CPU de los dsPICJOF.
Las secciones MCU y DSP cooperan en el funcionamiento general y comparten el flujo de ins-
rucciones de los DSC. Los recursos especficos del Motor DSP, adems de soportar las operacio
nes DSP, permiten implementar nuevas y potentes instrucciones MCU. Para reducir el tiempo de
ejecucin de algunas instrucciones DSP la memoria de datos SRAM se divide en dos espacios X e
Y que pueden ser accedidos a la vez.
Otra caracterstica importante en los dsPTC30F es la de admitir hasta 45 fuentes distintas de
peticin de interrupcin con 7 niveles de prioridad, de las cuales 5 son externas. Hay modelos
dsPIC30F que disponen de hasta 54 patitas de E/S programables y con otras funciones multi-
plexadas con un consumo de 25 mA cada una. Los dispositivos dsPIC.33F como disponen de ms
perifricos tambin admiten ms causas de interrupcin.
Se puede encontrar una gran variedad de perifricos en la familia dsPIC30F como temporizado-
res. conversores AD, mdulos de captura y comparacin, mdulos PWM para el control de moto
res, mdulos de comunicacin PC, SPI, CAN, UART, DCT, etc.
Los dsPIC33F adems contienen un Controlador de DMA.
Tambin disponen de potentes herramientas para la gestin del sistema (Perro Guardin, Moni-
:?t de fallo de reloj, temporizadores para la estabilizacin del voltaje de alimentacin y la frecuen
ta. etc.), as como dispositivos para controlar el consumo de energa (modos de bajo consumo Id-
ie y Sleep, deteccin de voltaje bajo, etc.).
En la tabla de la Figura 2.4 se presenta una comparativa sobre el rendimiento de diversas fami
lias de MCU de varios fabricantes segn los programas de prueba sobre anlisis de frecuencia de
instrucciones de EEMBC Automotive. En el grfico de la Figura 2.5 se compara la reduccin en el
tamao del cdigo con lenguaje C que generan los dsPIC30F frente al de otros competidores segn
los benchmark de EEMBC Automotive.
20 dsPIC DISFO PRCTICO DE APLICACIONES
FAMILIA MCU
CICLO
IN STRUCCI N
(MH z)
CICLO S PO R
IN STRUCCI N
MIPS
INFINEON XC161/166 40 1- 6 29
MICROCHIP dsPOOF 30 1 -2 28
II 320LF240X 40 1- 4 21
MOTOROIA 56F8X 40 1- 8 19
HITACHI H8S/26XX 33 1 - 7 15
INFINEON C16x 25 2 - 4 12
ST MICRO ST10F269 20 1- 8 9
MITSUBISHI M16 C 20 1- 8 9
MOTOROLA MC9S12D 25 2 - 6 6
Figura 2.4. Tabla de diversos fabricantes sobre algunos de sus modelos MCU usando los programas
de prueba basados en el anlisis de frecuencia de instrucciones de EEMBC Automotive.
221%
100%
Figura 2.5. Se muestra a reduccin del cdigo en lenguaje C que supone el uso de los dsPIC30F fren
te a otros segn los benchmark de EEMBC Automotive para un tamao de 50 Kbytes.
2.3. LOS MODELOS DE LA FAMILIA DSPIC30F
Microchip ha clasificado a los 19 modelos de la familia dsP!C30F que actualmente fabrica y co
mercializa en tres categoras atendiendo a su aplicacin ms apropiada.
1: Dispositivos dsPIC30F de proposito general.
2 aDispositivos dsPIC30F para el control de sensores.
3 Dispositivos dsPIC30F para el control de motores y sistemas de alimentacin.
2.3.1 Disposi ti vos dsPIC30F de propsito general
Este grupo consta de 8 modelos diferentes que se orientan especialmente a las aplicaciones avanzadas
de MCU de 16 bits embebidos y para las de audio que precisen interfaces CODEC. (Figura 2.6.)
MO D ELO PATITAS
FLASH
MEMO RIA
PRO GRAMA
KBYTES
SRAM
BYTES
EEPROM
BYTES
TIMER
16- BITS
M D U LO
CAPTURA
M D U LO
CO MPARADO R
PWM STANDAR
IN TERFAZ
CO D EC
A/D
12- BIT
100KBPS
.
UART SPI re CAN
PATITAS
E/S
(MX)
C D I G O
EN CAPSULADO
dsPIC 30F3014 40/44 24 2048 1024 3 2 2 - 13 ch 2 2 i - 30 P,PT,ML
dsPIC 30F4013 40/44 48 2048 1024 5 4 4 AC97, |2S 13ch 2 2 i 1 30 P,PT,ML
dsPIC 30F5011 64 66 4096 1024 5 8 8 AC97, |2S 16 ch 2 2 i 2 52 PTC
dsPIC 30F6011 64 132 6144 2048 5 8 8 - 16 ch 2 2 i 2 52 PF PT
dsPIC 30F60122
dsPIC 30F6012A
64 144 8192 4096 5 8 8 AC97, |2S 16 ch 2 2 i 2 52 PF I5T
dsPIC 30F5013 80 66 4096 1024 5 8 8 AC97, |2s 16ch 2 2 i ' : 2 68 PT
dsPIC 30F6013
dsPIC 30F6013A
80 132 6144 2048 5
....
8 8 - 16 ch 2 2 i 2 68 PF PT
dsPIC 30F614
dsPIC 30F6014A
90 144 8192 4096 5 8 8 AC97, |2S 16 ch 2 2 i 2 68 PF PT
Figura 2.6. Principales caractersticas de los 8 modelos que componen el conjunto de dispositivos dsPIC30F de propsito general.
C
O
N
T
R
O
L
A
D
O
R
E
S
D
I
G
I
T
A
L
E
S
D
E
S
E
A
L
E
S
(
D
S
C
)
2
1
22 dsPIC. DISEO PRCTICO DF APLICACIONES
2.3.1. Di spositi vos dsPIC30F para el control de sensores
Esta subfamilia consta de 4 modelos y se orienta a resolver aplicaciones embebidas que requieran altas
prestaciones y bajo coste, razn por la que slo disponen de encapsulados de 18 y 28 patitas. (Figura 2.7.)
C
D
I
G
O
E
N
C
A
P
S
U
L
A
D
O
o
</>
ce
O
C_-
i
CC
</>
i
<)
OT
CT!
s -
fc=
H- uj ^
'< w
O.
<N
T
<N
CN
O
<N
u
es
- - - -
1
- - - -
5
- - -
CN
K
<5!|
U
co
JZ
u
cc
JZ.
jj
JC
U
S 8 |
2 |
o ^
s
CN CN CN OJ
9
O <
5 O
CN CN CN CN
c
UJ _
P
^T
r+l rr ro
i
1 UJ Cu
wu
'
T
CN
C
^r
Ol
O
2
</>cc
*=t
CN
O
CO
T
O
04
CN
O
CO
3-
o
CN
<1
I 2 l
<IS s
u. mO*
5
CN
o
04 't
CN
l
i
l
i
S
V
l
I
l
V
d
CO co CO
<N
CO
CN
0
mJ
UJ
O
N
Ll_
O
ro
u
c_
w
"O
O
O
m
u_
o
1<-o
U
i c_
r
OI
O
CN
Ll_
O
en
U
Q.
s
~o
b
c~
u_
O
c-n
U
fi-
i/i
~
o
s
o
c
O)
o
UL.
O
r>
o
&
u
rn
(v3
U
vi
-S
03
. Q ,
u
C
r8
u.
3
WD
CONTROLADORES DIGITALES DE SEALES (DSC) 23
Nlicrochip es un suministrador cualificado y homologado de los ms importantes fabricantes de
il industria automovilstica, en la que muchas aplicaciones exigen funcionamiento con amplios ran-
fCN de temperatura y ciclos de vida muy largos.
La combinacin del conversor AD de 12 bits con los perifricos de comunicacin y la gestin
d consumo de energa hacen a estos 4 modelos ideales para la construccin de mdulos basados
es censores inteligentes. Pretensores de cinturones, airbags, controladores de ignicin, cancelacin
d ruido en el habitculo, sensores de ocupantes, etc., son algunas de las aplicaciones de estos dis-
positivos.
I_3.3. Dispositivos dsPIC30F para el control de motores y sistemas de al i mentaci n
_ s 7 modelos que componen esta categora se dedican a las aplicaciones de control de motores, ta-
como los de induccin de fase simple o trifsicos y los de corriente continua. Tambin son muy
^ropiados para la gestin de los sistemas de alimentacin ininterrumpibles, conversores, mdulos
pira la correccin del factor de potencia, etc. (Figura 2.8.)
Estos modelos de DSC se utilizan en sistemas destinados a calefaccin, ventilacin, lavadoras,
irenura industrial de puertas, control de estabilidad, medicin del caudal de agua y consumo de
ectricidad, sistemas de seguridad, etc.
Microchip recomienda el modelo dsPIC30F5015 para el control de motores paso a paso, el
^?I C30F2010 para su aplicacin en los motores de corriente continua y el control de veloci-
hi. Para los motores de induccin de corriente alterna recomienda los modelos dsPI C30F3011,
is?I C30F5015 y dsPIC30F6010.
2.4. ENCAPSULADOS Y DIAGRAMAS DE CONEXIONES
Con la finalidad de soportar todo tipo de diseos y necesidades los modelos dsPIC30F estn
capsulados desde 18 hasta 80 patitas, algunos con doble hilera de patitas, tipo PDP y SPDIP
SOIC. Otros estn preparados para el montaje superficial como los tipos TQFP y QFN.
Figura 2.9.)
La nomenclatura de los dsPIC30F formada por nmeros y letras expresan las especificaciones
particulares y su significado se describe en la Figura 2.10.
El diagrama de conexiones para los miembros de esta familia lo ha diseado Microchip para pro-
pdarl a migracin hacia modelos superiores y con ms patitas, para lo cual ha mantenido la mxi-
compatibilidad en su posicin. Se ha favorecido la compatibilidad del pinout o distribucin del
rciiilaje de los PIC MCU con los PTC DSC, tambin la de las instrucciones, la de las herramientas
je desarrollo y la de las patitas de E/S correspondientes a los perifricos de los dos tipos de PTC, co-
x l c se refleja en la Figura 2.11.
En la Figura 2.12 se muestran los diagramas de conexiones de los modelos dsPIC30F5013 y
^?I C30F6014, que coinciden, y el del dsPlC30F6013. Los dos primeros disponen de inteifaz
CODEC y el otro no lo tiene.
La mayora de las patitas de ambos diagramas de conexin soportan varias funciones, pero la
:: mpatibilidad en su posicin es total y slo las patitas 1, 78, 79 y 80 difieren en los diagramas de
te Figura 2.12, que asumen las patitas de E/S que necesita el CODEC en el diagrama correspon
dente a los modelos que lo contienen.
En la tabla de la Figura 2.13 se describe el smbolo, el significado y la direccin de las patitas
~i s representativas en los dsPIC30F.
MO D ELO PATITAS
FLASH
MEM.
PRO GR.
KBYTES
SRAM
BYTES
EEPROM
BYTES
TIMER
16- BITS
M D.
CAPT.
M D.
COMP.
PWM
ESTND.
CO N TR.
MO TO R.
'
A/D
10- BIT
500 KBPS
CO D IFIC. DE
CUAD RATURA
;
UART SPI re CAN
PATITAS
E/S
(MX)
C D .
EN CAPS.
t i ! !
dsPIC 30F2010 28 12 512 1024 3 4 2 6ch 6ch SI 1 1 1 - 20
SCP.SOG,
MMG
dsPC 30F310 28 24 1024 1024 5 4 2 6ch 6ch SI 1 1 1 - 20 SP,SO
dsPIC 30F4012 28 48 2048 1024 5 4 2 6ch 6c:h SI 1 1 1 1 20 SP,SO
dsPIC 30F3011 40/44 24 1024 1024 5 4 4 6ch 9ch SI 2 1 1 - 30 lJ,PT,ML
dsPIC 30F4011 40/44 48 2048 1024 5 4 8 6ch 9ch SI 2 1 1 1 30 P/PT#ML
dsPIC 30F5015 64 66 2048 1024 5 4 4 8ch 16ch SI 1 2 1 1 52 PT
dsPIC 30F6010
dsPIC 30F6010A
80 144 8192 4096 5 8 8 8ch 16ch SI 2 2 1 2 68
PF
PT
i- - - -- - - - - -- - - - - -- - - - -
dsPIC 30F6015 64 144 8192 4096 5 8 8 8ch 16ch SI 2 2 1 2 52 PF
dsPIC 30F5016 80 66 2048 1024 5 4 4 8ch 16ch SI 1 2 1 1 68 PT
Figura 2.8. Caractersticas ms significativas de los modelos dsPIC30F para el control de motores y sistemas de alimentacin.
2
4
d
s
P
I
C
D
I
S
E
O
P
R
C
T
I
C
O
D
E
A
P
L
I
C
A
C
I
O
N
E
S
CONTROLADORES DIGITALES DE SEALES (DSC) 25
P: 18-pirv PDIP
(22 1*7.55* 0.3 mm>
SO: 18-pin SOIC
(l t.53 * 10.34 x ? 31 nvn)
m
MM{G): 28-pin QFN ML: 44-pin QFN
15mn x 6 mm* 0.9 mm) (S nw x $ >(J.9 mm)
Microchip
P: 40-pin PUIP
152.27 x 15.24 x 3.S1 m
PT(G): 64-pln TQFP
(10 mmx10 mmx i <r*n)
PF: 64-pn TQFP
<1 mm x 14 mn x l mm)
SP(G): 28-p/n SPDIP
( M . t f T >. 7.37 >: 3.3 mm)
S0(G): 28-pin SOIC PT: 44-pin TQFP
{17.33 x 10.34 x 2.31 mm) (i o mii x 10 rjvr. x 1 nvml
PT: 80-pin TQFP PF: 80-pin TQFP
J .2 mu x 12 nim x i mm) (14 irm . 14 nw x i min)
figura 2.9. Modelos de encapsulado de la familia dsPIC30F.
Figura 2.10. Campos en que se descompone la nomenclatura de la familia dsPIC30F y significado de
cada uno de ellos. Tambin es aplicable a los dsPIC33F
PIC* MCU
UART
SPI
TMR
CCP
::
X
dsPIC*DSC
/OTi'.VVW
TMR I 5
oc
T 0I
TMR
1C
OC
F^ura 2.11. Microchip ha potenciado la compatibilidad de las lneas de E/S de los perifricos de los
PIC MCU con la de los dsPIC DSC.
26 dsPIC. DISEO PRCTICO DE APLICACIONES
COFS/RG5
T2CK/RC1 C U
T3CK/RC2
T4CWRC3
T5CK/RC4
SCK2/CN&RG6
S012/CN9.RG?
SDQ2'CH*0tRG8
MCLR
SS2/CN11XIG9
VSS
Voo
INT1AA12
!NT2iRA13
AN$>CN7.35
AN4/CN&R84
AN3.CN&33
AJGmT.VDIWCN4.S2
PGOEMUOANVCN3.B31
PGDEMUDAm'CN2fl3G d
Q 8 S S 2 |
2n3 5??e 8
a s o & 85;:
I 5SI ggo88a
s 5Ss12I 1 1
nnnnnnnnnnnnnnnnnnn
0 s x 0 i n ' 0 M - 0 ( N ( i r t r t N -
dsPlC30F6014
!EMUci/sasc<yria0CN<VRCi
I MUDl*SOSC*CNt/RC13
I EMUC2OC1D0
| IC4/R011
| C3/RD10
I IC2/RD9
11C1/RD8
| INT4.'RA5
I I KTi ' R A' .
| V 2
I OSC2.C!.K>RC15
I OSCUCUO
H ] vdo
|SCLRG2
| SOA/RG3
I BHUC3/SCK1/lWT<VRre
| SOI1.F7
| B.1UD3jSOO;jRF8
I U1IWRF2
I U1D0RF3
UUUUUUUUIJ
r r ? T - r - T - l i l l .
- - - d q q E E
s a
^ i Z Z
l i s
i l l g g l
RG15
T2CWRCI I
T3CK/RG2 d
T4CK/RC3 C Z
73CK/RC4 d
SCK2>CN8.<RG6 tZZ
SOI2>CNaG7 d
SDOZ'CN-.g'RGS d
MCLR I
S S /C NU<R G3 d
V s s d
Veo I d
1NT1iRA2 C U
INT2R A13 1ZZ
AH&yCM7/RBS d
AtM.C N&R & d
AfCCNM?B3 d
AK&SSA.VCmCN4.-Ra2 d
P GGE MUC/AMI/CNiRB'- d
PjtMEMUClAM&lCN2>RB0 EZZ
r- O
85
8 35?
SIS
8
8
^ V- N M N )
s z z r ' O Q i q
O t S2 8256005512888832883
nnnnnnnnnnpnn-Dnnnnn
S.S535S3S35
83 d
dsPlC30F6013
20
saaaaj s&asssi si ssss&sss
EMUC tSOSCOT ICKiCNORCU
EMUDVSOSCCNtRC13
E MUC2OC1.R00
IC/RD11
IC3/RD10
IC2RDS>
IC.RDS
IWT4/RA15
IHT&RAM
Vss
OSC2/CIKG/RC1S
OSC1.CLXI
va s
SCURG2
SDA'RG3
EMUC3-SCK1/ 1N7IVRFB
SDI1J RF7
EMUB3;SD01iRFS
U1RX FF2
UmORFS
UUUUUUUUUUUUU'U
o s # o o <0 0 6 0 -- a a w r t ^
? > >2 2 D >^( f l eO ) <n o u s a :
H f $<< {51 %%%%% *2*
^ =5 SSzzz zpy
<<
Figura 2.12. El diagrama de conexiones correspondiente a los modelos dsPIC30F5013 y dsPIC30F6014
so se diferencia del dsPIC30F6013 en las patitas 1, 78, 79 y 80 que soportan las
funciones del CODEC que poseen slo los primeros.
CONTROLADORES DIGITALES DE SEALES (DSC) 27
N O MBRE DE LAS PATITAS D IRECCI N DESCRIPCI N
KAn
E/S PATITAS DE E/S DIGITAL l)H A PUERTA A
RBn E/S PATITAS DE E/S DIGITAL DE LA PUERTA B
RCn E/S PATITAS DE E/S DIGITAL DE LA PUERTA C
RDn E/S PATITAS DE E/S DIGITAL DE LA PUERTA D
RFn E/S PATITAS DE E/S DIGITAL DE LA PUERTA F
RCn E/S PATITAS DE E/S DIGITAL DE LA PUERTA G
V lJ!)
ALIMENTACIN VOLTAJ E POSITIVO PARA LGIG\ Y E/S
y ss .
ALIMENTACIN ' TIERRA PARA LGICA Y E/S
A V d d
ALIMENTACIN VOLTAJ E POSITIVO PARA MDULO ANALGICO
AVss
ALIMENTACIN TIERRA PARA MDUl O ANALGICO
v r-
ALIMENTACIN ENTRADA VOLTAJ E REFERENCIA +ANALGICO
VREf
ALIMENTACIN ENTRADA VOLTAJ E REFERENCIA - ANALGICO
INTn E INTERRUPCIN EXTERNA n
An E CANALES ANALGICOS DE ENTRADA
CLK1/CLK0 E/S ENTRADA/SALIDA RELOJ EXTERNO
CNn ENTRADAS DE NOTIFICACIN DE CAMBIO
COFS - CSCK - CSDI - CSDO E/S PATITAS PARA INTERFAZ DE CONVERSIN DE DATOS
C1RX - CTTX - C2RX - C2TX E/S PATITAS DE RECEPCIN/TRANSMISIN DE CAN I Y CAN2
EMUxx E/S PATITAS PARA EL CANAL DE COMUNICACIN ICD
ICn E ENTRADAS DEL MDULO DF CAPTURA
OSCI - OSC2 E/S ENTRADA/SALIDA DEL OSCILADOR DE CRISTAL
s o s a - SOSC2 E/S ENTRADA/SALIDA OSCILADOR 32KHz BAJ A POTENCIA
OCFA - OCF8 E ENTRADAS A - B FALTA COMPARADOR
OCn s CANALES DE SALIDA DEL COMPARADOR
PCD - PGC E/S PATITAS PARA PROGRAMACIN SERIE
TnCK E ENTRADA RELOJ EXTERNO TIMER n
U1RX - U'ITX - U2RX - U2TX E/S RECEPCIN/TRANSMISIN UAR11Y UART2
SS1 -SS2 -SCK1 - SCK2 - SDII -
SDI2 -SD01 - SD02
E/S PATITAS PARA MDULOS SPI1 Y SPI2
Frgura 2.13. Smbolo, direccin y descripcin de las patitas ms significativas de los encapsulados de
los dsPIC30F.
1 3 . LA FAMILIA dsPIC33F
D voltaje de alimentacin admite un rango comprendido entre 2 y 3,6 VDC. El rango de tempera-
as idntico a los dsPIC30F. El rendimiento mximo alcanza los 40 MIPS cuando el voltaje de ali
mentacin tiene un valor de 3,3 VDC. (Figura 2.14.)
Los aspectos ms destacables que incorporan los dsPIC33F son la ampliacin en el nmero de
paas de E/S, la capacidad de la memoria FLASH que alcanza 256 KB, se mantienen los perifri
cos, la disponibilidad del doble de interrupciones, SRAM de hasta 30 KB. No disponen de memo-
na EEPROM.
Tienen un nuevo modo de bajo consumo DOZE y un nuevo Controlador DMA de 8 canales, que
serve para no utilizar a la CPU en la transferencia de datos entre perifricos y la memoria.
28 dsPIC. DISEO PRCTICO DE APLICACIONES
RECURSO RAN GO DE VALO RES
Memoria de Programa FLASH Hasta 256 KB
Memoria de Datos RAM Hasta 30 KB
Memoria de Dalos EEPROM No Dispone
Temporizadores de 16 bits Hasta 9
Mdulo de Captura Hasta 8 entradas
Mdulo Comparador / PWM Hasta 8 salidas
Conversor A/D de 10 bits 2.2 Mbps, hasta 32 canales
Conversor A/D de 12 bits 1Mbps, hasta 32 canales
UART Hasta 2 mdulos
SP1 ( 8- 16 bits)
Hasta 2 mdulos
i2crM
Hasta 2 mdulos
QEI 1
Interfaz CODEC 1
CAN Hasta 2 mdulos
Figura 2.14. Tabla que presenta las caractersticas ms importantes de la familia dsPIC33F.
En el modo DOZE todos los osciladores funcionan, pero a muy poca frecuencia, reduciendo de
esta forma el consumo.
2.5.1. Model os de la f ami l i a dsPIC33F
Microchip ha clasificado a los 27 modelos de la familia dsPIC33F que actualmente fabrica y co
mercializa en dos categoras atendiendo a su aplicacin ms apropiada.
1aDispositivos dsPIC33F de propsito general.
2.aDispositivos dsPlC33F para el control de motores y sistemas de alimentacin.
2.5.2. Di sposi ti vos dsPIC33F de propsito general
Los dsPIC33F de propsito general son ideales para una amplia gama de avanzadas de MCU de 16
bits embebidos y en concreto, las variantes con interfaces CODEC son idneas para aplicaciones de
tratamiento de la voz y audio. Este grupo est formado por 15 modelos diferentes. (Figura 2.15.)
2.5.3. Di sposi ti vos dsPIC33F de control de motores y sistemas de al i mentaci n
La categora de control de motores ofrece una gran variedad de aplicaciones relacionadas con el go
bierno de motores, como los de induccin, de fase simple o trifsicos y los de corriente continua.
Tambin son muy apropiados para la gestin de los sistemas de alimentacin ininterrumpibles, con-
versores, mdulos para la correccin del factor de potencia, telecomunicaciones u otro equipa
miento industrial. Este grupo est formado por 12 modelos diferentes. (Figura 2.16.)
MO D ELO PATITAS
FLASH
MEMO RIA
PRO GRAMA
KBYTES
SRAM
KBYTES
CD MA
Ch#
TIMER
16- BITS
M D.
CAPT.
M D .
COMP.
PWM
ESTN D.
CO D EC
INTERF.
A/D
10- BIT
500KBPS
UART
sp|TM
r c rM CAN
PATITAS
E/S
(MX)
C D .
EN CAPS.
ds.PI G3 3 FJ 64G P2 06 64 64 8 8 9 8 8 1 IADC,18ch,1S/H 2
*
'
- 53 PT
dsPIC33FJ 64GP306 64 64 16 8 9 8 8 1 1ADC,18ch,1S/H 2
2
"-i
2 - 53 PT
: dsPIC33 FJ 64GP706 64 64 16 8 9 8 8 1 2ADC,18ch,2S/H 2 2 2 2 53 PT
dsPIC33Fjl 28GP206 64 128 8 8 9 8 8 1 1ADC,18ch,1S/H 2 2 2 - 53 PT
dsPIC33FJ 128GP306 64 128 16 8 9 8 8 1 1ADC,18ch,1S/H 2 2 2
- 53 PT
dsPIC33FJ 128GP706 64 128 16 8 9 8 8
1
2ADC,18ch,2S/H 2 2 2 2 53 PT
dsPIC33FJ 256GP506 64 256 16 8 9 8 8
,
1 1ADC,18ch,1 S/H 2 2 2 1 53
- i
dsPIC3 3FJ 64C P708 80 64 16 8 9 8 8 1 2ADC,18cli,2S/H 2 2 2 2 69 PT
dsPIC33FJ 128GP708 80 128 16 8 9 8 8 1 2ADC,18ch,2S/H 2 2 2 2 69 PT
dsPIC33 FJ 64G P310 100 64 16 8 9 8 8 1 1ADC,18ch,1S/H 2 2 2 85 PT,PF
dsPIC33FJ 64GP710 100 64 16 8 9 8 8 1 2ADC,18ch,2$/H 2 2 2 2 85 PT^PF
dsPIC33 FJ 128GP310 100 128 16 8 9 8 8 1 1ADC,18ch,1S/H 2 2 2 - 85 PT, PF
dsPIC33FJ 128GP710 100 128 16 8 9 8 8 1 2ADC/18chr2S/H 2 2 2 2 85 PT,PF
dsPIC33FJ 256GP510 100 256 16 8
9
8 8 1 1ADC,18ch,15/H 2 2 2 1 85 PT,PF
dsPIC33FJ 256GP710 100 256 30 8 9 8 8 1 2ADC,18ch;2S/H 2 2 2 2 85 PT,PF
Figura 2.15. Principales caractersticas de los 15 modelos que componen los dsPIC33 de propsito general.
MO D ELO PATITAS
FLASH
MEM.
PRO GR.
KBYTES
RAM
KB
CDMA
Ch#
TIMER
16- BITS
M D.
CAPT.
M D.
COMP.
PWM
ESTND.
CO N TR.
MO TO R
PWM
CO DIF.
CUADRATURA
A/D
10- BIT 1.1
MBPS
UART SPI |2C CAN
PATITAS
E/S
(MX)
C D .
ENCAPS.
ds Pl 0.3 FJ 64 GP2 0 6 64 64 8 8 9 8 8 8ch SI 1A/D,16Ch,4S/H 2 2 2 1 53 PT
dsPIC33FJ 64GP306 64 64 16 8 9 8 8 8ch SI 2/D,16Ch,8S/l 1 2 2 2 1 53 PT
dsPIC33FJ 64GP706 64 128 8 8 9 8 8 8ch SI 1A/D,16Ch,4S/H 2 2 2 1 53 PT
ds.PIC33 FJ 128GP206 64 128 16 8 9 8 8 8ch SI 2A/D,16Ch,8S/H 2 2 2 1 53 PT
dsPIC33FJ I28GP306 80 64 8 8 9 8 8 8ch SI IA/D,18Ch,4S/H 2 2 2 1 69 PT
dsPIC33FJ 128GP706 80 128 16 8 9 8 8 8ch SI 2A/D,18Ch,8S/H 2 2 2 1 69 PT
dsPIC33FJ 256GP506 100 64 8 8 9 8 8 8ch SI 1A/D,24Ch,4S/H 2 2 2 1 85 PT, PF
dsPIC33FJ 64GP708 100 64 16 8 9 8 8 8ch SI 2A/D,24Ch,8S/H 2 2 2 2 85 PT ,PF
dsPIC33FJ 128GP708 100 128 8 8 9 8 8 8ch SI 1A/D,24Ch,4S/H 2 2 2 1 85 PT, PF
dsPIC33 FJ 64GP310 100 128
1 16
8 9 8 8 8ch SI 2A/D,24Ch,8S/H 2 2 2 2 85 PT, PF
dsPIC33FJ 64GP710 100 256 16 8 9 8 8 8ch SI 1A/D,16Ch,4S/H 2 2 2 1 85 PT, PF
dsPIC33 FJ 128GP310 100 256 i 20 8 9
8
8 8ch SI 2A/D,24Ch,8S/H 2 2
2
2 85 PT, PF
Figura 2.16. Principales caractersticas do los 12 modelos que componen los dsPIC33F de control de motores y sistemas de alimentacin.
3
0
d
s
P
I
C
.
D
I
S
E
O
P
R
C
T
I
C
O
D
E
A
P
L
I
C
A
C
I
O
N
E
S
CONTROLADORES DIGITALES DE SEALES (DSC) 31
Di ferenci as entre dsPIC30F y dsPIC33F
A pesar de ser muy similares, existen algunas diferencias apreciables entre ambos DSC. El rango de
voltajes soportado por cada uno es diferente, as como el voltaje ptimo para su mejor rendimiento.
Les dsPTC30F tienen como tensin nominal 5VDC y los dsPIC33F 3.3VDC. Tambin difieren en
las patas de E/S y la memoria FLASH que alcanza 144 KB en los 30F y 256 KB en los 33F. Los 33F
;.3iecen de EEPROM, pero su SRAM puede llegar a 30 KB, mientras que en los 30F no superan los
' KB. Finalmente, los dsPIC33F disponen del doble de interrupciones y un Controlador de DMA.
En la tabla de la Figura 2.17 se representan las principales diferencias existentes entre las fami-
^ del dsP!C30F y dsPlC33F:
26 modelos disponibles
Memoria SRAM de 8 KB
Abundantes perifricos Ms perifricos
dsPIC33F
27 modelos disponibles
Controlador de DMA (8 canales)
5 temporizadores 9 temporizadores
Modos de trabajo con baja energa :
1. IDLE
2.SLEEP
Modos de trabajo con baja energa :
1. IDLE
2. SLEEP
3. DOZE (modo de frecuencia ms baj)
Alimentacin de 2 a 5,5 V Alimentacin de 2 a 3,6 V
Rendimiento: 30MIPS a 4,5 o 5,5 V Rendimiento: 40MIPS a 3,3 V
Pocos vectores de interrupcin {62) Muchos vectores de interrupcin (118)
Memoria EEPROM
-
Memoria f LASH de 144 KB Memoria FLASH de 256 KB
Memoria SRAM de 30 KB
Frgura 2.17. Diferencias destacables entre las familias dsPIC30F y dsPIC33F.
2.6. HERRAMIENTAS DE DESARROLLO SOFTWARE
rara mantener la continuidad a los diseadores con PIC MCU y facilitar su transicin a los DSC,
Microchip proporciona un paquete de herramientas software para estos ltimos muy similar a las
utilizadas con los microcontroladores clsicos.
Todo el software se cimienta en el conocido entorno integrado MPLAB IDE, que consiste en un
sistema lgico gratuito con un Ensamblador MPLAB ASM30, un simulador software S1M30, un
compilador de C, MPLAB C30, y el nicializador Grfico de Programas MPLAB VDI. (Figura 2.18.)
l a mayor parte de estas herramientas pueden recogerse libremente desde el sitio de Microchip en
internet.
El MPLAB IDE gestiona todas las etapas del diseo software de un proyecto y se adapta a las
herramientas hardware de Microchip y otras segundas fuentes. Corre en sistemas operativos Win
dows XP, 2000, Me, 98SE y NT.
32 dsPIC DISEO PRCTICO DE APLICACIONES
Para el desarrollo y anlisis de algoritmos DSP se dispone de la herramienta dsPICworks que
entre sus posibilidades es capaz de disear filtros, generar seales, proporciona operaciones para
procesar seales aritmticas y digitales, tiene capacidad de mostrar y cuantificar elementos de una,
dos y tres dimensionales.
Una extensa oferta de libreras, muchas gratuitas, estn a disposicin de los usuarios para facili
tar el diseo de proyectos, tales como los que soportan algoritmos DSP, de reconocimiento de voz,
driver para perifricos, CAN, protocolo TCP/IP, MODEM embebidos, etc.
Figura 2.18. Ventana del programa MPLAB VDf que presta una gran ayuda en la fase de inicializa-
cin de los programas con DSC, al aportar un entorno grfico para Ja configuracin de
los recursos que intervienen.
2.7. HERRAMIENTAS DE DESARROLLO HARDWARE
La arquitectura abierta de los productos de Microchip y su generosa poltica comercial han conse
guido inundar el mercado de interesantsimas herramientas hardware y software de segundas fuen
tes que optimizan el desarrollo de las aplicaciones con los productos de este fabricante. En la foto
grafa de la Figura 2.19 se muestra el programador universal de PIC y dsPIC denominado
PICBurner de la empresa Ingeniera de Micros is temas Programados S. L.
Una herramienta muy eficaz de Microchip es el Programador y Depurador en Circuito MPLAB
1CD-2 que adems de grabar diversos microcontroladores y dsPIC depura el cdigo desarrollado en
Ensamblador o C. (Figura 2.20.)
Microchip comercializa un programador profesional denominado MPLAB PM3 y el Emulador
en Circuito MPLAB ICE 4000.
Para agilizar el entrenamiento y aprendizaje de los usuarios en el manejo de los dsPIC, Micro
chip ha desarrollado un conjunto de tarjetas especficas para desarrollar proyectos en reas como el
control de motores, la conectividad, etc. (Figura 2.21.)
CONTROLADORES DIGITALES DE SEALES (DSC) 33
Figura 2.19. Fotografa del programador universal de PIC y dsPIC, de bajo precio, fabricado por
Ingeniera de Microsistemas Programados S.L.
Figura 2.20. Fotografa del MPLAB IC.D-2 que es capaz de grabar y depurar en circuito los modelos
dsPIC
Figura 2.21. Fotografa de una tarjeta de entrenamiento fabricada por Microchip.
34 cJ sPIC DISEO PRCTICO DE APLICACIONES
2.8. APLICACIONES RECOMENDADAS
El fabricante ha clasificado en 6 reas las posibles aplicaciones de los DSC.
A) CONTROL DE MOTORES
Bombas industriales.
Lavadoras y aspiradoras.
Equipos de gimnasia.
Tensores de cinturones de seguridad.
Calefaccin, ventilacin y aire acondicionado.
Refrigeracin.
Herramientas elctricas.
Apertura de puertas.
Control de estabilidad.
Figura 2.22. Los pretensores de cinturones de seguridad son una aplicacin recomendada para los
dsPIC.. Cortesa de Citron.
B) CONTROL DE SENSORES
Sensores de torsin.
Depresin.
De vibraciones.
De golpes.
De lluvia.
De fallos en la red elctrica.
De rotura de cristales.
Sensores qumicos y de gases.
Deteccin PIR avanzada 2-D.
CONTROLADORES DIGITALES DE SEALES (DSC) 35
r:^ura 2.23. El sensor de seguridad de la figura posee un DSP efue le permite incluso distinguir a una
persona de una mascota. Cortesa de SmartHome.
C) AUTOMOCIN
Control de potencia.
Control de estabilidad y balanceo.
Caja de cambios y embrague electrnico.
Direccin hidrulica asistida elctricamente.
Cancelacin de ruido en el habitculo.
Airbag.
Control de ignicin.
Sensor de presencia de ocupantes.
Control del combustible.
Figura 2.24. El airbag es una aplicacin recomendada para los dsPIC. en automocin. Cortesa de Volvo.
D) CONECTIVIDA D EN INTERNET
Monitorizacin remota.
Contadores automticos de agua y gas.
+Instrumentacin mdica remota.
Sistemas de seguridad.
Mquinas expendedoras.
Diagnstico industrial remoto.
36 dsPIC. DISEO PRCTICO DE APLICACIONES
Figura 2.25. Los dsPIC tienen un vasto campo de aplicacin y control por Internet de las mquinas ex
pendedoras. Imagen cortesa de ATM Inc..
E) AUDIO
Reconocimiento de voz.
Altavoces telefnicos.
Redes distribuidas de megafona.
Efectos especiales en instrumentos musicales.
Cancelacin de ruidos.
Reproduccin de sonido digital.
Auriculares para la eliminacin de ruidos.
Puertos de comunicacin para manos libres.
Micrfono activado por la voz.
Figura 2.26. Los aparatos de audio para la reproduccin digital del sonido son productos en los que
se utilizan DSP. Cortesa de BENQ.
CONTROLADORES DIGITALES DE SEALES (DSC) 37
F, GESTIN YMONITORIZACIN DE SISTEMAS DE AUMENTACIN
Convertidores AC-DC.
Convertidores DC-AC.
Fuentes de alimentacin ininterrumpibles (UPS).
Inversores.
Vehculos elctricos.
Correccin del factor de potencia.
Monitorizacin de la alimentacin en servidores.
Gestin de la alimentacin y ahorro de consumo.
Deteccin de fallos.
Figura 2.27. Las fuentes de alimentacin ininterrumpibles (UPS) constituyen un campo de aplicacin
muy interesante para los dsPIC. Cortesa de Craftsmans Electric.
CAPTULO
Arquitectura
de la CPU
3.1. DESCRIPCIN DEL DIAGRAMA POR BLOQUES
En la Figura 3.1 se presenta el diagrama por bloques correspondiente a la arquitectura inlema del
modelo dsPlC3F6010 que se le puede considerar uno de los ms representativos. Encapsulado con
SOpatitas en formato TQFP dispone de casi todos los recursos posibles y cualquier otro componente
de la familia contendr slo una parte de los elementos del mencionado dispositivo. El diagrama de
Figura 3.1 puede dividirse en 6 bloques principales:
1 Memoria de datos.
2 Memoria de programa.
3. Camino de datos.
4. Puertas de E/S muitifuncin.
5. Perifricos diversos.
6 Recursos para la gestin del sistema y de la energa.
La memoria de datos RAM (SDRAM) se estructura en dos espacios, llamados X e Y, que per
miten acceso simultneo y que pueden alcanzar hasta 8 KB de capacidad en el modelo dsPIC30F,
siendo el tamao de todas sus posiciones de 16 bits. Tambin existe una memoria de datos no vol
til de tipo EEPROM. En los 33F no hay EEPROM pero la SRAM puede alcanzar 30KB.
Para una instruccin del tipo MCU (no DSP) los espacios X e Y se convierten en un solo espa
cio lineal.
Las instrucciones se alojan en la memoria de programa de tipo FLASH cuyas posiciones tienen
un tamao de 24 bits, igual que el de la mayora de las instrucciones. La memoria de instrucciones
del modelo dsPIC33F es algo ms rpida que la del dsPTC30F. La memoria FLASH de los 33F tra
baja a 3,3 V, con el inconveniente de que slo puede ser escrita y borrada 1000 veces (Endurance).
La memoria de programa puede alcanzar 144 KB como mximo.
El Camino de Datos donde se ejecutan las instrucciones y se procesan los datos se basa en un
banco de 16 registros de trabajo (W) de 16 bits de longitud cada uno, que alimentan una ALU
39
40 dsPIC DISEO PRCTICO DE APLICACIONES
Figura 3.1. Diagrama por bloques correspondiente a la arquitectura interna del dispositivo
dsPJC30F6010, considerado como uno de los ms completos y representativos.
ARQUITECTURA DE LA CPU 41
- pica de MCU, un Motor DSP que sirve para realizar las operaciones DSP de 40 bits y una uni
dad de divisin.
Las 7 puertas que agrupan las lneas de E/S para la comunicacin con el exterior (PUERTA A,
PUERTA B, PUERTA C, PUERTA D, PUERTA E, PUERTA F y PUERTA Q) se caracterizan por
aportar varias funciones multiplexadas. En cuanto a perifricos y recursos auxiliares contenidos en
d dsP!C30F6010 abarcan a todos los posibles en la familia: Conversor AD, Mdulo de Captura,
Mdulo de Comparacin, PWM para el control de motores, Codificador de Cuadratura, Mdulos de
comunicacin (UART, SPI, I2C y CAN), Osciladores, Perro Guardin, etc. Tambin existen recur
sos complementarios para el manejo de la energa y la tensin de alimentacin.
3.2. LAS MEMORIAS
Bajo una arquitectura Harvard mejorada la CPU soporta un potente repertorio de instrucciones, la
mayora de 24 bits de longitud y algunas que realizan operaciones especficas DSP. El dirccciona-
rniento de la memoria de programa corre a cargo del Contador de Programa que consta de 23 bits,
iliendo siempre cero el de menos peso e ignorndose el de ms peso, con lo que se puede direc-
::onar un espacio mximo de 4 millones de palabras de instruccin de 24 bits.
0X0001
MEMC^'A
C ER C ANA
S<0
0X07FF
MAX
64 KB.
ESPACIO V
NO
IMP LEMENTADO
NUNCA IMPLEMENTADO
0X0000
0X07FE
0X0800
0XFFFE
Figura 3.2. Memoria de datos de los dsPIC.
42 dsPIC. DISEO PRCTICO DE APLICACIONES
El espacio mximo que puede alcanzar la memoria de datos es de 64 KB o 32 K palabras de 16
bits. El dsP!C30F6010 dispone de una memoria de datos de 8 KB que se distribuye en dos espacios
llamados X e Y, que funcionan de forma independiente al tener sus propias Unidades de Generacin
de Direcciones (AGU). La mayora de las instrucciones tipo MCU operan slo con la AGUX, que
combina los espacios X e Y en uno solo unificado. Sin embargo, algunas instrucciones como la
MAC (Multiplicar y Acumular), tipo DSP, dividen el espacio de la memoria de datos en dos espa
cios X e Y independientes, que posibilitan el acceso simultneo en lectura y la reduccin del tiem
po de ejecucin de algunas instrucciones.
Una caracterstica especial de los dsPIC es su capacidad de guardar datos en la memoria de pro
grama, existiendo dos mtodos para acceder a ellos.
'
a) Los 32 KB superiores del espacio de la memoria de datos pueden mapearse en la mitad inferior
del espacio de la memoria de programa como 16 K palabras de 24 bits cada una. Slo se puede
acceder a los 16 bits de menos peso de cada palabra de instruccin. A esta posiblidad se le de
nomina PSV (Visibilidad del Espacio de Programa).
b) Tambin existe la posibilidad de acceder indirectamente al espacio de la memoria de programa
utilizando un registro de trabajo y las instrucciones especiales de lectura y escritura de Tabla.
>'-W
VECTCft RESET
MEMORIA
USUARIO
(2MB)
TABLA VECTORES INTERRUPCION
TABLA ALTERNATIVA VECTORES DE INTERRUPCION
MEMORIA P ROGRAMA FLASH
7FFFFE
MEMORIA OF DATOS EEPROM
aocoo-
MEMORIA
CONFIGURACIN
(2MS
REGISTROS CONFIGURACIN.
--------------------------- 1---------
: __________ ____
REGISTROS IDENTIFICACIN
Figura 3.3. Memoria de instrucciones de los dsPIC.
Para el direccionamiento de los datos se pueden utilizar los modos clsicos de todos los proce
sadores: Inmediato, Inherente, Directo, Relativo, Registro Directo, Registro Indirecto y Registro de
ARQUITECTURA DE LA CPU 43
Desplazamiento. Adems, los espacios X e Y permiten el modo de direccionamiento modular o cir
cular y slo el espacio X soporta el de inversin de acarreo o bit reverse, ambos muy interesantes
para la rpida implementacin de los algoritmos DSP.
Hay bastantes instrucciones en el repertorio que son capaces en un ciclo de instruccin de leer
un dato de la memoria de datos, leer un registro del banco de registros, escribir un dalo en la me
moria y leer la memoria de instrucciones, lo que posibilita que existan instrucciones que manejen
tres operandos (C =A + B) y se ejecuten en un ciclo de instruccin.
3.3. EL CAMINO DE DATOS
Para combinar las funciones aritmticas de una potente MCU de 16 bits con las especficas de un
DSP se cuenta con los siguientes recursos: banco de 16 registros de trabajo W de 16 bits cada uno,
ALU para MCU, Motor DSP y una unidad para la divisin. (Figura 3.4.)
Figura 3.4. Esquema del Camino de Datos.
La ALU de 16 bits interviene en las operaciones aritmticas propias de las instrucciones MCU.
El Motor DSP contiene un multiplicador rpido de 17 x 17 bits, dos Acumuladores A y B de 40 bits
cada uno, un Sumador/Restador de 40 bits y un potente Registro de Desplazamiento de 40 bits b-
direccional. Con los recursos comentados, una instruccin DSP, como la MAC, puede leer de la me
moria dos operandos simultneamente, mientras que multiplica dos registros W en un solo ciclo.
Una parte muy importante del Motor DSP es el banco de registros de 16 bits cada uno. Se llama
banco de registros de trabajo y cada uno tiene una funcin concreta como se puede ver en la tabla
de la Figura 3.5.
44 dsPIC. DISFO PRCTICO DE APLICACIONES
Registros Descripcin
WO Registro de trabajo por defecto (VVRFG).
W0-YV3 Registros usados para contener resultados de las operaciones DIV y MUL.
W4-W7 Registros utilizados para guardar operandos de las instrucciones MAC.
W8-W9 Registros usados para direccionar operandos de la instruccin MAC en el espacio X.
VV9-VV10 Registros usados para direccionar operandos de la instruccin MAC en el espacio Y.
W12 Offset de las instrucciones MAC.
W13 Registro de POST- ESCRITURA del Acumulador.
W14 Marco de la pila.
W15 Puntero de la pila. Por defecto, la direccin de la cima de la pila ser la 0x0800.
Figura 3.5. Funciones concretas de los registros existentes en el banco.
Aunque el procesador no admite la segmentacin de su cauce, utiliza un mecanismo de prebs-
queda con el que accede y predecodifica las instrucciones en el ciclo anterior al de su ejecucin, eje
cutando gran parte de las instrucciones en un ciclo y optimizando el rendimiento. Las nicas ins
trucciones que tardan en ejecutarse ms de un ciclo son:
a) Las instrucciones destinadas al control del flujo (saltos, llamadas y retornos) que ocupan dos ciclos
al tener que limpiar y volver a llenar el Registro de Instrucciones IR y el buffer de prebsqueda.
b) Las instrucciones que deben acceder a un operando en el espacio de la memoria de programa.
c) Las instrucciones que manejan dobles palabras.
3.4. PUERTAS DE E/S MULTIFUNCIN
El dsPIC30F6010 posee 7 puertas de E/S cuyas lneas soportan varias funciones multiplexadas, ade
ms de la propia lnea de E/S digital. En la Figura 3.1 se aprecia la existencia de 68 lneas de E/S
multifuncin, de las cuales 4 pertenecen a PUERTA A, 16 a PUERTA B, 5 a PUERTA C, 16 a
PUERTA D; 10 a PUERTA E, 9 a PUERTA F y 8 a PUERTA G. Como dicho modelo es uno de los
ms completos de la familia, los restantes disponen de un subconjunto de las mencionadas puertas
en funcin de su patillaje.
Los dsP!C33F poseen al igual que el dsPIC30F6010, 7 puertas de E/S, cuyas lneas en este caso
tambin soportan varias funciones multiplexadas, adems de la propia lnea de E/S. Los dsPIC33F
pueden tener 87 lneas de E/S multifuncin, de las cuales 14 pertenecen a PUERTA A, 16 a PUER
TA B, 8 a PUERTA C, 16 a PUERTA D, 10 a PUERTA E, 11 a PUERTA F y 12 a PUERTA G.
Cada lnea de E/S controla varias funciones multiplexadas en el tiempo, la mayor parte de ellas
destinadas a manejar los perifricos integrados, quedando algunas dedicadas al control de los vol
tajes de alimentacin, las interrupciones externas, las seales de reloj y las seales del sistema.
Una de las lneas de E/S que maneja ms funciones diferentes es la RBO, que en la Figura 3.1 vie
ne representada con la nomenclatura: PGD/EMUD/AN0/CN2/RB0, que significa que soporta 5
funciones que se describen en la tabla de la Figura 3.6.
ARQUITECTURA DE LA CPU 45
Funci ones Descr i pci n
PCD Lnea de entrada y salida de dalos en la grabacin y lectura serie del disposilivo.
EMUt )
Patita de entrada y salida de los datos principales del mdulo l2C.
ANO Canal analgico de entrada nmero 0.
CN2 Notificacin de cambio de estado correspondiente a la entrada 2.
RBO Lnea de E/S digital bidireccional 0 de PUERTA B.
Figura 3.6. Descripcin de las diferentes funciones de la RBO.
3.5. PERIFRICOS INTEGRADOS
Los perifricos que se incorporan a cada uno de los modelos de la familia dsPIC30F son los ms
adecuados para las aplicaciones a las que se destinan.
PERIFRICOS DE LOS dsPIC30F
Perifricos analgicos
Con ver sor AD de 10 bits
Conversor AD de 12 bits
Perifricos digitales
5 temporizadores de 16 bits
Mduio de Captura con 8 entradas
Mdulo de Comparacin con 8 canales de salida
Interfaz para Codificador de Cuadratura
Control de Motores PWM
Mdulos de comunicacin
UARJ (2)
SPI (2)
?C
CAN (2)
PERIFRICOS DE LOS dsP!C33F
Perifricos analgicos
Conversor AD de 10 bits
Convrsor AD de 12 bits
Perifricos digitales
9 temporizadores de 16 bits
Mdulo de Captura con 8 entradas
Mdulo de Comparacin con 8 canales de salida
Interfaz para Codificador de Cuadratura
Control de Motores PWM
Controlador de DMA
46 dsPIC. DISEO PRCTICO DE APLICACIONES
3.WIRESPI'M(2)
f!
. a
Mdulo DCI (Data Converter lnlerface)(2)
$
El conversor AD de 10 bits tiene +/- 1bit de exactitud y 16 entradas analgicas con 4 amplifi-
cadores Sdjnple & Hod. El tiempo estndar de convrsin es de 2 js/500 ksps. El conversor AD
de 12 bits de resolucin aunque es ms preciso tambin es ms lento, 10 jns/100 ksps.
El mdulo PWM para el control de motores proporciona todas las seales necesarias con 4 ge
neradores PWM con dos patitas de E/S cada uno. Disponen de una amplia base de tiempos y dos pa
titas para deteccin de tallos programables.
La interfaz para los codificadores pticos incrmentales (QE1) para la medida de la velocidad y
el sentido de giro del eje de un motor proporciona todas las seales requeridas para su correcta adap
tacin. (Figura 3.7.)
Figura 3.7. Esquema de funcionamiento del sistema que alimenta al codificador ptico incremental
Los dsPJ C30F contienen hasta 5 temporizadores de 16 bits, mientras que los dsPIC33F pueden dis
poner hasta de 9 de 16 bits, algunos de los cuales se pueden concatenar para formar otros de 32 bits.
Finalmente, los posibles mdulos de comunicacin son muy diversos en los dsPTC y suponen un
alto rendimiento en su conectividad. Destacan los mdulos UART, SP, 2C, CODEC y CAN.
o de cuadraturi (QEI).
3.6. GESTIN DEL SISTEMA Y DE LA ENERGA
Esta seccin del procesador se muestra en la Figura 3.8 y se encarga de la generacin de las seales de
reloj, el control y optimizacin de la energa y la generacin de las acciones adecuadas ante los fallos.
ARQUITECTURA DE LA CPU 47
Figura 3.8. Esquema simplificado de la seccin encargada de la gestin del sistema y do la energa.
En la generacin de las seales de reloj se utiliza un cristal de cuarzo o un resonador externo, o
r:en un circuito RC interno.
El temporizador de encendido retrasa un poco el tiempo de puesta en marcha del procesador
cuando se le aplica la energa para dar tiempo a que se estabilice el valor de la tensin de alimenta
cin aplicada. Tambin el temporizador de arranque del oscilador tiene la misin de retrasar el fun
cionamiento del procesador para que se estabilice la frecuencia de trabajo del oscilador principal.
La activacin de la patita MCLR#(Master Clear Reset) puede generar un Reset. Tambin se
consigue un Reset al aplicar el voltaje de alimentacin (POR: Power On Reset) o cuando la tensin
e alimentacin del dispositivo VDbaja hasta un valor determinado y vuelve a subir al cabo de un
instante (BOR: Brown Out Reset).
Existe un temporizador especial llamado Perro Guardin similar al que existe en los MCU que
provoca un Reset cuando se desborda y resuelve las prdidas de control del programa en curso. Otro
'ocurso muy interesante es un detector de voltaje bajo.
Finalmente, el procesador dispone de dos modos de trabajar con bajo consumo de energa: 1D-
LE y SLEEP. El dsPIC33F adems de estos dos estados tambin dispone de otro llamado DOZE. el
cual aumenta temporalmente el ciclo de instruccin del procesador al bajar la frecuencia de funcio
namiento, reduciendo de esta manera el consumo de energa.
ino
Datos
- 1 . INTRODUCCIN
El Camino de Datos de un procesador es la seccin encargada de realizar todas las operaciones que
eva la instruccin en curso. Soporta funciones aritmticas, lgicas, de desplazamiento, movi-
nto, rotacin y manipulacin de bits entre otras. En el caso de los DSC el Camino de Datos es
_z de manejar un repertorio de instrucciones que consta de las propias de una MCU de 16 bits,
to a otras especficas de un DSP y se organiza en 4 bloques principales:
1. BANCO DE REGISTROS
2 ALUDE 16 BITS
3. MOTOR DSP
4. UNIDAD DE DIVISIN
2. EL BANCO DE REGISTROS W
r.msta de 16 registros de 16 bits cada uno y se denominan W0-W15, pudiendo contener datos, di
cci ones y desplazamientos u offset, dependiendo de la instruccin que les utilice. Cada uno lie-
isignadas funciones diferentes. (Figura 4.1.)
Como se indica en la Figura 4.1, algunos registros W actan con algunas instrucciones conte-
nendo una informacin concreta, mientras otros asumen una funcin determinada.
En los microcontroladorcs PTC (MCU) existen instrucciones que no especifican el registro de tra-
fetjo que manejan y toman por defecto el que acta como Acumulador. Tambin sucede lo mismo
los DSC, en los que se toma por defecto como WREG al registro WO.
Como se muestra en el esquema de la Figura 4.2, el Banco de Registros comparte informacin
bh i todos los bloques que componen el Camino de Datos.
50 dsPIC. DISEO PRCTICO DE APLICACIONES
15
RESULTADO
MULYDIV
OPERANDOS
INSTRUCCIONES
MAC
DIRECCIONES
OPERANDOS
MAC
OFFSET INSTRUCCIONES MAC
POST-ESCRITURA INSTRUCCIONES MAC
PUNTERO MARCO
PUNTERO PILA
W0
W1
W2
W3
W4
W5
W6
W7
'W8
W9
W10
W11
W12
W13
W14
W15
0
WREG IMPLCITO
(ACUMULADOR)
g
Figura 4.1. Estructura del banco de registros de trabajo W.
ABj
UNIDAD
DE
DIVISIN
El banco de registros Wes el destino y el origen de la informacin que comparten los blo
ques del Camino de Datos y los buses X e Y
BUS DE DATOS X
SEALES
DE
CONTROL
Figura 4.2.
4.3. LA ALU DE 16 BITS
Las instrucciones lgico-aritmticas correspondientes a la seccin MCU de los DSC las realiza
una ALU de 16 bits que tambin controla 5 bits del Registro de Estado (SR) que actan como
sealizadores del resultado. En la Figura 4.3 se presenta la ubicacin de dichos bits y su no
menclatura:
EL CAMINO DE DATOS 51
SRH contiene los sealizadores para operaciones aritmtico-lgicas DSR mientras que SRL
contiene los sealizadores para operaciones MCU.
REGISTRO DE ESTADO (SR)
figura 4.3. El Registro de Estado (SR) contiene cinco bits sealizadores del resultado de la ALU pa
ra operaciones MCU.
La ALU realiza operaciones con operandos de 16 bits de suma, resta, desplazamiento de un
bit. otras de tipo lgico (AND, OR, EOR) y de complemento a 2. Como puede apreciarse en la
Figura 4.4 la ALU recibe los operandos del banco de registros y de la memoria de datos a travs
del bus de datos.
figura 4.4. Esquema de conexionado de la Al.U.
Los operandos para la ALU pueden ser de 8 y de 16 bits. En las operaciones con 8 bits y para man-
Kfier la compatibilidad con los PIC el resultado se reescribe con tamao palabra, no modificando el
byte de ms peso y controlando los sealizadores para que acten para dicho tamao. Las instruc-
ciones con operandos de tamao byte sobre registros de trabajo slo afectan al byte de menos peso.
52 dsPIC. DISEO PRCTICO DE APLICACIONES
Para facilitar el manejo combinado de instrucciones con operandos de 8 y de 16 bits hay dos ins
trucciones especializadas, la de Extensin de Signo (SE), que toma el valor del byte cargado en el
registro W o en la posicin de memoria y lo convierte en una palabra de 16 bits extendiendo el bit
de signo y almacenando dicho valor en un registro W, y la instruccin de Extensin de Ceros (ZE),
que pone a cero los 8 bits de ms peso de un registro W o de una posicin de memoria y el valor ob
tenido lo carga en un registro W.
4.4. EL MOTOR DSP
Este bloque del Camino de Datos de los DSC se compone de un conjunto de recursos fsicos que tie
nen la misin de soportar las instrucciones que conllevan operaciones complejas empleadas para re
solver los principales algoritmos aplicados en el procesamiento digital de las seales. La instruccin
MAC de Multiplicar y Acumular es una de estas instrucciones tpicas, que se denominan instruc
ciones DSP.
El Motor DSP recibe los operandos desde el banco de registros W, pero dispone de sus propios
registros para contener los resultados. Dado que slo existe un Decodificador de Instrucciones pa
ra las tipo MCU y las tipo DSP y, por otra parte, las direcciones efectivas de los operandos proce
den del banco de registros W, no es posible ejecutar de forma concurrente instrucciones MCU e ins
trucciones DSP.
Internamente el Motor DSP trabaja con 40 bits, pero externamente se relaciona mediante buses
de 16 bits.
En la Figura 4.5 se presenta el diagrama por bloques del Motor DSP con su conexionado prin
cipal, que consta de los siguientes elementos:
1. Multiplicador rpido de 17 x 17 bits.
2. Registro de desplazamiento.
3. Sumador/Restador de 40 bits.
4. Dos registros Acumuladores destino de 40 bits (A y B).
5. Lgica de redondeo.
6. Lgica de saturacin.
Las instrucciones DSP con dos operandos proporcionan estos ltimos al Motor DSP desde los re
gistros W4, W5, W6 o W7. Los valores de dichos registros son prebuscados a travs de los buses X
e Y en las instrucciones tipo MAC (MAC, MCS, MPY.N, ED, EDAC, CLR y MOVSAC). Para las
restantes instrucciones DSP los operandos se reciben desde el bus de datos X. Tambin las instruc
ciones MCU que utilizan el Registro de Desplazamiento reciben los operandos por el bus de datos X.
Los resultados producidos en el Motor DSP se guardan en alguno de los Acumuladores A o B,
si as se define en la instruccin, o bien en cualquier posicin de la memoria de datos a travs del
bus de datos X. Las instrucciones MCU que emplean el Registro de Desplazamiento tambin sacan
el resultado por el bus de datos X.
Obsrvese en el esquema del Motor DSP que los caminos de entrada y salida con la CPU tienen
16 bits, pero internamente se opera con valores de 40 bits.
El Motor DSP tiene la capacidad de realizar algunas operaciones (ADD, SUB y NEG) directa
mente sobre el contenido de los dos Acumuladores A y B, sin necesidad de ms operandos.
EL CAMINO DE DATOS 53
]_ ACUMULADOR B (40 BITS)
SUMAOOR
REGISTRO
DESPLAZAMIENTO
MULTIPLICADOR
17 x17 BITS
CONVERSION
16 A 17 BITS
MPX 3
MP X4
MPX 6
MPX 2
RELLENO
CEROS
Figura 4.5. Esquema general del Motor DSR
4.4.1. Multiplicador
El multiplicador rpido de 17 x 17 bits es compartido por las instrucciones MCU y las DSP, siendo
posible realizar multiplicaciones con signo y sin signo y generar resultados con nmeros enteros de
32 bits y con fraccinales tipo 1.31 (Q.31).
54 dsPIC. DISEO PRCTICO DE APLICACIONES
El multiplicador recibe datos de 16 bits y los convierte en 17 bits. Si los operandos tienen signo,
la conversin se efecta extendiendo el bit de signo, y si no tienen signo, se extiende el valor con
ceros. La conversin es transparente para el usuario y permite soportar multiplicaciones con y sin
signo. (Figura 4.6.)
O
Figura 4.6. interconexin del multiplicador rpido de 17 x 17 bits.
El bit IF del registro CORCON establece si la operacin del multiplicador ser de tipo entero o
fraccional en las instrucciones DSP: MAC, MSC, MPY, MPY.N, ED y EDAC.
Sin embargo, el bit IF no interviene en las instrucciones MCU que usan el multiplicador (MUL,
MUL.SS, MUL.UU, MUL.SU y MUL.US), las cuales siempre se realizan en modo entero.
En las operaciones en modo fraccional el multiplicador escala el resultado un bit a la izquierda.
El bit de menos peso del resultado siempre es cero. Tras un Reset las instrucciones DSP que usan el
multiplicador se realizan en modo fraccional.
4.4.1.1. Representacin en modo entero y en modo fraccional
La representacin de nmeros enteros se efecta en complemento a 2, donde el bit de ms peso es
el de signo. El rango de un nmero entero con N bits abarca desde - 2N1hasta 2;N1- 1.
EJ EMPLO 1
Qu valor representa el nmero entero de 16 bits 4001 expresado en hexadecimal? (Figura 4.7.)
,N-1
0 : 0 0
Figura 4.7. Valores que representan los bits del nmero entero 4001 en hexadecimal.
EL CAMINO DE DATOS 55
RESULTADO
4001 Hex. = 2 U +2o = 16384 + /= 16385
EJ EMPLO 2
Qu valor representa el nmero entero de 16 bits C002 Hex? (Figura 4.8.)
1
1 o j o 0 i 0
.1... !
0 0 0 0 0 0 0 0 1
i 0 i
5
2 14
o13 'l;2
2 11 2 10 2~ 2 8 2 2 g 2 5 2 4 2 3 22 2 1 2o
Figura 4.8. Valores que representan los bits del nmero entero C002 Hex.
RESULTADO
CW2 Hex. = - 2 ' 5 + 214 + 2' = -32768 + 16384 + 2 = -16382
En los nmeros fraccinales se representa la parte fraccionaria en complemento a 2. El bit de ms
reso es el de signo y se supone implcitamente que detrs del bit de signo est situado el punto de
b parte fraccionaria. El rango de un nmero fraccional de N bits en complemento a 2 est com-
rrendido entre -1.0 y (1 - 2,_N).
EJ EMPLO 3
Qu valor representa el nmero fraccional de 16 bits 4001 Hex? (Figura 4.9.)
m:
1 O 0 j O O
-2o. 2'1 2'2 23 2a
Figura 4.9. Valor que representan los bits correspondientes al nmero fraccional 4001 Hex.
RESULTADO
-001 Hex. = 2-' +2~'5 = 0,5 + 0,000030518 = 0,500030518
EJ EMPLO 4
fi w 88L! TPf-
Qu valor representa el nmero fraccional de 16 bits C002 Hex? (Figura 4.10.) ' ,
1
::
o 0 O 0 0 : 0
3 o-9 o-10 o-11 ^-12 0-13 o-14 o-15
\ y
2*4 2*5 2 ' e 2 2 2'y 2'1U 2"11 2"'^ 2"1J 2",/} 2 -2o. 21 2'2 23
Figura 4.10. Valor que representan los bits del nmero fraccional C002 Hex
RESULTADO
C002 Hex. =-2 + 2 ' + 2 ' 14 = - 1 + 0,5 + 0,000061035 = -0,499938965
En la tabla de la Figura 4.11se ofrecen los rangos en modo entero y fraccional para nmeros de
16, 32 y 40 bits.
56 dsPIC. DISEO PRCTICO DE APLICACIONES
TAMA O
RAN GO
M O D O EN TERO
(- 2n i a 2 n'- 1 )
RAN GO
M O D O FRACCIO N AL
(- 1.0 a 1 - 2 1N)
RESO LUCI N
MO D O FRACCIO N AL
16 -32.768 HASTA 32.767
-1,0 HASTA (1-2*15)
FORMATO Q. 15
3,052 x IO'5
32
-2.147.483.648 HASTA
2.147.483.647
-1,0 HASTA (1-23')
FORMATO Q.31
4,657 x 10"
40
-549.755.813.888 HASTA
549.755.813.887
-256,0 HASTA (256-2 3)
FORMATO Q.31 CON
8 BITS DE GUARDA
4,657 x 10''
Figura 4.11. Tabla con los rangos en modo entero y fraccional de nmeros de 16, 32 y 40 bits.
4.4.2. Acumul adores A y B
El Motor DSP dispone de dos Acumuladores de 40 bits denominados ACCA y ACCB, en donde
se guardan los resultados de las operaciones DSP que utilizan el multiplicador y que son MAC,
MSC, MPY, MPY.N, ED y EDAC. Cada Acumulador se divide en tres campos, como se muestra
en la Figura 4.12.
,31.
16.15.
9
ACCxU ACCrH ACCxL
Figura 4.12. Cada Acumulador de 40 bits se divide en tres campos, que se implementan en 3 regis
tros STR de la memoria de datos.
Para operaciones en modo fraccionario que utilizan los Acumuladores, el punto fraccional se si
ta a la derecha del bit 31.
4.4.3. Sumador/Restador de 40 bits
El Motor DSP dispone de un Sumador de operandos de 40 bits con capacidad de restar, que puede
realizar operaciones sobre los valores de los Acumuladores, as como con el valor que genera el
multiplicador extendido en signo. (Figura 4.13.)
El sumador puede opcionalmente negar uno de los operandos para implementar la resta como su
cede con las instrucciones MSC (Multiplicar y Restar) y MPY.N (Multiplicar y Negar).
Existen 6 sealizadores en el Registro de Estado (SR) que indican sobrepasamiento o saturacin
en las operaciones realizadas por el sumador de 40 bits. (Figura 4.14.)
El. CAMINO DE DATOS 57
M P X 3 M P X 4
Figura 4.13. Esquema de conexionado del Sumador de 40 bits.
Figura 4.14. Situacin en el Registro de Estado de los 6 sealizadores del resultado de las operacio
nes del Sumador de 40 bits.
Cuando el sealizador OA = 1 significa que se ha producido sobrepasamiento en los bits de
guarda (32-39) de ACCA en la operacin efectuada por el Sumador de 40 bits. OB informa de la
misma situacin para ACCB, mientras que OAB es el resultado de la operacin lgica OR entre
OA y OB. Se puede programar el procesador para que cuando se active O A u OB se genere una
excepcin de error aritmtico programando los bits OVATE y OVBTE del registro de control de
interrupciones INTCON1<10:9>.
' Los sealizadores SA y SB informan que en la ejecucin de la ltima instruccin que ha usado
el Sumador de 40 bits se ha producido saturacin en el resultado depositado en ACCA o en ACCB,
respectivamente. Esto indica que se ha superado el mayor valor posible del rango (saturacin en el
bit 31 para nmeros de 32 bits o saturacin en el bit 39 para nmeros de 40 bits). El bit SAB pro
cede de la operacin lgica OR entre SA y SB.
58 dsPIC. DISEO PRCTICO DE APLICACIONES
Cuando no funciona el mdulo de Saturacin la activacin de SA o SB genera una condicin de
sobrepasamiento catastrfico que puede generar una excepcin por error aritmtico activando el bit
COVTE del registro TNTC0N1<8>.
Estos sealizadores se actualizan cuando se realiza una instruccin DSP que modifica el valor
de uno de los acumuladores ACCA o ACCB.
Como se explicar posteriormente existe la posibilidad de post-escritura*de uno de los acu
muladores en las instrucciones MAC y MSC, que consiste en escribir el valor redondeado del Acu
mulador que no acta como destino en la instruccin en el espacio de la memoria de datos. Esta
post-escritura es muy interesante en algunos algoritmos tipo FFT y LMS. El contenido redondeado
del Acumulador que no es el destino de la operacin s puede escribir directamente en W13 o en la
direccin de la memoria de datos direccionada por [W13J +=2-
El mdulo de Redondeo puede realizar un redondeo de tipo convencional o convergente duran
te la escritura de un Acumulador de 40 bits. El permiso para el funcionamiento de este mdulo se
controla con el bit RND del registro C0RC0N<1>. El bit correspondiente al mdulo de Saturacin
es SADW del registro CORCON<5>.
Se pueden resumir en 6 los modos de funcionamiento del Motor DSP.
' . ; . . . . :;,vVv \ .. - : . ; -
1: Multiplicacin en modo entero o fraccionaI.
2 oRedondeo convencional o convergente.
3 CSaturacin automtica para ACCA.
4." Saturacin automtica para ACCB.
5 Saturacin automtica para escritura de datos en memoria.
6. Seleccin del modo de saturacin del Acumulador.
4.4.4. Regi stro de Despl azami ento
Se trata de un registro de desplazamiento de 40 bits que es capaz de realizar desplazamientos arit
mticos de hasta 16 bits a la derecha o a la izquierda en un solo ciclo. Se emplea para desplaza
mientos de mltiples bits en instrucciones DSP y MCU.
Para determinar el nmero de bits a desplazar se precisa de un nmero con signo, que cuando es
positivo significa que el desplazamiento es a la derecha y en caso contrario a la izquierda.
Las instrucciones que utilizan el Registro de Desplazamiento son las 5 siguientes:
ASR: desplazamiento aritmtico varios bits a la derecha en una posicin de memoria.
LSR: desplazamiento lgico varios bits a la derecha en una posicin de memoria.
SL: desplazamiento a la izquierda varios bits en una posicin de memoria.
SAC: almacenamiento de un Acumulador de 40 bits con desplazamiento opcional.
SFTAC: desplazamiento de un Acumulador de 40 bits.
4.4.5. Uni dad de Di vi si n
El repertorio de instrucciones de los DSC soporta las siguientes dedicadas a la divisin:
EL CAMINO DE DATOS 59
En todas las instrucciones de divisin el cociente se coloca en WO y el resto se deposita en W1.
El divisor de 16 bits puede situarse en cualquier registro W y el dividendo de 16 bits tambin. En
aso de ser de 32 bits se debe situar en una pareja de registros W adyacentes.
Todas las instrucciones de divisin son interactivas y en ellas se ejecuta 18 veces un bucle me-
ante la instruccin REPEAT. Despus de cada iteracin del bucle todos los datos son almacena
dos de nuevo en sus registros, siendo el usuario el responsable de salvar los correspondientes regis
tros W en la rutina de atencin a la interrupcin ISR.
ANEXO
Manipulacin
de datos en
el Motor DSP
w Sy.
ta>viv.
A.1. REPRESENTACIN DE DATOS
El multiplicador del Motor DSP recibe dos operandos de 16 bits (Figura 4.5). Estos operandos pue
den ser de dos tipos:
a) Entero: Un valor entero de 16 bits, con o sin signo.
b) Fraccionario: Un valor fraccionario de 16 bits con formato 1.15 (tambin llamado
Q15), es decir, contiene un bit de signo y 15 bits fraccionarios.
Antes de ser multiplicados, los operandos son procesados para convertirlos a 17 bits, ya que es
to simplifica la multiplicacin MCU entre valores con signo y sin signo, y permite realizar correc
tamente la operacin (-1.0 x -1.0). El resultado de la operacin puede ser un entero de 32 bits (con
o sin signo) o un valor fraccional con formato 1.31. En realidad, el multiplicador genera un resulta
do de 33 bits, porque si es de tipo entero aade un 0 a la derecha, y si es de tipo fraccionario queda
en formato 2.31, que luego puede transformarse al 1.31.
Posteriormente, el resultado deber ser extendido a 40 bits para poder ser tratado correctamente
en el resto de los elementos del Motor DSP.
Los datos que se introducen al Motor DSP son de 16 bits, luego internamente se transforman en
40 bits y se manipulan. Finalmente, los resultados que proporciona el Motor DSP son de 16 bits al
tener que ser transferidos por el bus X
A.2. SATURACIN DE LOS ACUMULADORES
La saturacin de los acumuladores se basa en el empleo de la aritmtica de saturacin, la cual se uti
liza para hacer frente a situaciones de desbordamiento. En este caso se usa el Sumador-Restador de
40 bits.
Si el resultado de una operacin aritmtica excede del rango establecido se produce una condi
cin de desbordamiento, que significa que el resultado es incorrecto. En el caso de utilizar satura
cin, se corrige el error manteniendo los lmites del rango que se ha desbordado. (Figura A.l.)
60
EL CAMINO DE DATOS 61
Si el desbordamiento es producido por :
a) La suma de dos nmeros positivos
b) La suma de dos nmeros negativos
se sustituye la salida errnea por el
mximo valor positivo,
se sustituye la salida errnea por el
mnimo valor negativo.
Aritmtica modular Aritmtica con saturacin
250+ 10 = 5 255
10-269 -4 -255
Figura A.1. Ejemplos con aritmtica modular y con saturacin. Cuando de sobrepasan los lmites, la
aritmtica con saturacin corrige el resultado al valor absoluto mximo posible.
La aritmtica con saturacin es eficiente en el procesamiento digital de seales. En el caso de que
los valores de la seal excedan los valores lmite del rango se puede utilizar la saturacin para re
solver el problema. (Figura A.2.)
7FFFh
OOOOh
8000h
Figura A.2. Correccin por saturacin de la seal a representar.
dos modos opcionales de saturacin que afectan a la salida del sumador de Los dsPIC soportan
40 bits :
a) Saturacin normal (1.31)
b) Sper Saturacin (9.31)
Para la seleccin del modo de saturacin se utilizan varios bits del registro CORCON. El bit SA
TA habilita y deshabilita la saturacin del acumulador A y el SATB habilita y deshabilita la satura
cin del acumulador B.
Una vez activada la saturacin, la seleccin del modo de saturacin se realiza a travs del bit
ACCSAT. Por defecto la saturacin siempre est deshabilitada.
Por otro lado, el bit SATDW habilita y deshabilita la saturacin en la escritura, la cual afecta a
la instruccin SAC, que almacena el Acumulador en la memoria de datos, y a la post-escritura de
los acumuladores.
Cuando la saturacin est deshabilitada no se altera el resultado del sumador de 40 bits y traba
ja en un rango de -256 a ~+256.0. Si excede de este rango de valores, el resultado no se satura y
mantiene el valor aunque este sea incorrecto.
62 dsPIC. DISEO PRCTICO DE APLICACIONES
Para manejar esta situacin se utiliza la condicin de overflow catastrfico, la cual se seali
za con un hit de flag en el registro TNTCON1, que puede gestionar una excepcin Mcith Error (Error
Aritmtico).
A.2.1. Saturaci n normal
La saturacin normal soporta el formato de datos 1.31, el cual utiliza un bit de signo y 31 bits frac
cionarios para representar el valor. El rango que admite este formato est comprendido desde -1.0
hasta - 1.0.
Cuando la saturacin normal est habilitada, la salida del sumador est limitada a un rango de
32 bits.
Este valor se almacena en ACCxH : ACCxL y su signo (situado en el bit 15 de ACCxH) se ex
tiende a todos los bits de ACCU. De este modo, si una operacin destruye el bit de signo, el suma
dor saturar el resultado al mximo valor negativo de 32 bits o al mximo valor positivo de 32 bits.
(Figura A.3.)
Mximo valor positivo de 32 bits: QxQQ7FFFFFFF (~+1.0)
Mnimo valor negativo de 32 bits: 0xFF80000000(-1.0)
3-9
ACCxU
a rr' Li ACCxL
32 31 ACCxH 16 15
0
1111 1111 0000 0000 0000 0000 | 0000 0000 0000 0000
Figura A.3. Representacin del mximo valor positivo y negativo con 32 bits.
En este tipo de saturacin nunca se producir overflow, ya que se restringe el resultado a 32 bits
y los 8 bits restantes son para recoger la extensin de signo.
A.2.2. Sper saturacin
La sper saturacin soporta el formato de datos 9.31, empleando 9 bits para representar un valor en
tero con signo y 31 bits para la parte fraccionaria.
En este modo de saturacin la salida del sumador est limitada a un rango de 40 bits, cuyo valor
es almacenado en ACCxU : ACCxH : ACCxL y el bit de signo se guarda en el bit 7 de ACCxU, o
lo que es lo mismo en el bit 39 del acumulador.
Si una operacin destruye el bit de signo el sumador saturar el resultado con una de estas dos
opciones :
a) El mximo valor negativo de 40 bits.
b) El mximo valor positivo de 40 bits.
EL CAMINO DE DATOS 63
Mximo valor positivo de 40 bits: 0x7FFFFFFFFFF (~+256.0)
ACCxH ACCxl 39 ACCxU 32 31
16 15
01111111 g 1111111111111111
Mximo valor negativo de 40 bits: 0x8000000000 (-256.0)
39 ACCxU 32 31
1000 0000 I
ACCxH
ACCxL
16 15
0000000000000000
Figura A.4. Representacin del mximo valor positivo y negativo con 40 bits.
La sper saturacin permite realizar operaciones que admitan un rango mayor (256) que la sa
turacin normal (1) aunque ambos procedimientos mantienen la precisin de la parte fraccionaria
con 31 bits.
A.2.3. Saturacin de escritura
Existe otro tipo de saturacin que no tiene nada que ver con las comentadas anteriormente, se trata
de la saturacin en la escritura del bus de datos X, que se origina cuando se almacena el Acumula
dor en una posicin de la memoria de datos mediante una instruccin SAC. El Acumulador tiene 40
bits y tanto el bus X por el que se transfiere, como la posicin de la memoria de datos son de 16 bits,
para lo cual slo se almacenan los 16 bits correspondientes al campo ACCxH.
La saturacin de escritura es accesible a travs del bit SATDW en el registro CORCON y se en
carga de proporcionar un dato limpio de 16 bits al bus de datos X buscando la mejor conversin
posible, partiendo del valor de 40 bits del Acumulador.
En esta saturacin no se modifica el valor del Acumulador, sino que se crea un nuevo valor de
16 bits a partir de l, para poderlo enviar por el bus X a una posicin de 16 bits en una instruccin
SAC, o bien, al registro W13 en las instrucciones DSP con post-escritura.
La saturacin de escritura es similar a la saturacin normal, pero slo se usan los 16 bits de
ACCxH, por lo que el rango de valores comprendo de 1.0 a ~ 1.0, pero con una precisin de 15 bits
(1.15 en vez de 1.31). El valor mximo ser 0x7FFF (~ 1.0) y el mnimo 0x8000 (-1.0).
A.3. REDONDEO
Cuando se ejecuta la instruccin SAC.R o se lleva a cabo la post-escritura del acumulador, es nece
sario realizar una operacin de redondeo para convertir el dato extrado del acumulador de 40 bits
a 16 bits y poder ser transportado por el bus de datos X. Lo que se obtiene como valor de 16 bits es
ACCxH que se redondea segn el valor de ACCxL, que slo se utiliza para realizar dicha funcin
de redondeo.
El redondeo, como la saturacin de escritura no modifican el valor contenido en el acumulador,
sino que crea uno nuevo de 16 bits a partir de aqul que corresponde con el valor de ACCxH.
Para el redondeo existen dos modos de funcionamiento que se selecciona mediante el bit RND
del registro CORCON.
64 dsPIC. DISEO PRCTICO DE APLICACIONES
a) Redondeo Convencional: Es el sistema ms sencillo y consiste en redondear hacia arriba
ACCxH cuando el bit de ms peso de ACCxL vale 1, lo que significa que ACCxL ^ 0x8000.
En este caso el redondeo hacia arriba aade 1al valor de ACCxH, que es el valor final de
16 bits. Este modo tambin es conocido como biased (parcial).
En el caso de que ACCxL <0x8000 se aade un cero a ACCxH, que es el resultado que se
transfiere por el bus de datos X de 16 bits.
b) Redondeo Convergente: Este modo redondea hacia arriba, o sea, aade 1a ACCxH, cuando
se da una de estas dos opciones;
1 ACCxL es mayor a 0x8000.
2.a ACCxL es igual a 0x8000 y el primer bit, que es el de menos peso, de ACCxH vale 1.
En el caso de que ACCxL<0x8000, o bien, ACCxL=0x8000 pero el bit de menos peso de
ACCxH valga 0, se aade 0 al valor de ACCxH en el redondeo convergente.
Este sistema tambin es conocido como unbiased (imparcial).
CAPTULO
5
Modelo del
procesador para
el programador
5.1. LOS REGISTROS DEL PROGRAMADOR
El programador de DSC, especialmente cuando utiliza el lenguaje Ensamblador, debe conocer la mi
sin y caractersticas principales de un conjunto de registros de la CPU. En la tabla de la Figura 5.1
se describe el nombre, la direccin que ocupa en la memoria y la descripcin de los registros funda
mentales, que manejan las instrucciones del repertorio de los DSC. Los 2 KB iniciales de la memo
ria de datos estn destinados a contener los registros especficos de control SFR del procesador.
NOMBRE REGISTRO DIRECCIN DESCRIPCIN
VVO- VV15 0000-001 c BANCO DE REGISTROS DF TRABAJ O
SPLIM 0020 REGISTRO DEL LMITE DEL PUNTERO PILA (SP)
ACCAL - ACCAH - ACCAU 0022 - 0024 - 0026 REGISTROS DE ACCA (40 BITS)
aCCBL - ACCBH - ACCBU 0028 - 002A - 002C REGISTROS DE ACCB (40 BITS)
PCX - PCH 002 E - 0030 REGISTROS DEL CONTADOR DF PROGRAMA PC {23 BITS)
TBLPAG 0032 REGISTRO DF DIRFCGONFS PARA INSTRUCCIONES DE TABLA
PSVPAG 0034 REGISTRO DE PGINA PARA VISIBILIDAD DEL ESPACIO DE PROGRAMA
RCOUNT 0036 REGISTRO CONTADOR DE BCl FS "RFPFAT"
DCOUNT 0038 REGISTRO DE CONTADOR DE BUCLES "DO"
DOSTARTL - DOSTARTH 003A - 003C REGISTROS PARA DIRECCIN INICIO DE BUCLE "DO"
DOENDI - DOENDH 003 E - 0040 REGISTROS PARA DIRECCIN FINAI DF BUCLE "DO"
SR 0042 REGISTRO DE ESTADO
CORCON 0044 REGISTRO DE CONFIGURACIN DEL NCLEO
MDCON 0046 REGISTRO CONTROL DIRECCIONAMIENTO MODULAR X
XMODSRT 0048 REGISTRO DIRECCIN INICIO DIRECCIONAMIENTO MODULAR X
XMODEND 004A REGISTRO DIRECCIN FINAL DIRECCIONAMIENTO MODULAR X
YMODSRT 004C REGISTRO DIRECCIN INICIO DIRECCIONAMIENTO MODULAR Y
YMODEN'D 004E REGISTRO DIRECCIN I INAL DIRECCIONAMIENTO MODUl AR Y
XBRFV 0050 REGISTRO PARA DIRECCIONAMIENTO "BIT REVERSE"
DI5ICNT
0052 REGISTRO CONTADOR DESACTIVACIN INTERRUPCIONES
-
0054 - 007E RESERVADOS
Figura 5.1. Tabla que recoge el nombre, la direccin y la descripcin de los registros que conforman
el modelo de la CPU para el programador de los DSC. Cada registro de 16 bits ocupa dos
direcciones del espacio de datos, cada una con un byte de datos.
65
66 dsPIC. DISEO PRCTICO DE APLICACIONES
En la Figura 5.2 se ofrece un esquema interno con la nomenclatura de los principales registros
usados por el programador.
REGISTROS RESULTAOO
DIVY MU L
REGISTROS DE
OP ERAN DOS MAC
REGISTROS DE
DIRECCIONES DE
O PER AN DOS MAC
REGISTROS SOMBRA PARA
PUSH.S Y POP.S
REGISTROS SOMBRA *DO'
S- REGISTROS DE TRABAJ O
REGISTRO LIMITE DEL P UNTE RO PILA
ACCAU
v - v . w V
ACCAH ACCAL
ACCBU
- . . . . . . . . . . .
ACCBH ACCBL
TLBP AG .
DIRECCIONES INSTRUCCIONES DE TABLA
DIRECCIONES VISIBILIDAD ESPACIO DE PROGRAMA
15 O
CONTADOR DE BUCLES DO
%
PC
CONTAOOR DE P ROGRAMA
DOSTART
DOEND
DIRECCION FINAL BUCLE DO
CORCON
DIRECCION INICIO BUCLE DO
I
REGISTRO CONFIGURACION N UCLEO
Figura 5.2. Representacin grfica de los principales registros del modelo de la CPU que utiliza el
programador de aplicaciones en lenguaje Ensamblador.
MODELO DEL PROCESADOR PARA EL PROGRAMADOR 67
5J>. EL BANCO DE REGISTROS DE TRABAJO
^ operatividad del Camino de Datos est basada en el banco de registros compuesto por 16 que tie-
n una longitud de 16 bits cada uno y se denominan W0-W15. Dichos registros soportan muchas
-r:>iones en la ejecucin de las instrucciones del repertorio.
Las instrucciones ms comunes utilizan estos registros de trabajo para contener datos y direc-
; nes de memoria. Por ejemplo, la instruccin MOV W3, [W6J mueve el contenido del registro W3
i la posicin de memoria cuya direccin est depositada en W6. El operando fuente es W3 mientras
t3Deel destino est direccionado por W6. Otra instruccin que emplea los registros de trabajo para
anej ar operandos es ADD [W2], W4, W6, en la que un operando fuente es el contenido de la di
seccin apuntada por W2 y el otro el valor de W4. El resultado de la suma de los dos operandos se
deposita en W6 que acta como operando destino.
Existe un tipo de instrucciones que utiliza el registro WO como registro de trabajo implcito cuan-
ic se le referencia como WREG. Son instrucciones similares a las que hay en el repertorio MCU en
fas que se hace una referencia implcita a un registro de trabajo que actuaba como Acumulador en
.i ALU. Por ejemplo, la instruccin ADD 0x3F00, WREG suma el contenido de WT0 con el alma
cenado en la direccin 0x3F00 y deposita el resultado en WO.
Como se desprende de la tabla de la Figura 5.1 los registros W0-W15 estn mapeados en la rne-
- : ria de datos entre las direcciones 0000-001E y se pueden manejar como posiciones, de forma que si
desea mover el contenido del registro W2 a W4, se puede usar la instruccin MOV 0x0002,0x0004.
Al ocupar cada registro W un par de posiciones de memoria de tamao byte se manipulan da-
los tipo palabra. El resultado de una operacin con datos de tamao byte afecta al byte de menos pe-
del registro de trabajo.
i
Despus d realizar un Reset todos los registros de trabajo W toman el valor cero, excepto VZ15.
Los registros W0-W3 se utilizan para guardar el resultado de las instrucciones MUL y DIV. W0
ruarda el cociente de una dividisin y W1el resto, mientras que W3:W2 guardan el resultado de la
multiplicacin. Adems actan como registros sombra para las instrucciones PUSH.S y POP.S.
Los registros W4-W7 se dedican a contener los operandos de las instrucciones MAC, mientras que
'.YS-Wll se emplean habitualmente para contener las direcciones de los operandos de las instruc
ciones tipo MAC. W12 acta como desplazamiento u offset y permite incrementar o decremen-
tar el valor al que modifica.
W13 en las instrucciones MCU, se puede usar como registro de trabajo. En algunas instruccio
nes MAC se emplea como registro de post-escritura, que consiste en la post-escritura del acumula
dor inactivo o no usado.W14 trabaja como puntero del Marco de la Pila, que es una zona de la mis
ma que es manejada por una subrutina. W15 es el puntero de la Pila y est relacionado con el
registro SPLM que guarda el lmite que puede alcanzar W15.
5.3. REGISTROS SOMBRA
Algunos registros de la Figura 5.2 tienen asociados unos registros llamados sombra, que se usan
temporalmente para contener informacin que se enva o se recibe cuando ocurre algn suceso de
terminado. Ningn registro sombra puede ser accedido directamente.
68 dsPIC. DISEO PRCTICO DE APLICACIONES
El contenido de los registros sombra se transfiere cuando se ejecutan las siguientes instruc
ciones:
1) Las instrucciones PUSH.S y POP.S afectan a los registros sombra WO, W1, W2, W3
y SR (slo los bits DC, N, OV, Z y C). En el caso de PUSH.S el contenido de dichos
registros se carga en la Cima de la Pila, mientras que con POP.S los valores de la Ci
ma de la Pila se depositan en dichos registros. De esta manera se pueden salvar y res
taurar cmodamente los contenidos de estos registros en las llamadas a subrutina y en
las rutinas de interrupcin.
2) La instruccin DO afecta a los registros sombra DOSTART, DOEND y DCOUNT que
los carga con los valores de la Cima de la Pila o deposita sus contenidos en la Cima de
la Pila. (Figura 5.3.)
REGISTROS SOMBRA PARA INSTRUCCIN DO
5-----*............. ........
DCOUNT
1
22.
DOSTART
DOEND
1
Figura 5.3. Representacin grfica de los dos conjuntos de registros sombra.
5.4. PUNTEROS DE LA CIMA DE LA PILA Y DEL MARCO DE LA PILA
El registro W15 funciona como puntero de la Cima de la Pila y contiene la direccin de la posicin
ms alta pudindose modificar automticamente su valor con las llamadas a subrutina, los retornos
y las interrupciones. No obstante W15 puede ser manejado por las instrucciones como cualquier otro
registro del banco.
Con el objetivo de mantener alineados los datos que se transfieren en la Pila, W15 tiene a cero
el bit de menos peso apuntando siempre a direcciones pares.
Tras producirse un Reset W15 queda inicializado con el valor 0x0800, que es una direccin v
lida de la RAM de los DSC. El programador puede alterar dicho valor a uno mayor para ubicar la
Pila en la zona deseada. El espacio comprendido entre las direcciones 0x0000 y 0x07FF est reser
vado para registros de funciones especficas (SFR). Cuando W15 se carga con un valor inferior a
0x0800 el procesador genera una excepcin de error de Pila.
REGISTROS SOMBRA PARA PUSH.S Y POP.S
MO D ELO DEL PRO CESADO R PARA EL PRO GRAMADO R 69
En la Figura 5.4 se supone que W15 est cargado con el valor 0x0800 y se ejecuta la instruccin
CALL para producir una llamada a subrutina. Para salvar la direccin de retorno al programa prin
cipal se salva en la Cima de la Pila el valor del PC<22:0> que al tener 23 bits ocupa dos posiciones
de memoria de 16 bits. Realizada la carga del PC, W15 se incrementa automticamente en 4, que
son los bytes utilizados para guardar al PC. Obsrvese en la figura que el byte de ms peso de la pa-
abra donde se almacena PC<22:16> se carga con ceros.
W15=0x0800 (ANTES DEL CALL)
W15=0x0804 (DESPUES DEL CALL)
Figura 5.4. Al salvarse en la Cima de la Pila el PC que contiene la direccin de retorno al programa
principal, W15 se auto-incrementa en 4 unidades automticamente.
MEMORIA
DE DATOS
RAM
15 _ 8 7
PC <15:0> ::: .
B 0000 0000' : PC <22:16>
DIRECCIONES
CRECIENTES
La instruccin PUSH escribe en la Cima de la Pila el operando que conlleva. Por ejemplo,
PUSH W2 .escribe en la Pila los dos bytes del registro W2 y despus auto-incrementa W15 en 2 uni-
:ades. Con la instruccin POP W2 se coge la palabra que apunta en la Pila W15 y se deposita en
W2, decrementando en 2 unidades el valor de W15 automticamente.
La instruccin PUSH W2 es equivalente a MOV W2, [W15++], y POP W2 produce el mismo
resultado que MOV [-W15J , W2.
El registro SPLIM guarda el lmite de la Pila o el valor mximo que puede alcanzar el puntero
lie la Pila. El bit de menos peso vale cero para mantener los datos alineados. Tras el Reset SPLIM
carga con ceros impidiendo la deteccin del desbordamiento de la Pila hasta que el programador
no cargue a SPLIM con un valor vlido.
Un Marco de Pila es una porcin de la misma que se destina a una subrutina concreta. W14
contiene la direccin del Marco y se inicializa y se abandona dicha funcin con las instrucciones
LNK y ULNK, respectivamente. Cuando no se usa W14 como puntero del Marco de Pila puede
emplearse como otro registro de trabajo.
5.5. EL REGISTRO DE ESTADO (SR)
Los dos bytes que componen el Registro de Estado (SR) sirven para informar principalmente del es-
lado y de las condiciones especiales que se han producido en el resultado de la operacin aritmti
co-lgica que se acaba de realizar, bien en la seccin MCU o en la DSP.
El byte de menos peso se denomina SRL y se corresponde con la seccin MCU. Guarda la in-
ormacin de los siguientes sealizadores:
70 dsPIC DISEO PRCTICO DE APLICACIONES
: i i f i
N es el bit de signo, y si no se trabaja con signo es simplemente el bit de ms peso.
QV indica que el resultado de la operacin realizada ha producido un sobrepasamiento.
Z indica que el resultado de la operacin realizada es cero.
C es el sealizador de acarreo en las sumas y restas.
IPL<2: 0> son los tres bits, que junto con IPL3 que se ubica en el registro CORCON, conforman
el nivel de prioridad que tiene la CPU frente a las interrupciones. Para atender una interrupcin el
peticionario deber tener mayor nivel de prioridad que el de la CPU.
RA informa si se encuentra activo un bucle REPEAT.
REGISTRO DE ESTADO (SR)
ESTADO DSP
Figura 5.5. Los bits del Registro de Estado informan principalmente sobre el resultado obtenido en
las instrucciones aritmticas de la seccin MCU y la DSP.
El byte de ms peso, SRH, soporta los bits que detectan condiciones especiales del resultado pro
ducido por las instrucciones DSP desarrolladas con el Sumador de 40 bits y que depositan el resul
tado en uno de los Acumuladores A y B.
04 y OB indican que se ha producido sobrepasamiento del resultado depositado en el Acumula
dor A o en B, respectivamente.
OAB es un bit que se obtiene de la operacin lgica OR de OA y OB. De esta manera basta con
comprobar un solo sealizador en lugar de mirar los dos anteriores.
SA y SB informan de la existencia de saturacin realizada por el Sumador de 40 bits sobre el Acu
mulador A o B, respectivamente.
SAB se obtiene de la operacin lgica OR de SA y SB.
DC advierte del Acarreo/Llevada del 4Qbit en las operaciones MCU (til para operaciones BCD).
DA informa si hay un bucle activo DO.
5.6. EL REGISTRO DE CONTROL DEL NCLEO (CORCON)
En este registro reside el bit IPL3, que concatenado con los 1PL<2:0> de SR conforman el cdigo
que determina el nivel de privilegio de interrupcin de la CPU. Otros bits se destinan al control de
la operacin de multiplicacin DSP, del bucle DO, del redondeo y de algunos otros aspectos rele
vantes de la CPU. Como se muestra en la Figura 5.6 los tres bits de ms peso de CORCON no es
tn implementados y siempre se leen como ceros.
REGISTRO DE CONTROL DEL NCLEO (CORCON)
i? ...........- ------------------- a --------- ------ -------- -------------------cl
i s a *
Gs EBT DL2 bu ;PL0 SATA SATB SATOWACGSAT| !PL3 psv- _ RND
*!' *1
'F J
Figura 5.6. Distribucin de los bits del registro de control del ncleo CORCON.
MO DELO DEL PRO CESADO R PARA EL PRO GRAMADO R 71
A continuacin se describe la misin de cada uno de los bits de CORCON:
- ; . .................................... ....................................................
US: con este bit se controla que la multiplicacin DSP se realice sin signo (1) o con signo (0).
EDT: cuando este bit vale 1la ejecucin del bucle DO finaliza al completarse la iteracin en curso.
DL<2:0>: estos tres bits indican el nivel de anidamiento del bucle DO (0-7).
SATA: permiso/prohibicin para la saturacin de ACCA (1/0).
SATB: permiso/prohibicin para la saturacin de ACCB (1/0).
SATDW: activacin/desactivacin de saturacin en la escritura en ei espacio de datos (1/0).
ACCSAT: bit que selecciona el modo de saturacin del Acumulador (1: normal y 0: supersaturacin).
IPL3: bit 3 que sirve para determinar el nivel de prioridad efe interrupcin, junto con IPL<2:0> del
registro de estado SR.
PSV: permiso/prohibicin de Visibilidad del Espacio de Programa (PSV) del espacio de datos (1/0).
RND: bit para la seleccin del modo de redondeo (1: redondeo convencional y 0: redondeo con
vergente).
IF: bit para la seleccin del formato de los operandos de multiplicacin (1: operandos en modo en
tero y 0: operandos en modo fraccionario).
5.7. OTROS REGISTROS DE CONTROL
Para completar una visin general del conjunto de registros importantes que intervienen en la pro
gramacin de los dispositivos DSC, se describen de forma resumida los siguientes.
TBLPAG: Registro de Pgina para las instrucciones de Tabla
En este registro se guardan los 8 bits de ms peso de la direccin de la memoria de programa du
rante las operaciones de lectura y escritura de instrucciones de Tabla, que sirven para transferir
datos entre el espacio de memoria y el de datos.
PSVPAG: Registro de Pgina para Visibilidad del Espacio de Programa
La Visibilidad del Espacio de Programa permite al usuario mapear una seccin de 32 KB del
espacio de memoria de datos en el espacio de la memoria de programa. Esta propiedad permite
el acceso transparente de datos constantes a travs de las instrucciones que operan en la memo
ria de datos. El valor contenido en PSVPAG selecciona el trozo de 32 KB del espacio de la me
moria de programa sobre el que se mapea el espacio de datos.
MODCON: Registro de Control del Direccionamiento Modular
Se empica para activar y configurar el modo de direccionamiento modular o circular.
XMODSRT, XMODEND: Registros de inicio y Fin para el Direccionamiento Modular
El registro XMODSRT contiene la direccin inicial y el XMODEND la direccin final de los
buffers implementados en el espacio de memoria X para el direccionamiento modular.
YMODSRT, YMODEND: Registros de Inicio y Fin para el Direccionamiento Modular
Igual misin que los anteriores, pero referidos al espacio de memoria Y.
XBREV: Registro para el Direccionamiento por Inversin de Acarreo o bit-reverse
Contiene el modificador, que es dependiente del tamao del buffer que se utiliza en el direc-
cionamiento por acarreo invertido o bit-reverse.
DISICNT: Registro Contador para Desactivacin de Interrupciones
Se utiliza con la instruccin D1S1 para desactivar las interrupciones de prioridad 1a 6 durante
el nmero de ciclos indicado por este registro.
& sns$
CAPITULO
m
f
La memoria
de datos
.
*. LOS ESPACIOS DE LA MEMORIA DE DATOS
memoria de datos RAM de los DSC se divide en dos espacios, llamados X e Y, que son consi-
'os como independientes por algunas instrucciones DSP, mientras que las instrucciones MCU
yan toda la memoria como un espacio unificado y lineal de direcciones. Cada espacio dispone
sus propios buses de datos y de direcciones, ambos de 16 bits, lo que supone que el rango de di-
mamiento alcanza 64 KB o 32 K palabras de 16 bits cada una que se hallan alineadas en di
mes pares.
Como se refleja en la Figura 6.1 las 32 K palabras que abarca el espacio de la memoria de datos
hiden en 5 zonas:
*
* Espacio SFR, destinado a los registros especficos de control (2 KB).
Espacio de datos X (tamao segn modelo de dsPIC).
Espacio d datos Y (tamao segn modelo).
- Zona no implementada.
Zona de datos X opcionalmente mapeable en la memoria de programa (32 KB).
En la Figura 6.1 se observa que tiene una memoria SRAM de 8 KB, pero en el caso de los ds-
5F existen memorias de distintos tamaos: 8 KB, 16 KB y 30 KB.
Te acuerdo con el espacio de memoria de la Figura 6.1 de 8 KB de SRAM, los espacios X e Y
n de 4 KB cada uno.
Les 8 KB inferiores de la memoria de datos (OxOOO-Ox 1FFF) se denominan Memoria Cercana
se caracteriza porque sus posiciones pueden ser accedidas utilizando nicamente los 13 bits del
de direccin absoluta que est reservado en el formato de las instrucciones que trabajan con
onamiento directo.
Les espacios X e Y tienen opciones de acceso diferentes segn se trate de instrucciones MCU o
y segn se realice una lectura o una escritura. En todas las operaciones de escritura de datos,
73
74 dsPIC. DISEO PRCTICO DE APLICACIONES
SFR <
ESPACIO SRAM )
8KB
W m
;
ESPACIO SFR
(2KB)
ESPACIO DE DATOS X
(4KB)
SSSfiSfl
i ?
OPCIONALMENTE
MAPEABLE EN
LA MEMORIA '
DE PROGRAMA
0x0000
0X07FE
0x0800
MEMORIA
>- CERCANA
(8KB)
,
ESPACIO DE DATOS Y
......................(4KB)
.
.
0x17FE
0x1800
0x1 FFE
0x27FE
0x2800
NO DISPONIBLE
' : . -
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IV. . V. V/.'vX'IV/ -V/ /.yV-V/.,.,-,-. . v.-
g m m m . 8 1
ESPACIO DE DATOS X
NO IMPLEMENTADO
(32 KB)
0x8000
S^vM^*!
'
.
P l l | l f
_____\_____ OxFFFE
Figura 6.1. Estructura interna de la memoria de datos para un modelo dsPIC30F con una capaci
dad de memoria SRAM de 8 KB disponibles para el usuario (modelos dsPIC30F6010 y
dsPIC30F6014).
independientemente del tipo de instruccin que se trate, se accede a la memoria de datos como si los
espacios X e Y conformasen un nico espacio lineal de direcciones. De la misma manera se con
templa el espacio de datos en las operaciones de lectura por parte de las instrucciones MCU.
En la lectura de datos de las instrucciones DSP es posible acceder de forma independiente y si
multnea a los espacios X e Y. En esta situacin los registros W8 y W9 actan como punteros de di
recciones del espacio X, y W10 y W11como punteros de direcciones de las posiciones a leer en el
espacio Y. La Figura 6.2 muestra lo explicado de forma esquemtica.
LA MEMORIA DE DATOS 75
SRAM SRAM
DATOS Y i DATOS X
I BUS DE
DIRECCIONES
RAGU X
(LECTURA X)
BUSES DE
DIRECCIONESj
X - p WAGU X I
AX) I (ESCRITURA X)
I AGUXI
^ -------
r
ni
DATOS MAPEADOS
EN MEMORIA
PROGRAMA
BUS DE
DATOS Y
BLIS DE
v DATOS X
Figura 6.2. Las instrucciones DSP pueden acceder en lectura simultneamente a datos de los
espacios X e Y.
6.2. DIRECCIONAMIENTO DE LA MEMORIA DE DATOS
Las direcciones de acceso a los espacios X e Y son generadas por las Unidades de Generacin de
Direcciones AGUX y AGUY, respectivamente. La AGUX consta de una seccin destinada a la lec
tura de datos. RAGUX, y otra para la escritura, WAGUX. Para aumentar el rendimiento del proce
sador RAGUX comienza el clculo de la direccin efectiva de un operando en el ciclo anterior al de
ht instruccin al que corresponde, de manera que cuando se inicia la ejecucin ya es capaz de colo
ri r en el bus de direcciones de lectura del espacio X la direccin de la posicin a acceder. Por el con
trario, WAGUX comienza el clculo de la direccin de la posicin a escribir al empezar la ejecucin
de la instruccin, pero ya la tiene disponible al llegar la fase de escritura.
La AGUY funciona igual que RAGUX adelantando el clculo de la direccin, pero slo funcio
na en las operaciones de lectura, no siendo posible realizar escrituras en el espacio Y.
Los datos se colocan en la memoria, alineados de forma que el byte de menos peso se sita en la
direccin par y el de menos peso en la impar superior.
6.3. MAPEADO DEL ESPACIO DE DATOS EN LA MEMORIA DE PROGRAMA
Con carcter opcional el programador puede mapear los 32 KB superiores del espacio de la memo
ra de datos en una pgina del espacio de la memoria de programa que consta de 16 K palabras de
14 bits cada una. A este modo de trabajo se le llama Visibilidad de Espacio de Programa (PSV) y
remi te un acceso transparente de constantes desde el espacio de datos X sin necesidad de emplear
76 dsPIC. DISEO PRCTICO DE APLICACIONES
instrucciones especiales como las de Tabla. De los 24 bits de cada posicin del espacio de la me
moria de programa slo son vlidos los 16 de menos peso.
Para obtener la direccin efectiva del PSV en la memoria de programa se necesitan 23 bits. Los
15 bits de menos peso de dicha direccin corresponden a los 15 bits de menos peso del registro W
que contiene la direccin efectiva del espacio de la memoria de datos. Los 8 que faltan para com
pletar la direccin efectiva PSV se toman del registro PSVPAG. (Figura 6.3.)
wn
PSVPAG DIRECCIN ESPACIO DE DATOS
:7 . 15 . . '1 4 * ..0
22 ............ ,
DIRECCIN PSV
Figura 6.3. Formacin de la direccin efectiva PSV a partir de os 8 bits del registro PSVPAG y los 15 de
menos peso del registro Wn que contiene la direccin del espacio de la memoria de datos.
6.4. DIRECCIONAMIENTO MODULAR O CIRCULAR
Existen bastantes algoritmos DSP en los que se repiten ciertas operaciones sobre un conjunto de da
tos. Dichos conjuntos implementan buffer circulares que hay que recorrer ordenadamente. Esta si
tuacin es habitual en el clculo de los filtros F1R (Finite Impulse Response). Para optimizar el pro
cesamiento de este tipo de clculos se ha desarrollado un conjunto de recursos hardware que
soportan el modo de direccionamiento modular o circular. De esta manera se evita el uso de software
para realizar este tipo de algoritmos y, en consecuencia, la gestin hardware de los buffer o tablas
de datos consigue mucha mayor rapidez.
Para recorrer los buffer circulares se utiliza un puntero que se desplaza desde el principio al fi
nal incrementando o decrementando su valor, incluso de forma bidireccional, como se muestra en
la Figura 6.4.
El hardware que incluyen los DSC exime al programador de comprobar constantemente el va
lor del puntero para no rebasar el lmite y regresar a la posicin de inicio cuando ha terminado de
recorrerlo. Para conseguir esta caracterstica existen unos registros hardware que soportan la opera-
tividad de este direccionamiento.
XMODSRT: Registro de la direccin modular de inicio para AGUX.
XMODEND: Registro de la direccin modular final para AGUX.
YMODSRT: Registro de la direccin modular de inicio para AGUY.
YMODEND: Registro de la direccin modular final para AGUY.
Cualquier registro W, excepto W15, puede actuar como puntero del buffer y los 4 registros an
teriormente mencionados establecen las direcciones inicial y final. En el direccionamiento ascen
dente el puntero se va incrementando desde la posicin inicial del buffer hasta la final. Cuando el
puntero se decrcmenta se recorre el buffer desde la posicin final a la inicial. El direccionamien
to modular puede funcionar en el espacio de la memoria de programa y en el de datos, tanto en la
zona X como en la Y. En el espacio X el cdigo binario del registro W que acta como puntero del
m
LA MEMORIA DE DATOS 77
BUFFER
INCREMENTAL
BUFFER
DECREMENTAL
BUFFER
BIDIRECCIONAL
Figura 6.4. El buffer circular se explora mediante un puntero que soporta direcciones ascendentes,
descendentes o en ambos sentidos.
buffer se carga en los 4 bits de menos peso del registro MODCON<3:()>. El cdigo binario del re
gistro W que funciona como puntero en el espacio Y se carga en los bits MODCON<7:4>. La Fi
gura 6.5 muestra de forma esquemtica la estructura del registro MODCON.
Byte Alto
RM/-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
BWM<3:0>
Bit 15 Bit 8
Byte Bajo
Figura 6.5. El registro MODCON en su totalidad. Los bits BWM<3:0> se utilizan para el Bit Reverse.
Los bits U-0 no se han implementado y se leen como ceros.
78 dsPIC. DISEO PRCTICO DE APLICACIONES
En la programacin del direccionamiento modular se comienza cargando la direccin de inicio
del buffer en XMODSRT, luego la direccin final en XMODEND, despus se especifica en los 4
bits correspondientes de MODCON el registro W que participa como puntero y, finalmente, se in
dica el nmero de veces que se recorrer el buffer circular en una operacin DO. En las Figuras 6.6
y 6.7 se muestran algunos ejemplos de aplicacin con direccionamiento modular o circular.
Direccin
0 x1 1 0 0
0x1163
/
MOV #0x1100, W0
MOV W0. XMODSRT
MOV #0x1163, W0
MOV W0, XMODEND
MOV #0x8001 , WO
MOVWO, MODCON
MOV #0x0000, WO
MOV #0x1100, W1
DO #49 , FILL
FILL:
MOVWO, [W1++]
establece direccin de comienzo
establece direccin de final
habilita W1, AGU X para direcc. modular
WO contiene el valor de relleno del buffer
W1 apunta al buffer
rellena los 50 espacios del buffer
para rellenar siguiente direccin
W1 =0x1100 cuando $e completa el bucle DO
Dir. Comienzo =0x1100
Dir. Final =0x1163
Longitud =50 palabras
Figura 6.6. Ejemplo de exploracin del buffer incremental con direccionamiento modular.
Direccin
0 x1 1 EO
0x11FF
MOV #0x11E0, WO
MOV WO . XMODSRT
MOV #0x11FF , WO
MOVWO, XMODEND
MOV #0x8001 , WO
i MOV WO , MODCON
'MOV #0x000F , WO
I MOV #0x11 FE , W1
DO #15, FILL
MOV WO, [W1-]
I FILL:
! DEC WO. WO
; establece direccin de comienzo
; establece direccin de final
; habilita W1, AGU X para direcc. modular
; WO contiene el valor de relleno del buffer
; W1 apunta al buffer
; rellena las 16 palabras del buffer
; para rellenar la siguiente palabra
; se decrementa el valor
; W1 =0x11 FE cuando se completa el bucle DO
Dir. Comienzo =0x11 EO
Dir. Final =0x11 FF
Longitud =16 palabras
Figura 6.7. Ejemplo de exploracin del buffer decremental con direccionamiento modular.
LA MEMORIA DE DATOS 79
6.5. DIRECCIONAMIENTO POR INVERSIN DE ACARREO O " BIT REVERSE"
Las direcciones de la tabla de datos iniciales sobre la que se aplica el algoritmo FFT (Transforma
da Rpida de Fourier) se reordenan en una tabla de resultados de acuerdo con unas reglas que so
portan en hardware los DSC y que se controla con el direccionamiento por inversin de acarreo o
bit reverse. Se trata de un direccionamiento indirecto especial que slo se realiza a travs del ge
nerador de direcciones WAGUX para instrucciones de tamao palabra y con la colaboracin de los
registros especficos XBREV y MODC.ON.
Lo que hace el procedimiento de bit-reverse es crear un ordenamiento que facilitar el poste
rior clculo de la FFT, y lo consigue intercambiando los bits del puntero de direcciones entorno al
punto central de dicha direccin, con lo que el resultado es la imagen espejo de dicha direccin.
Se tomarn en cuenta a la hora de realizar el intercambio tantos bits como sean significativos segn
el tamao del buffer, es decir, si el buffer tiene un tamao de 4 bytes, se rotarn los 2 ltimos bits,
si tiene 8 bytes, se rotarn, los 3 ltimos bytes, y as sucesivamente.
EJ EMPLO
Se dispone de un buffer de 8 bytes, siendo la unidad de manejo del buffer el byte, y se desea aplicar
el direccionamiento por ubit reverse . Al ser el tamao del buffer de 8 bytes, se cogen los 3 ltimos
bits de la direccin, procediendo a rotar estos 3 bits en torno al bit I (el central) creando el espe
j o de la direccin original, como se muestra en la Figura 6.8. Aplicado dicho mtodo, el conteni
do de las direcciones del buffer queda dispuesto como se muestra en la Figura 6.9.
Figura 6.8. Intercambio de bits de una direccin entorno a un punto central.
ORDENAMIENTO
SECUENCIAL
BUFFER BUFFER
ORDENAMIENTO POR
INVERSIN DE ACARREO
0X0100
0X0104
0X0102
0X0106
0X0101
0X0105
0X0103
0X0107
0X0100
0X0101
0X0102
0X0103
0X0104
0X0105
0X0106
0X0107
Figura 6.9. Buffer antes y despus de realizar las operaciones de "bit reverse"
80 dsPIC. DISEO PRCTICO DE APLICACIONES
La puesta en marcha del direccionamiento bit reverse se realiza en tres etapas.
Ia. Se asigna a uno de los registros W como puntero de las tablas mediante los 4 bits MOD-
C0N<11;8> que se denominan BWM<3:0>. (Figura 6.10.)
MODCON o
XMODEN YMODEN BWM<0:3> YWM<0:3> XWM<0:3>
Figura 6.10. El registro MODCON con sus bits BWM<3:0> resaltados, los cuales indican qu registro
W ser el puntero de las tablas en la operacin de "bit reverse".
Si se toma al registro W1 como puntero para el direccionamiento por inversin de acarreo hay
que tener en cuenta que el valor inicial que corresponde a la direccin de lectura del dato se trans
forma en otro valor que corresponde con la direccin donde se escribe el resultado, pero siempre
dentro de las direcciones lmite de la tabla. Para W1el cdigo BWM<3:0> =0001.
2a. Se activa el direccionamiento por inversin de acarreo poniendo a 1el bit 15 del registro
XBREV (XBREV<15> =BREN = 1). (Figura 6.11.)
XBREV
MODIFICADOR (XB)
Figura 6.11. Estructura del registro XBREV con su bit BREN resaltado, que permite o no la operacin
de "bit reverse".
3a. Se establece el valor del modificador que acta sobre el valor del registro puntero fuente
usando los 15 bits de menos peso del registro XBREV (XBREV<14:0>).
Los valores del modificador que se carga en XBREV<14:0> dependen del tamao de la tabla o
buffer de datos sobre el que se aplica el algoritmo FFT y se presentan en la tabla de la Figura 6.12.
TA MA O BUFFER (PALABRAS) VALOR DEL MODIFICA DOR XB
32768 0x4000
16384 0x2000
8192 0x1000
4096 0x0800
2048 0x0400
1024 0x0200
512 0x0100
256 0x0080
128 0x0040
64 0x0020
32 0x0010
16 0x0008
8 0x0004
4 0x0002
2 0x0001
Figura 6.12. Valor del modificador XB que se carga en XBREV<14:()> y que depende del tamao del
buffer de datos de entrada medido en palabras.
LA MEMORIA DE DATOS 81
Para transformar el valor inicial del registro indirecto W segn el direccionamiento por inver
sin de acarreo, el hardware auxiliar lo modifica sumando al mismo un valor. Este valor ser el del
modificador XB en caso de que el tamao de los elementos sea de byte, y ser XB multiplicado por
2 en caso de que los elementos que se manejen sean de tamao word (2 bytes). Sin embargo, dicha
suma es especial porque se efecta de izquierda a derecha y si se genera acarreo se traslada hacia
la derecha, o sea, al revs de como se hace normalmente. Por eso se ha denominado a este direc
cionamiento de inversin de acarreo.
Se propone un ejemplo de aplicacin para comprender la obtencin de la direccin final que pa
sa a contener el registro Wn cuando se utiliza el direccionamiento bit reverse.
EJ EMPLO
Se dispone de un buffer de datos de 16 palabras a las que se direcciona indirectamente con el re
gistro W2 (BWM<3:0> =0010). El modificador XB segn la tabla de la Figura 6.13 vale 0x0008
v se comienza suponiendo que W2 contiene la direccin 0x000 que apunta a la palabra WO. El bit
de menos peso de W2 siempre vale 0 para apuntar a datos de tamao palabra.
La modificacin del valor inicial de W2 se logra sumando en direccin inversa el valor del mo
dificador XB multiplicado por 2, y de forma que si se produce acarreo se traslada a la derecha, o
sea, al revs que cuando se suma normalmente.
Para que el valor 0x0008 no afecte al bit de menos peso se ha desplazado un bit a l a izquierda
que es lo mismo que multiplicar por 2. En la Figura 6.13 se presenta una secuencia de transfor
maciones del valor de W2 al sumarle en sentido inverso el valor del modificador y trasladando el
acarreo cuando se produce hacia la derecha.
0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 W2 APUNTA LA PALABRA 0
+ 1 0 00 0 SE LE SUMA XBx2 PARA QUE LSB =0
0 0 0 0 0 0 00 0 0 0 1 0 0 0 0 W2 APUNTA LA PALABRA 8
+ 1 0 0 0 0 SE LE SUMA XB CON LSB =0 0NVERSIN ACARREO)
00 0 0 0 0 0 0 0 0 0 0
+ 1
1 0 0 0
- >
0 0 0 0
W2 APUNTA LA PALABRA 4
SE LE SUMA XBx2
0 0 0 0 0 0 0 0 0 0 0 f
+ 1
1 0 0 0
0 00 0
W2 APUNTA LA PALABRA 12
SE LE SUMA XB CON LSB =0 (INVERSIN ACARREO)
0 0 0 0 0 0 00 0 00 0 0 1 0 0 W2 APUNTA LA PALABRA 2
* 1 0 0 0 0 SE LE SUMA XBx2
00 00 0 0 00 0 0 0 1 0 1 0 0
W2 APUNTA LA PALABRA 10
-
Figura 6.13. Secuencia de transformaciones del contenido del registro W2 al aplicarle el direcciona
miento por inversin de acarreo. Aprciese que la suma del modificador se hace de for
ma inversa y que cuando hay acarreo se traslada hacia la derecha.
82 dsPIC. DISEO PRCTICO DE APLICACION ES
Del ejemplo estudiado se desprende que la misin del modificador XB es determinar el lugar
desde donde comienza a transformarse la direccin. En este caso los bits que se transforman en la
direccin destino son W2<5:1>. El bit de menos peso siempre vale 0 y el bit 5 es donde comienza
el intercambio. (Figura 6.14.)
DIRECCIN INICIAL
W2
XB<14:0>=0x0008
LOS BITS 1-4 DE LA
DIRECCIN SE
INTERCAMBIAN
W2
Figura 6.14. El valor del modificador XB<14:0> determina el bit donde comienza a transformarse
la direccin. En el ejemplo propuesto los 4 bits que cambian de lugar en la direccin
del puntero destino son W2<4:1>. El bit de menos peso siempre vale 0, por lo que en
realidad en el clculo de la siguiente direccin se suma XBx2 en sentido inverso y con
inversin de acarreo.
CAPITULO
La memoria
de programa
M . ESTRUCTURA Y DISTRIBUCIN
El mximo espacio disponible de los dispositivos dsPIC para la memoria de programa es de 4 M po
siciones de 24 bits cada una, aunque en los modelos actuales no se sobrepasa las 86 K posiciones de
24 bits implementadas con memoria FLASH para contener los programas del usuario.
La mitad inferior del espacio de memoria recibe el nombre de Espacio de Memoria del Usuario
\ abarca 2 M posiciones, desde la 0x000000 hasta la 0x7FFFFF. La otra mitad se llama Espacio de
Memoria de Configuracin y comprende desde la direccin 0x800000 hasta la OxFFFFFF.
En el Espacio de Memoria del Usuario residen el Vector de Reset que consiste en una instruc
cin GOTO que apunta a la primera instruccin del programa; la Tabla de Vectores de Interrupcin,
cuyo tamao en los dsPIC33F ser mayor puesto que habr ms interrupciones debido a que dispo
ne de ms perifricos; la Tabla Alternativa de Vectores de Interrupcin que es una imagen de la Ta
bla de Vectores de Interrupcin; la memoria FLASH para el usuario, cuya capacidad mxima para
k>s dsPIC30F es 124 KB y para los dsP!C33F es 256 KB; y la zona de datos EEPROM, que en el
jaso de los dsPIC33F no existe.
En el Espacio de Memoria de Configuracin se encuentran los registros para la configuracin
iel dispositivo y las posiciones ID destinadas a la identificacin (DEVID). (Figura 7.1.)
Todas las posiciones del mapa de la Figura 7.1 son pares y sus direcciones de 23 bits tienen siem-
rre a cero el bit de menos peso. En el caso de los dsPIC33F no existe espacio para EEPROM y las
Tablas de Vectores de Interrupcin son ms grandes.
Hay tres procedimientos para acceder al espacio de direcciones de la memoria de programa:
1o) Directamente a travs de los 23 bits del Contador de Programa (PC). As se accede a la siguien
te instruccin a ejecutar.
' 2:) Mediante las instrucciones especiales de lectura de Tabla (TBLRD) y escritura de Tabla (TBLWT).
Se accede a datos.
3) Mapeando un segmento de 32 KB de la memoria de datos en el espacio de direcciones de la me
moria de programa. Se accede a datos.
83
84 dsPIC. DISEO PRCTICO DE APLICACIONES
ESPACIO
DE
MEMORIA
DEL
USUARIO
(2 M x24)
ESPACIO
DE MEMORIA DE
CONFIGURACIN
(2 M x24)
23
I
"RESET- INSTRUCCIN GOTO
RESET- DIRECCIN DESTINO
TA8LA DE VECTORES DE
INTERRUPCIN
RESERVADO
TABLA ALTERNATIVA DE
VECTORES DE INTERRUPCIN
MEMORIA PROGRAMA USUARIO
FLASH
RESERVADO
EEPROM DATOS {4 K BYTES)
A
in -SI
RESERVADO
UNITID (32 INSTRUCCIONES)
RESERVADO
REGISTROS DE CONFIGURACIN
DEL DISPOSITIVO
RESERVADO
Y
DEVID
000002
000004
000300
00007E
000080
000082
00C084
0000FE
000100
017FFE
018000
7 FEFFE
7FF000
800000
8005BE
8005C0
8005FE
800600
F7FFEE
F80000
F800CE
F80010
FEFFFE
FFOOOO
FFFFFE
Figura 7.1. Distribucin del espacio de direcciones de la memoria de programa para un dsPICJOF.
El tamao de la FLASH y la EEPROM depende del dispositivo especfico que se trate.
7.2. DIRECCIONAMIENTO MEDIANTE EL PC
El Contador de Programa acta como un puntero directo al espacio de la memoria de programa.
Consta de 23 bits valiendo siempre cero el de menos peso (PC<0> =0), lo que supone que todas las
direcciones son pares.
El direccionamiento secuencial de las instrucciones lo realiza el PC incrementndose de 2 en 2.
En los otros dos modos que existen para direccionar la memoria de programa el bit PC<0> se utili
za para seleccionar el byte a acceder en la posicin de 24 bits (uno de los bytes no se usa). En la Fi
gura 7.2 se muestra grficamente la peculiar manera de incrementarse el PC de 2 en 2 y la forma en
que direcciona el Espacio de la Memoria del Usuario.
7.3. TRANSFERENCIA DE DATOS DESDE LA MEMORIA DE PROGRAMA
En bastantes aplicaciones es muy interesante poder guardar en la memoria de programa datos que
posteriormente pueden ser ledos. Adems de ampliar la capacidad de almacenamiento de la me
moria RAM, la informacin almacenada en la memoria FLASH del programa se convierte en no
voltil.
LA MEMORIA DE PROGRAMA 85
S U
000 000
ESPACIO
MEMORIA
USUARIO
i LSB
PC 0 ~ ~ f~
______________ b
22
I
23
SIEMPRE 0
INSTRUCCIN
<r*
24
IR
>7FF FFE
Figura 7.2. El PC slo incrementa el valor de los bits PC<21:1>, manteniendo a 0 el de menos peso
para conseguir un direccionamiento secuencial de las direcciones pares en que se en
cuentran las instrucciones de programa.
Para poder utilizar el espacio del programa para leer y escribir datos los DSC disponen de dos
procedimientos:
.............
a) Utilizando ias instrucciones de Tabla que $e encargan de releer y escribir datos en la memoria de
programa.
b) Mapeando los 32 KB correspondientes a las direcciones ms altas del espacio de la memoria de
datos en una pgina de la memoria de programa de 16 K palabras de 24 bits. Este procedimiento
se denomina "Visibilidad del Espacio de Programa (PSV)".
-.4. LAS INSTRUCCIONES DE TABLA
Son 4 instrucciones del repertorio de los DSC que permiten leer o escribir la palabra baja o la al
ta de una Tabla. La Tabla est formada por posiciones de la memoria de programa que constan de
,:I bits, o sea, 4 bytes, de los cuales el de ms peso no es vlido y sus bits siempre se leen como
ceros. A este byte se llama byte fantasma. (Figura 7.3.)
86 dsPIC. DISEO PRCTICO DF APLICACIONES
MEMORI A. DE PROGRAMA
BYTE
Ox000200
Ox000202
Ox 000204
Ox 000206
0000 0000
I
0000 0000 ;
oooooooo
0000 0000
I
31 23 16
PALABRA ALTA
15 9
PALABRA BAJ A
TABLA
DE
DATOS
Figura 7.3. La Tabla existente en la memoria de programa destinada a los datos tiene posiciones de
cuatro bytes, de los cuales el de ms peso no es vlido y se llama byte fantasma.
Las 4 instrucciones de Tabla son.
TBLRDL Lectura de la palabra baja.
TBLWTL: Escritura de palabra baja.
TBLRDH: Lectura de la palabra alta.
TBLWTH: Escritura de palabra alta.
Las instrucciones de Tabla utilizan como direccin efectiva de 23 bits para una posicin de la
memoria de programa, la concatenacin de los 16 bits de un registro W con los 8 bits del registro
TBLPAG. El bit de menos peso del registro de trabajo siempre a 0. (Figura 7.4). El registro Wn con
tiene la direccin efectiva de la memoria de datos.
DIRECCIN EFECTIVA PARA TABLA
0
Figura 7.4. Para direccionar una Tabla de datos en la memoria de programa se utiliza una direccin
de 24 bits formados por la concatenacin de un registro Wn y el registro TBLPAG. Como
el bit de menos peso de Wn siempre vale 0 las direcciones generadas siempre son pares.
Wn contiene la direccin efectiva de la memoria de datos.
Con TBLRDH y TBLWTH se lee y escribe la palabra alta de la tabla, siendo posible el acceso
al byte bajo y alto de cada palabra individualmente. El byte alto de la palabra alta no est implenta-
do y se llama byte fantasma.
EJ EMPLO
La instruccin TBLRDL W3,W4, lee los 16 bits de menos peso de lo posicin de lo memoria de pro
grama cuya direccin se forma con TBLPAG: W3 <14:0> y los deposita en W4.
LA MEMORIA DE PROGRAMA 87
7.5. VISIBILIDAD DEL ESPACIO DE PROGRAMA (PSV)
El otro mtodo que permite leer y escribir datos en la memoria de programa consiste en mapear el
trozo de 32 KB de direcciones ms altas (0x800000 - OxFFFFFF) de la memoria de datos en una p
gina de 16 K palabras de la memoria de programa. Este procedimiento recibe el nombre de Visibi
lidad del Espacio de Programa o abreviadamente PSV.
Como cada posicin de la memoria de datos es de 16 bits y la de la memoria de programa de 24
bits, se deshecha el byte de ms peso de esta ltima. As cada posicin de la memoria de datos ocu
pa una posicin en la memoria de programa.
Las instrucciones que utilizan el PSV requieren de un ciclo de instruccin extra para ejecutarse.
El ciclo de instruccin adicional sirve para direccionar el dato PSV dentro del bus de memoria de
programa. Para poner en macha el PSV se pone a 1el bit PSV residente en el registro CORCON.
La direccin que apunta la posicin de la memoria de programa se obtiene concatenando los 8 bits
jel registro PSVPAG con los 15 bits de menos peso de un registro de trabajo Wn. Cuando se traba-
i en modo PSV Wn<15> = 1, mientras que en modo normal Wn<15> = 0, es decir, que el bit de
ns peso de la direccin efectiva de la memoria de datos vale 1(mitad superior). Con el bit de me
ros peso de Wn se puede seleccionar el byte a acceder dentro de la palabra. (Figuras 7.5 y 7.6.)
DIRECCION EFECTIVA
1514
ricura 7.5. l.a direccin afectiva de 23 bits que apunta la posicin de la memoria de programa se for
ma con los 8 bits del registro PSVPAG concatenados con los 15 bits de menos peso de
Wn. En modo PSV Wn>15> = 1 y el bit Wn>0> selecciona el byte a acceder en la pala
bra. Wn contiene la direccin efectiva de la memoria de datos.
En realidad el contenido de Wn es la direccin efectiva <EA> de la memoria de datos que se ma-
en la memoria de programa.
IPLO
PSV= 1, la instruccin MOV 0xF052, W2 carga los 16 bits de menos peso de la direccin de la me-
tria de programa formada por la concatenacin PSVPAG: 7052 en el registro W2.
j y. GRABACION DE LAS MEMORIAS FLASH Y EEPROM
i grabar las memorias FLASH y EEPROM de los DSC hay dos mtodos:
.
VECTOR DE INTERRUPCIN 116
VECTOR DE INTERRUPCIN 117
.... . . . . . . ............ ......
: : .
.
Ox 000000
Ox 000002
0x 000004
8 VECTORES DE
EXCEPCIN
Ox 000014
OxOOOOFC
0x 0000FE
118 VECTORES DE
INTERRUPCIN
0x000100
0x000102
0x000104
Ox000114
Ox0001FC
0x0001 FE
Figura 8.3. Espacios de direcciones ocupados por las tablas IVT y AIVT en el mapa de la memoria de
programa de los dsPIC33F.
En las Figuras 8.4 y 8.5 se presenta una tabla que muestra las direcciones ocupadas por la IVT
y la AIVT junto a las causas que originan tanto las interrupciones como las excepciones de los
dsPIC33F.
98 dsPIC. DISEO PRCTICO DE APLICACIONES
N MERO DE V ECTO R D IRECCI N IVT D IRECCI N AIVT CAUSA DE EXCEPCI N
0 0x000004 0x000084 RESERVADO
1 0x000006 0X000J & FALLO DE OSCILADOR
0x000008 0x000088 ERROR DE DIRECCIONAMIENTO
3 OxOOOOOA Ox00008A ERROR DE PILA
4
OxOOOOOC OxOOOOtC ERROR ARITMTICO
i . . . . 5 ...................
OxOOOOOE 0x00008E ERROR DMA
6 0x000010 0x000090 RESERVADO
7 0x000012 0x000092 RESERVADO
8 0x000014 0x000094 INTO - INTERRUPCIN EXTERNA NM 0
9 0x000016 0x000096 IC1 - ENTRADA MODULO CAPTURA 1
10 0x000018 0x000098 OCI - SALIDA DEL COMPARADOR 1
11 0x00001A Ox00009A T1 -TIMERT
12 0x00001C 0x00009c DMA 0 - DMA CANAL 0
13 0x00001E 0x00009D IC2 - ENTRADA MODULO CAPTURA 2
14 0x000020 OxOOOOAO OC2 - SALIDA DEL COMPARADOR 2
15 0x000022 0 X 0 0 0 A 2 T2-TIME R 2
16 0x000024 OxOOOOA4 T3 - TIMER 3
17 0x000026 OxOOOOA6 SPI 1E-ERROR EN SPI1
18 0x000028 0x0000A8 SPI1 - TRANSFERENCIA SPI1 REALIZADA
19 0x00002A OxOOOOAA U IRX UARTI RECEPTOR
20 0x00002C OxOOOOAC U1 TX-UART1 EMISOR
21 0x00002E OxOOOOAE ADC 1 - CONVF.RSOR A/D I
22 0x000030 0x000080 DMA 1- CANAL DMA 1
23 0x000032 0x000062 RESERVADO
2- 1 0x000034 0x000084 SI2C1 - OPERACION I2C1 ESCLAVO
25 0x000036 0x000036 MI2C1 - OPERACION I2C1 MAESTRO
2 6 0x000038 OxOOOOB8 RESERVADO
27 0x00003A OxOOOOBA NOTIFICACION DE CAMBIO DE ENTRADA
28 ()x00003C OxOOOOBC INT1 - INTERRUPCIN EXTERNA NM 1
29 0x00003F OxOOOOBE ADC 2 - CONVERSOR A'D 2
30 0x000040 OxOOOOCO IC 7 - ENTRADA MDULO DE CAPTURA 7
31 0x000042 0x0000C2 IC 8 - ENTRADA MDULO DE CAPTURA 8
32 0x000044 OxOOOOC4 DMA 2 - CAN Al DMA 2
3 3 0x000046 OxOOOOC6 OC3 SALIDA DEL COMPARADOR 3
34 0x000048 OxOOOOC8 OC4 - SALIDA DEL COMPARADOR 4
35 0x00004A OxOOOOCA T4 - TIMER A
36 0x00004C OxOOOOCC T5 - TIMER 5
3 7 0x00004E OxOOOOCE J NT 2 - INTERRUPCIN EXTERNA 2
......3 8
0x000050 OxOOOODO U2RX-UARTI RECEPTOR
39 0x000052 0x0000D2 U2TX - UARTI EMISOR
40 0x000054 0x0000D4 SPI2L - LRROR EN SPI2
41 0x000056 OxOOOOD6 SPI2 - TRANSFERENCIA SPI2 REALIZADA
42 0x000058 0x000008 C1RX - EC/\N 1PREPARADO PARA RECIBIR DATOS
43 0x0Q005A OxOOOODA C1 - CAN1
44 0x00005C OxOOOODC DMA3 CANAL DMA 3
45 0x00005E Oxo o o c df IC3 - ENTRADA MDULO CAPTURA 3
46 0x000060 OxOOOOEO IC4 - ENTRADA MODUIO CAPTURA 4
47 0x000062 OxOOOOE2 IC5 ENTRADA MDULO CAPTURA 5
48 0x000064 0x0000E4 IC6 - ENTRADA MODULO CAPTURA 6
49 0x000066 OxOOOOE6 OC5 - SALIDA COMPARADOR 5
50 0x000068 OxOOOOEf OC6 - SALIDA COMPARADOR 6
51 Qx00006A OxOOOOEA OC7 SALIDA COMPARADOR 7
52 OxOOOOC OxOOOOEC OC8 - SALIDA COMPARADOR 8
53 0x00Q06E OxOOOObE RESERVADOS
Figura 8.4. Direcciones de los vectores de IVT y AJVT en memoria de programa y causas que produ
cen interrupciones y excepciones en los dsPIC33F. No todos los modelos DSC disponen de
los mismos perifricos integrados y por tanto usan todos los vectores de la tabla.
INTERRUPCIONES Y EXCEPCIONES 99
N MERO DE VECTO R D IRECCI N IVT D IRECCI N AIVT CAUSA DE EXCEPCI N
54 0x000070 0x000170 DMA4 - CANAL DMA *1
55 0x000072 0x000172 16- IIMFR (t
56 0x000074 0x000174 T7 - TIMER 7
57 0x000076 0x000176 SI2C2 - EVENTO EN EL I2C2 ESCLAVO
50 0x000078 0x000178 MI2C2 - EVENTO EN EL I2C2 MAESTRO
59 0x00007A 0x00017A T8 - TIMER 8
60 X00007C 0x00017C T9 TIMER9
61 0x00007E 0x00017E INT3 -INTERRUPCIN EXTERNA 3
62 0x000080 0x000180 INT4 - INTERRUPCION EXTERNA 4
63 0x000082 0x000182 C2RX - ECAN2 PREPARADO PARA RECIBIR DATOS
64 0x000084 0x000184 C2 - EVENTO CAN2
65 0x000086 0x000186 PVVM PERODO PWM
66 0x000088 0x000188 QEI - COMPARACIN CONTADOR DE POSICIONES
67 0x00008a 0x00018A DCIF - ERROR DCI
68 0x00008c 0x00018C DCID - TRANSFERENCIA DCI REALIZADA
69 0x00008E 0x000I8F DMA5 - OXNAL DMA 5
70 0x000090 0x000190 RESERVADO
71 0x000092 0x000192 FLTA - FALTA EN MCPVVM
72 0x000094 0x000194 FLTB - FALTA EN MCPVVM
73 0x000096 0x000196 U1E-ERROR EN UART1
74 0x000098 0x000198 U2E - ERROR EN UART2
75 0x00009a 0x00019A RESERVADO
76 0x00009c 0x00019C DMA6 - CANAL DMA 6
77 OxOOOOOE 0x00019E DMA7 - CANAL DMA 7
78 OxOOOOAO 0x0001 A0 CITX - PETICION DE TRANSMISION DE DATOS EN ECAN1
RESERVADO (PARA DISPOSITIVOS "PS")
79 0x0000A2 0x0001 A2 C 2T X - PETICIN DE TRANSMISIN DE DATOS FN FCAN2
RESERVADO (PARA DISPOSITIVOS "PS")
80-125 OxOOOOA4-OxOOOOFE 0x0001A4-X0001 FE RFSFRVADAS
Figura 8.5. Continuacin de la tabla con lis direcciones de los vectores de IVT y AIVT en memoria
de programa y causas que producen interrupciones y excepciones en los dsPIC33F.
8.4. NIVEL DE PRIORIDAD DE LA CPU
La CPU funciona en todo momento con un nivel de prioridad para interrupciones y excepciones
comprendido entre y 15. Los perifricos y las interrupciones externas trabajan con niveles de prio
ridad entre 0 y 7. mientras que las excepciones operan con un nivel fijo cuyo valor oscila entre 8 y
I 5 y se consideran como interrupciones no mascarables dirigidas a detectar problemas hardware y
software. El nivel de prioridad de cada fuente de una excepcin es fijo.
Para atender una interrupcin o una excepcin su nivel de prioridad debe superar el de la CPU.
Si una peticin de interrupcin procedente de un perifrico o una patita especfica tiene un nivel de
prioridad 0 se considera que est desactivada puesto que nunca podr superar el de la CPU.
El nivel de prioridad de la CPU queda determinado por los 4 bits IPL<3:0>, estando ubicados los
tres de menos peso en SR<7:5> y el de ms peso en CORCON<3>. Los niveles de prioridad de la
CPU comprendidos entre 0 y 7 se fijan con IPL<2:0>. Si, por ejemplo, IPL<2:0>= 4, no se permi
ten inteiTUpciones cuyo nivel de prioridad sea igual o menor que 4. En el caso que IPL<2:0> =7 to
das las fuentes de interrupcin estn prohibidas. Cuando se activa TPL3 (CORCON<3>) se progra
ma el nivel de prioridad para las excepciones y puede valer de 8 a 15. Las excepciones tienen mayor
100 dsPIC. DISEO PRCTICO DE APLICACIONES
prioridad que cualquier interrupcin de usuario. Los bits IPL<2:0> pueden leerse y escribirse pero
el bit IPL3 puede ser borrado, aunque no activado por el usuario.
8.5. NIVEL DE PRIORIDAD DE LAS INTERRUPCIONES
Existen 54 causas de interrupcin diferentes en los dsPIC30F y 118 en los dsPIC33F que estn pro
ducidas por los perifricos integrados o por las patitas destinadas a tal efecto. El usuario puede pro
gramar individualmente cada tipo de interrupcin con el nivel de prioridad deseado situado entre 1
(mnimo) y 7 (mximo), pues el nivel 0 significa su prohibicin. Esta programacin se realiza es
cribiendo el valor adecuado en los bits IPL<2:0>, no usndose el IPL3 que se lee como cero.
Para resolver conflictos de prioridad en las situaciones en las que varias causas de interrupcin
con el mismo nivel de prioridad se producen simultneamente, se tiene en cuenta el nivel natural
de cada una que corresponde con el lugar o nmero que ocupa en la tabla. Cuanto ms alto sea el
nmero del vector, menor es el nivel natural de prioridad. Este nivel natural slo se aplica para re
solver los conflictos de prioridad entre varias interrupciones con el mismo IPL. Lo correcto es que
el usuario al programar el IPL asigne un valor bajo a las causas que ocupan un nmero de vector al
to y viceversa, para ajustarse al orden natural, aunque en algunas ocasiones puede interesar hacer lo
contrario.
8.6. NIVEL DE PRIORIDAD PARA LA EXCEPCIONES
Las excepciones son desviaciones del flujo de control provocadas por anomalas detectadas por el
procesador durante la ejecucin de una instruccin. Hay excepciones que se detectan al comenzar
la ejecucin de la instruccin causante, en cuyo caso se da paso a la rutina de atencin que intenta
r corregir el error para, posteriormente, regresar a la instruccin y ejecutarla.
Las excepciones tienen un nivel de prioridad entre 8 y 15 debiendo valer 1PL3 =1, por lo que
siempre superan el nivel de las interrupciones y por eso se las considera como "interrupciones no
mascarables. El procesador pone a 1automticamente el IPL3 al procesar una excepcin. Cada ti
po de excepcin tiene un IPL fijo que viene determinado por el nmero de vector que ocupa en la
tabla. (Figura 8.6.)
- ....................................................
NMERO VECTOR NIVEL DE INTERRUPCIN CAUSA DE EXCEPCIN
0 MXIMA PRIORIDAD (5) RESERVADO
1 14 TALLO OSCILADOR
2 13 RRROR DIRECIONAMIENTO
3 12 ERROR PILA
4 MNIMA PRIORIDAD (11) ERROR ARITMTICO
5 RESERVADO
6 RESERVADO
7 RESERVADO
Fig ura 8.6. Nivel de prioridad de las excepciones de los dsPIC30F.
INTERRUPCIONES Y EXCEPCIONES 101
Las excepciones de Error de Pila y Error Aritmtico se consideran de tipo software, mientras que
las de Fallo del Oscilador y Error de Dircccionamiento se las considera de tipo hardware. En las ex
cepciones tipo software hay que terminar la ejecucin de la instruccin causante de las mismas an
tes de ejecutar la rutina de atencin. En las excepciones tipo hardware no se completa la ejecucin
de la instruccin causante porque dara resultados errneos y se lanza la rutina de atencin en cuan
to se detecta el error.
Los dsPIC33F disponen de una excepcin ms, originada por el Fallo del CDMA.
8.6.1. Excepci n por Error Ari tmt i co
Se trata de una excepcin tipo software de mnima prioridad (1PL = 11) que se genera por una de
las siguientes causas:
a) Sobrepasamiento de Acumulador A. Sealizador OVATE (INTCON 1<10>).
b) Sobrepasamiento del Acumulador B Sealizador OVB TE (INTCON1<9>).
c) Sobrepasamiento catastrfico en cualquier Acumulador. Sealizador COVTE (INTCON 1<8>)
d) Divisin por cero.
e) Desplazamiento del Acumulador superior a +/- 16 bits al ejecutar la instruccin SFTAC.
8.6.2. Excepcin por Error de Pila
La cima de la Pila queda direccionada despus de un Reset con el valor 0x0800 y su tamao mxi
mo lo deterjnina el Registro Lmite de la Pila SPLTM. Cuando una direccin efectiva para la Pila ge-
-erada por W15 no est comprendida entre los lmites establecidos se genera este tipo de excepcin
que posee un nivel de prioridad 12.
El error de pila puede detectarse tambin por software comprobando el bit de estado STKERR
en I NTCOMl<2>. El flag STKERR tiene que ser borrado por software para retornar con la ins
truccin RETF1E.
3.6.3. Excepciones por Error de Di recci onami ent o y Fallo del Osci l ador
Son las dos excepciones hardware de mxima prioridad que fuerzan a atender la causa antes de fi
nalizar la ejecucin de la instruccin responsable de las mismas.
Cuando se genera una peticin de una excepcin con mayor nivel de prioridad que la que se es-
i procesando, se suspende temporalmente esta ltima que pasa a marcarse como pendiente y se
idende a la de mayor prioridad.
Cuando se origina un conflicto de prioridad debido a las excepciones se genera un Reset.
La excepcin por Fallo del Oscilador (IPL = 14) se origina por las siguientes causas:
a) Se activa el Monitor de Fallo del Reloj (FSCM) al detectar un fallo en el sistema del reloj
principal.
b) Se detecta un fallo en el PLL cuando est en funcionamiento.
c) Se activa FSCM y falla el PLL al producirse un Reset de encendido (POR).
102 dsPIC. DISEO PRCTICO DE APLICACIONES
La excepcin por Fallo del Oscilador puede detectarse por software comprobando el bit de esta
do OSCFAIL en I NTC0N<1> o el bit de estado CF en OSCCON<3>. El flag OSCFAIL tiene que
ser borrado por software para retomar con la instruccin RETFIE.
La excepcin por Error de Direccionamiento (IPL = 13) se produce por las siguientes causas:
a) Se intenta acceder a un dato desalineado (acceso a una palabra con direccin impar).
b) Una instruccin de manipulacin de bits utiliza direccionamiento indirecto con el bit de me
nos peso de la direccin efectiva a 1.
c) Se intenta acceder a un dato en una zona de la memoria de datos no implementada fsicamente.
d) Ejecucin de la instruccin BRA #literal o la GOTO #literaT cuando literal es una direc
cin de memoria de programa sin implementar.
e) Ejecutar una instruccin despus de modificar el PC para apuntar a una direccin de memo
ria de programa sin implementar. El PC tiene que ser modificado con la carga de un valor
dentro de la pila y ejecutando la instruccin RETURN.
El espacio de datos estar prohibido mientras dure la excepcin en curso, para no destruir nin
gn dato. El error de direccionamiento puede detectarse por software comprobando el bit de estado
ADDRERR en 1NTC0N<3>. El flag ADDRERR tiene que ser borrado por software para retornar
con la instruccin RETFIE.
8.7. PROCESAMIENTO DE LAS INTERRUPCIONES
Todos los sealizadores de las causas de interrupcin son explorados cada ciclo de instruccin.
Cuando existe una peticin de interrupcin pendiente (IRQ - Interruption Routine Qcuc) se pone a
1el bit sealizador correspondiente en el registro IFSx (Tnterrupl Falg Status). Para atender la inte
rrupcin es preciso que el bit de permiso correspondiente est a 1en el registro ECx (Interrupt Ena-
blc Control). Durante el tiempo restante del ciclo de instruccin en que se exploran las IRQ se eva
lan las prioridades de las interrupciones pendientes de ser atendidas. Cuando existe una peticin de
una interrupcin pendiente que tenga mayor prioridad que la CPU se pone en marcha el procesa
miento de la misma y el procesador salva en la Pila el valor actual del PC, el byte bajo del registro
SR y el bit IPL3 (CORCON<3>). (Figura 8.7.)
15 0
W15
(ANTES DE IRQ)
W15
(DESPUES DE IRQ)
Esta posicin de memoria se utiliza para guardar
el estado del bit IPL3 (CORCON<3>)
Figura 8.7. Al iniciarse el procesamiento de una interrupcin se salva en la cima de la pila el
PC<22:0>, el 5R<7:0> y el bit IPL3.
INTERRUPCIONFS Y EXCEPCIONES 103
Con la instruccin de Retorno de Interrupcin RETFIE que se coloca al final de la rutina ISR (In-
terruption Service Routine) se recuperan de la Pila el PC<22:0> (la direccin de retomo, es decir el
PC almacenado antes de saltar a la rutina de interrupcin), el SR<7;0> (para recuperar el entorno en
el que se encontraba el procesador antes de saltar) y el 1PL3. Las interrupciones son anidablcs, lo
que significa que cuando se est atendiendo una interrupcin a travs de la rutina de servicio de in
terrupciones (ISR), puede ser interrumpida por un tipo de interrupcin de mayor prioridad.
Se pueden deshabilitar o prohibir las interrupciones que tengan niveles de prioridad de 1a 6 con
la instruccin DISL que funciona en combinacin del registro contador DISICNT. D1SICNT se va
decrementando hasta que llega a 0, entonces se rehabilitan las interrupciones con prioridad 1-6. Al
ejecutarse, por ejemplo, la instruccin DISI #5, se deshabilitan las interrupciones con IPL de 1a 6
durante 5 ciclos de instruccin. Una vez detectada la causa que ha provocado una interrupcin, me
diante la inspeccin del registro IFSx, comprobado que tiene permiso (inspeccionando el registro
IECx) y tambin la prioridad suficiente, es decir no hay ninguna otra interrupcin con mayor prio
ridad que ella, entonces se salva en la Pila el PC, el SRL y el IPL3. Luego se carga en el PC el con
tenido del Vector de Interrupcin correspondiente y se pasa a iniciar la ejecucin de la rutina ISR.
Al comienzo de ISR se deben salvar en la Pila con la instruccin PUSH.S los valores de los regis
tros W-W3, para poder restablecer despus los valores que estaban y el procesador pueda continuar
con lo que estaba haciendo antes de la interrupcin. Al completar la ISR, antes de RETFIE, se re
cuperan los valores de dichos registros mediante la instruccin POP.S. (Figura 8.7.)
INICIO
SE SALVA
PC^-VECTOR INTERRUPCIN
SE SALVAN REGISTROS
QUE SE MANEJ AN
RUTINA DE ATENCIN
SE RECUPERAN'
REGISTROS QUE SE
MANEJ AN
BAJ AR FLAG INTERRUPCIN
RETFIE
SE RECUPERAN
PC22:0>, SR<7:0>. IPL3
Figura 8.8. Organigrama que muestra las etapas del procesamiento de una interrupcin.
104 dsPIC DISEO PRCTICO DE APLICACIONES
El tiempo de duracin o latencia para la atencin de una peticin de interrupcin es de 4 ciclos
de instruccin, de la siguiente forma:
7. En el primer ciclo se activa el sealizador.
2: En el segundo ciclo se salva en la Pila el PC, el IPL3 y el SHL.
3. En el tercer ciclo se carga el PC con el contenido del Vector de Interrupcin.
4. En el cuarto ciclo se inicia la rutina ISf.
. .
El retorno de una rutina de interrupcin tiene una latencia de tres ciclos de instruccin.
1. En el primer ciclo se recupera el PC<22:16>, el SRL y el IPL3.
2. En el segundo ciclo se recupera el PC< 15:0>.
3. En el tercer ciclo se comienza la ejecucin de la instruccin apuntada por el PC y se culmina el re
torno al programa principal.
Cuando la CPU funciona en uno de los modos de bajo consumo (Sleep o Idle) y se produce una
peticin de interrupcin de mayor prioridad que la CPU (para ello el nivel de prioridad que debe te
ner la CPU es de 1o mayor) se atiende la peticin, pero si el nivel de prioridad de la interrupcin es
menor que el de la CPU se contina la ejecucin de la instruccin posterior en el programa princi
pal a la que origin el paso al modo de bajo consumo, es decir, produce el despertar de la CPU aun
que la interrupcin no sea atendida.
8.8. REGISTROS DE CONTROL Y ESTADO PARA LAS INTERRUPCIONES
Para el procesamiento y atencin de las interrupciones, el controlador utiliza los siguientes registros.
INTCON1 e INTCON2
Son los dos registros principales que regulan las funciones globales de las interrupciones.
1NTCONI contiene el bit NSTDIS que habilita/deshabilita el anidamiento de las interrupciones, as
como los sealizadores de estado y control de las causas de las excepciones.
INTCON2 contiene los sealizadores de las causas de interrupcin externa y el bit de uso de la A1VT.
REGISTRO DE ESTADO (SR)
Contiene los bits IPL<2:0> (SR<7:5>) que emplea el usuario para determinar el valor del nivel de
prioridad de las interrupciones.
REGISTRO DE CONFIGURACIN (CORCON)
Contiene el bit 1PL3 (CORCON<3>) que sirve para determinar el nivel de prioridad de las excep
ciones. Slo es legible porque se pone a 1automticamente cuando se procesa una excepcin.
REGISTROS DE SEALIZADORES DE ESTADO DE LAS INTERRUPCIONES (IFSx)
Son tres registros que contienen los sealizadores que informan de la peticin de interrupcin. Dichos
sealizadores se activan automticamente cuando se produce la peticin y se desactivan por software.
REGISTROS DE CONTROL I)E HABILITACIN I)E LAS INTERRUPCIONES (IECx)
Son tres registros que contienen los diversos bits de permiso/prohibicin de cada una de las
interrupciones.
INTERRUPCIONES Y EXCEPCIONES 105
REGISTROS DE CONTROL DE PRIORIDAD DE LAS INTERRUPCIONES (IPCx)
Son 12 registros cuyos bits almacenan el nivel de prioridad asignado a cada una de las interrupciones.
En la tabla de la Figura 8.11 se muestra la distribucin de los bits de los registros que se utilizan
rn el procesamiento de las interrupciones y excepciones. Hay que tener en cuenta que segn el mo-
ielo de DSC se dispondr de diferentes recursos internos y en consecuencia no todos tienen vlidos
iodos los bits de estos registros. El INTCON1vara de un modelo a otro, un dispositivo de dsPIC33F
_liza ms bits del registro INTCON1 que un dsPIC30F. El dsPIC33F tiene ms tipos de interrup-
: nes por lo que necesita de algunos registros ms para controlar y registrar que se han producido
ritas interrupciones nuevas que no dispone el dsPIC30F. En la Figura 8.9 se muestran los registros
INTCON 1e INTCON2 de los dsPIC30F.
INTCON1:
RAV-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 RAV-0 R/W-0 R/W-0 R/W-0 U-0
^E R R |S T K E R R | OSCF AIL - I
INTCON2:
R/W-0 RA/V-0 UO U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-O R/W-0 RW-O RIW-Q R/W-0
TnT4P | tMT3EP [ NT2P jMtlE P p T ^ 1
Leyenda
R =bit leble W =bit escribible U =bit sin implementar, ledo como 0
T =bit a 1 0 =bit a 0 x =bit desconocido
8.9. Distribucin de los bits de los registros INTCON 1e INTCON2 para el procesamiento de
las interrupciones y excepciones en el modelo dsPIC30F.
En la Figura 8.10 se observan los registros INTCON 1e INTCON2 que maneja el dsPIC33F.
TCON1:
w*-: R/w-o R/W-0 R/W-0 R/W-0 R/W-0
CVASr f OVATE
R/W-0 R/W-0
OVBTE COVTE
BUM) R/W-0
RR
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
\THERR ADDRERR IsTKRR OSCFAl I -
ITCON2: o s c f a i l
9WO R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0
I N T 4 E P
R/W-0 R/W-0 R/W-0 R/W-0
INT3EP INT2EP INT1EP INTOEP
Leyenda
R =bit leble W =bit escribible U =bit sin implementar, ledo como 0
1=bit a 1 0 =bit a 0 x =bit desconocido
8.10. Distribucin de los bits de los registros INTCON 1e INTCON2 para el procesamiento de
las interrupciones y excepciones en el modelo dsPIC33F.
En la Figura 8.11 se presentan los registros que utiliza el dsPJ C3F para manejar las inte
rrupciones.
106 dsPIC. DISEO PRCTICO DE APLICACIONES
N O MBRE D IRECCI N BIT15 B1T14 BIT13 BIT12 BI T l l B1T10 BIT9 BIT8 BIT7
IFS 0084 CNIF BCLIF I2CIF NViVIIF ADIF u i rxiF U1RXIF SPI1IF T3IF
IFS1 0086 IC6IF IC5IF IC4IF IC3IF C1IF SPI2IF U2TXIF U2RXIF INT2IF
IFS2 0088 - - - FLIBIF FALTAIF LVDIF DCIIF QVEIIF PWMIF
IEC0 008C CNIE BCLIF I2CIE NVVMIE ADIE UITXIE r UIR XlP SPIIIF T3IE
IEC1 008E IC6IE 1C5IE IC4IE IC3IE C1IE SPI2IE U2TXIE U2EXIE IKT2IL
IEC2 0090 -
O
P
R
C
T
I
C
O
D
E
A
P
L
I
C
A
C
I
O
N
E
S
M O D EL O S d sPI C30F PA RA M A N EJ O D E SEN SO RES
D ISPO SITIVO PATITAS
LN EAS
E/S
TEMPO RIZAD O RES
16 BITS
M D U LO
CAPTURA
M D U LO
CO MPARADO R/
PWM ESTN DAR
CO N V ERSO R AD
12 BITS
100KBPS
UART SPI
rc |
dsP!C30F2011 18 12 3 2 2
fich 1 1 1
dsPO0F3012 18 12 3 2 2 8c h 1 1 1
dsPIC30F2012 28 24 .5 7 2 10ch 1 1 1
dsPIC30F3013 28 24 3 2 2 10ch 2
1 1
MODELOS dsPIC33F DE PROPSITO GENERAL
D ISPO SITIVO PATITAS
LN EAS
E/S
TEMPO RIZAD O RES
16 BITS
M D U LO
CAPTURA
M D U LO
CO MPARADO R/
PWM N O RMAL
IN TERFAZ
CO D EC
CO N VERSO R
AD
UART SPI I2C CAN DMA
d$PIC33FJ 64GP206 64 53 9 8 8 1 1A/D, 18ch 2 2 1 r... 2
dsPIC33FJ 64GP306 64 53 9 8 8 1 1A/D, 18ch 2 2 2
ir' v
2
dsPIC33FJ 64GP310 100 85 9 8 8 1 I A/D, 32ch 2 2 2 -
2
dsPIC3 3 FJ 64C P706 64 53 9 8 8 1 2 A/D, 18ch 2 2 2 2 2
dsPIC33FJ 64GP708 80 69 9 8 8 2 A/D, 24ch 2 2 2 2 2
dsPIC33FJ 64GP710 100 85
.
9 8
-___
8 1 2 A/D, 32ch
2
2 2 2 2
dsPIC33 Fj 128GP206 64 53 9 8 8 1 1A/D, 18ch 2 2 1 - 2
dsPIC33FJ 128GP30f> 64 53 9 8 8 1 1A/D, 18ch 2 2 2 - 2
dsPIC33FJ 128GP310 100 85 9 8 8 1 1 A^D, 32ch 2 2 2 - 2
dsPIC33FJ 128GP706 64 53 9 8 8 1
2 A/D, 18ch 2 2 2 2 2
dsPIC33FJ 128GP708 80 69 9 8 8 1 2 A/D, 24ch 2 2 2
2
2
dsPIC33FJ 128GP710 100 85 9 8 8 1 2 A/D, 32ch 2 2 2 2 2
:dsPIC33FJ 256GP506 64 53 9 8 8 1 1A/D, 18ch 2 2 2 1 2
dsPIC33FJ 256GP510 100 85 9 8 8 1 1A/D, 32ch 2 2 2 1 2
ds PI C3 3 FJ2 56G P710 100 85 9 8 8 1 2 A/D, 32ch 2 2 2 2 2
Figura 12.1. Rotacin de perifricos y recursos que integran os modelos dsPiC30F y dsP!C33F. (Continuacin)
MODELOS dsPIOSF PARA CONTROL DE MOTORES Y SISTEMAS DE ALIMENTACIN
DISPOSITIVO PATITAS
l i l i
LNEAS
E/S
TEMPORIZADORES
16 BITS
MDULO
CAPTURA
MDULO
COMPARADOR/
PWM NORMAL
CONTROL
MOTORES
PWM
CONVERSOR
AD
QEI UART SPI
IvXjv!
re CAN DMA
V'vv>
dsPIC33FJ 64MC506 64 53 9 8 8 8ch 1 A/D, 16ch 1 2 2 2 i :- : 2
ds Pl C3 3 FJ 64 MC-5 08 80 69 9 8 8 8ch 1 A/U 18ch 1 2 2 2 1 2
dsPIC33FJ 64MC510 : 100 85 9 8 8 8ch 1 A/D, 24ch 1 2 2 2 1 2
ds PIG3 3 F J 64 MC 706 64 53 9 8 8 8ch 2 A/D, 16ch 1 2 2 2 1 2
dsPIC33FJ 64MC710 100 85 9 8 8 8ch 2 A/D, 24ch 1 2 2 2 2 2
dsPlC33FJ 128MC506 64 53 9 8 8 8ch 1A/D, 16ch 1 2 2 2 1
2
dsPIC33FJ 128MC510 100 85 9 8 8 8ch 1A/D, 24ch 1 2 2 2 1 2
dsPIC33FJ 128MC706 64 53 9 8 8 8ch 2 A/D, 16ch 1 2 2 2 1 2
dsPIC33FJ 128MC708 80 69 9 8 8 8ch 2 A/D, 18ch 1 2 2 2 2 2
dsPIC33Fj'l 28MC710 100 85 9 8 8 8c h 2 A/D, 24ch 1 2 2 2 2 2
dsPIC33FJ 256MC510 100 85 9 8 8 8ch 1 A/D, 24ch 1 2 2 2 1 2
dsPIC33FJ 256MC710 100 85 9 8 8 8ch 2 A/D, 24ch 1 2 2 2 2 2
Figura 12.1. Relacin de perifricos y recursos que integran los modelos dsPIC30F y dsPIC33F(Continuacin)
5
4
d
s
P
I
C
.
D
I
S
E
O
P
R
C
T
I
C
O
D
E
A
P
L
I
C
A
C
I
O
N
E
S
PERIFRICOS Y RECURSOS INTEGRADOS 155
o absorber hasta 25 mA. Las patitas de E/S que multiplexan seales correspondientes a los perif
ricos dejan de ser E/S digitales cuando estn funcionando dichos perifricos.
Las patitas de E/S se agrupan para conformar las puertas de E/S, cada una de las cuales tiene aso
ciados 3 registros:
TRISx: Registro de Direccin de los Datos. Cada uno de sus bits determina la direccin de la pati-
Ui de E/S asociada.
' valor lgico de las patitas
LATx: Registro cerrojo, tipo ",la t c l r d e E/S.
- . . -
El registro LATx resuelve los problemas que provocan las instrucciones que leen, modifican y
escriben las puertas. Una escritura sobre PORTx o LATx escribe un valor sobre el latehn de la puer
ta. Una lectura de PORTx recoge el valor de las patitas de E/S. pero una lectura de LATx lee el va
lor guardado en el latch o registro cerrojo de la puerta. En la Figura 12.2 se muestra el esquema
de interconexin de una patita de E/S.
Figura 12.2. Esquema interno de conexionado de una patita de E/S.
El nmero de patitas de E/S depende del modelo de DSC que se trate. As hay dispositivos con s
lo 12 patitas de E/S dedicados para el manejo de sensores, como los dsPIC30F2011/3012/2012/3013,
y otros que llegan a 68, como los dsPTC30F5013/6013/6014/6010, y que disponen de las puertas
PORTA, PORTB, PORTC, PORTD, PORTE, PORTF y PORTG.
Existen hasta 24 patitas de E/S que tienen la posibilidad de generar peticiones de interrupcin al
producirse un cambio de su estado lgico. Dichas patitas, llamadas CN, se programan con 4 regis
tros asociados CNEN1 y CNEN2, que activan o desactivan la peticin de interrupcin, y CNPU1 y
CNPU2, que habilitan o deshabilitan el circuito pull-up que tiene cada una de estas patitas.
156 dsPIC. DISEO PRCTICO DE APLICACIONES
12.3. TEMPORIZADORES
Segn el modelo de DSC puede contener de 3 a 5 temporizadores de 16 bits en los dsPIC30F y has
ta 9 en el caso de los dsPIC33F, llamados T1MER1, TTMER2, T1MER3,... TIMER9, algunos de los
cuales pueden concatenarse por parejas conformando temporizadores de 32 bits.
El TIMER1 funciona como temporizador tipo A, los TIMER 2 y 4 funcionan como temporiza
dores tipo B, y los restantes como tipo C. Los de tipo B se concatenan con los de tipo C para confi
gurar temporizadores de 32 bits.
Para controlar el comportamiento de los temporizadores, cada uno dispone de 3 registros de 16
bits cada uno.
TMRx: Guarda el valor que establece el tiempo a controlar.
PRx: Es el registro de periodo asociado al temporizador.
TxCON: Registro de Control.
Los temporizadores pueden solicitar peticiones de interrupcin al producirse su desbordamien
to, que se regulan con los siguientes registros y bits:
TxIE: Contiene los bits de permiso para las diversas interrupciones de los Timer.
TxlF: Sus bits actan como sealizadores del desbordamiento de los temporizadores.
TxlP<2:0>: Son tres bits dedicados a cada temporizador que establecen el nivel de prioridad de
la interrupcin correspondiente.
Los temporizadores pueden funcionar en 4 modos:
I o. TEMPORIZADOR SNCRONO
En este modo pueden trabajar los 5 temporizadores y emplean la seal del reloj interno del sis
tema (Fosc/4). El valor del temporizador se incrementa con cada impulso hasta el desborda
miento.
2 CONTADOR SNCRONO
En este modo funcionan todos los temporizadores y los impulsos de reloj pueden provenir de una
seal externa introducida por la patita TxCK que se sincroniza con la interna.
3o. CONTADOR ASINCRONO
En este modo slo funciona el temporizador tipo A y el incremento del valor de la temporizacin
se produce de forma asincrona con respecto al reloj interno del sistema.
4 CONTADOR CON DISPARO POR ACUMULACIN DE TIEMPO
El registro contador se incrementa en funcin de la duracin que tienen los impulsos aplicados
por la patita TxCK.
Los temporizadores utilizan un divisor de frecuencias previo que puede dividir la frecuencia de
los impulsos aplicados por 1, 8, 64 o 256.
En los mdulos de Captura, Comparacin y PWM los temporizadores actan como base de
tiempo.
PERIFRICOS Y RECURSOS INTEGRADOS 157
12.4. CONVERSORES AD
Los conversores AD integrados en los DSC pueden ser de 10 hits de resolucin y alta velocidad, o
bien, de 12 bits de alta resolucin. Convierten una seal analgica de entrada en un valor digital de
10 o 12 bits. En la Figura 12.3 se muestra un esquema de la estructura interna del conversor AD de
10 bits.
o
AN 15
EN TRA DA S
A N A L GICA S
BUFFER i
16 PALABRAS 3
"?V
FORMATO
Figura 12.3. Esquema por bloques simplificado del conversor AD de 10 bits.
Segn el esquema de la Figura 12.3 los multiplexores de las entradas seleccionan la seal ana
lgica a convertir que es la introducida por las patitas AN0-AN15. Pasa por uno de los 4 circuitos
amplificadores de captura y mantenimiento (S&H) y se selecciona una salida con los interruptores
electrnicos que la introduce al CAD. La multiplexacin de los canales de entrada determina la fre
cuencia del mucstreo.
El conversor AD de 10 bits responde a las siguientes caractersticas:
m m m
>VcViVV4V.;<
Velocidad mxima de conversin de 1Msps con una impedancia mxima de 500 Ohm, trabajan
do normalmente a 500 ksps (kilo muestras por segundo) a 5 Vy 100 ksps a 2,7 V.
Tiempo de muestreo de 154 ns.
Capacidad de hasta 4 patitas de entrada para muestreo simultneo.
Exploracin automtica del canal.
Bufer de 16 palabras para el almacenamiento de los resultados de la conversin.
- El conversor AD de 12 bits slo dispone de un canal CHO de amplificador unipolar de captura
y mantenimiento. La velocidad mxima de conversin es de 200 ksps, siendo la normal de 100 ksps
a 5 V y otra de 50 ksps a 2,7 V.
Para la programacin del mdulo conversor AD existen 6 registros, de los cuales ADCON1, AD-
CON2 y ADCON3 sirven para gobernar la operacin de conversin. El registro ADCHS elige las
158 dsPIC. DISEO PRCTICO DE APLICACIONES
patitas de entradas analgicas que se conectan a los amplificadores de captura y mantenimiento.
ADPCFG configura las patitas como entradas analgicas o E/S digitales. El registro ADCSSL se
lecciona las entradas que se explorarn de forma secuencial.
Mediante los bits de control SMPI<3:0> se controla la generacin de interrupciones que se pro
ducen cuando ha sucedido un determinado nmero de secuencias de muestreo y conversin.
12.5. MDUL O DE CAPTURA
Tiene la misin fundamental de medir el tiempo que dura un acontecimiento externo producido por
una seal que se aplica a una de las patitas de entrada del mdulo y que se mide con el TIMER2 o
el TIMER3. Es muy til en aplicaciones que hay que controlar la frecuencia o el periodo de los im
pulsos a analizar.
Los modos de trabajo se distinguen por el momento en el que se realiza la captura de la seal a
medir, y son:
.
1. Cada flanco descendente de la seal de entrada capturada.
.vC v! - v> *
...
. 2. Cada flanco ascendente.
v*i - .v- ' - ./ vVvKvItS.Xv- 1 1
3. Cada 4 flancos ascendentes.
. v i v ; > > m<::
4. Cada flanco ascendente y descendente.
- - * . V A -
.
TMR2 TMR3
Figura 12.4. Bloques fundamentales del mdulo de Captura.
Los impulsos aplicados a las patitas de entrada ICx del mdulo de Captura mostrado en la Figu
ra 12.4 se divide por 1, 4 o 16 en el divisor de frecuencia segn el valor de los bits correspondien
tes en el registro ICxCON, que tambin gobierna el tipo de flanco que origina el periodo de medi
da. El bit CTMR selecciona el Timer que actuar de base de tiempos en la medicin. Dicha base de
tiempos se regula desde el Detector Lgico de Flancos, que al acabar el periodo a medir deposita en
el buffer para los resultados el valor del Timer seleccionado y dos ciclos de instruccin despus ac
tiva el sealizador de interrupcin ICxF.
PERIFRICOS Y RECURSOS INTEGRADOS 159
12.6. MDUL O DE COMPARACIN/PWM
Este recurso es muy eficaz en aquellas aplicaciones que precisan generar impulsos de anchura va
riable y los que realizan operaciones simples de PWM. Para estas ltimas tareas existen algunos mo
delos de DSC con un mdulo complejo e independiente especializado en PWM para control de mo
tores que ser explicado ms adelante.
Tienen los siguientes modos de trabajo:
- Modo de comparacin simple
- Doble modo de comparacin de salida
- Pulso simple de salida
- Pulso continuo de salida
- Modulacin simple de anchura de pulso
- Con proteccin de errores en la entrada
- Sin proteccin de errores en la entrada
El funcionamiento simplificado de este dispositivo se basa en la comparacin del valor almace
nado en un registro con el de un temporizador (TIMER2 o TIMER3). Cuando coinciden dichos va
lores se genera un pulso o un tren de pulsos en una patita de salida. Es capaz de generar interrup
ciones. (Figura 12.5.)
REGISTRO DATO COMPARACIN M-
FLAG
INTERRUPCIN
OCxlF
r
MPX OCTSEL Mpx
& 4 * i
/
13
ir
MODO OPERACIN
TIMER2 TIMER3
SEAL SEAL
TIMER2 TIMER3
SALIDA
,OCFA
a
OCFB
OCx
PATITA
y S j SALIDA
Figura 12.5. Esquema por bloques del mdulo de Comparacin/PWM.
. Cuando coincide el valor cargado en el registro OCxR del esquema de la Figura 12.5 con el del
Timer seleccionado, la Lgica de Salida obliga a la patita de salida OCx (OC1-OC8) a tomar un ni
vel lgico determinado, a generar un impulso o incluso a producir un tren de pulsos continuos. Las
patitas OCFA y OCFB sirven para controlar el funcionamiento en modo PWM con entradas de pro
teccin de fallo.
160 dsPIC. DISEO PRCTICO DE APLICACIONES
12.7. MDULO P WM PARA EL CONTROL DE MOTORES
Sirve para generar un tren de impulsos de anchura variable que permite variar la potencia que se en
trega a un motor y regular su velocidad con precisin.
Existen grupos de dispositivos DSC destinados al control de motores, pudiendo ser de dos tipos
en funcin de las patas del mismo: mdulo de 8 salidas si el dispositivo es de 64 palas o ms y otro
de 6 salidas en caso de un nmero menor. El mdulo PWM de los los dispositivos dsPIC30F tiene
las siguientes caractersticas:
- - - - ' ... 1 '
1Dispone de 8 patitas de salida PWM y 4 generadores de impulsos de anchura variable con 16 bits
de resolucin. Las 8 patitas de salida PWM se agrupan por parejas, una por cada generador, pa
ra controlar la polaridad de las seales de salida, que pueden ser iguales o invertidas segn el ti
po de motor al que se apliquen (PWM4H-PWM4L, PWM3H-PWM3L, PWM2H-PWM2L y PWM1H-
PWM1L). Tambin hay 2 patitas Fault A y Fault B que determinan los fallos y generadores de
tiempo muerto.
W X V /.< \ V A W
2 Modos de salida por flanco y por centro alineado.
3/' Modo de generacin de pulso nico.
n D o sc aD B M B M B B ai ai aH M
CONTROL
SOBREP ASAMIENTO
7
Figura 12.6. Esquema general simplificado del mdulo PWM.
Se comienza cargando el ciclo de trabajo y la seal para cada generador en sus respectivos re
gistros PDCx (Ciclo de trabajo). Tambin se programan los registros de configuracin para deter
minar el tipo de seal que se desea en cada generador. Luego, en el registro PTPER (Registro base
PERIFRICOS Y RECURSOS INTEGRADOS 161
de periodo de tiempo) se carga el periodo de la seal y para la generacin de la base de tiempo se
utiliza un temporizador implementado por el registro PTMR (Registro base de tiempo).
El valor del temporizador se compara con el de PDCx (Ciclo de trabajo) y a su vez con el del pe
riodo PTPER, para obtener la anchura de pulso deseada. La activacin de las seales de fallo llevan
a las salidas a un estado prefijado que evitan que se dae el motor. Estas patitas de fallo se denomi
nan FLTA y FLTB y son controladas por los registros FLTACON y FLTBCON.
Por las dos patitas de salida que dispone cada generador se pueden obtener diferentes tipos de se
ales para aplicar a los motores. Dichos modos de trabajo son los siguientes:
1) Modo or mui
Cada vez que el temporizador PTMR alcanza el valor del registro PTPER se genera una interrup-
;- cin y el temporizador vuelve a 0.
2) Pulso nico
Slo funciona cuando se pone el bit de control PTEN = 1y se iguala el valor del temporizador PTMR
con el del registro PTPER, generndose un solo pulso por interrupcin y pasando PTEN = 0.
3) Modo ascendente/descendente
Cuando el temporizador PTMR alcanza el valor de PTPER comienza a contar en sentido descen
dente y cuando llega a 0 se produce una interrupcin y pasa a contar en modo ascendente.
Como no es posible que las salidas PWMxH y PWMxL conmuten a la vez, $e introduce un tiempo
muerto que se controla desde los registros DTCON1 y DTCON2.
4) Disparo especial
En este modo es posible sincronizar el mdulo PWM con el conversor AD para llevar a cabo ope
raciones combinadas.
12.8. MDULO UART
Los DSC disponen de uno o ms UART, segn el modelo que se trate. El UART es un elemento des
tinado a soportar la comunicacin serie asincrona y funciona de forma bidireccional, adaptndose
al trabajo de muchos perifricos. La comunicacin se realiza con dos lneas, una para la transmisin
UTX y otra para la recepcin URX, entrando y saliendo los bits a una frecuencia controlada inter
namente.
El UART dispone de un generador de baudios con un predivisor de frecuencia que se encarga de
generar la frecuencia de trabajo del mdulo.
GENERADOR
' DE BAUDIOS
RECEPTOR
UART
.......
"ART: r
W L m J m
URX
TRANSMISOR i
UART
vXwiv :
Figura 12.7. Esquema por bloques del mdulo UART.
162 dsPIC. DISEO PRCTICO DE APLICACIONES
En la Figura 12.7 se ofrece el esquema por bloques del mdulo UART, en el que se distinguen
los 3 elementos hardware principales del mdulo UART: generador de baudios, transmisor asincro
no UART y receptor asincrono UART. Funciona en modo full-duplex con datos de 8 o 9 bits, 1o
2 bits de STOP y un bit de paridad par o impar.
El mdulo UART est compuesto por los siguientes registros:
UMODE: Registro de Modo
USTA: Registro de Control y Estado
URREG: Registro de Recepcin
UTREG: Registro de Transmisin
UBRG: Registro del generador de Baudios
El comportamiento del UART se gobierna desde los registros USTA, URREG y UTREG.
Puede generar una interrupcin tanto el bloque transmisor como el receptor y el margen de fre
cuencias que soporta abarca desde 38 Hz hasta 2,5 Mbps.
12.9. MDUL O SPI
Consiste en un interfaz serie sncrono que es muy empleado para establecer la comunicacin con mi-
crocontroladores, memorias EEPROM, conversores AD, etc. Todos los modelos DSC disponen al
menos de uno de estos mdulos SPI.
En la Figura 12.8 se ofrece el esquema por bloques del mdulo SPI, en el que se distinguen varios
registros SFR que soportan el manejo de la informacin con el bus de datos. Uno se llama SPIBUF y
guarda los datos que se envan y se reciben internamente y consta de dos registros unidireccionales de
16-bits, denominados SPIRB y SPITB, que guardan el dato recibido o el que hay que transmitir, res
pectivamente. Otro es el SPISR que desplaza los bits de datos de entrada y de salida al registro SPI
BUF. Otro ms es el registro de control SPTCON que gobierna al SPIRB y al SPITB. Y, finalmente,
el registro SPISTAT contiene los bits de estado que informan de las condiciones de trabajo.
18 BUS DE DATOS
-----------
PREESCALER
Figura 12.8. Esquema por bloques del mdulo SRI.
PERIFRICOS Y RECURSOS INTEGRADOS 163
En el esquema de la Figura 12.8 la patita SDI es por la que se introducen los datos en serie y la
SDO por la que salen. SCK es la patita que introduce los impulsos de reloj en el modo maestro,
mientras que en modo esclavo acta como salida. SS#es la patita mediante la que se activa el mo
do esclavo con nivel lgico bajo.
12.10. MDULO l2C
Dada la popularidad y uso del protocolo de comunicacin I2C los DSC disponen de un mdulo que
permite su adaptacin y que es muy empleado en las transferencias de informacin con otros mi-
crocontroladores, registros de desplazamiento, conversores AD,.ctc.
El mdulo I2C (Inter-lntegrated-Circuit) tiene el hardware necesario para trabajar en modo es
clavo y en modo maestro. Como se aprecia en la Figura 12.9 todos los elementos que se conectan
al bus I2C lo hacen a travs de dos lneas, SDA (Datos) y SCL (Reloj).
Figura 12.9. Para la comunicacin c.on el protocolo PC slo se utilizan dos lneas, una para los datos
(SDA) y la otra para el reloj (SCL).
En este protocolo las direcciones de los elementos de la red pueden especificarse con direccio
nes de 7 o 10 bits. Iniciada la transferencia de informacin se enva la direccin del elemento y al
comprobar que le corresponde genera una seal de reconocimiento ACK que permite el progreso
de.la transferencia.
Los registros I2CCON e I2CSTAT son los registros de control y estado del mdulo I2C, respec
tivamente. Como registro receptor acta I2CRCV y como transmisor el I2CTRN. La direccin de
cada esclavo viene almacenada en el registro I2CADD y, finalmente, el registro I2CBRG contiene
el valor de recarga del generador de frecuencia.
164 dsPIC. DISEO PRCTICO DE APLICACIONES
12.11 MODULO DCI
El mdulo interfaz del Conversor de Datos (DCI) permite una sencilla comunicacin con muchos
dispositivos comunes como los codificadores/decodificadores de audio (CODEC), telefona, reco
nocimiento de voz, eliminacin de eco, los conversores AD/DA, etc., soportando los siguientes ti
pos de interfaces:
* K
.. . :
a) Transferencia de trama serie sncrona.
b) Inter-IC Sonido (l2S).
c) AC-Link Compliant (AC'97).
La aplicacin ms interesante del mdulo DCI es la destinada a las aplicaciones de voz y soni
do de alta calidad con frecuencias comprendidas entre 8 y 48 KHz que trabajan con palabras co
dificadas. El tamao de la palabra puede programarse hasta 16 bits, con 16 ranuras de tiempo para
una trama de un mximo de 256 bits que puede almacenar hasta 4 muestras sin la supervisin de la
CPU. Est configurado para recibir y transmitir datos en espacios mltiplos de 16 bits, operacin
que se hace de forma transparente para el usuario.
Consta de cinco registros de control y uno de estado:
DCICON1: bits de habilitacin y modo.
DC1CON2: bits para configurar la longitud de la palabra, de la trama y el buffer.
DC1CON3: configura el reloj.
DC1STAT: muestra informacin sobre el estado.
RSCON: configura la recepcin de datos.
TSCON: configura la transmisin de datos.
A estos registros se les aaden cuatro para la transmisin TXBUF0...TXBUF3 y cuatro para la
recepcin RXBUF0...RXBUF3.
12.12 MDULO CAN
El mdulo CAN (Controller Arca NetWork) consiste en un interfaz serie muy empleado para la co
municacin con otros perifricos u otros modelos de microcontroladores.
El bus CAN fue usado por primera vez en 1980 por la industria del automvil para solventar la
gran densidad de cableado entre sus diferentes elementos y el ruido ambiental. Con el bus CAN se
reduce el cableado y se evitan las interferencias de los ambientes ruidosos.
Los mensajes que se transmiten por este procedimiento carecen de los campos de direccin pa
ra el origen y para el destino, en su lugar se emplea un identificados Los nodos conectados al bus
CAN analizan el identificador y deciden si recogen o no la trama.
El mdulo CAN que incorporan los DSC satisface las especificaciones de la norma o versin
2.0B que utiliza identificadores de 11 y/o 29 bits. Tambin soporta los protocolos 1.2, 2.0B Pasivo,
2.0B Activo y 2.0A.
Para la comunicacin el mdulo CAN maneja 2 buffer de entrada con prioridad y 3 de transmi
sin. La longitud de los datos est comprendida entre 0 y 8 bytes y la trama puede ser estndar o ex
tendida. Puede generar interrupciones cuando se producen errores.
PERIFRICOS Y RECURSOS INTEGRADOS 165
En la programacin del mdulo se usan los siguientes grupos de registros:
Registros de Estado y Control
CiCTR: registro de control y estado del transmisor.
Registros del Buffer Transmisor
CiTXnCON: registro de control del buffer transmisor.
CiTXnSID: identificador estndar del buffer transmisor.
CiTXnETD: identificador extendido del buffer transmisor.
CiTXnDLC: control de la longitud de transmisin.
CiTXnBn: buffer de transmisin.
Registros del Buffer Receptor
CiRXOCON: registro de control y estado del receptor 0.
CiRXICON: registro de control y estado del receptor 1.
CiRXnSID: identificador estndar del buffer receptor.
CiRXnEID: identificador extendido del buffer receptor.
CiRXnBn: buffer de recepcin.
CiRXnDLC: control de longitud de recepcin.
Filtros de Aceptacin de Mensajes
CiRXFnSID: identificador estndar del filtro de aceptacin.
CiRXFnEIDH: identificador extendido del filtro de aceptacin, parte alta.
CiRXFnEIDL: identificador extendido del filtro de aceptacin, parte baja.
Registros de la Mscara del Filtro de Aceptacin
CiRXMnSID: identificador estndar de la mscara del filtro de aceptacin.
CiRXMnElDH: identificador extendido de la mscara del filtro de aceptacin, parte alta.
CiRXMnElDL: identificador extendido de la mscara del filtro de aceptacin, parte baja.
Registros de l a Tasa en Baudios
CiCFGl: registro 1de configuracin de la tasa en baudios.
CCFG2: registro 2 de configuracin de la tasa en baudios.
Registros Contadores de Errores
CiEC: registro contador de errores de transmisin/recepcin.
Registros de Interrupciones
CilNTE: registro de activacin de interrupciones.
CilNTF: registro de FLAGvS de interrupcin.
12.13 MDUL O QEI
El mdulo QEI (Interfaz del Codificador de Cuadratura) proporciona una cmoda adaptacin de los
codificadores incrementales usados para la deteccin de la posicin y la velocidad en los sistemas
rotacionales propios de los ejes de motores.
Un codificador incremcntal est formado por los siguientes componentes:
166 dsPIC. DISEO PRCTICO DE APLICACIONES
1. Fuente de luz (LED).
2. Disco ranurado sujeto al eje del motor.
3. Detectores de luz que reciben el haz luminoso del LED al situarse una ranura entre el emisor y el
detector de luz.
A) FUENTE DE LUZ
B) DISCO RANURADO
Figura 12.10. Principio de funcionamiento de un codificador incremental usado en el control del posi-
cionamiento del eje de un motor.
Un codificador incremental proporciona 3 seales: FASE A, FASE B e INDEX PULSE. Anali
zando la forma de dichas seales se puede determinar con exactitud la posicin del eje del motor.
El mdulo QEI tiene las siguientes caractersticas:
- Tres patas: dos para la seal de fase y una para el index pulse.
- Filtros programables de nudos en la entrada.
- Decodificador de cuadratura provisto de un contador de pulsos.
- Contador ascendente/descendente de 16 bits.
- Estado de la cuenta de direcciones.
- Resolucin de cuenta X2 y X4.
- Dos modos de reset para el contador.
- Contador ascendente/descendente de propsito general de 16 bits.
- Interrupciones.
LUZ
PERIFRICOS Y RECURSOS INTEGRADOS 167
En el manejo del mdulo QE1 se dispone de 4 registros SFR:
QETCON: registro de control y estado. Configura las operaciones y los flags.
DFLTCON: control de los filtros digitales que se aplican a las seales de entrada.
POSCNT: contador de posicin. Permite configurar la lectura/escritura.
M AXCNT: mximo valor a contar para comparar con el valor de POSCNT.
12.14 EL PERRO GUARDIN (WDT) Y LOS MODOS DE BAJ O CONSUMO
El Perro Guardin es un temporizador dedicado cuya nica misin es vigilar el procesamiento del
flujo de control y reinicializar el procesador cuando se produzca un fallo. Fundamentalmente detecta
situaciones en las que se queda colgado el procesador porque se ha metido en un bucle infinito o es
t esperando que suceda una condicin que nunca ocurre.
El WDT se programa con un valor para que se desborde y genere un Reset al cabo de un cierto
tiempo. A lo largo del programa y en puntos estratgicos se colocan instrucciones CLRWDT que re
frescan o ponen a 0 al WDT y evitan que se desborde. Cuando el procesador se enreda en un blo
que del programa del que no sale, no hay refresco y al desbordarse el Perro Guardin se genera un
Reset.
El Perro Guardin es optativo y puede deshabilitarse mediante el bit FWDTEN ubicado en el re
gistro de configuracin FWDT.
Los dispositivos dsPlC30F tienen 2 modos de funcionamiento de bajo consumo que pueden ser
seleccionados mediante la ejecucin de la instruccin PWRSAV.
SLEEP: tanto la CPU como los perifricos dejan de funcionar al detenerse el reloj del sis
tema mediante la inhabilitacin de los osciladores principal y externo respectivamente.
Este es el modo en que menos potencia consume.
IDLE: la CPU se deshabilita y deja de ejecutar instrucciones, pero los perifricos siguen
funcionando aunque pueden ser desactivados opcional mente. En este modo slo se des
habilita el oscilador principal.
Los dsPJ C33F tienen tambin el modo de bajo consumo DOZE que consiste en rebajar la fre
cuencia de trabajo para disminuir la energa consumida.
Para salir de los modos de bajo consumo existen tres causas:
Ia) Interrupcin.
2a) Rcset.
3a) Desbordamiento del WDT
12.15 EL CONTROLADOR DMA
Adems de todos los perifricos que integran los dsPIC30F. los dsPIC33F disponen del Controla
dor de Acceso Directo a Memoria (CDMA).
El controlador DMA es un dispositivo que permite transferir datos directamente entre la memo
ria y los perifricos a gran velocidad y sin la participacin de la CPU que puede dedicarse a otras
misiones. (Figura 12.11.)
168 dsPIC DISEO PRCTICO DE APLICACIONES
Figura 12.11. El Controlador DMA permite la transferencia directa y veloz de datos entre la memoria y
los perifricos sin intervencin de la CPU.
Los dsPIC33F y los PTC24H para soportar el DMA utilizan una memoria de doble puerto (DPS-
RAM), dedicando uno de ellos a la comunicacin con la CPU y el otro con los perifricos. En la Fi
gura 12.11 se ha simplificado el diagrama por bloques que representa el funcionamiento del CDMA.
Cada vez que un perifrico intenta transferir datos con la memoria genera una interrupcin al CD
MA que pasa a controlar las lneas de los buses de datos, direcciones y control y organiza el tras
vase directo y veloz de la informacin entre el perifrico y la memoria de datos.
En los modelos dsPIC33F, el CDMA dispone de 8 canales para soportar las transferencias y la
existencia de dos bus es de datos independientes, uno entre la CPU y los perifricos y el otro entre
la memoria y los perifricos elimina gran parte de las colisiones, pudiendo realizar diversos acce
sos simultneos:
1 Es posible realizar una lectura de una misma posicin de un perifrico o de la DPSRAM desde la
CPU o desde el CDMA.
2. Es posible escribir simultneamente dos posiciones diferentes de la memoria o del perifrico des
de la CPU y eJ CDMA.
3 Se produce una colisin si se intenta escribir la misma posicin de la memoria o del perifrico des
de la CPU y desde el CDMA a la vez. En este caso prevalece la escritura de la CPU y se genera
una excepcin que recoge los detalles que han producido la colisin, as como tambin se activa
el sealizador de colisin correspondiente al canal en el que se ha producido.
Como se muestra en la Figura 12.13 la comunicacin de los perifricos mediante dos buses con
la CPU y el CDMA permite implementar todo tipo de transferencias bidireccionales y directas en
tre los perifricos y la DPSRAM.
La gran ventaja del CDMA es la gran velocidad con la que se transfieren datos entre la memo
ria y los perifricos sin afectar al trabajo de la CPU y sin rebajar el rendimiento del sistema. A tra
vs de los 8 canales del CDMA se puede transferir bidircccionalmente un dato de tamao byte o
PERIFRICOS Y RECURSOS INTEGRADOS 169
CONTROLADOR
CONTROL DMA LISTO
PER 1
I
SRAM:- CNALS DMA DPSRAM
INTERRUPCION
BUS DATOS DMA
DIRECCIN DPSRAM DIRECCIN PERIFRICO
BUS DATOS CPU - P ERIFERICOS
B L O Q
DATOS
Figura 12.12. El CDMA de los dsPIC33E dispone de 8 canales independientes para soportar las trans
ferencias directas entre la DPSRAM y ios perifricos.
TEMPORIZ TEMPORIZ
BUSTJ TSSli 7I"
UART ECAN ECAN
Figura 12.13. Median te el control de los canales del CDMA se puede atender a un gran nmero de
perifricos.
palabra en un ciclo. Cada bloque de datos que puede transferirse puede alcanzar los 2.048 bytes o
palabras. En el CDMA existe un esquema de prioridades entre los canales para los casos de coli
sin entre ellos.
Con la finalidad de conseguir el mximo rendimiento en la transferencia con DMA el contro
lador tiene 4 modos de funcionamiento que permiten adaptarse a las estructuras de datos que se
manejen.
En el modo de disparo nico se mueve un bloque de datos y a continuacin se desactiva el ca
nal (Figura 12.14.)
170 dsPIC. DISEO PRCTICO DE APLICACIONES
ESPACIO DIRECCIONES DPSRAM
INTERRUP CION CPU
AL COMPLETAR
TRANSFERENCIA
DEL BLOQUE
Figura 12.14. Representacin grfica del funcionamiento del modo de disparo nico en el CDMA.
En el modo de autorepeticin se mueve un bloque de datos y luego se configura automtica
mente el canal para repetir la transferencia. (Figura 12.15.)
ESPACIO DIRECCIONES DPSRAM
INTERRUP CIN CPU
AL COMPLETAR
TRANSFERENCIA
DEL BLOQUE
Figura 12.15. Representacin grfica del funcionamiento del modo de trabajo de autorepeticin del
CDMA.
En el modo ping-pong se manejan 2 buffer de datos y cada vez que se completa la transmisin
de uno de ellos se configuran automticamente los canales para comenzar la transferencia del otro.
(Figura 12.16.)
PERIFRICOS Y RECURSOS INTEGRADOS 171
ESP ACIO DIRECCIONES DPSRAM
BUF F E R
COUNT =DMACNTx
INTERRUP CIN CPU
j ^> AL COMP LETAR
TRANSFERENCIA
BUFFER B
----- ------------------------| INTERRUPCIN CPU
COUNT =DMACNTx N AL COMP LETAR
TRANSFERENCIA
Figura 12.16. Modo de funcionamiento tipo "ping-pong" del COMA.
Finalmente, en el modo de direccionamiento indirecto, la direccin de acceso a la DPSRAM se
forma concatenando la parte baja de dicha direccin que suministra el perifrico con la parte alta que
conforma la direccin Base suministrada por un registro del CDMA (DMASTnx). (Figura 12.17.)
EXTENSIN
DE CEROS
DIRECCION
INDIRECTA DESDE
PERIFRICO
DIRECCIN DPSRAM
/ ______
DIRECCI N BASE j
i
!
:
:
? ........
mam: ;Eticjucta d(m cic>de pirograma
V
Esta es la etiqueta de inicio de programa, la siguiente instruccin ser la primera que ejecute el
controlador tras atender la rutina de Reset.
MOV #0x000,WG Movemos un literal a W0
La primera instruccin mueve el literal #0x0001 al registro general W0. Para indicar que se tra
ta de una constante, se coloca el smbolo almohadilla #delante del nmero a escribir. Ox significa
que el nmero est representado en hexadecimal y el valor 0001 representa la constante en hexade-
cimal. La instruccin MOV mueve el primer operando (fuente) al segundo operando (destino).
Es conveniente familiarizarse con la expresin de nmeros en formato hexadecimal ya que al tra
bajar con registros y datos de 16 bits, el formato hexadecimal resulta muy cmodo. En la mayora
de los ejemplos utilizados se utilizar esta base numrica.
...a-. ..........-...... ....
suma2:
Esta es otra etiqueta a la cual el programa salta frecuentemente. Una etiqueta debe terminar siem
pre con el signo de puntuacin dos puntos (:) y no debe coincidir con ninguna palabra reservada del
compilador.
MOV #0x0002.WI ;Movemos un 2 al registro W J
ADD W0,W 1,W0 ;sumamos el registro W0 y W1y dejamos
;el resultado en W0
A continuacin el programa mueve un 2 al registro general Wl. Y luego suma los registros W0
y W1 y deja el resultado en W0. La instruccin ADD admite varios formatos. En el del ejemplo, su
ma el contenido de los dos primeros operandos dejando el resultado en el tercero.
GOTO suma2 ;Repetimos el bucle suma2
.
208 dsPIC. DISEO PRCTICO DE APLICACIONES
Tras realizar la suma, con la instruccin GOTO la ejecucin del programa salta hasta la etique
ta sealada suma.2, volviendo a mover 2 al registro W1 y volviendo a realizar la suma de forma in
definida.
,end ;Directiva de fin de programa
Por ltimo, la directiva .end, indica el final del programa fuente.
Qu es lo que hace el programa? En primer lugar mueve un 1al registro WO, despus mueve
un 2 al registro W1 y los suma dejando el resultado (3) en el registro WO. Despus salta a la etiqueta
suma2 para de nuevo mover un 2 a W1 y sumar ambos registros, obteniendo un 5 en WO y as su
cesivamente. Es decir, el programa va generando nmeros impares en el registro WO desde el n
mero 1hasta cul? Los registros tienen una capacidad de almacenamiento de 16 bits, luego el n
mero mayor que pueden alcanzar es el nmero #0xFFFF. Y qu pasar al sumar 2 a este nmero?
El resultado en WO ser #0x0001. Se produce un acarreo y como el resultado debera ser el
#0x10001 que requiere de 17 bits y el registro WO tan slo tiene 16, el resultado queda truncado y
en el registro slo nos queda el valor #0x0001. Cmo se puede saber si se ha producido acarreo?
Para saber si se ha producido esta circunstancia de desbordamiento hay que examinar un bit, lla
mado de acarreo, situado en el Registro de Estado (SR). Para poder analizar este fenmeno y ver
cmo se ejecuta el programa, en el prximo captulo se simular la ejecucin de este programa gra
cias a la herramienta MPLAB SiM.
Resumen:
Los siguientes pasos resumen el proceso necesario para la creacin y compilacin de un proyecto:
1. Crear el proyecto mediante men Project-> Project Wizard...
2. Siguiente
3. Seleccionar el modelo dsP!C30F4013 y pulsar Siguiente
4. Seleccionr Microchip ASM30 Toolsuite de la lista desplegable Active Toolsuite
a. Para el MPLAB ASM30 Assembler seleccionar C:\Archivos de programa\ Microchip\MPLAB
ASM30 Suite\bin\pic30-as.exe
b. Para el MPLAB LINK30 Object Linker seleccionar C:\Archivos de programa\ Microchip\MPLAB
ASM30 Suite\bin\pic30-ld.exe
c. Para el LIB30 Archiver seleccionar C:\Archivos de programa\Microchip\MPLAB ASM30
Suite\bin\pic30-ar.exe
5; Nombrar el proyecto, suma, y elegir ubicacin.
6. Aadir los siguientes ficheros a la lista de ficheros del proyecto:
Ficheros a aadir a nuestro proyecto
C:\Archivos de programa\Microchip\MPI.AB ASM30 $uite\lh\Crl0.s
C:\Archivos de programa\Microchp\MPLAB ASM30 Sute\lib\Crt1.s
C:\Archivos de programa\Microchp\MPI.AB ASM30 Suite\support\gld\p30f4013.gld
C:\Archivos de programa\Mcrochip\MPLAB ASM30 Sute\support\inc\p30f4013.inc
APLICACIN 2: EL ENTORNO DE DESARROLLO MPLAB IDE 209
Marcar estos ficheros con un tic para que se copien en la carpeta del proyecto. (En funcin del ds-
f W a utilizar se elige un fichero correspondiente al modelo usado: p30f4013.gld y p30f4013.inc.)
7. Finalizar l asistente
8. Modificar los ficheros CrtO.s yCrtl.s con el modelo de dsPIC elegido
9. Indicar al entorno, el directorio de los ficheros include. Para ello, en el men Project -> Build Op-
tions -> Project, y dentro de la pestaa General, en el cuadro Include Path,($INCDIR): pulsar el bo
tn Browse y elegir la ruta C:\Archivos de program\Microchip\MPLAB ASM30 Suite\Support\inc\.
Crear un fichero desde el men FHe-> New y guardarlo en la carpeta del proyecto con el nombre
de suma.s (ntese que se debe especificar la extensin .s del archivo)
10. Aadir dicho fichero al proyecto a travs de la opcin Project->Add files to Project.. y seleccionar
nuestro fichero fuente suma.s
11. Escribir el programa y compilarlo mediante Project->Build Ail
A pesar de que el lenguaje ensamblador permite el uso de maysculas y minsculas, en algu
nos casos se debe respetar fielmente el uso de las apropiadas. As por ejemplo, a la hora de utili
zar ciertas etiquetas o nombres simblicos de registros o bits hay que ser fieles a los listados que
se proponen.
A2.5. PRIMER PROYECTO EN LENGUAJ E C
Una vez visto cmo crear un programa para dsPIC en lenguaje ensamblador se invita al lector a con
feccionar el mismo programa en lenguaje C para dar as una visin distinta y permitirle seleccionar
el lenguaje que mejor se adapte a sus necesidades.
La familia dsPIC ha sido optimizada para la ejecucin de programas desarrollados en len
guaje C. Una buena programacin en lenguaje ensamblador siempre ser ms ptima que en len
guaje C en cuanto a tamao de cdigo y tiempo de ejecucin. El lenguaje C tiene la ventaja
de ser un lenguaje ms fcil de aprender y utilizar proporcionando mayor rendimiento en la
programacin.
Al igual que en el programa en ensamblador, el primer paso consistir en crear un proyecto pa
ra poder confeccionar el programa. Los pasos son similares a los del apartado anterior, pero con cier
tas diferencias.
1. Para crear el proyecto acceder al men Project-> Project Wizard...
2. Pulsar Siguiente ':
3. Seleccionar el modelo dsPIC30F4013 y pulsar Siguiente
4. Seleccionar Microchip C30 Toolsuite de la lista despiegable Active Toolsuite
a. Para el MPLAB ASM30 Assembler seleccionar C:\Archivos de programa\ Microchip\MPLAB
C3\bin\pic3-as. exe
b. Para el MPLAB C30 Compiler seleccionar C:\Archivos de programa\Microchip \MPLAB
C30\bin\pic30-gcc.exe
c. Para el MPLAB LINK30 Object Linker seleccionar C:\Archivos de programa\ Microchip\MPLAB
C3Q\bin\pic30-ld. exe
d. Para el LIB30 Archiver seleccionar C:\Archivos de programa\Microchip\MPLAB ASM30
Suite\bin\pic30-ar. exe
210 dsPIC. DISEO PRCTICO DE APLICACIONES
5. Dar nombre al proyecto, sumac, y elegir ubicacin
6,. Aadir el fichero C:\Archivos de programa\ Microchip \ MPLAB C30\ support\ gld\ p30f4013.gld y
marcarlo con un tic para que se copie a la carpeta del proyecto. (En funcin del dsPIC a utilizar;
seleccionar un fichero distinto correspondiente al modelo en cuestin.)
7. Finalizar el asistente
.
8. Mediante al men Project-> Build options -> Project, y en la pestaa General, seleccionar el direc
torioG:\Archivos de programa\Microchip\MPLAB C30\lib\ a travs del botn Browse de la seccin
Library Path. Ntese que aqu no se debe cambiar la ruta de los ficheros include como en el ejem
plo en ensamblador, sino que se debe cambiar la ruta de las libreras
9. Crear un fichero desde el men File-> New y guardarlo en la carpeta del proyecto con el nombre
de sumac. c (ntese que se debe especificar la extensin .c del archivo)
10. Aadir dicho fichero al proyecto a travs de la opcin Project->Add files to Project... y seleccionar
el fichero fuente sumac. c
Ya est preparado el proyecto para ser escrito y compilado. Recuerde que debe ser especial
mente cauteloso a la hora de seguir estos pasos si desea tener xito en esta tarca, pues el olvido de
alguno de los pasos anteriores puede llevar a producir errores de compilacin o linkado que crea
rn ms de un quebradero de cabeza. El estado del proyecto se debe corresponder con el represen
tado en la Figura A2.14.
Q sumac.mcp
0 Source Files
sumac. c
Header Files
Object Files
Library Files
3 Linker Scripts
! L~p30f4013.gld
Other Files
Figura A2.14. Estado del primer proyecto en lenguaje C.
A continuacin se detalla el cdigo fuente correspondiente al programa en s, mostrado en el Lis
tado A2.2. Luego, mediante la opcin del men Project-> Build All, deber compilarse el proyecto.
7' i---..--'.. . '
// Programa Ejemplo 1.c
#include "p30f4013.h"
int main(void)
WREGO = 1;
while(l)
C -K wX v
.'..V V /A V .'
Listado A2.2. Programa sumac en lenguaje C (Contina)
APLICACIN 2: EL ENTORNO DE DESARROLLO MPLAB IDE 211
WREGO
}
roturn 0;
Y i'V.-i
V . r r * w - - o-
c^ffa::
- " U S tl >*
Listado A2.2. Programa sumac en lenguaje C (Continuacin)
Siguiendo los pasos correctamente deber obtener un BUILD SUCCEEDED tras construir el pro
yecto. Tambin deber aparecer un mensaje de alerta o waming, advirtiendo de que el uso de los regis
tros en lenguaje C como WREGO no es conveniente. Efectivamente, no lo es, ya que es ms recomen
dable hacer uso de variables al igual que se hace normalmente en este lenguaje. An as, y para hacer
el programa lo ms parecido al anterior desarrollado en ensamblador, se ha utilizado este recurso.
De no obtener el resultado deseado, estudie el error i ndicado en la ventan Output. La falta de un
punto y coma, o el no haber seguido todos los pasos con exactitud a la hora de crear el proyecto,
pueden originar el fallo. Analicemos lo que hace el programa.
// Programa Ejemplo 1.c
Vi.XtTO: TOXO.ttO.
En esta ocasin el comentario viene precedido por//. Este comentario es un comentario de lnea.
Es decir, que todo lo que est escrito tras estos smbolos y en la misma lnea ser ignorado por el
compilador. Si desea escribir comentarios de ms de una lnea incluya al principio del comentario
los smbolos /* y al final del mismo */. Por ejemplo:
P Este es un coi:
de mas de una
nentario
lnea */
HaSfl8S688S8BBwSw88ro^
La siguiente lnea es una directiva del compilador. Sirve para incorporar el fichero de includes
correspondiente al procesador empleado, en este caso el dsPIC30F4013.
#include p30f401^.h*1
La inclusin de este fichero permite entre otras cosas trabajar con smbolos en vez de con posi
ciones de memoria absolutas, etc.
int main(void)
x'i;
<
Todos los programas en C empiezan con la funcin main. La palabra reservada int significa que
la funcin main devolver un valor entero. Y la palabra reservada void significa que la funcin main
no recibe ningn parmetro para su ejecucin.
A continuacin comienza un segmento de cdigo y dichos segmentos de cdigo siempre deben
estar entre llaves {}.
212 dsPIC. DISEO PRCTICO DE APLICACIONES
WREGO =1;
Es una instruccin de asignacin. Asigna el valor 1a WREGO que es un registro general.
while(l)
{
WREGO = 2 +WREGO;
*%vXvivI'Xv'.-i -X'Xv X*X'X*X*>^V- '*'**X*1'X -"X .- - / X /Xv,* . *.v. . l l j ' ! ' >**< -.*> .v J vX*Xv-'-''
# :x-:%x
^: * r
- ... > - ..............- .- .vv:- v - : - . - : '
Estas instrucciones representan el bucle principal del programa. Se trata de un bucle while que
se repite siempre que sea cierta la condicin que acompaa a la palabra reservada while entre pa
rntesis. Verdadera es toda condicin cuyo resultado no sea cero. Luego al poner un 1, esa condi
cin siempre va a ser cierta. Y al igual que en el ejemplo en ensamblador, este bucle se va a estar
repitiendo siempre, sin tener un final.
Lo que se va a repetir en ese bucle es el siguiente segmento de instrucciones delimitado por las
llaves. Otra asignacin que hace que el registro WREGO adquiera el valor de la suma de los valo
res contenidos en el registro WREGO ms un 2.
As, y al igual que en el ejemplo en ensamblador, el programa va asignando al registro WREGO
nmeros impares a base de ir sumando 2 al nmero impar inicial 1.
return 0;
Hay que devolver un valor del mismo tipo que la funcin. Es decir, se debe devolver un valor en
tero. Normalmente la devolucin del nmero 0 indica que todo ha progresado de forma correcta. Por
eso, y a pesar de saber que el programa no alcanzar nunca esta instruccin siempre deberemos co
locar esta instruccin en los programas en C.
De haber conseguido una ejecucin correcta, seguramente se querr comprobar que el programa
funciona y hace lo previsto. Realice los ejercicios de autoevaluacin y pase al siguiente captulo
donde podr simular su ejecucin mediante el MPLAB S1M, una herramienta muy til a la hora de
depurar y probar programas antes de implementar el hardware.
AUTOEVALUACIN
Conceptos cl ave de este captul o
X vvw>* S
1.
vX X*X*X* X-X X X*X\ *X-* X-X*X*X*X-X X'*X*X ' .
Qu ficheros son necesarios para todo proyecto escrito en ensamblador?
2 Para qu sirven los ficheros aadidos a un proyecto en C? :y
3. Qu hace la instruccin ADD W0,W1,W0?
i
Cul es la etiqueta de inicio de programa en ensamblador?
. :5 i
5.
SvwSf Sra
/XyI \<vX *
Dnde se encuentra la rutina de Reset de nuestros programas?
I vX vX ;
APLICACIN 2: EL ENTORNO DE DESARROLLO MPLAB IDE 213
Ejercicios
Al programar Ejemplo hs, el primer programa en ensamblador, no est del todo optimizado. Es cier
to que el programa va generando nmeros impares en el registro WO, pero se puede hacer de una
forma ms ptima. Ms rpida.
Una pista: existe una instruccin que se ejecuta muchas veces y que no es necesario que se eje-
cute tantas.
Cul de los dos lenguajes le ha parecido ms interesante? Cul de los dos se adapta mejor a sus
necesidades? A lo largo de los siguientes captulos trataremos de proponer ms ejemplos en los dos
lenguajes para que pueda elegir con mayor criterio el lenguaje ms adecuado para sus necesidades.
A3.1. INTRODUCCIN
En la aplicacin anterior se han creado unos programas introductorios para controladores dsPIC. En
la presente se analizar el comportamiento de los mismos mediante un simulador dentro del entorno
de desarrollo, ejecutndolos paso a paso, de forma continua, observando cmo cambian las variables
y las posiciones de memoria, adems de seguir profundizando en la programacin de los dsPIC.
A3.2. S IMULANDO EL PRIMER PROGRAMA EN ENSAMBLADOR
El primer paso ser cargar el proyecto anterior desarrollado en lenguaje ensamblador mediante la
opcin File OpenWorkspace y abrirlo con todos sus componentes. Cuando aparezca en pantalla la
ventana del proyecto se hace doble clic sobre el fichero suma.s para disponer del cdigo fuente.
(Figura A3.1.)
IH jOCSf* V'dfC. UOfJpr A* SMm
Q f c# .1* (**i . outkum: fedSUd t >: i* ?1 T? Jfc;
Figura A3.1. El primer proyecto suma.mcw.
215
216 dsPIC. DISEO PRCTICO DE APLICACIONES
Para simular este ejemplo existen varias opciones. La primera, y la ms sencilla, es simular
lo en el ordenador haciendo uso de una herramienta integrada en el MPLAB IDE, denominada
MPLAB SIM. Otra opcin sera grabar en un dsPIC el programa y depurarlo sobre circuito me
diante otras herramientas de la empresa Microchip, como el MPLAB ICD2. Puede ser intere
sante el uso de esta herramienta en proyectos complejos, donde los problemas con el hardware
as lo requieran, pero para los ejemplos didcticos el simulador MPLAB SIM es una herramien
ta suficiente.
El primer paso ser entonces seleccionar el simulador. Para ello, se debe acceder al men De-
bugger ->Select Tool -> 3 MPLAB SIM. (Figura A3.2.)
Programmer Tools Configure Window
None
1MPLAB ICD 2
2 MPLAB ICE 4000
3 MPLAB 5IM
4 MPLAB ICE 2000
tfTfi nni 9A F'
Figura A3.2. Seleccin de la herramienta MPLAB SIM.
En la Figura A3.2. puede observarse cmo el men Debugger vara sus opciones al seleccionar
el MPLAB SIM. Ahora dispone de nuevas opciones Run, Anmate, Step Into, Step Oven etc., que
permiten hacer uso del depurador de programa para ejecutar cdigo paso a paso, animarlo, poner
puntos de ruptura, etc.
El siguiente paso consiste en que el simulador ejecute una instruccin. Para ello la herra
mienta dispone del men Debugger -> Step Into. Al seleccionarlo, es posible que el programa
muestre un mensaje indicando que el proyecto debe compilarse por no estar al da (The Project
is out o f date. Would you like lo build it now?). En tal caso pulsando Aceptar el proyecto
se compilar de nuevo. Pulsando de nuevo Debugger -> Step Into... no aparecer nada en
pantalla!
Efectivamente, no se observa ningn cambio en pantalla, pero el programa se est ejecutando.
Que es lo que pasa? Debera apreciarse cmo el ordenador seala la instruccin que est ejecutan
do y, sin embargo, no se ve absolutamente nada.
En el tema anterior se comentaba la necesidad de trabajar con proyectos para facilitar la tarea.
Una de las facilidades es que los ficheros aadidos a los proyectos preparan unas funciones que se
deben incluir siempre. Ahora mismo, el programa est ejecutando una de esas instrucciones in
cluidas en los ficheros que se han aadido al proyecto. Ms concretamente, est ejecutndose la ru
tina de Reset. Luego, la primera instruccin que se ejecuta no es la primera instruccin del fichero
suma.s.
A3.2.1. Explorando la memori a de programa
Para poder ver todas las instrucciones que ejecuta el simulador, se pulsa en el men Debugger la op
cin Reset -> Processor Reset. Luego, se procede a visualizar la memoria de programa mediante el
men View ->Program Memory.
'Select Tool
Clear Memory
Run F9
Animate
Halt F5
Debugger
APLICACIN .3: PONIENDO EN MARCHA EL SIMULADOR 217
Program Memory
Line ; Address Opcode Labei Disassembly
00000
00002
00004
00006
00008
0000
Q4Q00
000000
0001A8
0001A8
0001A8
00018
goto _ceset
nop
_DefaultInterrupt
_DeaultInterrupt
_Defau.Lt Interrupt
DefaultInterrupt
;<; ; _________________________
Opcoce Hex| Machine ||' Symbo'lic PSV Mixed | PSV Data
Figura A3.3. Visualization de la memoria de programa.
La ventana de la Figura A3.3 muestra el contenido de la memoria del programa. Es el programa
que realmente ejecuta el procesador. La ventana dispone de varios botones en la parte inferior que
permiten visualizar dicha informacin de distintas formas. Quizs la ms apropiada para seguir el
ejemplo sea la que adopta la ventana por defecto, llamada Symbolic.
En la columna Dissasembly se puede observar la primera instruccin del programa: goto reset.
Por eso lo primero que hace el programa es atender la rutina de Reset. Tambin puede observarse
una flecha en la parte derecha de la misma figura. Esa flecha indica cul es la prxima instruccin
que va a ejecutar el simulador. Ahora s, al pulsar Debugger -> Step Into, se aprecia cmo la flecha
se va desplazando por la memoria de programa.
Puede resultar interesante intentar descifrar lo que va haciendo el programa. Obsrvese que el
programa pasa por una rutina de inicializacin de datos, llamada _data_init, y cmo se ejecutan otras
instrucciones hasta que llega a la primera instruccin del fichero suma.s. Cmo sabremos que ya
ha llegado esa primera lnea de nuestro fichero? Al seguir ejecutando paso a paso el programa lle
gar un punto en el que en la columna Label de la ventana de exploracin de la memoria del pro
grama, aparecer la etiqueta niain. (Figura A3.4.)
204 00196 000000 nop
205 00198 DA4000 ReservedBR
206 0019 FE0000 res e t
207 0019C 200010 main mov.w #0x1,wO
208 0019E 200021 suma 2 mov.w #0x2,wl
209 001A0 400001 add.w wO,wl,wO
.
Opcode Hex Machine | Symbolic PSV Mixed PSV Data
Figura A3.4. Encontrando el inicio de nuestro programa,
A3.2.2. Estableciendo puntos de ruptura y ventanas de i nspeccin
Otra opcin, mucho ms cmoda y sencilla, es utilizar un punto de ruptura para saltar todas las ins
trucciones anteriores. Sin necesidad de abrir la ventana de exploracin del programa, se crea un
punto de ruptura en la primera instruccin mov del fichero suma.s. Para crear dicho punto de rup
tura, basta con hacer doble clic con el ratn en la parte izquierda de la lnea de cdigo donde se de
see que se pare el programa (en la Figura A3.5 dicha posicin est marcada con una letra B). Al
218 dsPIC. DISEO PRCTICO DE APLICACIONES
hacerlo, aparecer una B en dicha lnea, que indicar que en esa lnea existe un Breakpoint o pun
to de parada. Para quitarlo puede volver a hacer doble clic con el ratn en ese punto y desaparece
r la B y el punto de parada.
; C re a c i n de n a e r o i i n p a r e r
. g l o b a l _ J ta in
- t- e xc
m a in :
r i o v #0 *0 0 0 1 ,W0 ;M o v c i o s u n uno a M0
svmaZ:
n o v #0 x0 0 0 2 , K1 ;Move3cos u n 2 a l r e i s c r o l
a dd T0O,1,MO ;s uinaaios 1 r e s i s t r o W0 y V I y dej&mcs
; e l r e s u l ta d o & VO
y o to sumaZ ; R pe c lia o s e l b u c l e s un&2
. end
Figura A3.5. Aadiendo un punto de parada en el programa.
A continuacin, tras provocar de nuevo un Reset (Debugger -> Reset -> Processor Reset), en
vez de pulsar Debugger-> Step Into, que ejecuta una sola instruccin, se accede al men Debugger
->Run. Mediante esta opcin, el programa se ejecuta y rpidamente aparece la flecha encima del
punto de parada marcado por B, lo que significa que se ha ejecutado todo el cdigo inicial hasta esa
linca.
El contador del programa se encuentra apuntando a la primera direccin del cdigo. Para
comprender los resultados de la ejecucin del cdigo se debe poder observar ios valores de los
registros WO y Wl. La ventana Walch del men View permitir aadir cuantos elementos se
deseen monitor i zar.
f. . . . . . . -
I Watch
B
Add SFR) ACCA _v ; [ Add Symbol) j __ SP v j
A ddress S ymbol Mame V alue
| Watch 1 Watch 2 Watch 3 j Watch 4 j
Figura A3.6. Ventana de inspeccin de valores Watch.
Desde la ventana de la Figura A3.6, se aadirn los registros W0 y W1para ir monitorizando los
valores que van tomando cada uno de ellos. Desplegando la lista que se encuentra a la derecha del
botn Add SFR se selecciona el registro WREG0 y a continuacin pulsando el botn Add SFR, se
aade dicho registro a la ventana de inspeccin. Se repite este proceso con el registro WREGJ, de
forma que la ventana Watch quede como la de la Figura A3.7.
APLICACIN 3: PONIENDO EN MARCHA EL SIMULADOR 219
Wat ch
i
Add SFRj jWREGI V:j (AddSymbol]
E
SP
m
Address S ymbol Name V alue
i
0000
0002
WREGO
WREG1
0x0000
0x0000
' r i
| j Watch 1 Watch 2 j Watch 31 Watch 4
Figura A3.7. Ventana de inspeccin con los registros WRECO y WREC1.
Al ejecutar el programa paso a paso se conocern los valores que van tomando de los registros.
Al pulsar la tecla F7 {Debugger -> Step Into) se observar el nuevo valor de WREGO que ser
0x0001, que se corresponde con la ejecucin de la instruccin
que mueve el valor 1a W0. Adems aparecer en rojo para indicar que acaba de ser modificado di
cho valor.
A3.2.3. Resolviendo el ejercicio del tema anterior
Al pulsar de nuevo F7 se observa cmo WREG1 toma el valor 0x0002 correspondiente a la ins
truccin
y al pulsar F7 WREGO toma el valor 3, resultado de sumar WREGO y WREG1.
Pulsando F7 el programa vuelve a la instruccin de carga del registro WREG1.
Al ejecutar esta instruccin de nuevo, se vuelve a mover un 2 a Wl, que ya tena un 2. Luego es
ta instruccin no es muy interesante que est aqu. Se est repitiendo esta instruccin constante
mente cuando no es necesaria. Si recuerda, en el tema anterior se propona como ejercicio mejorar
el programa. Esa mejora se refera a esta cuestin. El programa sera ms ptimo si se colocara es
ta instruccin antes de la etiqueta suma2. Puede observarlo en el Listado A4.1.
220 dsPIC. DISEO PRCTICO DE APLICACIONES
m
\.t* 4. 1, ' . ' . l ;;
; Programa Ejemplo l.s
; Creacin de nmeros impares
.global _main
.text
__main:
mov #0x0001.W0
mov #0x0002,W1
suma2:
add W0,W1,W0
goto suma2
.end
;Movemos un literal a W0
;Movemos un 2 al registro W1
;sumamos el registro W0 y W1y dejamos
;el resultado en W0
Repetimos el bucle suma2
ill
:
I'XOX.
p
W&f:
Listado A4.1. Optimizacin del primer programa.
Si se sigue pulsando la tecla F7 se aprecia cmo el programa no tiene fin y como el registro
WREG1 no vara nunca, manteniendo siempre el valor 2 y, sin embargo, WREGI va tomando los
valores de los nmeros impares: 1, 3, 5, 7, 9,...
Ej ercicio:
Una vez depurado el programa en ensamblador, trate de hacer lo mismo con el programa en lenguaje
C. Simlelo en pantalla observando cul es la primera instruccin que se ejecuta, aada un punto de
parada e inspeccione los valores que va adquiriendo WREG0.
A3.3. CARACTERSTICAS DEL SIMULADOR
En el resto de aplicaciones de esta segunda parte del libro se emplea este simulador, de ah la im
portancia en conocer a fondo esta herramienta.
Sin abandonar el primer ejemplo, se estudi el problema del acarreo por desbordamiento en la
suma, que se produca al sumar 2 a OxFFFF. La capacidad del registro de 16 bits se desborda y en
tonces se activa el bit de acarreo (C) para indicar que el resultado que aparece en el registro WREG0
es incorrecto y le falta un bit por delante.
Existen varias posibilidades para estudiar esta situacin. La primera, y la peor, sera pulsar F7
hasta que el registro WREGO tenga el valor OxFFFF y despus hacer la suma y observar el bit de
acarreo.
Una de las caractersticas que tiene el simulador es que permite cambiar ciertos valores de re
gistros, posiciones de memoria, etc. As, la segunda opcin para mostrar cmo entra en accin al bit
de acarreo es cambiar el valor del registro WREGO a OxFFFF. Para ello, se utilizar otra ventana que
permite visualizar el valor de WREGO y el del registro SR, que es el encargado de indicar, entre
otros, el valor del acarreo. Esta opcin se encuentra disponible en la ventana View -> 10 Special
Function Re giste rs, representada en la Figura A3.8.
En primer lugar se debe reiniciar el programa mediante la opcin del men Debugger -> Reset
-> Processor Reset. A continuacin, pulsando F9 se consigue que el programa llegue hasta el pun-
APLICACIN 3: PONIENDO EN MARCHA EL SIMULADOR 221
Spe c i al Fu n c t i o n R e gi st e rs
Address s SFR Name Hex
PE*
0000 MR EGO 0000 0
0002 WREG1 0000 0 i
0004 WREG2_____ 0000 0
0003 VJREG4 0000 0
000A UREG5 0000 0
oooc UREG6 0000 0
nnnv TTDlTf'V? nnnn n
lo 1 ensarnbladoi\crtO c
3I0 1 ens&mblador\crt1 c
d Io 1 ensamblador\sum
Figura A3.8. Inspeccin de registros.
to de ruptura, inicio del programa. Seguidamente, pulsando dos veces F7 se ejecutan las dos pri
meras instrucciones. Es entonces cuando en la pantalla de Special Function Registers, WREGO to
ma el valor 1y WREG1 toma el valor 2. Pero como se desea acelerar el proceso del desbordamiento,
haciendo clic en la ventana de Special Function Registers, dentro del valor de WREGO en hexade-
cimal escribe FFFF, de forma que la pantalla es la de la Figura A3.9.
M i S pecial 1unction Registers
y g j s
j J Lclclress V 1 SFR Karre i ex 1 Decimai | 'S
0000 REGO FT7T
1
SP.EGl . .__[ _ooooM
3S5BHEBBHBI H 3 B H
0004 WRSG2 0000 0
0006 0000 0
0008 RZ04 0000 0
non j usr.; nnnn n
Figura A3.9. Modificando el valor de WREGO.
Ahora, s se ha alcanzado la situacin necesaria para observar el fenmeno de la generacin del
acarreo. El cursor verde que indica la prxima instruccin a ejecutar debe estar sobre la instruccin
de suma add.
Pulsando F7,el procesador realizar la suma y se observar que el resultado en WREGO pasar
a 0001 y que el registro de estado SR, situado en la misma ventana de Special Function Registers,
indicar que se ha producido un acarreo en la suma, al activarse el bit C de menos peso del registro
y el bit DC que es el noveno. (Figura A3.10.)
Spcfol hi f t t r l nn Rogitlerc
Adeleca \' 1 SFR Kerne j Es x ! Dec i m al
0342 SR 0101 2S"
O Zi- i CORCCtt "020 n
003 S s o dc c c c CODO S
0D48 XBOCRT :ao o c
OD9A XKAD2XD :o o i
Figura A3.10.E/ registro SR muestra que se ha producido acarreo.
A3.3.1. Configurando el simulador y contando el tiempo
En muchas ocasiones, interesa saber cunto tiempo tarda en realizar ciertas operaciones el dsPIC.
Naturalmente, eso depende de la configuracin del circuito del reloj. Para analizar estas y otras
caractersticas el simulador dispone en el men Debugger -> Settings... de varias opciones de
configuracin.
222 dsPIC. DISEO PRCTICO DE APLICACIONES
Simulator Settings
Uartl 10 > Animation Reaftima Updates jj Limitations
Break Options | SCL Options
Ose/Trace
Processor Frequency
' Units:
MHz
O KHz
O Hz
m
i
Trace Options
Trace All f~l B reak on Trace Buffer Full
} Aceptar j | Cancelar Aplicar
Figura A3.11. Configuracin del simulador.
Mediante el cuadro de dilogo representado en la Figura A3.11se puede configurar aspectos ta
les como el circuito del reloj conectado al controlador, opciones de ruptura, establecer las rutas de
los ficheros que van a simular, la entrada y salida serie por el puerto UART, observar las limitacio
nes del simulador, etc. El simulador tambin permite controlar el tiempo transcurrido en la ejecu
cin de un programa. As, se puede colocar un punto de ruptura y al parar en dicho punto, median
te el men Debugger-> Stop Watch se puede conocer el nmero de ciclos de instruccin ejecutados,
el tiempo transcurrido desde que se inici el programa hasta dicho punto, etc.
A modo de ejemplo, se propone averiguar qu tiempo transcurre desde que empieza el progra
ma hasta que llega a la primera instruccin mov del fichero suma.s. Para ello, una vez cargado el pro
yecto suma en ensamblador, se establece un punto de ruptura en la primera mov (doble clic a la iz
quierda de la instruccin). Este ejemplo utiliza el programa suma.s modificado con la correccin
descrita en el apartado anterior. Tras resetear la simulacin mediante la tecla F6 (Debugger -> Re
set -> Processor reset) se debe pulsar F9 (Debugger -> Run) y al detenerse la ejecucin en el pun
to de ruptura acceder a la pantalla Debugger -> Stop Watch.
S topwatch T otal S imulated
(Synch] Instruction Cycles
32 32
I Zero T,me l u S e c s J
6.400000 6.400000
Processor Frequency (MHz) 20.000000
Figura A3.12. Contando el tiempo empleado por el controlador.
En la Figura A3.12. se observa cmo el nmero total de ciclos de instruccin empleados para eje
cutar las rutinas de inicializacin es de 32. Y el tiempo empleado, a una frecuencia de 20 MHz, ha
sido de 6.4 j j s .
APLICACIN 3: PONIENDO EN MARCHA EL SIMULADOR 223
Al continuar pulsando la tecla F7 y accediendo a la ventana StopWatch, puede conocerse el tiem
po empleado y el nmero de ciclos de cada instruccin. Podra localizar una instruccin que se eje
cute en 2 ciclos de instruccin en el programa de suma?
Ejercicio:
Confeccione un programa que genere 10 nmeros pares. Cunto tiempo tardar en ser ejecutado el
programa con un cristal de 10 MHz?
La solucin depender del cdigo empleado en el programa. Trate de confeccionar el programa
ms rpido, que utilice menos ciclos de instruccin. Una posible solucin podra ser la siguiente:
.global _main
.text
.main:
repeat #0x04
add #0x0002,WQ
nop
.end
Este programa repite 5 veces la suma del contenido W0 ms 2 para ir generando los 5 primeros
nmeros pares. Y tras esto coloca una instruccin nop, donde se puede establecer un brcakpoint o
punto de ruptura y as medir el tiempo transcurrido hasta dicha instruccin. Se configurar el reloj
del simulador mediante la opcin Debugger -> Settings, de forma que la frecuencia de dicho reloj
sea de 10 MHz.
Una vez establecido el punto de ruptura en la instruccin nop y configurado el simulador, al eje
cutar el programa con la tecla F9 (Debugger -> Run) y cuando el programa se detenga en dicha ins
truccin, se debe acceder al men Debugger -> StopWatch para observar el tiempo empleado, que
en este caso ser de 15,20 jas.
Una de las nuevas instrucciones que se han desarrollado para los dsPTC es repeat. Muchos de los
clculos realizados en el tratamiento de seales son de carcter repetitivo, de ah que se haya aa
dido esta nueva instruccin al repertorio de instrucciones. Podra desarrollarse el programa en C y
observar si hay alguna diferencia en el tiempo de ejecucin entre ste y el desarrolado en ensam
blador. Una posible solucin en lenguaje C podra ser el siguiente programa:
#inc!ude "p30f4013.h"
int main(void)
intcont=l;
int num =0;
while(cont <6)
(
num =2 +num;
cont+-K
I
return 0;
224 dsPIC. DISEO PRCTICO DE APLICACIONES
En lugar de utilizar el registro WREG, esta solucin emplea variables, que es la forma ms ha
bitual de programar en el lenguaje C. Naturalmente, el programa se podra depurar para hacerlo p
timo, pero sta es una solucin tpica en este lenguaje.
Los nmeros pares se generan en la variable num. Para poder observar el valor que toma esta va
riable, se deber hacer uso de la opcin View -> Watch y seleccionar dicha variable en la lista Add
symbol, y pulsar dicho botn.
Al colocar un punto de ruptura en la ltima instruccin del programa, se puede conocer el tiempo
empleado en esta solucin. Se debe cambiar la configuracin del simulador para que la velocidad del
reloj sea de 10 MHz, al acceder al men Debugger -> StopWatch. El tiempo empleado es de 34,4 ,us.
La diferencia de tiempo es importante. No debe pensarse que siempre se dan estas diferencias tan
grandes de tiempo para conseguir la misma solucin en C y en ensamblador. De hecho, los dos pro
gramas aunque parecidos no hacen exactamente lo mismo, y es por esto por lo que la diferencia se
agranda. Pero s se confirma que con el lenguaje ensamblador bien utilizado se pueden optimizar los
programas. Sin embargo, con el lenguaje C se pueden realizar operaciones de una forma ms ami
gable, sin tener que conocer tan profundamente la arquitectura interna del controlador, obteniendo
un mayor rendimiento en la fase de programacin.
AUTOEVALUACIN
Conceptos clave de este captulo
1. Qu depuradores soporta la herramienta MPLAB IDE?Dnde puede conocer las limitaciones del
simulador software ?
2. Qu pasa cuando se ejecuta un programa paso a paso?Cundo se ejecutan las instrucciones
del cdigo fuente?
3. Cmo se puede observar con el simulador el nmero de ciclos que tarda en ejecutarse una ins
truccin?
4. Describa las limitaciones del simulador
5. Mediante qu opcin del men se podra visualizar parte de la memoria de datos EEPROM?Po
demos desde el MPLAB IDE escribir en ella?
Ejercicios
^^^^^^S^SSSS^BSSSBSSSSSSSSSS^BSSBStBSSBSaBSBSSBBBSSBBSSBSSSBBKaSSSBSSSSBSSSSS^
Confeccione un programa en ensamblador que contenga la instruccin ADD, MOV, GOTO y CP-
SEQ. A continuacin simule el programa y calcule el nmero de ciclos de instruccin en los que se
ejecuta cada una de esas instrucciones.
Confeccione un programa en lenguaje C que le permita observar cmo cambia el bit de acarreo
de la palabra de estado.
APLICACIN
Manejando las
instrucciones
tpicas de
los dsPIC
- -
A4.1. INTRODUCCIN
En este terna se proponen diversos ejemplos de aplicacin que se simulan con el MPLAB SIM y que
contienen instrucciones especficas de los dsPIC.
A4.2. MANEJO DE INSTRUCCIONES DE SALTO EN ENSAMBLADOR
Para aquellos lectores que no han trabajado con anterioridad con el lenguaje ensamblador, puede re
sultarles algo complicado manejar las instrucciones de salto.
Hay dos tipos bsicos de instrucciones de salto: Instrucciones de salto incondicional e instruc
ciones de salto condicional.
Las instrucciones de salto incondicional rompen el flujo de control en la ejecucin del programa
saltando a la direccin que se indique, es el caso de GOTO Etiqueta, BRA Etiqueta y CALL Etiqueta.
Las instrucciones de salto condicional evalan una condicin y, en funcin del resultado de la
misma, actan de una forma u otra, es decir, saltan o no saltan.
La instruccin BRA C es de salto condicional, de forma que se salta a la direccin de la etique
ta si C =l y se ejecuta la instruccin siguiente si C =0.
;Ejemplo de instruccin BRA
MOV #0Xffff, WO
ADD wO,#0X000l,W0
BRA CSALTO
SALTO:
;Movemos OXffff a WO
;Sumamos 1a W0 para provocar el acarreo
;Si se activa el bit de acarreo salta a la etiqueta SALTO
Tambin existen otras instrucciones de salto condicional, denominadas instrucciones de com
paracin y salto, por ejemplo la instruccin C.PSEQ, utilizada en el ejercicio de autoevaluacin del
225
226 dsPIC DISEO PRCTICO DE APLICACIONES
tema anterior. En el siguiente ejemplo, se utiliza la instruccin CPSEQ para buscar el primer n
mero mayor que cero que es simtrico respecto a los dos bytes de un valor. Es decir, que si se in
tercambia la posicin de sus dos bytes, se mantiene el valor.
MOV #0x0000,WO
SUMA:
ADD W0,#0x0001 ,W0
MOV W0.W1
SWAPW1
CPSEQ W0.W1
. . .
GOTO SUMA
SIMETRICOS:
>>>>X-V>XXXXVVVX-X*>X'X'XX'SX-X\-X'X-X-X-X-X-.'
x-x-v-:-x-X;>W<jX^*x*x.X*^>!*>>Xv,xx x-x-.-x-x-x-
:Cargamos W0 con 0
;Sumamos I a W0
;Movemos W0 a Wl
Intercambiamos los bits de W1
;Si los W0 y W1 son iguales salta la
;siguiente inst.
Realiza la suma
;Tratamiento de simtricos
y/'-s.
*x -x-x ; . x-x.,.:
En este ejemplo la instruccin CPSEQ primero comprueba que W0 y W1 tienen el mismo valor.
Si no es as no hace nada y el programa sigue su curso ejecutando la siguiente instruccin GOTO
SUMA. Una vez que W0 y W1 sean iguales, la instruccin CPSEQ har que se salte la siguiente ins
truccin GOTO SUMA y el programa acceder a la parte del programa etiquetada como SIME
TRICOS. El programa ya habr encontrado el primer nmero simtrico mayor que cero.
A4.3. MANEJ O DE INSTRUCCIONES DSP. INICIALIZACIONES
Los dsPIC. incluyen 19 nuevas instrucciones especficas para el tratamiento de seales. En el si
guiente ejemplo se estudia el manejo de la instruccin MAC. Esta instruccin puede resultar espe
cialmente interesante para implementar un filtro FIR, cuya ecuacin general se corresponde con la
siguiente frmula:
yn=b0xn+b,xn.| +b2x_2 +b3Xn-3
La instruccin MAC puede ayudamos a resolver esta ecuacin de forma rpida. Los coeficientes
bo, bi, b2y b, as como los valores de xn, xn.j, xn.2y xn.3, se representan en la siguiente tabla:
b Xn
0x0001 0x0002
0x0003 0x0005
0x0007 0x0002
0x0001 OxQOF
Para aprovechar al mximo la potencia de esta instruccin y hacer esta operacin matemtica lo
ms rpidamente posible, se deben alojar los coeficientes b en el espacio de la memoria de datos X
y los x en el espacio Y, para que el controlador pueda acceder a los dos operandos simultneamen
te. El primer paso en el programa ser colocar dichos datos en sus zonas correspondientes. Para ello
se define una seccin data en el espacio X, a partir de la direccin de memoria 0x0800, de tipo pa
labra, llamada coeficientes, donde se almacenarn los valores de b.
APLICACIN 4: MANEJ ANDO LAS INSTRUCCIONES TPICAS DE LOS dsPIC 227
Programa MR
global jtnain
Seccin de datos X de la memoria.
section coeficientes, data, xmemory. address(0x0800)
bi: .hword 0x0001, 0x0003,0x0007,0x0001
Mediante estas instrucciones se ha creado una zona en el espacio X desde la posicin 0x0800
hasta la 0x807 incluida con los datos correspondientes a b*. Luego se crearn las entradas corres
pondientes a xna partir de la posicin OxOCOO en el espacio Y.
;Secein de datos Y de la memoria.
.section inputs, data, ymemory, address(OxOCOO)
......... u .............r u ;n /\ n n n j \ A c r i .,n n n 't n ..n n n r ?
Ntese la correspondencia de los datos de la tabla con los de la definicin de la seccin inputs.
.text
&:: V:;:
_main:
bset CORCON,#OxO ;Operaciones con enteros.
-
Al comenzar el programa se establece a 1el bit 0 del registro CORCON para indicar que las ins
trucciones DSP trabajan con nmeros enteros. Luego, mediante los registros W4 y W6, se recogen
los datos de los espacios de memoria X e Y, respectivamente, y los registros W8 y W10 actan co
mo punteros de las direcciones de la zona de memoria donde residen los coeficientes b y xn.
mov #bW8 :Mover Ja direccin de bi a W8.
mov [W8++],W4 ;E1contenido de la direccin de W8 lo llevamos a W4 y
;de jamos W8 apuntando al siguiente dato.
Se debe introducir el dato de la primera multiplicacin b0en W4. Este dato se encuentra en la
seccin etiquetada como bi. Luego la instruccin mov #bi, W8 introduce en W8 la direccin de me
moria 0x800, que es donde se encuentra b0.
La siguiente instruccin mueve el contenido de la posicin de memoria que se encuentra en W8
al registro W4. Es decir, lee la posicin 0x0800, cuyo dato es OxOOFF, y lo guarda en W4. Adems
el programa ha realizado otra operacin que es postincrementar la direccin apuntada por W8. Es
decir, que con la misma instruccin se consigue dejar W8 apuntando al siguiente dato situado en la
posicin 0x0802, b|.
228 dsPIC. DISEO PRCTICO DE APLICACIONES
Mover la direccin de xn a W10.
Contenido de la direccin W10 a W6. Dejamos W6
apuntando al siguiente dato
El programa realiza una operacin similar con los datos xn, apuntndolos con el registro W10 y
almacenando el dato en el registro W6. As, deposita xnen W6 y deja W10 apuntando a xn-i.
Con las instrucciones descritas se realizan las siguientes acciones:
Colocar desde la posicin 0x0800 los coeficientes b (espacio X)
Colocar desde la posicin OxOCOO los valores de x (espacio Y)
Recuperar en W4 el primer valor b0
Recuperar en W6 el primer valor xn
Apuntar con W8 al siguiente valor b|
Apuntar con W10 al siguiente valor xn.j
A continuacin el programa realizar cuatro multiplicaciones y las ir acumulando en el acu
mulador A. Las cuatro sumas correspondientes a la frmula general anteriormente descrita, yn=
b0xn+ biXn-i +b2xn_2+bjxn.3, se ordenan mediante la instruccin repeat #0x003.
repeat #0x0003 repetimos 4 MAC, una para cada suma.
Los dos componentes del primer sumando de la frmula (b0y xn) se encuentran en W4 y W6.
Hay que multiplicarlos entre s y mover el contenido de la posicin de memoria apuntada por W8 a
W4 (para as tener en W4 el siguiente operando bi) y mover el contenido de la direccin apuntada
Adems, y para dejar preparada la instruccin para repetirse la prxima vez, se postincrementa
W8 y W10 en dos unidades (datos de tipo word), para que apunten a los siguientes datos b2y x_2y
que se manejan en el algoritmo.
Al repetir 4 veces la instruccin mac, se realizan las 4 multiplicaciones necesarias a las que se
suma el resultado de la mac anterior. Es conveniente comprobarlo con el simulador. El programa
completo se corresponde con el siguiente listado:
Programa FIR
; Autor: Aritza Etxebarria Ruiz
resolucin de la ecuacin yn=b0Xn+blXn-l+b2Xn-2+b3Xn-3 tpica de filtros FIR
.include ,,p30f4013.inc,,
.global _ma.in
Seccin de datos de Ja Memoria X. Coeficientes b0,bl,b2 y b3
.section coeficientes, data, xmemory, address(0x0800)
bi: .hword 0x000 j, 0x0003, 0x0007, 0x0001
por WlOa W6 (xn,aW 6).
- . ' - ; =-
mac W4*W6,A,[W8]+=2,W4J W 10]+=2,W6
APLICACIN 4: MANEJ ANDO LAS INSTRUCCIONES TPICAS DE LOS dsPIC 229
Seccin de datos de la memoria Y. Xn. Xn-1, Xn-2, Xn-3
.section inputs, dala, ymemory, address(OxOCOO)
xn: .hword 0x0002,0x0005,0x0002, OxOOOF
.text
.
_main:
bset CORCON.#IF Operaciones con enteros
mov #bi,W8 Mover la direccin de bi a \V8.
mov [ W 8 + + J . W 4 El contenido de la direccin de W8 io llevamos a W4
y dejamos W8 apuntando al siguiente dato,
mov #xn,W 10 Mover la direccin de xn a W10.
mov fW10++],W6 Contenido de la direccin W10 a W6. Dejamos W6
apuntando al siguiente dato
repeat #0x0003 repetir 4 veces (una por cada suma de la ecuacin)
mac W4*W6,A,LW8]+=2,W4,[W 10]+=2,W6
; Instruccin MAC, Multiplicacin y acumulacin.
; Multiplicamos W4 y W6 y lo sumamos al contenido del acumulador A
Adems, movemos el contenido de W8 a W4, coeficiente b
y postincrementamos W8 para que apunte al siguiente coeficiente b
As mismo, y gracias a que se encuentra en la zona de memoria Y, tambin podemos
; hacer que W6 recoja el dato apuntado por W10, es decir el siguiente Xn
; y postincrementamos W10 para que apunte al siguiente Xn.
nop No operar.
.end
Recuerde crear el proyecto e introducir el programa descrito. Establezca un punto de ruptura o
breakpoint en la primera instruccin bset y ejecute el programa paso a paso para observar el fun
cionamiento del mismo.
Puede comenzar por observar los datos del espacio X y los del espacio Y. Para ello, acceda al me
n View -> File Registers y seleccione la pestaa XY Data en la parte inferior de la misma, para ob
servar las posiciones 0x0800 y OxOCOO donde encontrar los coeficientes utilizados. (Figura A4.1.)
T i l e R ogi tl crs:1 I B I
Si acJ rms S r bus
l 00. ,lL _ L i _ J 1 OS 11. 00 :! ^ j1 oc
E
ion de memoria
;MOVEMOS LA PAGINA DE LA DIR. A TBLPAG
;EL DESPLAZAMIENTO A WO
CARGAMOS EN W4 EL DATO LEIDO
;NOP PARA PONER UN PUNTO DE RUPTURA
238 dsPIC. DISEO PRCTICO DE APLICACIONES
// T,cc EEPROM en C
#include p3f4013.h'
mt main(void)
TBLPAG =0x7F:
WREGO =OxFCOO;
asm("TBLRDL [W0],W4M)
rcturn 0:
HI mismo ejemplo en lenguaje C sera el siguiente:
i i i
C*v>.
-
Puede observarse en este ejemplo en C que, a veces, es necesario introducir ciertas instruc
ciones especficas del lenguaje ensamblador en los programas en C. Para ello utilizamos la
sentencia asm (instruccin), donde instruccin es la instruccin en ensamblador que no desea
incluir.
La grabacin en la memoria EEPROM tiene muchas similitudes con la grabacin en la memo
ria FLASH. Cuando se graba esta memoria, se puede grabar una palabra de dos bytes o una lnea de
16 palabras (32 bytes). A continuacin, se describe el algoritmo de grabacin de una palabra en la
memoria EEPROM:
1er paso: Borrar la palabra de la EEPROM a programar. Este paso se subdivide en los
siguientes:
1.1. Mover al registro de control NVMCON el valor 0x4044, que indica que comienza
una operacin de borrado de memoria EEPROM.
1.2. Mover la direccin de la memoria a borrar a los registros TBLPAG y W0.
1.3. Mover 55 al registro de control NVMKEY.
1.4. Mover AA al registro de control NVMKEY.
1.5. Poner el bit WR del regsitro NVMCON a 1. Cuando la operacin de grabado fina
lice, dicho bit pasar a 0 automticamente.
2oPaso: Mediante la instruccin de manejo de tabla TBLWTL, escribir la palabra a
programar
3er Paso: Programar la palabra el siguiente algoritmo:
3.1. Mover al registro de control NVMCON el valor 0x4004, que significa que comien
za una operacin de grabado de memoria EEPROM.
3.2. Mover #0x55 al registro NVMKEY
3.3. Mover #0xAA al registro NVMKEY.
3.4. Poner el bit WR del registro NVMCON a 1. Esperar a que se ponga a cero y en ese
momento se habr grabado en la memoria EEPROM dicha palabra.
El siguiente ejemplo muestra la programacin de una posicin de memoria EEPROM. El pro
grama lee la posicin de memoria 0x7FFC00, suma 1al contenido de dicha posicin de memoria y
lo vuelve a grabar. Este programa podra ser de utilidad para lanzar una versin demo de un pro
grama, el cual podra ejecutarse un nmero determinado de veces.
APLICACIN .5: LEYENDO Y ESCRIBIENDO LAS MEMORIAS FLASH Y EEPROM 239
;EjempIo de PROGRAMACIN de una posicin de memoria
;PROGRAMA GRABA EEPROM
.include p30f4013.inc"
.global _main
.tcxt
main:
; APUNTAMOS MEDIANTE TBLPAG Y WO A LA POSICIN 0X7FFC00
MOV #tblpge(#Ox7FFCOO)>WO
MOV WO.TBLPAG
MOV #tb 1offse t( #0x 7FFC00). W 0
; Loemos el dato EEPROM Y LO GUARDAMOS EN W4
TBLRDL | W0|,W4
: LE SUMAMOS 1A DICHO VALOR
MOV #1,W3
ADD W4,W3.W4
;BORRADO DE DIRECCION EEPROM
MOV #0X4044, WO PROGRAMAMOS NVMCON PARA BORRAR PALABRA EEPROM
MOV WO. NVMCON
MOV #tblpage(#0x7FFC00),W0 ;APUNTAMOS CON TBLPAG Y WO LA DIR. A BORR.
MOV WO,TBLPAG
MOV #tbloffset(#0x7FFC00),Wr0
DISI #5 ;DESHABILITAMOS INTERRUPCIONES EN 5 INSTRUCCIONES
MOV #0X55,W0 ;MOVEMOS LA SECUENCIA
MOV W0,NVMKEY ;DE 55 Y AA A
MOV #0XAA,W0 ;AL REGISTRO DE CONTROL
MOV WO,NVMKEY ; NVMKEY
BSET NVMCON,#WrR :ACTVAMOS EL BIT WR (EL BIT 15DE NVMCON)
NOP ;PAR A QUE SE INICIE EL BORRADO
NOP ;DEBEMOS INTRODUCIR 2 NOPS
ESPERA2: ;AS MISMO ESPERAMOS A QUE EL BIT WR
BTSC NVMCON,#WR ;PASE A 0
GOTO HSPERA2 ;PARA SEGUIR CON EL PROGRAMA
NOP
MOV #tblpage(#0x7FFC00),W0 ; APUNTA MOS A LA DIRECCION A GRABAR
MOV WO,TBLPAG
MOV #tblofsel(#0x7FFC00),Wa)
TBLWTL W4. [WOJ ESCRIBIMOS EL DATO A GRABAR EN EL REGISTRO
;SECUENCIA DE GRABACIN
MV
#0X4(304,WO ;EN NVMCON PROGRAMACION DE EEPROM
MOV Wr0. NVMCON
DISI #5 ;DESHABILITAMOS INTERRUPCIONES EN 5 INSTRUCCIONES
MOV #0X55,WO :M O VEMOS LA SECUENCIA
MOV W0. NVMKEY :DE 55 Y AA A
MOV #0XAA,W0 ;AL REGISTRO DE CONTROL
MOV W0,N VM KEY ;NVMKEY
BSET NVMCON,#WR ;ACTIVAMOS EL BIT WR (EL BIT 15DE NVMCON)
NOP
;PARA QUE SE INICIE LA GRABACIN
NOP
:DEBEMOS INTRODUCIR 2 NOPS
ESPERA: :AS MISMO ESPERAMOS A QUE EL BIT WrR
BTSC NVMCON,#WR ;PASE A 0
GOTO ESPERA ;PARA SEGUIR CON EL PROGRAMA
NOP
.cnd
240 dsPIC. DISEO PRCTICO DE APLICACIONES
Simule el programa con el MPLAB SIM y, a travs de la ventana View->EEPROM, compruebe
cmo cambia el valor cada vez que se ejecuta el programa.
El mismo programa en C puede resultar ms fcil de entender.
// Graba EEPROM en C
// PROGRAMA GRABAEEPROMC
#include p30f4013.h"
int sccuenciagrabacionQ
// Esta funcin escribe la secuencia de grabacin
// tanto para borrado como para grabacin
TBLPAG =0x7F: //Apuntamos la pgina
WREGO =OxFCOO; //Apuntamos el desplazamiento en la pgina
NVMKEY =0x55; //Movemos a NVKEY la secuencia 55
NVMKEY =OxAA; //Movemos a NVMKEY la secuencia A A
N V MCON bits. WR=0x1 //Activamos el bit WR de NVMCON
asmCNOP1); //Esperamos 2 nops
asm(,,NOP,r);
return 0;
i
1
%* #+##sfc
// Programa principal
:<* * * * ---- * * * * * -Jf* * *
int main(void)
l
int. a = 0; //Variable auxiliar
TBLPAG =0x7 F; //Apuntamos a la pgina de la direccin a leer
WREGO =OxFCOO;
asmCTBLRDL [W0],W4B); //Leemos el dato en WREG4
WREG4 =WREG4 +1; //Sumamos 1a WREG4
NVMCON =0x4044; //Configuramos NVMCON para borrar EEPROM
a =secuenciagrabacion(); //Ejecutamos secuencia borrado/grabacin
while(NVMCONbits.WR ==1); //Esperamos al bit WR de NVMCON sea 0
TBLPAG =0x7 F; //Apuntamos a la pgina de la direccin a leer
WREGO - OxFCOO; //Apuntamos el desplazamiento en la pgina
asmC'TBLWTL W4, [W0]M); //Escribimos en el registro el cont. de W4
NVMCON =0x4004; //Configuramos NVMCON para grabado EEPROM[
a =secuenciagrabacion(); //Ejecutamos secuencia borrado/grabacion
whi le(N VMCONbi ts. W R ==1): //Esperamos al bit WR de NVMCON sea 0
return 0;
!
Ntese que en el lenguaje C para acceder a la informacin de los bits de cualquier registro, se de
be escribir el nombre de registro acompaado de la palabra bits y a continuacin, tras un punto de
separacin, el bit al que se desea acceder. As, por ejemplo, para poner a 1el bit WR del registro
NVMCON se escribe lo siguiente:
N V M CON bits. WR =1;
APLICACIN 5: LEYENDO Y ESCRIBIENDO LAS MEMORIAS FLASH Y EEPROM 241
El simulador del entorno de desarrollo MPLAB IDE es una herramienta muy completa donde se
pueden simular casi todas las caractersticas que presentan los controladores dsPIC. Esto convierte
a esta herramienta en una plataforma de aprendizaje y de ensayo de proyectos inmejorable.
AUTOEVALU ACIN
Conceptos cl ave de este captul o
Ejercicios
/
mov #0x0002, WJ Movemos un 2 al registro WJ
add WO, WJ, WO ;Sumamos el registro WO y W y dejamos
;el resultado en WO
APLICACION
los perifricos con
Visual Initializer
A6.1. INTRODUCCIN
A lo largo del presente tema, se abordarn distintos ejemplos en los que se utilizan los perifricos
que se hallan integrados en el dsPIC. Muchas de las patitas del controlador soportan distintas fun
ciones. Los perifricos pueden desarrollar distintas tareas en funcin de cmo sean configurados.
Para facilitar esta tarea de la inicializacin de perifricos del controlador (puertas de entrada/salida,
conversores analgicos, temporizadores, etctera) el entorno de desarrollo MPLAB IDE dispone de
una herramienta denominada Visual Initializer, VDI o Inicializador Visual.
Mediante el uso del VDI se profundizar en la programacin de los controladores dsPIC, reali
zando ejemplos en los que se utilizan diversos perifricos.
Siguiendo con la filosofa de esta parte de la obra, la ejecucin de estos programas se har de
forma simulada, as por ejemplo, para el uso de las puertas de entrada/salida se har uso de las ven
tanas de inspeccin de manejo de los datos que deberan llegar desde el exterior al controlador y
viceversa.
A6.2. VISUAL INITIALIZER
El Visual Initializer o VDI es una herramienta que incorpora el MPLAB IDE para simplificar en la
difcil tarea de la configuracin del dsPIC. El programa Visual Initializer hace que esta tarea sea tan
fcil como pinchar y arrastrar iconos y cambiar los parmetros en un cuadro de dilogo. Una vez
completada esta labor, genera el cdigo necesario para usar tanto en los programas en ensamblador
como en lenguaje C.
Tambin comprueba si existe algn tipo de inconsistencia en las configuraciones y genera
mensajes de error en caso de existir conflictos en las asignaciones de patitas, memoria, interrup
ciones, etc.
Para acceder a esta herramienta, resulta recomendable empezar un proyecto para tener seleccio
nado el tipo de dsPIC con el que se desea trabajar y as la aplicacin Visual Initializer muestre las
opciones de los perifricos especficos de dicho controlador.
243
244 dsPIC. DISEO PRCTICO DF APLICACIONES
Una vez arrancado el proyecto mediante el men Tools->4 Visual lnitializer se pone en marcha
esta utilidad. Al hacerlo, puede comprobarse como en el men de la aplicacin MPLAB IDE apa
rece un nuevo elemento. (Figura A6.1.)
Configure Window
SLI HELP
View Errata
View Data Sheet
Setup Report
Interrupt Usage Report
SFR Usage by Address Report
5FR Usage by Name Report
Pin Assignment Report
Code Generation Options
Code Generation
Visual Initializer
Figura A6.1. Men c/e la aplicacin Visual Initializer.
Adems del nuevo men tambin aparecer en pantalla la ventana principal de esta herramien
ta. (Figura A6.2.)
L M Pl At J I D L V / . 3 0 [ V i s u a l I n i l i a l b e r ]
' mamamama
Fl s Edt y c w P/ oj e tf c O =t osqst Proc rammsr Tat e Vsu ol I n t i e l r C or/ gu - s Wi n dow He t o . ex
D C f a ; S S f | d ' 9 19 ( # $ i C h e c k s u m : 0x b f 6 7 ! t> i i ? > 1 ; : i &
"'ft: ii
GEI
PWM
CAN
3yrrp
Q y Q i j j y M l
r
* dsPC30F4ni344-PnTOFP
L
1BT
pm
i 3
9d
nI
OieiWo InlenupU
.M
nd t ip:
(==3
nr -
a wm
1BT B
irr
SE
r ~t t
a
M&AP.-SIM dsP I C tti H Ol j ;pc:0 oab&ablPO : dcn.ov.zc
Figura A6.2. Pantalla principal de la herramienta Visual lnitializer.
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAL INITIALIZER 245
Al observar la ventana de la Figura A6.2, puede comprobarse que el dsPIC que aparece en pan
talla no es el correcto. En la aplicacin 0 se acord utilizar el dsPIC30F4013 pero con encapsulado
PDIP y el mostrado en pantalla no tiene dicho encapsulado. El encapsulado puede cambiarse con el
botn derecho sobre la representacin del controlador en la ventana y pulsando la opcin Change
package. Entonces aparecer en pantalla un cuadro de dilogo con una lista desplegablc denomina
da Package type y habr que elegir 40 Pin-PDIP.
MPLAB IDE V 7.30 [V isual In it ializ er ]
R e (Tdt View Project Debugger Prog ranrer Took Visual Jntislzer Configure Window Meb
Checksum: 0xb67
E>t. Interface
Op Amp
45?K3Cf*0):< pc:fl oibHblPO:acn'ovtc
Figura A6.3. Encapsulado PDIP del dsPIC30E4013 de 40 pines.
Tras esta operacin, el encapsulado del dsPIC pasa a ser el de la Figura A6.3. Esta pantalla
se encuentra dividida en 2 partes. La primera, situada verticalmente en la parte izquierda, con
tiene las distintas opciones configurables del controlador (RTC, DSP. I/O Ports,...). El resto de
la ventana, donde aparece el controlador, sirve para representar grficamente los elementos ini-
cializados en el mismo. Es importante ensanchar la pantalla verticalmente ya que de lo contra
rio al pinchar en las opciones de la izquierda podra no desplegarse ninguna opcin por falta de
espacio.
Para configurar cualquier perifrico hay que seleccionarlo en el panel de la izquierda y arras
trarlo sobre la representacin del controlador. Al soltarlo, aparecer un icono sobre el controla
dor. A continuacin, haciendo doble clic sobre dicho icono, aparecer un cuadro de dilogo que
hay que cumplimentar para configurar dicho perifrico. En cualquier momento, para volver a
configurar esos parmetros, puede volver a hacerlo haciendo doble clic sobre el icono aadido al
controlador. (Figura A6.4.)
246 dsPIC. DISEO PRCTICO DE APLICACIONES
Port B
Ext. Interface
dp Amp
dsPI C3QF4013 40-Pin PDI P
Oscillator Inteiiupts Port B
and T raos
Poit Pin Settings
p i o [RBI H~RB2 il RB3 ji RB4 | RB5 RB6 -;??
Data Direction
Initial Value
1Unclaimed
-
1 -
Figura A6.4. Configuracin de los pines de la puerta B.
Para eliminar una configuracin, basta con arrastrar el icono creado en el controlador a una par
te de la ventana vaca, y as desparecer.
Una vez configurados todos los perifricos necesarios de esta forma tan fcil e intuitiva, tan
slo falta aplicar estos cambios sobre el proyecto. Para ello, se dispone de varias opciones confi
gurables. Desde el men Visual Initializer->Code Generarion Options se pueden configurar las
opciones del cdigo a generar. (Figura A6.5.)
Code Generation Options
[Q
Q Generate code only when initialization values do not match POR states
Generate code only for featuresAesources on processor package
I I Comment on code not generated
Generate Read-Modiiy-Write instruction sequence for SFR initialization
Help OK Cancel Apply
Figura A6.5. Configurar la salida de cdigo.
Entre otras opciones, se debe indicar al generador de cdigo que slo genere el cdigo de aque
llas funcionalidades que disponga el controlador utilizado, marcando la opcin Generate code only
f o r features/re sources on processor package de dicha pantalla.
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAL INITIALIZER 247
Una vez configuradas las opciones de generacin de cdigo, se puede generar dicho cdigo me
diante la opcin Visual Initializer->Code Generation. Aparecer el cdigo en pantalla y se podr
salvar dicho cdigo, incorporarlo al proyecto o copiar la parte que se desee e incorporarla al cdi
go fuente. (Figura A6.6.)
I Code Generation Display
N H H H B
; I nitialization Code for dsPI C30F4013. Family: controller control. Package:
A
40-Pin PDIP 40pins
.include "p30F4013.mc
j; Filter Controls used to Generate Code:
j; POR Match Filter OFF
; Provisioned Feature Filter ON
; Masks are I gnored and uses UnMasked Register Writes
.GLOBAL _Visuallnitialization
; Feature=fuses - fuses (DCRJ configuration
!: B15:14=FSCKM1:0 B10:8=FOS2:0 B4:0=FPR4:0
config__FOSC, OxCI 00
: B15=FWDTEN B5:4=FWPSA1:0 B3:0=FWPSB3:0
confi g__FWDT, 0x803F
I: R1fi=MCI RFN R7=RORFN R5:4=RORV1 :fl R3:n=FPWRT3:0
fSi
Help I } Save to Project ] [ Close Window |
Figura A6.6. Cdigo generado por la herramienta Visual Initializer.
A6.3. CONTROLANDO EL MUNDO EXTERIOR. PUERTAS DE E/S
Como primer ejemplo, se acomete la creacin de un proyecto con el VDI. Recibir una seal digi
tal por una patita procedente, por ejemplo, de un interruptor y sacar por otra patita el valor inver
tido de la entrada del controlador que se usa para encender o apagar un lcd.
Para poder llevar a cabo este proyecto, se debe configurar una patita del controlador como en
trada y otra como salida. Despus el programa slo deber leer el valor de la patita de entrada, in
vertir dicho valor, y mostrarlo por la patita de salida.
Cree un proyecto para el controlador dsPIC30F4013 y acceda al men Visual initializer. En la
barra vertical de la derecha elija la opcin I/O Ports. Al hacerlo, bajo este epgrafe, aparecern dis
tintos iconos de las distintas puertas que dispone el controlador. Elija la puerta D (port D) y arrs
trela hasta el controlador. A continuacin haga doble clic sobre el icono de la puerta D arrastrada
hasta el controlador y aparecer el cuadro de dilogo de la Figura A6.7.
En la pestaa RDO de la Figura A6.7 se configura el PINO de la puerta D, de forma que sea la
entrada en la que se conectar el interruptor.
Para ello, en la lista desplegable Data Direction, seleccione Input. En la pestaa RD1, configu
re el PIN1 de la puerta D como salida, output en la lista Data Direction, para colocar all el led co
rrespondiente. Al finalizar pulse Ok. (Figura A6.8.)
248 dsPIC. DISEO PRCTICO DE APLICACIONES
- Port Pin Settings
RDQ j RD1 I RD2 | RD3 R08 {; RD9
Data Direction
Initial Value
Help OK Cancel Apply
Figura A6.7. Cuadro de dilogo de configuracin de la puerta D.
V d d
dspc3f413
_
RDO
/ /
RD1
FTT71
Figura A6.8. Diagrama de conexionado de las Entradas y Salidas.
Ya ha configurado los perifricos del proyecto. Ahora slo queda generar el cdigo correspon
diente e incorporarlo al programa. En primer lugar, acceda al men Visual Initializer -> Code Ge
neration Options y marque la opcin Generate code only for features/resources on processor pac
kage. A continuacin, acceda al men Visual Initializer ->Code Generation para que aparezca en
pantalla el cdigo correspondiente. Al pulsar Save to Project se guardar un fichero con dicha ini-
cializacin, que se incorporar a la lista de ficheros del programa. Cierre dicha ventana y la venta
na del Visual Initializer para regresar al proyecto.
Observe cmo en el panel del proyecto ahora se encuentra un fichero llamado init_
dsPiC30f40l3.s. Ese fichero contiene la rutina de inicializacin. Para llamar a dicha rutina de
inicializacin se debe incluir una instruccin cali _VisualInitialization en el cdigo fuente del pro
grama. El programa ser el siguiente:
; PROGRAMA PORTO
.include ?p30f4Q:l3.inc-?
.global jmain
.text
mam;
cali _VisualInitialization
: :
m i
...... -
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAI INITIALIZER 249
BXJCLH:
fiTSS PORTD.#RDO ;Si el bitO de PORTD est a Uno, salta
BSET PORTD.#RDl ;Ponemos a l el kit 1
BTSC PORTD.#RDO ;Si el bitO de PORTD est a cero, salta
BCLR PORTD. #RD 1 ;Ponemos a 0 el bit 1
GOTO BUCLE .Repetimos indefinidamente el bucle
.end
O tambin podemos confeccionar el mismo proyecto en lenguaje C.
//PROGRAMA PORTDC
// Programa ejemplo de maneje
//de puertas de E/S en C
>.
tfinciiiue p3ur^yi3>a
int main(void)
{
VisualInitiali/.ation():
whileC 1) //Bucle infinito
//Inicializamos las puertas
if (PORTDbits.RDO ==0)
PORTDbits.RDl - 1:
else
PORTDbits.RDl =0;
)
return 0;
}
//Si el bit RDO es un 0
//Establecemos nivel alto en RD1
//En caso contrario nivel bajo
El simulador dispone de una utilidad para manejar datos del exterior. Se cambian los datos de la
patita RDO de la puerta D.
Para llevar a cabo este tipo de actuaciones, se debe crear un escenario en el que se aadirn para
este ejemplo dos escenas, una para establecer un nivel alto por la patita RDO y as comprobar cmo
reacciona el programa ante dicho estmulo, y otra para establecer un nivel bajo por la patita RDO.
Para crear el escenario, se accede al men Debugger -> Stimulus Controller -> New Scenario.
Inmediatamente aparece en pantalla un cuadro de dilogo para crcar el escenario. Este cuadro dis
pone de varias lneas en blanco para implementar varias escenas. Pinche en la primera fila bajo la
etiqueta Pin/SFR y aparecer una lista desplegable en la que podr elegir el pin RDO. En esa misma
fila, en la columna Action, seleccione de la lista la opcin Set High para que cuando utilice esta es
cena se establezca en el bit RDO un nivel alto. Igualmente, en la fila inferior seleccione RDO y es
tablezca una accin Set Low, que har que se cargue un nivel bajo en la patita RDO. El resultado que
debe obtener se ofrece en la Figura A6.9.
El simulador permite salvar este escenario con la opcin Save Scenario, para que cuando vuel
va a abrir este proyecto no tenga que volver a crearlo.
Si ahora se simulase el programa paso a paso, se podra cambiar el estado de RDO a nivel alto o
a nivel bajo y observar su funcionamiento. Para cambiar a nivel alto o nivel bajo RDO debe pulsar
250 dsPIC. DISEO PRCTICO DE APLICACIONES
Stimulus Controller - [Untitled]
Stimulus (SCL) Fe
[ Attach I . Detsrh inr-pat/Me'e*
Asynchronous Stimulus
Fire : Pin / SFR j Action
RDO _ Sei High
v !Set Low
j Width ;Units Comments / Message
j Delete tow |
j Save Scenario [ [ Exit | [ Heip
Figura A6.9. Creacin de un escenario para actuar sobre las seales externas del controlador.
en el inicio de la fila donde aparece el smbolo >y observar cmo al ejecutar el programa se ejecu
tan las instrucciones correspondientes a dicho estado.
Utilizando este escenario, compruebe paso a paso el programa y observe si el valor del segundo
bit de la puerta D va cambiando de valor, en funcin de si se establece un nivel alto o un nivel bajo
mediante el escenario creado.
A6.4. MANEJO DE TEMPORIZADORES. EL SEMFORO
Mediante el siguiente ejemplo se configura un temporizador para hacer que el controlador acte
como un semforo. Durante cierto tiempo encender un led rojo y durante otro tiempo un led
verde. Adems de configurar el temporizador tambin se deben configurar 2 patitas del contro
lador como salida para encender el led verde y el led rojo. Para ello se utilizarn los pines RDO
y RD1.
Para configurar estas patitas, se abre el Visual initializer y se cambia el encapsulado del
dsPIC mediante el botn derecho del ratn y la opcin Change Package. A continuacin, se
accede a la opcin 1/0 Parts, se selecciona la puerta D y se arrastra hasta la figura del controla
dor. Al hacer clic sobre el icono correspondiente a dicha puerta, se podrn configurar RDO y RD1
como salida. (Figura A6.10.)
A continuacin se configura el Timer para que el semforo est cierto tiempo en rojo y otro
en verde. Pero previamente es necesario cambiar la frecuencia de trabajo del reloj del controla
dor y establecer una frecuencia y un origen del reloj distinto al que trae por defecto el Visual
Initializer.
Acceda al cuadro de dilogo correspondiente haciendo clic sobre el icono OsciUator. Marque la
casilla View Advanced Oscillator Settings y establezca como fuente de reloj Clock Source, Infernal
LPRC. Y as la frecuencia del reloj se establecer a 0,512 Mhz.
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAL INITIALIZER 251
Figura A6.10.Configuramos las patitas RDO y RD1 como salidas.
Para configurar el temporizador, acceda a la opcin Timer del Visual Initializer, elija el Timerl y
arrstrelo hasta el controlador. Pulse sobre el icono del timer y configrelo de la siguiente manera:
Active la casilla Enable on Startup (Habilitar al iniciar).
En la casilla Timer Clock Prescale, seleccione 1:256para poder disponer de temporizaciones largas,
m En la casilla Timer Period, coloque 1000 para realizar conteos de 1000 milisegundos = 1 segundo.
1.6Bit Timer 1 Configuration
Operational Sellings
0 Enable on Slaitup
O G sled Time Accumulation
CPU Idle Operation
:Continue
-
Poliscale: 1 '
(msec)
Timer Clock Prescale: 1:256 >
Timet Period: 1000
j I imer Frequency: 0,00100003690; (KH z) (Calc.)
-Interrupt-----------------------------------------------------
0 Enable Interrupt on Startup
Interrupt Priority: j 4 v
Heb OK Cancel Apply
Figura A 6.11. Cofigurac.in del Timer.
Observe la sencillez que supone trabajar con el VDI frente a configurar cada uno de los bits de
los registros de configuracin de este recurso. No es necesario recordar todos los bits que intervie
nen en la configuracin del mismo, tampoco se deben hacer clculos matemticos para establecer
la cuanta del contador para as obtener un perodo determinado.
252 dsPIC. DISEO PRCTICO DE APLICACIONES
La herramienta Visual Initializer ha realizado estos clculos para una frecuencia de reloj estableci
da previamente. Esta frecuencia no coincide con la frecuencia que usa el simulador, as que para obte
ner el resultado deseado deber cambiar tambin la frecuencia de trabajo del simulador. (Figura A6.12.)
Oscillator Configuration
Primsy Oscillalo Sellings i------------
Fose (MHz): 0.512 |i Fcy(MHz): 0.128000
linfe'.(MHz}
0 View Advanced Oscillalof Sellings
Advanced Oscillator Sellings
Clock Souice:
Clock Divider:
Switching and Monitor Mode:
O Enable Aux 32KHz Oscillator
Internal L PRC
Divide by 1
Switching Disabled, Monilor Disabled v>
Cancel
Figura A6.12.Cofiguracin del reloj de la herramienta Visual Initializer.
Seleccione la herramienta MPLAB STM en el men Debugger y en la opcin Simulator Settings
establezca como velocidad del reloj 0.512 (atencin, no use la coma como separador decimal sino
el punto). (Figura A 6.13.)
Simulator Settings
; IJ aill IO. 1? Animation Reallime Updates Limitations j
Ose / Trace Break Options fi SCL Options !
Processo: Frequency -
Units:
MHz
0.512 OKHz
O H z
t Trace Options---------------
EU Trace Al O Break on Trace Buffer Full
l Aceptar | j Cancelar ] [ Aplicar |
Figura A6.13. Configuracin de la velocidad del simuJador.
Una vez configurado el temporizador y las puerta D como salida slo queda configurar la herra
mienta Visual Initializer mediante las opciones Generate code only for features/resources on pro
cessor package en el men Visual Initializer -> Code Generation Option, generar el cdigo e in
cluirlo al fichero del proyecto.
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAL INITIALIZER 253
La programacin del dsPiC emplea 2 ficheros fuente. Un fichero para el programa principal y
otro en el que se atiende a la interrupcin.
El programa principal podra ser el siguiente:
;Programa SEMAFORO
;PD0 ROJ O, PD1 VERDE
.global _main
.text
_main:
cali Visuallnitialization
mov #0x000LWO
mov W0,PORTD
:lnieiali/.amos la puerta D y el Timerl
:Ponemos el semforo en rojo
BUCLE:
goto BUCLE
.end
;Nos quedamos en un bucle infinito
Guarde el fichero e incluyalo en el proyecto. A continuacin, cree otro fichero donde se escribi-
r el cdigo correspondiente a la interrupcin generada por el timer.
; PROGRAMA SEMAFORO
.global__TJ Interrupt
;Atiende a la interrupcin del Timer 1.
Comprueba el estado del semforo y lo cambia de color.
T 1Interrupt:
bclr 1FS0,#T1IF ; Borramos el flag de interrupciones.
btss PORTD,#RD0 ;Si el bitO de PORTD est a Uno salta el rojo
;y pasa a verde
goto ROJ O
VERDE:
mov #0x0002,'W0 ;Ponemos verde el semforo
mov W0,PORTD
goto final
ROJ O:
mov #0x0001.W0 ;Ponemos a rojo el semforo
mov w0,PORTD
final:
RETFE ; Return de la interrupcin
Es importante destacar la instruccin .global__Tllnterrupt que indica al compilador la direccin
donde debe atenderse a esta interrupcin. As mismo, hay que colocar la etiqueta__Tllnterrupt, in
terrupcin del Timer 1, antes del cdigo que cambie el semforo de color. Ntese que la etiqueta lle
va dos guiones bajos__seguidos antes del texto TI Interrupt.
La primera instruccin, al atender la interrupcin, debe ser la de borrar el flag de interrupciones
mediante la instruccin bclr IFSO, #0X0003, ya que de no hacerlo, al acabar el cdigo de la inte
rrupcin, se volver a ejecutar indefinidamente.
254 dsPI C DISEO PRCTICO DE APLICACIONES
Para probar este programa en el simulador es recomendable colocar 2 puntos de parada, uno co
mo siempre en la primera instruccin del programa principal y otro en la primera instruccin del
programa que atiende a la interrupcin del Timer 1. Si adems se aade en la ventana Watch del me
n View el registro PORTD, se comprobar como este registro cambia peridicamente pasando de
valer 0x0001 (semforo rojo) a 0x0002 (semforo verde). Puede comprobar el tiempo transcurrido
entre cada cambio utilizando la opcin Stop Watch y tambin puede ver cmo va cambiando el con
tador mientras el programa ejecuta el bucle principal visualizando el valor del registro TMR1en la
ventana Watch del men View. Es probable que a la hora de ejecutar el programa con el simulador
compruebe que el programa se para en una parte del cdigo desconocida. Volviendo a pulsar F9 el
programa seguir su ejecucin normal. (Figura A6.14.)
U MPi ab mr V7.30
O V .A interrupcion.s
jiobal __T imt r r up t
. i n c l u d e ' ' p 3 0 ?H0 1 3 . i n c "
__Ti l r c r L u c t - :
^ILK IfSO , t l l l f i Reset del fiagde tnCcxup<
BTSS POJ>7>,92DU ;x c l fcitO de P0RH> esto a Uno alta '
COTO SDJO
U8JB
or <0x0002,*0
co r tfO.?ORD
joto Iuiaj l
V.CJO:
0 7 O x O O O l .VO
Fife Ed : _lew Frot Debuj' ~ctis Ccrifij.ro Wttow Wsf
; C r : - *. % A r ' t g ^ c $ g j : Checksum: 0xa6da t I I M> ? T? &
Sfapwateh
^Synch | Insbucbon C j des 9999962' 33S3SG2
f~Zc^nTtr* Sec*1 1.393532 ".9S3S82
Pnx* Frequency fNHz) 20.000
Figura A6.14. Visualizando el tiempo con el simulador y la opcin Stopwatch.
Existen muchos tipos de temporizadores, temporizadores de 32 bits, contadores de pulsos exter
nos, etc. Todos son configurables desde la herramienta Visual Initializer fcilmente. Pruebe con
otros contadores, contar pulsos externos mediante la creacin de escenarios y descubra las posibili
dades que ofrecen los controladores dsPTC en este campo.
La solucin en lenguaje C puede ser la siguiente:
#xnclude p0f4013.h,t
//Programa Semforo en lenguaje C
// PROGRAMA SEMAFOROC
//Esta funcin atiende a la interrupcin del temporizador
void attribute (( interrupt )) _T1 I nterrupt void)
{
IFSObits.TlIF =0;
if (PORTDbits.RDO ==l)
PORTD =2;
else
PORTD =I ;
}
//Borramos el flag de la interrupcin
//Si el semforo est a rojo
//lo ponemos en verde y viceversa
//Programa principal
int main (void)
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAL INITIALIZER 255
VisualInitiaUzation(); //Iniciatizamos puertas y temporizador
PORTO =J ; //Ponemos a rojo el semforo
while(l)
{
asm("drwdtM); //Esperamos en un bucle infinito
tti M H i ai i .:
Para conseguir estas temporizaciones se ha jugado con el tipo de reloj empleado. No se han con
seguido temporizaciones superiores al segundo. Puede ser interesante hacer uso de temporizadores
de 32 bits. El manejo de estos temporizadores se estudia en el Laboratorio 2, Manejo de tempori
zadores de 32 bits en la tercera parte de esta obra, donde se consiguen temporizaciones muy supe
riores a la comentada con circuitos de reloj ms completos.
A6.5. MANEJO DE INTERRUPCIONES. EL SEMFORO CON PULSADOR
Una posible ampliacin para el proyecto del semforo podra consistir en dotarlo con un interrup
tor para que el peatn solicite que se ponga verde. Cuando el peatn pulse este interruptor que es
tar conectado a una patita del controlador, se genera una interrupcin que har que el semforo se
ponga rojo para los vehculos. Para llevar a cabo la simulacin de esta nueva situacin es necesario
colocar un interruptor conectado a la patita INTO, que provocar que el semforo pase a rojo.
Tomando como base el ejemplo anterior hay que incluir una nueva configuracin. La configura
cin correspondiente a la interrupcin externa en la patita INTO. Adems se deben estudiar las prio
ridades de las interrupciones y proteger la ejecucin de las mismas para que 110 se interrumpan unas
a otras. El primer paso ser volver al Visual Initializer y habilitar la interrupcin externa INTO. Para
ello no debe arrastrar ningn objeto nuevo sobre el dsPIC ya que la opcin para configurar las inte
rrupciones ya se encuentra configurada. Se trata del icono denominado Interrupts and Traps sobre el
que haciendo doble clic podr proporcionar el cuadro de dilogo mostrado en la Figura A6.15.
czn
dsP1CHnRI 013 40-Pin PDI P
tzaj
Osdlatcc IriciiLpis
FoilD
n
CZH ond I (oi k
I a1
1 Interrupts ami 1raps Configuration
E
Grtttfil
iriliil yoc* ;abl=: Mein 0 ; .p T up on carnJetorA ovaifbw
Ifii:v3l -FU pli'.nly: ' '.v.j ' ' T ri ^ r^j ri U ni .R ndlnw
O Disable
EnsbiMGLB
j j-Trfi tori acr.i.rrboi Bovedbw
QapencoUtropcovelltw
Prcpefeoi Irtteirup* 1NTU: ;
Pncr^ U __ ;
Figura A 6.15. Configuracin de las interrupciones del dsPIC..
256 dsPIC. DISEO PRCTICO DE APLICACIONES
En el cuadro de dilogo de la Figura A6.15 se observa en la lista Enabled Interrupts la existen
cia de la interrupcin TI , la cual tiene una prioridad 4. En la lista Enabled Interrupts se puede ob
servar cmo se encuentra disponible la interrupcin INTO. Para habilitarla, seleccinela y pulse so
bre la flecha con direccin hacia la izquierda. Desde aqu podr cambiar las prioridades de las
interrupciones, as como observar la configuracin de las mismas.
Pulse OK una vez aadida la interrupcin INTO y vuelva a generar el fichero de inicializacin
con el que reemplazar el fichero de configuracin anterior.
A continuacin, habr que reprogramar el ejemplo anterior. Para ello aada un nuevo fichero al
proyecto con el cdigo correspondiente a la atencin de la interrupcin.
.global__INTOInterrupt
.include Mp30F40J 3.inc"
__INTOInterrupt:
disi #4
be Ir IFSO,#INTOIF
mov #0x0001,W0
mov WO,PORTD
rctfie
Resulta de especial inters la inclusin de la instruccin disi #4. Con esta instruccin se desha
bilitan las interrupciones de nivel de prioridad del 1al 6 durante las (4 +1) siguientes instrucciones.
As, si en un momento en que el programa atiende a la interrupcin del pulsador no se atender la
interrupcin solicitada por el Temporizador TIMER 1. Para establecer prioridades entre estas inte
rrupciones se utiliza el cuadro de dilogo de la Figura A6.15.
En lenguaje C la solucin puede ser la siguiente:
//PROGRAMA SEMAFOROINT
#includc "p30f4013.h"
//Programa Semforo en lenguaje C
//Esta funcin atiende a la interrupcin del temporizador
void__attribute (( interrupt )) _T1 Interrupt void)
(
IFSObits.TI IF =0; //Borramos el lag de la interrupcin
if (PORTDbits.RDO ==1) //Si el semforo est a rojo
PORTD =2;
else //lo ponemos en verde y viceversa
PORTD =1;
1
//Funcin que atiende a la interrupcin externa INTO
void_attribute__((___interrupt_)) J NTOInterrupt(void)
{
IFSObits.INTOlF =0; //Borramos el flag de la interrupcin
PORTD =1: //Ponemos en rojo el semforo.
1
;Deshabilitamos otras interrupciones en las siguientes inst
;Borramos el flag de la interrupcin INTO
;Ponemos el semforo en ROJO
;para los vehculos
finalizamos la ejecucin de la interrupcin
APLICACIN 6: PROGRAMANDO LOS PERIFRICOS CON VISUAL INITIALIZER 257
y temporizador
semforo
Figura A6.16. Ejecucin del programa semforo con pulsador con un escenario.
Para simular este programa se establece un punto de parada en el cdigo que atiende a la inte
rrupcin externa y se crea un escenario para provocar dicha interrupcin. Dicho escenario se puede
crear a travs del men Debugger->Stimulus Controller-New Scenario. En la lista Asynchronous
Stimulus aada INTO con la accin Pulse High. As, al pulsar sobre el smbolo > situado al inicio de
la fila creada, el programa deber parar su ejecucin en la primera lnea del cdigo que atiende a la
interrupcin externa. Observar que entonces el semforo se pondr en rojo. Pero todava queda al
go por mejorar en este programa. Lo ha detectado? Se atreve con ello?
En este ejemplo puede observar que para atender a la interrupcin INTO se ha necesitado incluir
la etiqueta__INTOInterrupt. Esta etiqueta se encuentra definida en el fichero p30f4013.gld. Puede
abrir este fichero y examinar la seccin ** Section Map fo r Interrupt Vector Tables para observar o
buscar la etiqueta correspondiente a otro tipo de interrupciones, as por ejemplo se dispone de
__ADClnterrupL para interrupciones del mdulo conversor analgico digital,__TI Interrupt para in
terrupciones del temporizador 1, etc. La siguiente tabla rene algunas de estas etiquetas.
258 dsPIC. DISEO PRCTICO DE APLICACIONES
ETIQ UETA IN TERRUPCI N
__INTOInterrupt Interrupcin externa por activacin del pin INTO
__IC1 Interrupt Interrupcin del mdulo de captura de entrada IC1
OC1 Interrupt Interrupcin del mdulo de comparacin de salida OC1
__T;1Interrupt Interrupcin provocada por el temporizador T1
__IC2 Interrupt Interrupcin provocada por el mdulo IC2
T2 Interrupt Interrupcin provocada por el temporizador T2
_SPI1 Interrupt Interrupcin provocada por el mdulo SPI1
_UlRXInlerrupt Recepcin de dato en el mdulo UART Ul
__UlTXInterrupt Interrupcin provocada por el envo de un dato en el mdulo UART U1
AUTOEVALUACION
Conceptos cl ave de este captul o
F j j f
2. Qu salida genera la herramienta Visual Initializer?
3. Cmo se puede sincronizar la velocidad con la que trabaja la herramienta Visual Initializer y el si
mulador MPLAB SIM?
4. Do cuntos temporizadores dispone el controlador dsPIC30f4013?
5. Dnde se encuentran almacenadas las definiciones de las etiquetas correspondientes a las dis
tintas interrupciones?
Ejercicio
APLICACIN
VrtVWl>
V i W 'W i X r t V
B
xoyivi-r,
..v.v.<iwivr>viviw.*iviviv.v.v/.
r * / /
Perifricos
avanzados
Wffi
A7.1. INTRODUCCIN
A lo largo del presente tenia se manejarn diversos perifricos de los controladores dsPIC que son ms
especficos en el tratamiento de seales. Algunas aplicaciones son difciles de simular ya que resulta
complicado insertar una seal analgica al simulador, por eso, en algunos casos, el estudio se limita
r a describir el perifrico, sus posibilidades y su inicializacin para su conecto funcionamiento.
A7.2. EL MOTOR DSP
El comportamiento de las instrucciones DSP puede variar en funcin de la configuracin del Motor
DSP. Para configurarlo de una forma sencilla se proceder a utilizar la herramienta Visual Initializer.
Previamente se seleccionar el modelo, en nuestro caso el dsPIC30F4013. A continuacin se ini-
cializar el Visual Initializer y se seleccionar el icono DSP, arrastrndolo hasta la imagen del con
trolador. Al hacer doble clic con el ratn sobre dicho icono aparecer en pantalla el cuadro de di
logo correspondiente para la configuracin del Motor DvSP. (Figura A7.1.)
P I Enable Saturation on Accumulator A.
n Enable Saturation on Accumulator B
H71 Enable Saturatbn on Dai a Space Writes
from DSP Engine
Hep or. Cancel Apply
Figura A7.1. Ventana para la configuracin del motor DSP.
259
260 dsPI C DISEO PRCTICO DE APLICACIONES
Como primer parmetro, se configura el modo de multiplicacin, Multiplication Mode. Este mo
do afecta a instrucciones como MAC. Afecta a todas aquellas en las que se use el multiplicador de
17 bits del que disponen los dsPIC. Las instrucciones que se ven afectadas por esta configuracin
son las siguientes:
IN STRUCCI N D ESCRIPCI N
MAC Multiplicar y acumular.
MSC Multiplicar y restar. Es equivalente a la anterior, pero en vez de sumar el resultado, lo resta.
MPY Multiplica dos valores y deja el resultado en el acumulador.
MPY.N Multiplica y niega el resultado. A ^-B*C
ED
Calcula la distancia eucldea parcial. A =(B-C)2
FDAC
Calcula la distancia eucldea parcial y la acumula. A = A +(B-C)2
Si se elige como Multiplication Mode la opcin niegen el resultado de las mencionadas ins
trucciones se representar como un valor entero, si por el contrario se selecciona Fractional, el re
sultado ser un numero fraccionario.
Existen otras instrucciones que multiplican ciertos valores, como MUL, en las que el resultado
siempre es un valor entero y por tanto no utiliza esta configuracin del motor DSP.
Otra opcin para configurar el Motor DSP es el Accumulator Roundy o redondeo del acumula
dor. Para este parmetro existen dos posibilidades, Convergente convergente y Conventional, con
vencional. La diferencia entre ambos modos se analiza en la parte terica de esta obra, ms con
cretamente en el Anexo del Captulo 4, Manipulacin de datos del Motor DSP.
Bajo el epgrafe Accumulator Saturation Mode, se permite configurar el modo de saturacin,
pudiendo elegir el modo 1.31, normal, que cargar en el acumulador destino el valor 1.31
mximo positivo (X07FFFFFFF) o mximo negativo (0xFF80000000). El otro modo es
el 9.31, supersaturacin, donde cargar el valor 9.31 mximo (0x7FFFFFFFFF) o el mnimo
(0x8000000000).
Y, por ltimo, se dispone de la posibilidad de habilitar o deshabilitar el modo de saturacin ele
gido para el acumulador A, B o la zona de memoria afectada por instrucciones DSP.
Una vez seleccionados los parmetros necesarios, basta activar la casilla Generate Code Onlyfor
features/resources on processor package a travs de la opcin Code Generation Options del men
Visual Initializer, para que se genere el fichero init_dsPIC30F4013.s mediante la opcin Code Ge
neration -> Save to ProjecL
Una vez generado el cdigo de inicializacin del proyecto, en el cdigo fuente en ensamblador,
se aade:
r.-.v-:-? \
Cali Visuallnitialization
::r :
O bien, en lenguaje C
: _ -
VsualIniializationO;
A continuacin, las instrucciones DSP que se utilicen se comportarn de acuerdo a los parme
tros elegidos en los pasos anteriores.
APLICACIN 7: PERIFRICOS AVANZADOS 261
A7.3. CONVERSOR ANALGICO DIGITAL
El dsPIC30F40l 3 dispone de un conversor analgico digital de 12 bits de resolucin. Para estudiar
todas sus posibilidades, en primer lugar se presentan las caractersticas de este mdulo para pasar a
crear un proyecto en el que se estudiar un ejemplo de utilizacin.
A7.3.1. Descri pci n del mdul o de Conversi n Anal gi co Di gi tal de 12 bits
El conversor analgico digital de 12 bits permite convertir seales analgicas de entrada en valores
digitales de 12 bits con una velocidad de conversin de lOjis. Este mdulo est basado en un regis
tro de aproximaciones sucesivas y soporta hasta 16 entradas analgicas multiplexadas sobre un am
plificador unipolar de muestreo y retencin denominado CHO. La tensin de referencia puede pro
ceder de la tensin del controlador (AVdd y AVss) o bien de dos patitas que pueden recibir dicha
tensin de referencia (Vref-i- y Vref-). Adems este conversor puede funcionar mientras el procesa
dor est en modo Sleep con el oscilador RC.
El mdulo dispone de varios registros para su control. Asi los registros ADCON1, ADCON2 y
ADCON3 controlan el modo de trabajo del conversor analgico digital. El registro ADCHS, por su
parte, selecciona los canales de entrada. El registro ADPCFG configura las patitas como entradas
analgicas o como entradas/salidas digitales. Y el registro ADCSSL selecciona las entradas a esca
near o explorar. Los resultados de la conversin se guardan en un buffer de 16 palabras, denomina
das ADCBUFO, ADCBUF1,... ADCBUFF.
En la Figura A7.2 se muestra un esquema del mdulo conversor.
Figura A7.2. Esquema del Conversor Analgico Digital de 12 bits.
262 dsPI C DISEO PRCTICO DE APLICACIONES
Para realizar una conversin, se deben seguir los siguientes pasos:
1. Configurar las patitas analgicas, las tensiones de referencia y las entradas y salidas digitales.
2. Seleccionar los canales de entrada A/D.
3. Seleccionar el reloj para la conversin.
4. Seleccionar el disparo (trigger) de la conversin.
5. Poner en marcha el mdulo A/D.
6. Configurar la interrupcin (si fuera necesario).
a. Limpiar el bit ADIF.
b. Seleccionar la prioridad de la interrupcin.
c. Activar el bit ADIE.
7. Comenzar el muestreo.
8. Comenzar la conversin.
9. Esperar a que se complete la conversin, lo que se detecta por una interrupcin o porque el bit
DONE del registro ADCON1se pone a 1.
10. Leer el buffer A/D con el resultado (ADCBUFO, ADCBUF1,...) y limpiar el bit ADIF.
A7.3.2. Trabajando con el mdulo
Para trabajar con el conversor AD cree un proyecto para el dsPTC30F4013, inicie la herramienta
Visual I nitializer. cambie el Pcickage y acceda a la opcin ADC del men de perifricos
del controlador. Pinche y arrastre el icono denominado 12-Bit A to D hasta la figura del contro
lador. Al hacer doble clic aparecer en pantalla el cuadro de dilogo representado en la Figura
A7.3.
' ? hir A/n Conver ter Config uration
Opeiafor!Sailings -
r-asIso.'Stcrt'.-p
Dala OiipU Fu-tnat U rigrcc Irilse
Vcfcage Re Souc: AVddu Vtefh. AVss VrcH
- Mode S etth#...........- - -
Samclh; Mode ConversenMode ;________
CJ Al!, betweenSamteAS Brois
Frot h scanningc( !fe;entA'D rputa irlo
CHOaroV
SaTolro StaitMo.
i Sancirmi*ledmanual/
IrpUsto be sc3mcd:
LjlnoUO
i*! Irpi* I
-!irpL 2
;5LUtpU3 v
Hefp
CFU Siaes Operation
[Mo
CPU Ido Oration
!Ccnir.wo v
A/O lrp.it Settings IfHO) "
Corfipj'e as A/D Irrcuii
H'PinO ~ ^
y Fiii -
y. Fri 2
y Pri 3 v.
AcoV
Irterup! Sellings--------------
O EnafcicIrteiiutf onSirttp
Irterrupt Fikxly. v
SaTtrfeA Pos Input ,AH0
Sarrpe A Neg. Input :VflE F-
SarpfB Pot Inpt/. AMO
Serrcte B Neg. Input: \*rlF-
Figura A7.3. Cuadro de dilogo para la configuracin del conversor analgico digital de 12 bits.
Desde la ventana de la Figura A7.3 podr configurar muchos aspectos del conversor analgico
digital de 12 bits de resolucin. A continuacin se estudia cada uno de los apartados del cuadro de
dilogo.
APLICACIN 7: PERIFRICOS AVANZADOS 263
Operational Settings
Enable on startup- Activando esta casillael conversor analgico digital se activa al iniciarse la eje
cucin del programa. De no marcarlo, se deber activar a 1el bit ADON del registro ADCON1 pa
ra que se inicie el proceso d conversin.
Data Output Format: Establece cmo se desea recibirlos datos de la conversin, si enteros sin sig
no (Unsigned Integer), enteros.con signo (Signed Integer), fraccinales sin signo (Unsigned Frac
tional) o fraccinales con signo (Signed Fractional).
Voltage Ref Sources Sirve para seleccionar la tensin de referencia. En esta lista despegable se
puede elegir entre cuatro opciones diferentes. Se puede elegir la tensin de las patitas AVdd y
AVss como referencia, o la tensin de las patitas Vref+ y Vref-, entre otras.
CPU Sleep Operation: Mediante esta opcin se indica qu accin deber tomar el conversor cuan
do el controlador entre el modo Sleep si se desea que despierte al controlador (Wake up on Start
Bit) o que no lo haga (No wake up).
CPU IDLE Operation: Indica si el perifrico contina su operacin (Continue) o se detiene (Stop)
cuando entra en el modo de bajo consumo Idle.
En el cuadro Interrupt Settings, se puede configurar al conversor para que active una interrup
cin cuando finalice la conversin. Es posible establecer que la interrupcin se active al iniciarse el
mdulo as como su prioridad. Para atender a dicha interrupcin deberemos usar la etiqueta _AD-
Cnterrupt.
En el cuadro A/D fnput Settings (CHO) se configuran los canales de entrada del conversor. Esta
blece las patitas que sern utilizadas para realizar la conversin, as como las tensiones de referen
cia de los multiplexores MUXA y MUXB. Estos multiplexores pueden actuar de manera que cada
entrada al conversor se vaya alternando, una por el multiplexor MUXA y la siguiente por el MUXB.
El conversor dispone de hasta 13 patitas, desde ANO hasta AN12, para actuar como entradas ana
lgicas. Se marcan con un tick aquellas que se van a usar en el proceso de conversin.
Mode Settings
Para seguir configurando el modo de funcionamiento del conversor analgico digital hay que es
tablecer cundo se debe empezar a realizar el muestreo, cundo realizar la conversin, etc. Para ello
la herramienta dispone del cuadro Mode Settings, que se encuentra divido en las pestaas Sampling
Mode y Conversin Mode. (Figura A7.4.)
; SampingMode j~ConvessionMods!
dJ Aft. between Sample A I B inputs
: O Enable alt scanning of different A^D inputs into
CHO samples
Sampling Start Mode:
: ;Samplng slatted manually
| --------- ------ -------------- . . --------
; Inputs to be scanned:
pT}Input 0
L'.:Input 1
L Input 2
, L Input3 V.
Figura A7.4. Configuracin del modo de funcionamiento del conversor, pestaa Sampling Mode.
264 dsPIC. DISEO PRCTICO DE APLICACIONES
Bajo la pestaa Sampling Mode, de la Figura A7.4, se pueden seleccionar las siguientes opciones:
P. Al seleccionar con un Lick la opcin Alt. Between Sample A & B inputs, la entrada se ir al
ternando entre el multiplexor A y el B.
2a. Habilitando la opcin Enable alt. Scanning o f differente A/D inputs into CHO samples sc per
mite que los datos de distintas entradas vayan alternativamente al amplificador de muestreo
y retencin CHO.
3a. En Sampling Start Mode se puede elegir cmo comienza el muestreo en la conversin, pu-
diendo elegir entre manual (Sampling started manually) para lo que hay que poner a 1el bit
SAMP del registro ADCON1, o automticamente tras la conversin anterior (Automatically
after previous conversion). En este caso, es el bit ASAM del registro ADCON1 el que se de
bera poner a 1en caso de no usar la herramienta Visual Initializer, ya que sta lo har de for
ma automtica.
4a. Por ltimo, se puede seleccionar entre las 13 entradas.
En la pestaa Conversion Mode se establecen los parmetros correspondientes a la operacin de
conversin. (Figura A7.5.)
Sampfrig Mode j Conversion Mode j
Trigger Source: M anual Dearing of SAM P bit v
Sample Period: 0 ~] usee
XError:
0
! (Calc.)
Conversions / Int:
i
Conversion Period: 0 usee (Caic.)
Clock Source 5* Tcy
A/D Buffer Fill Mode: Do not alt. fill both halves of A/D ;y
Figura A7.5. Configuracin del modo de funcionamiento del conversor con la pestaa Conversin Mode.
1. En la opcin Trigger Source, se establece cundo se activa la fase de conversin, que puede
hacerse manualmente, una vez que se borre el bit SAMP (Manual clearing ofSAM bit) del
registro ADCON1, mediante una transicin por flanco ascendente en la patita INTO (Active
Transition on INTO). Tambin se puede hacer de forma sncrona utilizando el temporizador
Timer 3 (Timer3 Compare) o el temporizador interno (Intemal Timer).
2. En la casilla Sample Period se establece el tiempo de muestreo en microsegundos.
3. En la casilla Conversions /Int se selecciona el nmero de conversiones que se realizarn an
tes de que se genere la interrupcin. Ese nmero debe ser menor que el nmero de bulfers
(16) ADCBUF, ya que de lo contrario se perdera algn dato de la conversin. Este parme
tro se guarda en el registro ADCON2, en los bits SMPI. Despus de cada interrupcin, los da
tos comienzan a guardarse siempre desde ADCBUFO.
4. En la casilla Clock Source se selecciona el reloj de conversin. La velocidad mxima es de
12 perodos de reloj por cada dato o muestra.
5. La casilla A/D Buffer FillMode describe el modo y estado de llenado de la pila. El resultado se
puede dividir en dos grupos de 8 que reciban de forma alterna el resultado de la conversin (Alt
two 8words bujfers ofA/D), o bien, no dividirlos (Do not Alt. Fill both halves ofA/D). Esta de
cisin depender del tiempo que emplee la interrupcin en procesar los datos de la conversin.
APLICACIN 7: PERIFRICOS AVANZADOS 265
Puede ser interesante realizar la conversin en modo SIeep ya que con ello se reduce notable
mente la posibilidad de recibir ruido provocado por el resto de perifricos del controlador.
Se procede a desarrollar el primer ejemplo. Desde Visual Initializer se marcan las siguientes casillas:
Enable on startup. De esta forma en la. inicializacin se activa el mdulo.
m Enable interrupt on startup. Establece una interrupcin para cuando se lleve a cabo la con versin.
En la pestaa Sampling Mode se elige Input 0.
En la lista Sampling St^rt Mode se elige "automatically after previous conversion Asf tras una con
versin comenzar la siguiente automticamente.
En la opcin Trigger Source de la pestaa Conversion Mode se selecciona Internal Timer.
Como Sample Period, se escoge un perodo de 0.002 fe.
[ En la pestaa Clock Source, se elige 30* . 5*. Tcy.
El resto de parmetros se dejan tal cual aparecen por defecto en la herramienta Visual Initializer.
A continuacin, se activa la casilla Generate Code Only forfeatures/resources on processor pac
kage a travs de la opcin Code Generation Options del men Visual Initializer. Se genera el fichero
init_dsPIC30F4013.s mediante la opcin Code Generation -> Save to Project.
PROGRAMA CAD
.include "p30f40J 3.inc'
.GLOBAL main
.text
_mairi:
call J Visual Initialization
bucle:
goto bucle
Tratamiento de la interrupcin
.global ___ADCInterrupt
ADCInterrupt: ;Etiqueta correspondiente a la interrupcin
BCLR IFSO, #ADIF ; Borramos el flag de la interrupcin
Leemos el resultado en ADCBUFO
:Aqu trataramos la interrupcin
RETFIE
.end
\ \ simular este programa se aprecia cmo se accede peridicamente al tratamiento de la inte
rrupcin. Aunque tambin sucede que la simulacin se para en un punto del programa. Esto es de-
htio a que no se ha aplicado una seal simulada en la patita muestreada. Volviendo a ejecutar la op
tar Run del simulador, eliminaremos este problema. Cuando se detenga en el punto de ruptura
sciriecido, el programa estar situado en la zona de instrucciones donde se debera tratar la lectu-
bl recogida en el buffer ADCBUFO. Mediante la opcin Debugger -> Stopwach se podr estudiar
e. r-empo transcurrido entre cada lectura.
;nicializamos el conversor analgico digital
;Permanecemos en un bucle infinito
266 dsPIC. DISEO PRCTICO DE APLICACIONES
Modifique los parmetros del Visual Initializer y siga estudiando los tiempos obtenidos. No as
los datos obtenidos en ADCBUFO, pues es complicado simular una entrada analgica en las patitas
de entrada, por lo que el resultado de la conversin siempre es cero.
Otro ejercicio interesante consiste en analizar la secuencia generada en el fichero init_ds-
PIC30F4013.S para la inicializacin del mdulo.
El programa anterior desarrollado en lenguaje C sera el siguiente:
Contenido del fichero main.c
//PROGRAMA CADc
#include ,'p30f4013.h"
m
int main (void)
/
t
VisualnitializationQ; //Inicializamos el conversor
while (1); // Entramos en un bucle infinito
return 0;
}
l.y.yX''
Contenido dei ficher adcint.c
: .;X;
#include p30f403.h"
unsigned int ADResultl =0; //Variable donde guardamos el resultado conversin
//Funcin que atiende a la interrupcin por el mdulo Conversor A/D
void__attribute__((__interrupt__)) _ADClnterrupt(void);
void attribute (( interrupt )) ADCInterrupt(void)
I
IFSObits.ADIF =0; //Reestablecemos el flag de interrup.
ADResultl =ADCBUFO; //Guardamos el resultado en ADResult 1
A7.4. COMUNICACIONES UART
Este mdulo permite establecer comunicaciones serie con el exterior. Se trata de un transmisor re
ceptor asincrono, bidireccional, con un buffer de transmisin y recepcin de 4 caracteres. Dispone
de 2 patitas, denominadas TX y RX, que permiten enviar y recibir informacin en serie con la po
sibilidad de activar una interrupcin cada vez que se reciba o se envie un dato.
Entre otros, para trabajar con el mdulo UART, se utilizarn los registros U1TXREG para trans
mitir los datos, U1RXREG para recibir los datos, U 1MODE para configurar el mdulo, U1BRG para
configurar la velocidad de transferencia en baudios y U1STA para comprobar el estado del mdulo.
La comunicacin serie es un protocolo de comunicacin muy extendido y conocido, por lo que
a continuacin y sin ms prembulos, se desarrolla un primer ejemplo Hola amigo, que transmite el
mensaje Hola amigo!
APLICACIN 7: PERIFRICOS AVANZADOS 267
La herramienta Visual Initializer configurar al mdulo UART. Se crea un proyecto para el ds-
PIC30F40I3 y se inicializa Visual Initializer. Se cambia el encapsulado del dsPIC a formato PDIP
y se elige del men de perifricos la opcin UART.
El dsPIC dispone de dos mdulos para comunicaciones UART. Se escoge el mdulo UART1 y
se arrastra hasta el dsPIC. Una vez all, se hace doble clic sobre el mismo accediendo al cuadro de
dilogo de configuracin de dicho mdulo UART1. (Figura A7.6.)
IJARTC Configuration.
Coirniumsctcn Settojs - - .................................
0 Ervlc en Startup CPU Sleep Operation No tAake- up v
Dock Source1; Mt A- : el: :!! :
CR- *IdteOperatic; | Continue v
SaudRate: .99X5 tes v |
%Error 0 (Cae.)
i l - C '.V v V j K ; . ; ' ;.;
O Enafcte auto- bdud detection
DctoBh: 8 v
Stop Bits: |1 v
: : riKsAfcct'rijtc P?r?
I~| Enable loopback hetvceen T x Rx
pcry: [Nopanty v ! Ice C lx k ParJy: Active H gh
Opcicbcnal Scltngs
i f
Recewsr Transmfcter
0 Erwble7ifinsmt
CJ EnableIrten^it o Startup
InieffuptPiiwfcy:
Generate Int on buffe;si:e: 1 Ernply
Hefp OK Cancel Actfy
Figura A7.6. Cuadro de dialogo para la configuracin del mdulo UART1.
Se habilita el mdulo en el inicio del programa activando la casilla Entibie on Startup. Si en vez de
hacerlo automticamente fuese manualmente habra que poner a 1el bit UTXEN del registro U1STA.
Con la casilla Baud Rate se escoge la velocidad en baudios a 9.600. Mediante la casil la Data Bits
se determina el nmero de bits por carcter, en este caso 8 bits. La casilla Stop bits se pone un 1pa
ra establecer 1bit de parada, y la lista Parity se deja con la opcin No parity. De esta forma el m
dulo se configura para una comunicacin a 9.600 baudios. 8 bits por carcter y 1de stop.
En la pestaa Transmitter se activa la casilla Enable Transmit para permitir la transmisin de datos.
El Visual Initializer configura automticamente al mdulo para 9.600 baudios, como se puede
apreciar haciendo doble clic sobre el icono Oscilador. Si desea configurar el mdulo manualmente,
sin hacer uso de la herramienta Visual Initializer, deber calcular el valor a cargar en el registro
UxBRG (donde x es 1o 2 segn el mdulo seleccionado) de acuerdo con la siguiente frmula:
UxBRG =(Frecuencia / (16 Baudios)) -1
Dispone de un ejemplo en el Laboratorio 4, Comunicacin USART ene ripiada.
Tras esta aclaracin se genera el cdigo de inicializacin, para lo cual en la opcin Visual Ini
tializer -> Code Generation Options se marca la opcin Gene rate Code Only f o r features/resources
on processor package. A continuacin, se elige la opcin del men Visual Initializer -> Code Ge
neration, y se salva el cdigo de inicializacin en el proyecto gracias a la opcin Save to Project.
268 d sPIC DISE O PRCTICO DE APLICACIO N ES
Por ltimo, se crea el fichero fuente en ensamblador que transmitir el mensaje por dicho puerto:
; PROGRAMA Hola Amigo
.include "p30f4013.inc"
.global _main
;Escribimos el mensaje en la seccin X de la memoria
.section holamundo,data,xmemory}address(0x0800)
Mcnsaje:
.ascii "Hola mundo!\r\n\0"
.text
X*;-;*: :-x - *.
_main:
call Visual Initialization ;Inicializa el dspic
mov #Mensaje,Wl ;Mueve a W1 la direccin del mensaje
Bucle:
mov.b [ W1++), WO ;Lee el dato en WO
cpO.b WO ;Si el dato es 0
bra Z,Fin ;entonces ha acabado y salta a Fin
call MandaCaracter ;En caso contrario escribe el caracter
bra Bucle ;repite el bucle
MandaCaracter:
btss U1STA,#TRMT ;Espera a poder transmitir
bra MandaCaracter ;Si no puede transmitir sigue esperando
mov W0,U1TXREG ;Escribe el caracter en el buffer TX
return ;retoma a la llamada
Fin:
nop ;Fin del programa
.end
Para ver cmo funciona este programa lo ideal es que trate de simularlo con la herramienta
MPLAB SIM. Para ello deber indicar al simulador que los mensajes de salida del mdulo UART
aparezcan por pantalla. Basta con acceder al men Debugger->Settings... y, en la pestaa UART 10.
se activa la casilla Enable UART 10 y luego se elige en la opcin Window en el marco Output para
que el resultado de la salida del mdulo se visualice en pantalla. (Figura A7.7.)
Figura A7.7. Configuracin del simulador para que muestre los datos del mdulo UART en pantalla.
APLICACIN 7: PERIFRICOS AVANZADOS 269
Se ejecuta el proyecto, se aprecia cmo en la ventana Output, dentro de la pestaa correspon
diente al simulador SIM UARTJ, aparece el mensaje esperado Hola mundo! (Figura A7.8.)
Output
i Bud ; Version Control ! Find in Files : Visual Infcalizet MPLAB SIM [ SIM Uaf tl ^
Hola mundo!
Figura A7.8. Visualization de la salida del mdulo UART1.
Una vez configurado el mdulo con Visual Initializer enviar un dalo por el puerto serie es tan
sencillo como esperar a que el bit UTXBF del registro de estado U1STA est desactivado para en
viar el dato, simplemente escribindolo en el registro U1TXREG.
Para recibir un dato, se habilita una interrupcin en la inicializacin del mdulo UART1 y se usa
la etiqueta__U1RXInterrupt para acceder al dato que se recibe en U1RXREG.
A7.5. MDULO DE CAPTURA DE ENTRADA
El dsPIC30F4013 dispone de 4 mdulos de captura de entrada. Se utilizan para capturar la infor
macin de un temporizador cuando se produce cierto evento en una patita de entrada del controla
dor. Cada uno de estos mdulos se denominan genricamente I C1, IC2, IC7 e IC8. Pueden ser muy
tiles para medir la anchura de un pulso o la frecuencia de una seal.
Cada mdulo tiene asociado un registro de control, as para el mdulo IC 1el registro de control
asociado es el IC1CON, y un registro buffer de captura de entrada, que es el registro IC1BUF.
Los 3 bits de menos peso del registro IC1CON configuran el modo de funcionamiento del m
dulo de captura de entrada. Dichos modos son los siguientes:
Deteccin de flancos ascendentes y descendentes.
Deteccin de flancos descendentes.
Deteccin de flancos ascendentes.
Deteccin de 4 flancos ascendentes.
Deteccin de 16 flancos ascendenetes.
Mediante el bit ICTMR se selecciona la fuente de reloj del temporizador. Debe elegir entre el Ti-
mer2 y el Timer3. (Figura A7.9.)
La herramienta Visual Initializer permite configurar este mdulo fcilmente, pero si prefiere co
nocer exactamente los pasos necesarios puede analizar el cdigo generado por dicha herramienta.
Para configurar este mdulo no slo es necesario aadir el icono correspondiente al IC1 al con
trolador, sino tambin el Timer3 que es el que controla el tiempo. La Figura A7.10. muestra algu
nos posibles valores de configuracin.
A continuacin se debe aadir el mdulo IC1. Como se pretende configurar el mdulo IC1 para
medir la anchura de un pulso, los parmetros que se deben definir son los siguientes:
270 dsPI C DISEO PRCTICO DE APLICACIONES
I Cx
x Prescaler
Detector de flanco
y sincronizador
1f
Lgica de
c o n tra i
T.\jR2
v -j o t mr
Flag de interrupcin#"
ICxF
ICxBUF
FIFO
Figura A7.9. Esquema del mdulo de captura de entrada.
16 l Timer 3 Configuration
Opcfoli srol S ctthgs ----------------;------------------------------------------ i
; 50 Enobie on Startup CPU Idc Opwolion
; O Gated Time Accurrdab'on ..........._^1 j
: 7 rner CSockPrescale:; 1 64 y , Postscsie: 1
Timei Pefiod: !j ____________: (msec)
7met Frequency: |1 ; (KHz) (Calc)
i_____________________________
Interrupt ---------------------- ---------:
j [11 Enable IrtciruD! on Startup
Intciiupt P iiaity. V jj
Figura A7.10. C.onfiguracin del Timer3 para su empleo con el mdulo IC1.
Timebase f o r input capture: Seleccin del Timer2 o el Timer3 corno fuente de tiempo para el
contage. Elegimos el Timer3.
Capture Operating Mode: Permite elegir que evento se va a capturar. Disable para deshabi
litar el mdulo, Capture every falling edge para capturar cada flanco descendente. Capture
every rising edge para capturar cada flanco ascendente, Capture every 4th rising edge para
capturar cada 4 flancos ascendentes, Capture every 16th rising edge cada 16 flancos ascen
dentes, Capture every rising and falling edge cada flanco ascendente o descendente o Interrupt
or wake up on idle para despertar en el modo Idle. Seleccionamos Capture every rising edge
and falling edge. El pulso empieza con un flanco ascendente y acaba con uno descendente. El
ejemplo trata de capturar el valor del temporizador Timer3 con el flanco ascendente y con el
flanco descendente. La diferencia entre una lectura y otra dar la anchura del pulso.
Capture events per interrupt: Permite seleccionar que la captura se produzca en cada evento
(Capture every event) o en el segundo, tercer o cuarto evento (Capture 2nd, 3rd o 4th event
Se elige Capture 2nd, y as al capturar el segundo evento, es decir el flanco descendente de
APLICACIN 7: PERIFRICOS AVANZADOS 271
pulso, se generar una interrupcin que calcula la diferencia entre la primera lectura del tem
porizador y la segunda y obtener as la anchura del pulso.
Por ltimo, se puede habilitar una interrupcin para tratar estos eventos mediante la opcin
Enable interrupt on startup e Interrupt Priority.
Input Capture Configuration
Input Cpiuie Settings
IC1
[lC2 ~ f7" XtC8 !
T imebate for jiput capture : T rrei 3 .v :
Capluie Operata*} Mode: 5Capture eveiy rising dos
Ccplice Evcrjts per Interrupt: Capture eveiy event y . \
CPU Idte Operation Contnue y
3 E rabie Inleirupl en Startup
fnerupt Prsoty. 4 ..*>
<!................. ^
r ~h^"
OK.
] [
Cancel
App!^
Figura A7.11. Configuracin del mdulo de captura de entrada.
Para tratar la interrupcin correspondiente, se empica la etiqueta__IClInterrupt.
Si, por el contrario, se desea calcular la frecuencia de una seal, hay que configurar el mdulo
de captura de entrada, igual que en el ejemplo anterior, a excepecin de que en Capture Operating
Mode hay que seleccionar Capture every rising edge, ya que para medir la frecuencia se debe espe
rar al segundo flanco ascendente. En este caso tambin la diferencia entre dos flancos ascendentes
proporciona el perodo de la seal, cuyo valor inverso es la frecuencia de la seal.
Tambin suele utilizarse este mdulo para el modo de deteccin automtica de velocidad del m
dulo UART.
A7.6. MDULO DE COMP ARACIN DE SALIDA
El controlador dsPIC30F4013 dispone de 4 mdulos de comparacin de salida de 16 bits, idnticos
entre s e identificados como OC1, OC2, OC3 y OC4. Permiten comparar el valor de un temporiza-
dor con el valor de uno o dos registros. Adems permiten generar un pulso o tren de pulsos de sali
da en el momento de la comparacin. Estos mdulos controlan el funcionamiento de las patitas de
salida OC1, OC2, OC3 y OC4 respectivamente, por los que se genera la salida en funcin del re
sultado de la comparacin.
El valor del temporizador puede elegirse entre el valor del temporizador 2 o el temporizador 3.
As mismo existen 3 registros, que en el caso del OC1 son el OC1CON, encargado de la configura
cin del mdulo OC1, OCIR, registro de datos del mdulo y OC1RS, registro de datos secundario,
que determinan el funcionamiento del mismo.
Se inicializa el Visual Initializer y se selecciona el mdulo OC (Output Compare) que se arrastra
hasta el controlador. Previamente, se aade el Timer2, necesario para el funcionamiento del mismo.
272 dsPIC. DISEO PRCTICO DE APLICACION ES
- Output Compare Settings
QCn IQC2 ll 0C3 fo c T l
0C1R (hex]:
OCIRS ft* )
CPU Idle Operation
I QK 1I Cared |( Appty |
Figura A7.12. Configuracin del mdulo de comparacin de salida.
En primer lugar se selecciona el mdulo OCl accediendo a la pestaa correspondiente. A con
tinuacin, se elige el temporizador a utilizar, que previamente hay que haber configurado para esta
blecer el tiempo que se desea que dure el evento. Para ello, en la pestaa Timebasefor input com
pare se selecciona Timer 2.
Despus, en la lista Compare Operating Mode, se elige el modo de operacin del mdulo. Exis
ten los siguientes mdulos:
Compare channel disabled
Mediante esta opcin se deshabilita el mdulo y no funciona.
OCx pin low to high
En este modo, la patita OCl del controlador pasa de 0 a 1en el siguiente ciclo de reloj tras al
canzar el Temporizador seleccionado el valor que se haya escrito en el registro OCl R. Se gene
rar una interrupcin 2 ciclos de reloj despus de activarse la seal OCl.
OCx pin high to low
En este caso la patita OCl se pondr a 0 un ciclo de reloj despus de que el temporizador selec
cionado alcance el valor del registro OC1R. Tambin en este modo de operacin la interrupcin
se activa 2 ciclos despus de que la seal pasa a 0.
Toggles OCx pin
En este caso, la patita OCl invierte su valor un ciclo despus de que el temporizador seleccio
nado haya alcanzado el valor almacenado en el registro OC1R. La interrupcin correspondiente
tambin se genera 2 ciclos despus de este evento.
Single Output Pulse on OCx Pin
La patita OCl se activa mientras el valor del temporizador tiene un valor comprendido entre los
registros OC1R y OCl RS. El cambio a nivel alto se produce en el siguiente ciclo tras alcanzar
el temporizador el valor de OC1R y se mantiene a nivel lgico 1hasta el mismo ciclo en el que
el temporizador toma el valor de OC1RS. Una vez alcanzado el valor de OC 1RS, aunque el tem
porizador vuelva a alcanzar los valores OC1R u OC1RS, la salida OCl seguir a nivel lgico 0.
APLICACIN 7: PERIFRICOS AVANZADOS 273
Continuous Outpu pulses on OCx Pin
Este modo es idntico al anterior salvo que las siguientes veces que el temporizado!* alcanza el
valor OC1R se vuelve a generar el pulso en la salida OCL
PWM mode Fault pin disabled
Generacin de un tren de pulsos de anchura variable con la patita de fallo desactivado.
PWM mode Fault pin enabled
Generacin de un tren de pulsos de anchura variable con la patita de fallo activado. La patita de fa
llo provoca una interrupcin para poder colocar la salida en un estado prefijado por el programador.
Se elige Continuous Output pulses on OCx Pin.
La casilla OC1R se carga con el dato con el que se desea que se active el comparador. Depen
diendo del modo seleccionado, en el siguiente ciclo tras alcanzar el temporizador el valor guardado
en OC1R, se activar la salida y la interrupcin correspondiente. Dicho valor se escribe en hexade-
cimal y en este caso es 0100.
En la casilla OC1RS se debe colocar el segundo umbral para los modos en los que quiere que la
salida se active desde un determinado perodo hasta otro. Dicho valor se coloca en hexadecimal y
ser 010A.
Por ltimo, se marca la opcin Enable Jnterrupt on startup, para provocar una interrupcin dos
ciclos ms tarde de comenzar la salida deseada en OC1.
Complete la tabla con los valores de OCI para distintos valores de TIMER2 en funcin de
los parmetros elegidos en el Apartado A7.6
TIMER2 OC1
0x00f f 0
0x0 100
0x 0/ 07
0x0102
0x0103
0x0109
0x010A
0x0 JOB
0x0 WC
Qu valor tendr el T/MER2 cuando se provoque la interrupcin__OCI Interrupt?
En la tercera parte de esta obra podr encontrar un ejemplo de utilizacin de este mdulo para el
control de motores. Ms concretamente en el Laboratorio 5, Control de motores mediante PWM, se
hace uso de este mdulo para controlar la velocidad de un motor y conseguir distintas velocidades
de una forma sencilla.
274 dsPIC. DISEO PRCTICO DE APLICACIONES
A7.7. CONSIDERACIONES FINALES
A lo largo de la seccin Programacin y Simulacin de Aplicaciones se ha tratado de proporcionar
al lector las habilidades necesarias para iniciarse en la programacin de los controladores dsPTC, una
lase previa a la implcmentacin fsica de soluciones hardware basadas en controladores dsPTC que
abordaremos en la ltima seccin del presente libro, denominada Laboratorio Experimental, y
siempre tratando de presentar las caractersticas de estos controladores y su uso, de la forma ms
sencilla y clara posible.
AUTOEVALUACIN
Conceptos cl ave de este captul o
1. A qu instrucciones afecta la configuracin del Motor DSP?
2. Qu significa que la resolucin del convcrsor analgico digital sea de 12 bits?
3. Para qu se necesita un temporizador junto con el mdulo Input Capture?
4. Qu utilidad pueden desempear los mdulos de comparacin de salida?
5. Cmo se puede configurar el mdulo UART para una comunicacin a 2400 baudios, 8 bits de
datos y uno de parada?
Ejerci cios
1. Medanle el simulador, almacene el siguiente cdigo en memoria EEPROM:
Direccin Contenido
7FFC0 0x4 F 4 8
7FFC02 0x414C
A continuacin, cree un programa en ensamblador que transmita por el puerto serie el contenido
de esas direcciones de memoria. Simlelo y descubra el mensaje enviado.
IIS * v 1 -
2. Programe y simule un programa en lenguaje C; de forma que se lleve a cabo una conversin ana
lgico digital por la patita ANO, con tensin de referencia en VREFH y VREFL, utilizando el tempo
rizador interno con un perodo de muestreo de 0,002/is., con una velocidad de reloj de muestreo
de 30 * .5 * .Tcy, de forma que cada 5 mustreos se genere una interrupcin y obtenga la media
de esos 5 valores.
Al tratarse de un perifrico tan veloz, el calcular la media y tomar ese valor como el valor resulta
do, permite minimizar el riesgo producido por la entrada de ruido en el muestreo.
1. ......: : ; r::: : : : '
Vi.. . . " ' . A
i
r n l r a t e
__
. - .i Y A Y A i M V v
del CD
e instalacin de
las herramientas
de trabajo
CONTENIDO DEL CD
El CD que acompaa al libro dispone de los ejemplos explicados en el mismo, las aplicaciones de
desarrollo utilizadas, as como los ficheros necesarios para realizar las actividades propuestas.
La organizacin del CD en distintas carpetas se corresponde con la de la Figura AP.l.
a p l i c a c i o n es
DSPIC FD LITE
LABORATORIOS
MPIABIDE
Figura AP.1. rbol de directorios del C.D.
Dentro de la carpeta APLICACIONES, se encuentran todos los ficheros necesarios para hacer las
actividades de esta parte del libro. As, existe una subcarpeta por cada captulo/aplicacin con los
listados de los ejemplos realizados y, en la carpeta Filtros, encontraremos el fichero seal con rui
do.wav necesario para la aplicacin 1. Por ltimo, tambin existe una carpeta denominada Autoe-
valuacin donde se encuentran los listados de los programas necesarios para la resolucin de los
ejercicios de autoevaluacin.
La carpeta LABORATORIOS se encuentra subdividida en tantas subcarpetas como laboratorios
realizados en el libro. Estas carpetas contienen el cdigo fuente utilizado en cada uno de ellos y to
dos los ficheros necesarios.
En las carpetas MPLAB IDE, DSPICWORKS, DSPIC FD LITE, MPLAB C30 y WINPIC800,
pueden encontrarse los programas de instalacin de estas herramientas. Todos estos programas son
propiedad de Microchip y los tiene registrados en todo el mundo. Adems las versiones ms actua
les de los mismos las puede encontrar en su sitio de Internet www.microchip.com.
D
P
P
DOCUMENTACION
DSPICWORKS
MPLAB C30
WINPICSOO
275
276 dsPIC. DISEO PRCTICO DE APLICACIONES
En la carpeta DOCUMENTACINpuede encontrar distintos datasheets de las distintas familias de
dsPIC.
INSTALACIN DE MPLAB IDE
Es importante instalar esta herramienta antes que el compilador de C MPLAB C30. Para instalar la
herramienta MPLAB IDE, se acceder a dicha carpeta del CD que acompaa al libro y ejecutando
el programa Install_MPLAB_v730b.exe.Tambin se puede obtener la ltima versin de este soft
ware acccdicndo a la web de Microchip, www.microchip.com.
Una vez iniciada la instalacin se debe esperar hasta observar el primer cuadro de dilogo de la
aplicacin de instalacin. Es conveniente cerrar el resto de aplicaciones abiertas en ese momento.
En este primer cuadro de dilogo pulsamos Next. A continuacin hay que aceptar el contrato me
diante la opcin / agree y pulsamos de nuevo Next. (Figura AP.2.)
Figura AP.2. Instalacin de la herramienta MPLAB IDE.
A continuacin, se elige el tipo de instalacin, que se recomienda la instalacin completa, Com
plete. V se sigue pulsando Next hasta que se llega al cuadro de dilogo donde se pregunta sobre la
carpeta destino. (Figura AP.3.)
Es importante no cambiar la carpeta destino, ya que a menudo se hace referencia a ficheros que
se encuentran en dichas carpetas, y si se cambia la carpeta de instalacin base las referencias dadas
en el libro no sern vlidas.
Tras esto, contina la instalacin normalmente, aceptando los contratos de software y pulsando
Next, hasta que comienza la copia de los archivos al ordenador. Al finalizar este proceso, el progra
ma de instalacin pregunta si se desea leer instrucciones para la instalacin de otras herramientas,
como por ejemplo el 1CD2. En tal caso, se contesta que s se quiere leer dichas instrucciones, e in
cluso sera recomendable imprimirlas. (Figura AP.4.)
APNDICE A: CONTENIDO DEL CD E INSTALACIN DE LAS HERRAMIENTAS DE TRABAJ O 277
Setupwl h:iaC MFt48 7 1 v? 50 n Ibefotoftvic lefctef.
Toir!al reli n foJe*. cfcK MtTo Ctal lua dlfaerA fotts:. drk Browie endsefey
wlhe Mk
r. Oeaiociion
isa*. M R . Tccte v 7 ^ 0 *v HCWO* phc<o
Choose Dcitmolion L ocation
Sri tti - My toic ssltp wl nsNI lie: Micr ochip
J i .: C'Wiww p:oaaro#Ritt;hp\
Figura AP.3. Seleccin de la carpeta de destino.
:-:-:%y';-Xvvv
.......
:*.c/o
He*>
Choose Destination Locatoti
Stectlodn breeletup wl n:tal He: Micr ochip
Sfto VAI MFL-B Tccttv7.2n !n* IcA/wu luUe*
T0it til to lr>lotee. Cit-. Newl I o risU toedEieier>fafdei, cfc* Btowcandcc
wriet foie.
r Destratan FrfJ ei.......................
C \Aid-ivo3 ce prosiematafCChiA
. Hciosof t Photo
Figura AP.4. Visualizando las instrucciones de instalacin de la herrmienta ICD2.
Por ltimo, al pinchar en el ltimo cuadro de dilogo de la instalacin, el botn Finish, aparece
r en pantalla un visor de documentacin de la empresa Microchip, visor que se puede cerrar para
empezar a trabajar con el MPLAB IDE. (Figura AP.5.)
278 dsPIC. DISEO PRCTICO DE API ICACIONES
3 UIHAll UH OuCuiiU'iil Viewer
r^ttcsbft'r^xa L*o. . H '-B!A?rCrw ir*rI
VCfSDT.'W - - - - - - ;- - - : W- - - - '
M W W M ) Asse mbl e r ve rsar. v4.02
] C D 2 I i - C r o i t C e t ww r
] C E2C O JI i vO f C u i Er of or
1CE -1003I n Qrcut Ermi
i ttv/,20
FM3C v :b ?rcg-tfin*i
SIMJfnuWof
VDl MsudCe:e tmtelser
M=l[Mi(TM] Ctyrv. Ui<endWte v
D ifH W I rio,*!"-/"'*
I nRiiaocn HeipK tei (l ext Oi y)
r - .A3 I C O ? U?EO c vKe C t rw e an
M=(.M) 1CD2 '_CUCiVKe Orrw insWlstco
rM .f l 3 I C E 2k P f c l r Fwt C t i vw I f e dl t C
M - \ .\ 3 I C E 2>: 1153 oxt-vtfrO c vro C * t oG .
M ?l A3 I C E 7XUSB C owe f t e r D e vi c e Cmtt inI
rM -A* JI C E 4KUS9 O r- i - .e D rive r C fe e n
M . .\ 3 I C E 41: U53 O wvi t D i r v* j n i t e l s f n
M i l .A3 Pv 5 U53 C ^ C d D - l vc - C W.V.
MK.A9PV2 U3DOevtteUnvsr lnstel atan
Macchia CnTheWsb
;V;v,svyiv-
R e l e ose He c e s t e r d* ?c <i >.} Lx r .j u * ? l o
2? A s ti l 200=
c o s n n s
1. Cvervr ev
. CHU C cr.aral 7-j M c L icerne
5. T:.vi-_'<*Su^purtud
4. Ins ca b la tio n
5. Ki ^r &ci na co Ver si ci 1. 3x
C. Hurt:1 J.v ir . thi Bol
7. yixe tl Issues
8. L i le scions
V. Cmtoac Support
>i H5UBI W SSS, v i . 32
Ovxxvitv
Tie HP1A3 II>2 relea s e o I 4 s 7 I C language coo cons is t, ai tui u ta o b i
<jiic30-. *> , n a l i n x : {pic 30 - ld . cxe). I&c tfiC r'S Guide des cri
a d d itio n a l U t i l i t i e s choc re noe s upport.d by th KP LiE IC'3 sr. A
thiio E u not. s upplie d i n c his releas e.
2. GOT General P \tiilc License
Ujr.h r.h xeapsi.ena n e t. c b . lo v , ti i * ds? IC ooolc are wriccen ani
d is trib u te d under Che 5NV General P ublic l i c w a . (CJ LJ which acaas
duo; ic s i c j i e a cofis i s tr e c l y dis -rlbuce-3 anil ova-, lo bi to th -
Figura AP.5. Visor de documentacin del MPLAB IDE.
INSTALACIN DE MPLAB C30
Se recuerda una vez ms, que la versin del compilador de C MPLAB C30 que distribuye libre
mente Microchip y que se acompaa en este CD, es una versin para estudiantes. Esta versin, pa
sados 60 das tras su evaluacin, pierde ciertas funcionalidades pero sigue siendo funcional. En ca
so de que no sea estudiante, debera descargar de la web de Microchip una versin de evaluacin de
60 das de esta misma herramienta que trascurrido este tiempo dejar de funcionar.
Para instalar esta herramienta, hay que ejecutar el nico programa ejecutable situado en la car
peta MPLAB C30 del CD que acompaa al libro. La instalacin es bastante trivial, se deben acep
tar todas las opciones por defecto del programa de instalacin y mediante el botn Next avanzar en
la misma hasta que se muestre un cuadro de dilogo como el de la Figura AP.6. Hay que contestar
Yes y finalizar la instalacin pulsando el botn Finish.
INSTALACIN DE DSPICWORKS
Para instalar esta herramienta, se ejecuta el programa setup.exe de la carpeta DSP/CWORKS del CD
que acompaa el libro. La instalacin resulta trivial, simplemente se acepta todo sobre las distintas
opciones que por defecto marca el programa, pulsando el botn Next, hasta llegar a la ltima pan
talla donde se pulsa el botn Finish, tras lo cual habr concluido la instalacin de esta aplicacin.
INSTALACIN DEL dsPIC Fd Lite
Para instalar esta herramienta se ejecuta el programa setup.exe de la caipeta dsPIC Fd Lite del CD
que acompaa el libro.
APNDICE A: CONTENIDO DEL CD E INSTALACIN DE LAS HERRAMIENTAS DE TRABAJ O 279
Figura AP.6. Configuracin de las variables de entorno.
I ,a instalacin resulta trivial, simplemente se acepta todo sobre las distintas opciones que por de
fecto marca el programa, pulsando el botn Next, hasta llegar a la ltima pantalla donde al pulsar el
botn Finish, se concluye la instalacin de esta aplicacin.
INSTALACIN DE WI NPI C800
La instalacin del WinPic800 es bastante simple, basta con copiar la carpeta WinPicSOO en el disco
duro, seleccionar todos los ficheros copiados y, mediante el botn derecho y la opcin Propiedades,
desmarcar la opcin de Slo lectura. Tras esto bastar con ejecutar directamente el programa Win-
Pic800.exe para tenerlo funcionando. Este programa de Siseo Benach es de libre distribucin y pue
de encontrarse actualizado en http://perso.wanadoo.es/siscobf/winpic800.htm.
ejercicios
de autoevaluacin
SOLUCIONES APLICACIN 0
/. Con qu herramienta se desarrollarn los programas para dsPlC?
Para los desarrollos propuestos se utiliza la herramienta MPLAB IDE, que genera los cdi
gos fuente, que se compilarn y simularn.
2. Es necesaria en esta segunda parte alguna placa de desarrollo o hardware basado en dsPlC?
No, slo es necesario un PC y el software del CD que acompaa al libro para realizar todos
los ejercicios y simulaciones planteados.
3. De cunta memoria de datos y de programa dispone el dsPiC30F4013?
Memoria de programa de 48 KB de capacidad. Hasta I6K instrucciones.
2048 bytes de memoria SRAM.
1024 bytes de memoria EEPROM.
16 registros de trabajo de 16 bits cada uno.
4. Con qu herramienta se debe tener especial cuidado al instalarla? por qu?
Debemos tener especial cuidado con la instalacin del compilador de lenguaje C MPLAB C30,
ya que es una versin demo y una vez instalado, slo se puede utilizar de forma gratuita duran
te 60 das.
5. Qu herramienta generara automticamente el cdigo fuente necesario para desarrollar un
filtro para un controlador dsPIC?
La herramienta para el tratamiento de filtros digitales dsPIC Fd Lite.
SOLUCIONES APLICACIN 1
I. Qu es un filtro ? Para qu sirve? Cite ejemplos de aplicacin.
Se trata de un elemento que discrimina cierto rango de frecuencias de una seal que pasa a
travs de l.
281
282 dsPI C DISEO PRCTICO DE APLICACIONES
Un ejemplo de aplicacin se puede observar en los microfltros que se conectan a las lneas
de telfono cuando se utiliza ADSL para transmitir por el mismo canal voz y datos.
2. De fina los cuatro tipos de filtros esenciales que permite disear la herramienta dsPIC Fd Lite.
Filtro paso bajo: Es aquel que permite el paso de frecuencias bajas y atena frecuencias
mayores.
Filtro paso alto: Es el que permite el paso de frecuencias desde una frecuencia de corte de
terminada hacia arriba, sin que exista un lmite superior especificado.
Filtro paso banda: Permite el paso de componentes frecuenciales contenidos en un determi
nado rango de frecuencias, comprendido entre una frecuencia de corte superior y otra infe
rior, atenuando el resto.
Filtro elimina banda: Es el que dificulta el paso de componentes frecuenciales contenidos
en un determinado rango de frecuencias comprendido entre una frecuencia de corte supe
rior y otra inferior.
3. En el ejemplo propuesto, para qu sirven los parmetros Stopband Ripple (dB) y Pashhand
Ripple (dB)?
Definen el porcentaje de la seal original que debe eliminarse para la banda eliminada (stop
band ripple) y el porcentaje de la seal original que puede eliminarse como mximo de la se
al original en el rango de frecuencias fuera de la banda seleccionada (passband ripple).
4. Para qu se ha usado la Transformada Rpida de Fourier?
Para estudiar la seal en el rango de las frecuencias y as localizar una que sea muy distinta
a la del resto de la seal y que probablemente est generada por una fuente distinta.
5. En qu lenguajes se puede generar el programa de filtrado?
Tanto en ensamblador como en lenguaje C
Ejercicio
Los pasos para filtrar la seal son los siguientes:
1. Crear el filtro con el programa dsPIC Fd Lite.
2. Generar y guardar el fichero de coeficientes.
3. Convertir la seal de entrada del formato .WAV a formato .TIM.
4. Desde el programa dsPICworks, aplicar el filtro sobre la seal original.
5. Convertir la seal de salida de .TIM a .WAV.
6. Escuchar la seal en el reproductor de Windows.
Si no se consigue, puede que estos datos le sean de ayuda, aunque quizs desee primero inten
tarlo sin pistas. Caractersticas del filtro:
Sampling Frequency: 44100
Passband Frequencies: 4800 5000
Stopband Fequencies: 4000 5600
Passband Ripple (dB): 0.1
Stopband Ripple (dB): 50
APN DICE B: SO LUCIO N ES A LO S EJERCICIOS DE AUTO EVALUACI N 283
SOLUCIONES APLICACIN 2
1. Qu ficheros son necesarios para todo proyecto escrito en ensamblador?
Ficheros a aadir a nuestro proyecto
C:\Archivos de programa\Mcrochp\MPLAB ASM30 Sute\lib\Crl0.s
C:,\Archivos de programa\Microchp\MPLAB ASM30 Suie\Mb'sCrtl .s
Q\Archivos de programa\Microchip\MPLAB ASM.'iO Suite\support\gld\p30f4013.gld
C:\Archiyos.de programa\Microchp\MPLAB ASM3.0 Suite.\support\inc\p3Q4)13.nc
2. Para qu sirven los ficheros aadidos a un proyecto en C?
Para aadir las definiciones de las rutinas de inicializacin, definir posiciones de memoria,
etiquetas para interrupciones, utilizacin de nombres simblicos,...
3. Qu hace la instruccin ADD W0,W 1,W0?
Suma el contenido de los registros generales WO y W1 y deja el resultado en WO.
4. Cul es la etiqueta de inicio de programa en ensamblador?
_main:
5. Dnde se encuentra la rutina de reset de nuestros programas?
Se encuentra entre los ficheros que aadimos a nuestro proyecto.
Ej ercicio:
Resuelto en el Captulo 4.
SOLUCIONES APLICACIN 3
/. Qu depuradores soporta la herramienta MPLAB IDE? Dnde puedo observar las limi
taciones del simulador software?
Soporta tanto depuradores software como el MPLAB SIM, o depuradores hardware como la
herramienta MPLAB ICD2.
Para ver las limitaciones del simulador se puede acceder al men men Debugger -> Set-
tings... y acceder a la pestaa Limitations.
2. Qupasa cuando se ejecuta nuestro programa paso a paso? Cundo se ejecutan las ins
trucciones del cdigo fuente?
Al ejecutar el programa paso a paso la primera instruccin que se ejecuta no es la que se ha
escrito en el fichero fuente, sino las que se han aadido en los ficheros del proyecto que con
tienen las rutinas de reset, etc. Para poder ver la ejecucin del cdigo ms rpidamente se es
tablece un punto de ruptura en la primera lnea de programa y se ejecute el mismo. As, tras
ejecutar esas rutinas de inicializacin, el programa se detendr en la primera lnea de cdigo
y se podr ver su ejecucin paso a paso.
284 dsPIC. DISEO PRCTICO DE APLICACIONES
3. Cmo se puede observar con el simulador el nmero de ciclos que tarda en ejecutarse una
instruccin?
Mediante la opcin Debugger ->StopWatch se observa el nmero de ciclos y el tiempo trans
currido entre distintos puntos del programa,
4. Describa las limitaciones del simulador.
Las limitaciones del simulador MPLAB SIM pueden observarse en el men Debugger->Set-
tings, bajo la pestaa Limitations. As por ejemplo, puede observarse que la comunicacin
UART no puede simularse en real, pero s redirigir la salida a pantalla o a un fichero.
5. Mediante qu opcin del men se podra visualizar parte de la memoria de datos EE
PROM? Podemos desde el MPLAB IDE escribir en ella?
Mediante la opcin del men View-> EEPROM se puede leer y escribir en la zona de la me
moria de datos EEPROM.
Ejercicios
Confeccione un programa en ensamblador que contenga la instruccin ADD, MOV, GOTO
y CPSEQ. A continuacin simule el programa y calcule el nmero de ciclos de instruccin
en los que se ejecuta cada una de esas instrucciones.
Como solucin al ejercicio, ya que una de las instrucciones que debe incluir el programa es
la instruccin CPSEQ, se propone confeccionar un programa que inicialice el registro
WREGO con un valor, por ejemplo OxOFR e ir sumando a WREG1 una unidad, hasta al
canzar dicho valor.
Para ello, se podra confeccionar el siguiente programa:
:AUTOEVALUACIN
APLICACIN 3.1.
-.CONTANDO LOS CICLOS DE INSTRUCCIN
;EL PROGRAMA VA SUMANDO I A WL HASTA
; LLEGAR AL VALOR DE WO QUE LO INICIAMOS
;CON EL VALOR OxOOFF
.global _main
.text
mam:
MOV #OxOOFF,WO
MOV #0x0000, W1
SUMA:
ADD W ) ,#0x0001, W l
CPSEQ W0,W1
GOTO SUMA
FIN:
NOP
.end
;INICIALIZAMOS W0=0x0FF
; 1N1CIALIZAMOS W 1=0x0000
;SUMAMOS 1A W1
;SI SON IGUALES W0Y W1 SALTA
;LA SIGUIENTE INSTRUCCIN GOTO
VOLVEMOS A SUMAR
iFINL. W0 Y W1 SON IGUALES
APNDICE B: SOLUCIONES A LOS EJ ERCICIOS DF AUTOEVALUACIN 285
Con la primera instruccin MOV, el registro WREGO se inicializa con el valor OxOOFF.
Con la siguiente MOV, W1 toma el valor 0. El programa pasa a continuacin a un bucle
que se repetir siempre hasta que W0 y W1 sean iguales. Ya que mientras no sean iguales
se repetir siempre la instruccin ADD que suma uno aWl y la instruccin de salto in
condicional GOTO SUMA. Sin embargo, cuando los dos datos sean iguales, la instruccin
CPSEQ har que la instruccin GOTO SUMA no se ejecute y por tanto se llegue al final
del programa.
Al simular el programa paso a paso, mediante la opcin del men Debugger->Sopwatch,
se puede observar el nmero de ciclos de instruccin ejecutados en cada momento. As, se
puede deducir fcilmente el nmero de ciclos de instruccin necesarios al ejecutar cada una
de las instrucciones anteriores. Dicho nmero de ciclos de instruccin se recoge en la si
guiente tabla:
Instruccin N Ciclos de instruccin
MOV 1
ADD
J _
CPSQ 1
GOTO 2
Confeccione un programa en lenguaje C que le permita observar cmo cambia el bit de aca
rreo de la palabra de estado.
La solucin ms rpida para observar el acarreo es colocar en un registro como WREGO el
valor mximo que puede contener y sumarle 1.
// Aplicacin 3.2
// Programa en C para la observacin
// del bit de acarreo.
#include ,'p3013.h"
int niain(void)
{
WREGO =OxFFFF; //Inicializamos WREGO a OxFFFF
WREG0++: //Postincremento de WREGO
rcturn(O);
} .
Al ejecutarlo paso a paso, se puede observar bajo el men View->Special File Registers c
mo cambia el valor del registro de estado SR al ejecutar el postincremento de WREGO.
SOLUCIONES APLICACIN 4
1. Qu significa que una instruccin de comparacin y salto, salta la siguiente instruccin?
Significa que cuando se cumpla la condicin de salto, es decir cuando la condicin de la ins
truccin de salto sea cierta, entonces el programa no ejecutar la siguiente instruccin. As,
286 cJsPIC. DISEO PRCTICO DE APLICACIONES
normal mente, para realizar una instruccin condicional tipo IF, suele colocarse una instruc
cin de salto incondicional tras la instruccin de salto condicional. Con lo que se consigue
que mientras la condicin no sea cierta, el programa salte a la etiqueta de la segunda instruc
cin y, por el contrario, cuando la condicin sea cierta, entonces el programa siga la secuen
cia de instrucciones siguientes.
2. Qu utilidad tienen las distintas etiquetas de inicializacin de datos?
Sirven para inicializar la memoria de datos del controlador, disponiendo de distintas zonas de
memoria segn las necesidades del programa.
3. Cuntas instrucciones DSP se han aadido al repertorio de instrucciones de la fanula ds-
PIC30F?
Se han aadido un total de 19 instrucciones DSP que permiten realizar complejos clculos
matemticos de una forma rpida y eficaz.
4. Para qu sirve la instruccin MAC?
La instruccin MAC multiplica dos valores y acumula el resultado en el acumulador. Se uti
liza a menudo en el filtrado de seales.
Ejercicios
Confeccione un programa en ensamblador, ejercicioDSP\ que calcule el resultado de la si
guiente ecuacin:
yn = boXn - b ]X n. - b 2x n.2 - bjXn.3
Para el clculo se usan los siguientes coeficientes:
b, Xn
0x0001 OxOOFF
0x0003 0x0005
0x0007 0x0002
0x0001 OxOOOF
A continuacin, simule el programa y observe el resultado de la ecuacin. Procure hacer el
programa con el menor nmero de instrucciones posible y utilizando las nuevas instruccio
nes DSP.
La ecuacin del ejercicio planteado es muy similar al ejemplo de filtro FIR. Las ecuaciones
son muy similares:
yn =b()x - b]xn.] - b2xn.2- b3xn.3 e yn=b0xn+b,xn.| + b2xn.2+ b3xn.3
En el caso de este ejercicio, para su resolucin debe acumularse el valor del primer coefi
ciente b0xny luego restar el del resto de coeficientes.
Para la primera suma se recomienda usar la instruccin MPY, y para la resta de los siguien
tes coeficientes, usaremos la instruccin MSC de multiplicacin y resta.
APNDICE B: SOLUCIONES A LOS EJ ERCICIOS DE AUTOEVALUACIN 287
;Programa Ejercicio DSP
resolucin de la ecuacin yn=b0Xn-blXn-l-b2Xn-2-b3Xn-3
;Priinero haremos |a multiplicacin bOXn con la instruccin MPY y a
;eontinuacin gracias a la instruccin MSC iremos
;restando el resto de operandos
include p30f4013.inc"
.global _main
;Scccin de datos de la Memoria X. Coeficientes h0,bl,b2 y b3
.section coeficientes, dala, xmemory, address(0x0800)
bi: .hword 0x0001, 0x0003. 0x0007, 0x0001
;Seccin de datos de la memoria Y. Xn, Xn-1, Xn-2, Xn-3
.section inputs, data, ymemory, address(OxOCOO)
xn: .hword OxOOFF, 0x0005, 0x0002, OxOOOF
.tcxr
_main:
bsel CORCON,#lF ;Operaciones con enteros
mo\r#bi,W8 ;Mover la direccin de bi a W8.
mov |W8++J ,W4 ;C1contenido de la direccin de W8 lo llevamos a W4
;y dejamos W8 apuntando al siguiente dato,
mov #xn,W10 ;Mover la direccin de xn a W10.
mov [W J 0++1AV6 :Contenido de la direccin W10 a W. Dejamos W6
;apuniando al siguiente dato
;lnstruccin MPY multiplicamos W4 y W8 sobre el acumulador
;y hacemos que tras la operacin, estos contengan los siguientes coeficientes
;y que W8 y W10 apunten a los siguientes.
mpy W4nV6,A,lW8]+=2,W4,[W101+=2,W6
repeat #0x0002 ;repetir 3 veces (una por cada resta de la ecuacin)
nivSCW4*W6,A*;[ W 8 ]+=2, W4,[W 10]+=2,W6
; Instruccin MSC, Multiplicacin y resta.
; Multiplicamos W4 y W6 y lo restamos al contenido del acumulador A
; Adems, movemos el contenido de W8 a W4, coeficiente b
; y postincrementanios W8 para que apunte al siguiente coeficiente b
; As mismo, y gracias a que se encuentra en la zona de memoria Y, tambin podemos
; hacer que W recoja el dato apuntado por W10, es decir el siguiente Xn
; y postineremen tamos W10 para que apunte al siguiente Xn.
nop; No operar.
.end . :
En la Figura BP.l podemos observar el resultado en el acumulador, tras la simulacin:
SOLUCIONES APLIACIN 5
I. Cuntos bytes como mnimo se deben grabar cuando se realiza una operacin de grabacin
de memoria FLASH de programa?
Como mnimo se deben grabar 32 instrucciones o posiciones de memoria, las cuales tienen
cada una 3 bytes. Luego el nmero mnimo de bytes a grabar mediante esta operacin es de
96 bytes.
288 dsPIC DISEO PRCTICO DF APLICACIONES
Figura BP.1. Resultado d$ la simulacin del ejercicio.
Ejercicio:
Utilizando el simulador, visualice el cdigo en hexadecimal correspondiente al siguiente
programa:
mov #0x0002, Wi ;Movemos un 2 al registro Wl
add WO. Wl, WO ;sumamos el registro WO y Wl y dejamos
;el resultado en WO
. >-.
A continuacin cree un programa que, leyendo esos datos de la seccin de datos del progra
ma, grabe ese programa en la memoria FLASH de programa a partir de la direccin
0x000300.
Al simular el programa que acompaa al enunciado del ejercicio, se pueden observar los c
digos de operacin correspondientes a las instrucciones citadas, mediante la ventana Program
Memory. En la Figura BP.2 se puede observar el cdigo correspondiente.
As el cdigo que el programa debe grabar en la memoria de programa, debern ser los si
guientes 6 bytes:
20 00 21 40 00 01
El cdigo fuente correspondiente al programa que graba estos 6 bytes se encuentra desarro
llado en lenguaje C.
// PROGRAMA grabaprograma
// Este programa escribe el cdigo
#include Mp30f40l3.h''
APNDICF B: SOLUCIONES A LOS E)ERCICIOS DE AUTOEVALUACIN 289
.MPLAB IDE v7.20
Ha Oit y Erojeil teOjyj* PiOYifwet Tocfc Configure Wndm H *
i G W f e Q 3 M f i Cf I ? U B>( : $ J Chedcsum: 0x6814 | t I I M
1 1
i U l es | OpCOCJ C | S is ajs rmnly
20S OD198 5A4000 BGGCrvctBR
i 206 0019 A 7EOOOO re s e t ____________
200 0019E 900001 atW.W 0X0000,0X0002,0X0000
209 OOIAO OOOOOO nop
: 210 OD1A2 rcuooo re s e t
I
O1A4 FFF7FF aopr y
p UpCOfeH j) Mactvvs Syrrbcc | PSV.Mwdj PSVData|
Figura BP.2. Obteniendo los cdigos de operacin del programa en ensamblador.
int secuenciagrabacionQ
// Esta funcin escribe la secuencia de grabacin
// tanto para borrado corno para grabacin
NVMADRL =0x0;
NVMADR =0x300;
NVMKEY =0x55;
NVMKEY =OxAA;
NVMCONbits.WR=0x1;
asmCNOP");
asmC'NOP");
retrn 0;
Y- * * * >; : * -+ * **
// Programa principal
j [* * * # * * * * * Je* * * + * *
int main(void)
int a =0;
//Borramos la memoria
NVMCON =0x4041;
a =sccuenciagrabacion():
while(N VMCONbi is.WR ==1);
//PRJ MERA INSTRUCCION
WREG2 =0x0021;
WREG4 =0x0020;
TBLPAG =0x0;
VVREGO =0x300;
asmCTBLWTL W2, [W0],,);
asmCTBLWTH W4,[W0++]");
//Apuntamos la pgina
//Apuntamos el desplazamiento en la pgina
//Movemos a NVKEY la secuencia 55
//Movemos a NVMKEY la secuencia AA
//Activamos el bit WR de NVMCON
//Esperamos 2 nops
/A'ariable auxiliar
//Configuramos NVMCON para borrar FLASH
//Ejecutamos secuencia borrado/grabacin
//Esperamos al bit WR de NVMCON sea 0
//Escribimos los 3 bytes 200021 correspondientes
//a la instruccin MOV
//Apuntamos a la pg. de la direccin a leer
//Apuntamos al desplaz. dentro de la pgina
//Escribimos en el registro el cont. de W2 en parte bajar
//Escribimos el cont. de W4 en la parte alta
290 dsPIC. DISEO PRCTICO DE APLICACIONES
//SEGUNDA INSTRUCCION
WREG2 =0x0001; //Escribimos los 3 bytes 400001 correspondientes
WRRG4 =0x0040; //a la instruccin ADD
WREG0 = 0x302;
//Apuntamos al desplazamiento dentro de la pgina
asmfTBLWTL W2. [W0]M); //Escribimos en el registro el cont. de W4
asmCTBLWTH W4,[W0++r); //Escribimos el cont. de W4 en la parte alta
//Rellenamos el resto de las 32 instrucciones con l i l i l
for(a = 3;a<=32;a++)
r i i "! f"v>'</
i
WREG2 =0x11J ];
WREG4 =0x0011;
WREG0 =0x300 +(a-l)*2:
asmfTBLWTL W2, [W0]"); //Escribimos en el reg el cont. de W4
asmfTBLWTH W4}|W0++],,);
i
NVMCON =0x4001; //Configuramos NVMCON para grabado EEPROM
a = sccucnciagrabacion(); //Ejecutamos secuencia borrado/grabacion
while(NV M C O N b i t s. W R ==1); //Esperamos al bit WR de NVMCON sea 0
return 0;
Tras simular el programa, puede observarse en la Figura BP.3 la ventana Program Memory
con el cdigo correspondiente a las dos instrucciones ya grabado.
Fd pew f roj -tt DjsUW- PrcvrTiiw I ccfc Qorftyje ' ck m Hejp
. af H ^16* 1? j, da?O i#s#ij
Ch c c k s u m : 0x 5 a 2 0
'C^^iwuw:oritf;S,fl{ir^yio^^^.cunwntiw\gra|>aprograi.M\aft>pft'r
D.EC2 - 0x0001.
VUC( - 0x0043.
VPXCO - 0x302,
M B t'tB L D lb V2, |OOJ
O m TlLTH Y1J OO++1'
J IlU-tM - 9.MV.92
/ / e ri b i Q *n *1regnrs re e l c c ik . de Vi
VP3S2 - C x l l l l .
TO3-34 - 0x0011.
OSHOO - 0*300 t 1>-
Ma< 7BLUTL V2, |U0J '
.o-TBWTH K . I W m ;
ea e l r c f f i r r o e l conc. de
HunccN - UX40V1; //C mtifluro xos W/ICC p i r a rafca.d zitscx
o s cvenclojT aS ocion"; - / .'S:ccucobcs ra c u s s c ii bor cftdo/qtialiMci
Pjiijr<iin Minnnry jf5
| L ine Adtrcas Opcode ris a a s tinbly .4
382 002 7 A F7TFTT nnpr
383 002ye r ? r r t r nopr
384 002 ?S F ? rr? r nopc
385 00300 200021 trov.a 0x2, 0x0002
386 DC30Z )i add.ci 0x0000,0x0002,0x0000
am nr/n m i - i nhr Ov v i i h . r nynnn? i . rnxnnn-J i
. . ~ . v.- lv.v. >
Opee He|| Martin S>nx4c PSV MrJ PSV Pal |
I!
Mlasf dtK C H013 oab.saa IPO ctiavi r
Figura BP.3. La memoria de programa grabada correctamente.
APNDICE B: SOLUCIONES A LOS EJERCICIOS DE AUTOEVALUACIN 291
SOLUCIONES APLICACIN 6
7. Qu perifricos se pueden inicializar con la herramienta Visual Initializer?
Todos los perifricos que disponga el modelo del controlador seleccionado cuando se crea el
proyecto mediante la opcin Project Wizard.
2. Qu salida genera la herramienta Visual Initializer?
La herramienta Visual Initializer genera un fichero llamado initdsPIC30F4013.s que se lla
ma con la siguiente instruccin en ensamblador:
y con el lenguaje C:
Visual
yv'
Initial izationV
fifigg&ggagg
..... ' IO.UW
i l i i l i
!w^w*'\v>:vi
3. Cmo se puede sincronizar la velocidad con la que trabaja la herramienta Visual Initiali-
zer y el Simulador MPLAB SIM?
Para sincronizar ambas velocidades, se debe proceder a configurar con la misma velocidad
el Simulador MPLAB SIM y la herramienta Visual Initializer. Para ello, el programa MPLAB
SIM dispone de la opcin Debugger->Settings y bajo la pestaa Osc/Trace se puede esta
blecer la velocidad del oscilador. Por otro lado, para acceder a configurar la velocidad de la
herramienta Visual Initializer, se debe hacer doble clic sobre el icono Oscillator que se en
cuentra en la representacin grfica del controlador.
4. De cuntos temporizadores dispone el controlador dsPIC30f4013?
5 Temporizadores de 16 bits: Temporizadorl, Temporizador2, Temporizador3, Temporiza
do^ y Tcmporizador5.
2 temporizadores de 32 bits, el primero compuesto de los temporizadores 2 y 3 y el segundo
por los temporizadores 4 y 5.
5. Dnde se encuentran almacenadas las definiciones de las etiquetas correspondientes a las
distintas interrupciones?
En el fichero p30f4013.gld.
Ejercicio
Cree y simule un programa que cambie de estado un led, siempre que transcurra un minuto de
tiempo, o bien se active por flanco ascendente una seal conectada a un pin del controlador
La solucin implementada va a contar 60 segundos. Es decir, usando la misma inicializacin
del ejemplo semforo del Captulo 5 y siguiendo los pasos detallados en ese captulo se con
sigue inicializar los perifricos utilizados para contar 1segundo. En la rutina de atencin a la
interrupcin del temporizador contaremos 60 llamadas y as se obtiene una temporizacin de
1minuto. En esta inicializacin tan slo se debe cambiar la configuracin de la interrupcin
INTO y sustituir el flanco ascendente por flanco descendente.
El cdigo fuente del programa podra ser el siguiente:
292 dsPIC DISEO PRCTICO DE APLICACIONES
#include "p30f4013.h"
//Programa Semforo en lenguaje C
int segundos =0;
//Esta funcin atiende a la interrupcin del temporizador
void _attribute (( interrupt )) _T 1Interrupt(void)
v.-i
.
l
Visuallnitial i zation ();
while (1);
return 0;
}
//Inicializamos el conversor
// Entramos en un bucle infinito
Al simular el programa, la interrupcin se genera cuando se han muestreado 5 valores. Dichos
valores se almacenan en los registros ADCBUF1, ADCB UF2, ADCBUF3, ADCBUF4 y
ADCBUF5. Al hacer la media de estos 5 valores se alcanza un resultado ms inmune al ruido.
Tercera parte
Laboratorio experimental
Laboratorio 0. EL SISTEMA DE DESARROLLO PIC School............................................................299
Laboratorio 1. APLICACIN DE INSTRUCCIONES DSP CON ENTRADAS
Y SALIDAS DIGITALES................................................................................................323
Laboratorio 2. MANEJ ANDO A FONDO LOS TEMPORIZADORES DE 32 BITS.....................333
Laboratorio 3. OP TIMIZANDO LA CONVERSIN ANALGICO-DIGITAL
DE ALTA PRECISIN................................................................................................... 343
Laboratorio 4. COMUNICACIN ENCRIPTADA CON EL USART.............................................. 351
Laboratorio 5. CONTROL DE UN MOTOR DE CC MEDIANTE P WM...................................... 359
Laboratorio 6. DISEANDO FILTROS................................................................................................367
Laboratorio 7. GRABANDO LA MEMORIA FLASH DE PROGRAMA
CON UN BOOTLOADER........................................................................................... 375
Laboratorio 8. MANEJ ANDO A FONDO LAS INTERRUPCIONES............................................. 385
Laboratorio 9. PILOTANDO UN FRMULA 1................................................................................. 393
LABORATORIO
El sistema
de desarrollo
PIC School
L0.1. INTRODUCCIN
La obra que tiene en sus manos consta de tres partes diferenciadas:
Ia Teora: funcionamiento y programacin de los dsPIC.
2a Simulacin y programacin de aplicaciones.
3a Desarrollo de experimentos, proyectos y programas con hardware y software.
Cada parte tiene una importancia fundamental para adquirir los conocimientos terico-prcticos
necesarios para disear aplicaciones con dsPIC, pero la ltima en la que se maneja un modelo con
creto de dsPIC al que se conectan diversos perifricos y dispositivos y se ejecutan programas en
tiempo real es imprescindible para que el lector ponga manos a la obra y comience a disear y
construir proyectos reales.
Microchip realiza un gran esfuerzo para poner a disposicin de los usuarios de los productos que
fabrica un conjunto de programas y herramientas que faciliten el diseo de las aplicaciones. As, go
za de un gran prestigio el entorno de desarrollo MPLAB, cuya ltima versin siempre se puede ba
jar libremente del sitio de Microchip en Internet, y que constituye la plataforma que soporta la ma
yor parte de las etapas del diseo y la depuracin.
Para cubrir el objetivo eminentemente didctico de la implcmentacin de los proyectos que pro
ponemos en esta parte de la obra se ha seleccionado un equipo desarrollado y comercializado por la
prestigiosa empresa Ingeniera de Microsistemas Programados (www.microcontroladores.com). Se
trata de un entrenador didctico universal denominado PIC School que sirve para todo tipo de mi-
crocontroladores PIC as como de perifricos y dispositivos complementarios. Este entrenador, jun
to con una serie de materiales complementarios para el desarrollo de aplicaciones dsPIC, conforman
la plataforma necesaria para la programacin de los distintos laboratorios de esta tercera parte.
El PIC School goza de una enorme flexibilidad porque se basa en un sistema modular con el que
se puede abarcar el aprendizaje de todos los microcontroladores de 8 y 16 bits cncapsuiados con 40
patitas como mximo. Existen mdulos para los microcontroladores PIC12F, PIC16FXXXX,
P1C18FXXXX, PIC24, dsPIC y otros. Tambin hay mdulos enfocados a la experimentacin de
299
300 dsPIC. DISFO PRCTICO DF APLICACIONES
dispositivos especficos como el bus CAN, USB, Internet, Bluetooth, etc. Para conseguir esta am
plia gama de aplicaciones, la tarjeta contiene un grabador, fuente de alimentacin, numerosos pe
rifricos y recursos que pueden conectarse a cualquier patita del procesador y una tarjeta de mon
taje sin soldadura para aadir otros sensores o complementos que se requiera en cada mdulo. Cada
uno de estos mdulos contiene el hardware especfico para el desarrollo de los experimentos, un tu-
torial didctico en el que se explica el funcionamiento de los elementos a los que se destina junto a
una coleccin de proyectos completamente resueltos y comentados y, finalmente un CD con toda
la informacin y programas necesarios para la implementacin de dichos proyectos. As mismo, en
el CD que acompaa a esta obra, podr encontrar todos los laboratorios desarrollados en esta ter
cera parte de laboratorios experimentales. (Figura LO. 1)
Figura L0.1. El entrenador universal PIC School.
El entrenador universal PIC School, no solamente sirve para desarrollar los laboratorios de esta
tercera parte de la obra, sino que adems funciona como grabador de distintos PTC y dsPIC y como
sistema de desarrollo en el que los elementos que contiene no estn conectados, disponiendo de una
plataforma de ampliacin y de adaptadores con los que puede aprender todo tipo de microcontrola-
dores PIC, as como productos relacionados. Hay un mdulo para cada producto.
L0.2. EL FABULOSO "P IC School"
Las principales caractersticas del PIC School son las siguientes:
Permite traba/ar directamente con microcontroladores PIC de 8 bits de las gamas baja, media y al
ta con encapsulados de 8, 18, 28 y 40 contactos pudiendo incluso, con ayuda de un adaptador
dar soporte a los dispositivos de 16 bits y a los potentes dsPIC. Adems dispone de un oscilador
de cuarzo que permite trabajar a diferentes frecuencias, permitiendo tambin utilizar el oscilador
RC incluido en algunos microcontroladores. Asimismo, y mediante un mdulo adaptador, tambin
permite la ejecucin, depuracin y grabacin de controladores digitales de seales dsPIC.
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 301
Dispone de un amplio y representativo nmero de perifricos, con la ventaja que ninguno de ellos
se encuentra conectado de forma predeterminada a las lneas de E/S del microcontrolador. Es el
propio usuario quien; mediante un sencillo cableado sin soldadura, conecta y asocia ios distintos
perifricos esas lneas de E/S segn lo requira la aplicacin. Esto permite tener un contacto ms
directo con l hardware y un mayor control del mismo. Adems dispone de una amplia superficie
de BOARD en la cual se pueden conectar, sin soldadura, los perifricos necesarios para un pro
yecto que no estn incluidos en el entrenador.
Existe una serie de mdulos de prcticas opcionales en donde se van tratando diferentes temas
raconidos con los microcontroladores: comunicaciones, Bluetooth, USB, CAN, R.F., control de
motores, perifricos avanzados y un largo etctera. En esos mdulos tambin so describen apli
caciones que permtan conocer las caractersticas de los PIC desde la sencilla familia 12FXXX has
ta os potentes 18FXXXX. Cada mdulo consta de un conjunto de prcticas y todos los compo
nentes necesarios para implcmentarlas.
El.PIC School tiene tres modos de operacin diferentes que se seleccionan fcilmente mediante un
conmutador. El modo "RUN se emplea cuando el dispositivo est grabado con el programa de
aplicacin a ejecutar. Todas las lneas de E/S estn disponibles para el control de perifricos. El
modo PC " se mpJ'a durante los ciclos de grabacin del dispositivo. Esta grabacin se realiza
mediante el canal serio de un PC dotado del software de grabacin correspondiente (WinPic 800,
IcProg, etc:.). Se suministra el cable de conexin con el PC. Finalmente el modo ICSP permite co
nectar el laboratorio PIC School con otros grabadores externos dotados de las seales ICSP o bien
con depuradores en circuito como el ICD2 de Microchip. De esta forma es posible la emula-
cn/depuracin/grabacin del dispositivo contenido en el laboratorio. Tambin existe un adapta
dor opcional para conectar PIC School al puerto USB del PC.
A la hora de seleccionar los perifricos incluidos en este potente entrenador, cabe destacar que
se han elegido los ms empleados que se distribuyen en las siguientes categoras.
Perifricos de entrada
Dos potencimetros capaces de simular cualquier entrada analgica.
Cuatro interruptores deslizantes y cuatro pulsadores para soportar las entradas digitales.
Un generador lgico capaz de generar ondas simtricas cuadradas de 1Hz, 10Hz, 100Hz y 1KHz
indicado especialmente para aquellas aplicaciones que necesitan controlar tiempos o para aplica
ciones en las que se emplean los mdulos de captura y comparacin (CCP) incluidos en algunos
. ... microcontroladores.
Un teclado matrica de 4x4 teclas considerado el dispositivo de entrada por excelencia en aplica
ciones microelectrnicas.
Perifricos de salida
m Och diodos LED que permiten monitorizar el estado de las lneas a las que se conectan.
Un drver de cuatro canales capaz de proporcionar salidas de alta corriente permitiendo la conexin
de motores, lmparas incandescentes, rels, etc.
Una pantalla LCD de 2x16 caracteres que permite la representacin de mensajes mediante letras,
nmeros o smbolos especiales.
Perifricos de comunicacin
% Interfaz serie. RS232 que permite adaptar los niveles lgicos del microcontrolador a niveles RS232.
Interfaz CAN, que convierte las seales del microcontrolador segn las especificaciones de este
BUS tan utilizado en redes sensoriales.
m Conector RJ11, qu permite la conexin de dispositivos I2C, iButton, RS485, etc.
Conector USB, que permte la conexin con cualquier dispositivo estndar existente en el mercado.
302 dsPIC. DISEO PRCTICO DE APLICACIONES
De esta forma, gracias a esta nueva herramienta, se solventan las cuatro grandes limitaciones
existentes en el resto de entrenadores comerciales para microcontroladores:
1.aEs un entrenador vlido para todas las gamas de microcontroladores PIC, permitiendo al
usuario seleccionar siempre aquel dispositivo que ms se ajuste a las necesidades especficas
de cada proyecto. Pudiendo, adems, seleccionar la frecuencia y tipo de reloj ms adecuados
en cada caso.
2.aDispone de los perifricos ms universales utilizados en la microelectrnica, permitiendo que
la conexin entre estos y el microcontrolador se realice a medida de cada experimento. Ade
ms, gracias a la board que posee, cualquier dispositivo adicional se puede incorporar con fa
cilidad. De esta forma se puede obtener el primer prototipo funcional de un proyecto en el m
nimo tiempo y sin tener que realizar ni una soldadura.
3.aGracias a sus tres modos de funcionamiento, el PIC School se adapta a todas las etapas
que conlleva el desarrollo de una aplicacin microelectrnica, permitiendo la emulacin,
prueba y grabacin de microcontroladores PIC cambiando slo la posicin de un conmu
tador. As se evita la utilizacin de varios dispositivos que realicen cada una de esas
tareas.
4.aDada la gran cantidad de mdulos especficos para el aprendizaje prctico de microcontrola
dores, dsPIC y productos novedosos, es posible conseguir en poco tiempo el conocimiento y
la experiencia para desarrollar cualquier aplicacin real.
LO.3. ARQUITECTURA DE PIC School
La arquitectura de la tarjeta de entrenamiento universal PIC School, se divide en varias secciones
que se presentan de forma pormenorizada.
LO.3.1. Fuente de al i mentaci n
Encargada de obtener la tensin general de +5Vcc con la que se alimenta el laboratorio PIC
School, todos los perifricos de la misma y el procesador empleado. (Figura LO.2.)
Figura LO.2. Fuente do alimentacin.
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 303
CM 1
D
3-15VDC
SW3
ON /OFF
C28
lO OuF
D1
-W
1N4007
U1
JA7.S05/TQ
IN OUT
c 2 :
100n
A P I
-O +5VCC
R3
330
D3
Vcc ON AP3
A P ?
1
3
A
Figura L0.3. Esquema elctrico de la fuente de alimentacin.
El esquema elctrico de la fuente se muestra en la Figura L0.3. A travs del conector CN1 se
aplica una tensin de 9 a 15VDC procedente de un alimcntador estndar con el positivo al centro.
El interruptor SW3 conecta el sistema. El diodo DI evita la polarizacin inversa y con ello los da
os que se pudieran ocasionar al equipo. El regulador U 1estabiliza la tensin a +5 Vcc con 1A m
ximo. Dicha tensin, junto con GND estn disponibles en el conector API y AP2 respectivamente
para alimentar a los circuitos y prototipos del usuario. En el conector AP3 est disponible tambin
la tensin de entrada sin estabilizar +Vin para aquellos circuitos que la requieran. El diodo led D3
indica la presencia de tensin +5Vcc.
LO.3.2. El oscilador
Se encarga de generar la frecuencia principal de trabajo del microcontrolador. Su esquema se muestra
en la Figura 1-5. Est formado por el dispositivo integrado XI y la red RC formada por R20 y C1. Me
diante el jumper J P2 se obtiene la seal de reloj CLKIN. Cerrando 1-2 dicha seal la proporciona el
oscilador XI . Cerrando 2-3 la seal se obtiene de la red RC. El valor de estos componentes determi
na la frecuencia de la misma (consultar parmetros proporcionados por Microchip). (Figura LO.4.)
+5Vcc 46 Vcc
Figura LO.4. Circuito oscilador principal.
304 dsPIC. DJ SEO PRCTICO DE APLICACIONES
El dispositivo XI contiene en su interior un oscilador preciso controlado por cuarzo y todo ello
en una cpsula metlica en formato DIP8. Este oscilador, tambin llamado Canned Oscillator, se
puede adquirir para diferentes frecuencias segn las necesidades. Basta simplemente cambiar uno
por otro para que la aplicacin se ejecute a ms o menos velocidad.
L0.3.3. Los mi crocontrol adores
Es la seccin mas importante del entrenador PIC School y donde se instala el dispositivo PTC con
el que se va a trabajar. Bsicamente consta de cuatro zcalos donde se pueden insertar los disposi
tivos de 8, 18, 28 y 40 patitas tal y como se muestra en la fotografa de la Figura 1.7.
Figura LO.5. Zcalos de insercin de los microcontroladores.
Para los ejercicios de esta parte de la obra, se debe introducir el dsPIC30F4013 junto con un z
calo adaptador en el espacio reservado para dispositivos de 40 patitas.
LO.3.4. Entradas analgicas
Estn formadas por dos potencimetros, tal y como se muestra en la fotografa de la Figura L0.6.
Figura L0.6. Entradas analgicas.
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 305
El esquema elctrico de las entradas analgicas se muestra en la Figura L0.7. Las lneas de los
potencimetros son directamente accesibles desde el bloque de conexin API 6 correspondiente y
se les puede conectar cualquier tipo de circuito elctrico analgico.
AP 16
ENTRADAS ANALOGICAS
Figura L.0.7. Esquema elctrico de las entradas analgicas.
LO.3.5. Entradas digitales
Se muestran en la fotografa de la Figura L0.8 y constan de 4 interruptores deslizantes y otros tan
tos pulsadores.
Figura L0.8. Entradas digitales del entrenador PIC School.
La Figura L0.9 muestra el esquema elctrico de estas ocho entradas cuyas seales estn dispo
nibles en el bloque de conexiones A PI 8. Las seales E0-E3 proceden de los cuatro interruptores
306 dsPIC. DISEO PRCTICO DE APLICACIONES
deslizantes. Cuando estos estn abiertos (hacia arriba) proporcionan nivel lgico 1 gracias a las
resistencias pull-up de RP2. Cuando cualquiera de ellos se cierra (hacia abajo) se conecta directa
mente con la seal GND proporcionando nivel 0".
Por otra parte, los cuatro pulsadores en situacin de reposo permanecen abiertos generando ni
vel lgico 1 gracias a las resistencias pull-up contenidas en RP3. Cuando se accionan se cierra el
circuito con GND y se genera nivel 0.
Figura L0.9. Esquema elctrico de las entradas digitales.
LO.3.6. El generador l gico
Se muestra en la Figura LO. 10 y est basado en el dispositivo SYM10AA. Es capaz de generar on
das cuadradas simtricas a frecuencias de 1Hz, 10Hz, 100Hz y lKHz. Est especialmente indicado
para aplicaciones de control de tiempos y tambin para evaluar y ensayar con los mdulos de cap
tura y comparacin (CCP) contenidos en ciertos modelos de dispositivos PIC.
El esquema elctrico de dicho generador es el que proporciona su propio fabricante y se mues
tra en la Figura LO. 1J . Puede servir como base para mltiples aplicaciones.
La seal de salida se obtiene mediante el bloque de conexiones AP8. Por defecto la frecuencia
de salida es siempre de 1Hz. Mediante el pulsador SW2 se va seleccionando secuencialmente la fre
cuencia a 10Hz, 100Hz, IKHz y vuelta a empezar con 1Hz. Los leds D5-D8 monitorizan la fre
cuencia de salida en todo momento.
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 307
Figura L0.10. Generador lgico de seales.
FREQ.SELE C ^ SW2
i----o o
+5VOCO-
R23
10 K
022 :
lOOn
U6
SEL 1Hz
10HZ
VDD 100Hz
1KHZ
GND OUT
SYM-10
2 D5
7
6
/ y
07 1A
5 08 L rf
3
AP8
R17
470
+5VCC
FREQ OUT
Figura L0.11. Esquema del generador lgico.
L0.3.7. El teclado
Como se aprecia en la Figura LO. 12, el laboratorio PIC School va provisto de un teclado matricial
de 4 x 4 teclas. Se trata del perifrico de entrada por excelencia que va a permitir introducir todo ti
po de datos para su posterior procesamiento.
Figura L0.12. El teclado.
308 dsPIC. DISEO PRCTICO DE APLICACIONES
El control del teclado supone el tener que aprender y utilizar una serie de tcnicas y conceptos
que se emplean en las ms diversas aplicaciones. Manejar conceptos tales como barrido del tecla
do, leda pulsada, rebotes, interrupcin con cada pulsacin, wake up con cada pulsacin, ctc.?da
rn al usuario la posibilidad de acometer ambiciosos proyectos de carcter profesional.
Un dato relevante a tener en cuenta es que a pesar de disponer de 16 teclas, tan slo son necesa
rias 8 lneas de E/S del microcontrolador para su control. Ello es debido a su distribucin matricial.
La Figura 1.17 muestra el teclado asociado al bloque de conexiones AP21. En dicha figura tambin
se puede apreciar la relacin entre fila-columna y la tecla asociada. As pues, la tecla 1est asocia
da con la fila 0 (F0) y la columna 0 (C0).
En el laboratorio P1C School las 8 lneas del teclado se puede conectar a cualquier puerta del PIC,
pero se sugiere conectarlo a las lneas de la puerta B (como se muestra en la Figura LO. 13). Esto se
debe a que la mencionada puerta tiene, en la mayora de los dispositivos PTC, un par de caractersti
cas muy interesantes para el control de un teclado: resistencias pull-up internas para las lneas de en
trada y posibilidad de interrupcin cuando cualquiera de esas lneas de entrada cambie de estado.
SW5
Figura L0.13. Esquema elctrico del teclado.
Las cuatro filas F0-F3 de la Figura LO. 13 se conectan a RB4-RB7 y las cuatro columnas C0-C3
se conectan con las lneas RB0-RB3. La interseccin fila-columna da lugar a seleccionar una tecla
en concreto. Es decir, si se pulsa por ejemplo la tecla 4, supone unir elctricamente la fila F1 con la
columna C0, que es tanto como decir que las lneas RBO y RB5 del PIC se han unido.
La rutina software encargada de explorar el teclado tiene que determinar qu tecla se ha pulsado. Pa
ra ello, por ejemplo, se configuran las lneas RB0-RB3 (las columnas) como salidas y RB4-RB7 (las fi
las) como entradas. Secuencialmente se van activando cada una de las columnas al tiempo que se lee el
estado de las filas. Cuando se detecta que una fila est activa es porque se puls una tecla. Basta cono
cer qu columna se activ en ese momento para sacar la relacin fila-columna que define a dicha tecla.
Esta tarea, conocida como barrido de teclado, ha de repetirse de forma constante y peridica. De esta
manera y, a la velocidad de trabajo del PIC, ser posible detectar una pulsacin en cualquier momento.
Haciendo uso de algunas de las prestaciones que ofrecen los dispositivos PIC en la puerta B, es po
sible desarrollar rutinas ms sofisticadas y eficaces. Efectivamente, programando los registros opor
tunos de un PTC podemos hacer que las entradas RB4-RB7 (las filas) se conecten a las resistencias
pull-up internas que hacen que esas lneas, en estado de reposo, estn a nivel 1. Por otra parte, tam
bin podemos habilitar la interrupcin por cambio de estado de cualquiera de las entradas de la puer
ta B. En este momento las salidas RB0-RB3 (columnas) se ponen a nivel 0 y esta situacin de re
poso se mantiene mientras no se pulse ninguna tecla. El microcontrolador puede dedicarse a otras
tareas o quedarse en standby reduciendo el consumo hasta que ocurra un suceso como puede ser la pul-
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 309
saein de cualquier tecla. Efectivamente, puesto que RB0-RB3 (columnas) estn a 0 y RB4-RB7 (fi
las) estn a 1 gracias a las resistencias pull-up internas, cuando se pulse cualquier tecla se produce
una interrupcin por cambio de estado en cualquiera de las lneas RB4-RB7 (filas). Esa interrupcin
provoca la inmediata atencin del microcontrolador que pasa a ejecutar la rutina que se encargar de
averiguar qu tecla se puls.
LO.3.8. Salidas digitales
Estn formadas por 8 diodos led (S0-S7) que sirven para monitorizar el nivel lgico de las lneas a
las que estn conectados.
Figura LO.14. Salidas digitales.
En el laboratorio PIC School los leds son accesibles mediante el conector API 7 tal y como se mues
tra en el esquema de la Figura LO.l 5, y se pueden conectar individualmente a cualquiera de las lneas
del microcontrolador. Estas lneas son capaces de suministrar 25mA por lo que no es necesario ningn
circuito adicional de amplificacin excepto las resistencias de absorcin contenidas en el pack RPl.
RP1 SIL
330
f,0 00 :0 (/! 00 W i n CO
-J rr>-J! & CO(OO
SALIDAS DIGITALES
Figura L.15. Esquema elctrico de las salidas digitales.
310 dsPIC. DISEO PRCTICO DE APLICACIONES
Un nivel lgico 1 por cualquiera de esas lneas provoca el encendido del led correspondiente.
Un nivel 0 lo apaga. Es una forma muy simple y econmica de reflejar el estado binario de las li
ncas de salida, donde cada led simula el estado de la carga que se desea controlar.
LO.3.9. Salidas di gi tales de al ta corri ente
El laboratorio PIC School dispone de un driver de 4 canales soportado por el dispositivo L293D y
capaz de proporcionar salidas de alta corriente.
'
DRJVER 4 CANALES .6A
Figura LO. 16. Salidas digitales de alta corriente.
En la Figura LO. 17 se puede apreciar el esquema elctrico. El dispositivo integrado L293D dis
pone de 4 canales amplificadores o drivers capaces de proporcionar salidas de hasta 0,6 A a 36V ca
da uno, a partir de seales TTL de baja corriente.
Mediante el conector AP6 se conectan las seales E1-E4 a amplificar y que proceden de sendas
salidas del microcontrolador. El conector CN7 est formado por un conjunto de bomas o ciernas
donde se obtienen las salidas S1-S4 debidamente amplificadas y se realizan las conexiones con las
cargas a controlar.
Mediante el jumper J P8 se selecciona la tensin de salida para las cargas. En la posicin l -2 (por
defecto) dicha tensin es de +5Vcc. En la posicin 2-3 la tensin que alimenta a las cargas se apli
ca externamente a travs de la boma +VM.
Mediante estas salidas de alta corriente el laboratorio PIC School puede controlar cargas de consu
mo elevado, como pueden ser lmparas incandescentes, rels, motores DC, motores paso a paso, etc.
Cabe indicar que el dispositivo L293D integra en su interior sendos diodos para la absorcin de
comentes inversas provocadas por cargas inductivas.
L0.3.10. Int erf az seri e RS-232
Su ubicacin dentro del laboratorio se muestra en la Figura LO. 18. Consiste en el clsico interfaz se
rie que permite adaptar los niveles lgicos del microcontrolador a niveles RS-232.
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 311
SAUOAS DEL DRIVER
CN7
CD CD CD CD CP
13
12
GND
GND
GND
GND
U 5
L293D
VDD
VCC
CO *-
2 2
I L l i i
q- CO Oi r -
2 2 2 z
+5VCC O-
J P8
fffl
16
-0+5VCC
C21
100n
AP6
ENTRADAS AL DRIVER
Figura LO.17. Esquema de las salidas digitales de alta corriente.
Figura L0.18. Interfaz serie RS-232.
Segn el esquema elctrico mostrado en la Figura LO. 19 el interfaz est formado por el popular
adaptador de niveles MAX-232. Mediante el conector AP5 se dispone de las seales de transmisin
y recepcin (TxD y RxD) as como las de control de flujo CTS y RTS. Estas seales proceden del
microcontrolador. El conector CN5 es un conector DB9 hembra estndar, que permite realizar la co
nexin con el perifrico serie. Mediante un led bicolor (D17/D18) se monitoriza todo tipo de trans
misin y/o recepcin.
312 dsPIC. DISEO PRCTICO DE APLICACIONES
Este interfaz permite realizar todo tipo de comunicaciones serie entre el laboratorio P1C School
y cualquier otro equipo mediante el protocolo estndar RS-232. La velocidad de transferencia ir en
funcin del tipo de microcontrolador empleado y su velocidad de trabajo.
Se recuerda que algunos dispositivos PTC incorporan en su interior una UART completa que se
encarga de realizar la mayor parte de los procedimientos propios de la comunicacin segn los pro
tocolos tanto RS-232 como RS-485. En este ltimo caso basta con montar el sencillo circuito de
adaptacin correspondiente sobre el mdulo board de montaje sin soldadura con que cuenta PIC
School.
AP5
-XI o
CANAL SERIE
RTS
RxD
CTS
TxD
C17 :
1001
C15 :
100n
12
11
10
MAX232
U4
T10UT R 11N
T20UT R2IN
TI IN R10UT
T2IN R20UT
C1 + C2+
C1- C2-
V+ V-
o
O
Q
2
> O
C19
10On
13
+5VCC
CN5
RTS
TxD
CTS
RXD
1
T
*5VCC
=j= C18
10On
C16
10On
D17 '
ROJ OfTx)'
INTERFACE RS-232
r D18
\ VERDE (Rx)
Figura LO.19. Esquema elctrico del interfaz serie RS-232.
LO.3.11. Interfaz bus CAN
Est compuesto por el dispositivo adaptador MCP2551 que convierte las seales lgicas segn las
especificaciones del bus CAN.
Figura L0.20. Interfaz bus CAN.
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 313
El bus CAN permite crear una red con una transferencia de datos muy robusta y fiable entre el mi-
crocontrolador principal (host) y todo tipo de dispositivos o nodos CAN conectados entre s median
te 2 hilos. Este protocolo es muy empleado por la industria del automvil y algunos dispositivos PIC
incorporan mediante hardware interno todos los mecanismos necesarios para su implementacin.
En la Figura L0.21 se muestra el esquema elctrico de este interfaz incorporado en el laborato
rio PTC School. Por el conector APIO se proporcionan, procedentes del microcontrolador, las sea
les RxCAN y TxCAN que van a parar al circuito de adaptacin MCP2551. Las seales de salida
CANH y CANL se obtienen por el conector CN6 (DB9 macho) y de aqu van a parar a los diferen
tes nodos de la red. El circuito de adaptacin es capaz de conectar con hasta 112 nodos. Mediante
el jumper J P1 se habilita o no la resistencia Terminal R2 segn qu lugar ocupe el laboratorio en la
red (por defecto habilitada).
Figura L0.21. Esquema del interfaz CAN.
LO.3.12. Pantalla LCD
Se trata de uno de los perifricos ms verstiles e interesantes que dispone el laboratorio PIC School.
Se muestra en la Figura L0.22 y es capaz de visualizar dos lneas de 16 caracteres alfanumricos
cada una.
Este potente perifrico de salida va a permitir representar cualquier tipo de mensaje compuesto
de letras, nmeros y smbolos produciendo adems diferentes efectos de visualizacin como des
plazamientos a izquierda y derecha, parpadeos, scrolls, etc.
1.a transferencia de informacin entre la pantalla LCD y el microcontrolador se realiza en para
lelo en grupos de 4 u 8 bits de datos y se conecta con las lneas de E/S mediante el conector AP20.
El esquema elctrico se muestra en la Figura L0.23.
314 dsPIC. DISEO PRCTICO DE APLICACIONES
Figura LO.22. Pintalla LCD.
Existe adems otro conector, el AP9, donde se conectan las seales que controlan el flujo y ti
po de informacin que se transfiere. Con la seal RS se determina si la pantalla recibe el cdigo
ASCII del carcter a visualizar (nivel 1) o bien un cdigo de instruccin (nivel 0). Mediante
la seal RW el microcontrolador informa a la pantalla LCD si se va a leer o escribir sobre la mis
ma. Finalmente, con la seal E, se habilita o no a esa pantalla. Cuando esta seal vale 0 la pan
talla queda desconectada, las lneas de datos quedan en alta impedancia. Cuando vale 1, la
pantalla queda habilitada para recibir o mandar datos.
U 8
L C D
Figura L0.23. Esquema elctrico del LCD.
La resistencia R19 permite ajustar el contraste del LCD. Con el valor de 4K7 se consigue un con
traste medio aceptable. Su valor se puede modificar.
LO.3.13. Conectores para interfaz RJ 11 y USB
Son simples conectores de propsito general y se pueden observar en la fotografa de la Figura
LO. 24.
LABORATORIO : EL SISTEMA DE DESARROLLO PIC School 315
Figura LO.24. Conectores USB y R) 77.
LO.3.14 Seccin de grabacin
Se muestra en la fotografa de la Figura L0.25 y se encarga, mediante el software oportuno, de
realizar los ciclos de lectura/grabacin del dispositivo PIC contenido en el laboratorio.
Figura LO.25. Circuito grabador de la placa PIC School.
El esquema por bloques de la Figura L0.26 trata de sintetizar el funcionamiento del circuito de
grabacin que dispone el laboratorio PIC School.
Todos los dispositivos PIC disponen de 3 seales para la lectura/grabacin de la memoria de pro
grama, la memoria EEPROM para datos y la memoria de configuracin. La seal PTCDATA permite
transferir los datos de forma serie y sncrona entre el PIC y el hardware de grabacin, la seal PICCLK
transporta la seal de reloj para el sincronismo de los datos y la seal PICMCLR, que inicia los ciclos
de lectura/grabacin y aplica la tensin Vpp necesaria. Estas tres seales son adems compartidas y
empleadas como lneas de E/S de propsito general una vez que el PIC ha sido grabado.
316 dsPIC DISEO PRCTICO DE APLICACIONES
Estas tres seales se conectan con tres fuentes diferentes segn el modo de operacin seleccio
nado mediante el conmutador SW4.
Figura L0.26. Esquema por bloques del circuito de grabacin.
El modo RUN se emplea cuando el dispositivo est grabado. Las tres seales del PIC anterior
mente mencionadas se consideran lneas de E/S de propsito general y estn disponibles a travs de
los bloques de conexin correspondientes, para ser utilizadas por los perifricos de la aplicacin.
En el modo I CSP el laboratorio queda configurado para que el PTC actual insertado se pueda
lccr/grabar a travs de las seales que se aplican mediante el conector RJ 11(ICSP: In Circuit Se
rial Programing). Estas seales a su vez las debe proporcionar un grabador externo dotado de su
correspondiente software de grabacin. Se puede emplear el mdulo 1CD2 de Microchip junto con
el entorno integrado de desarrollo MPLAB, que se puede obtener de forma gratuita desde
www.microchip.com. El mdulo ICD2 adems de grabar dispositivos es capaz de realizar depu
racin en circuito en tiempo real, con ciertos modelos de dispositivos PIC.
En el modo PC la lectura/grabacin del PIC se realiza a travs de las seales del canal serie de
un PC dotado del correspondiente software de grabacin. Un diodo led, el Vpp ON, indica transfe
rencia de datos entre el PC y el laboratorio. Entre los mltiples tipos de software existentes, noso
tros hemos elegido el WinPICBOO y el IcProg, con los que hemos obtenido excelentes resultados.
Ambos programas se pueden descargar y actualizar de forma gratuita en las direcciones http://per-
so.wanadoo.es/siscobf/winpic800.htm y en www.ic-prog.com.
Se reitera una vez ms que, aunque un software de grabacin determinado grabe mltiples dis
positivos y de diferentes familias, es necesario que tambin haya compatibilidad a nivel hardware.
Esta compatibilidad viene dada fundamentalmente por la distribucin de patillas del dispositivo en
cuestin.
L0.4. EL MDULO DSPIC PARA LA PIC School
Para aprender a disear experimentalmente aplicaciones con la PIC School sobre diferentes dispo
sitivos y temas. Ingeniera de Microsistemas Programados S.L. comercializa diversos mdulos
conteniendo los componentes complementarios a los existentes en la PIC School y que requieren los
proyectos que se proponen. As existen mdulos para el aprendizaje de PIC12F, PIC18F, Internet,
Buetooth, USB, etc. El mdulo dsPIC, cuyo kit de materiales se muestra en la Figura LO.27 tiene la
LABORATORIO 0: EL SISTEMA DE DESARROLLO PIC School 317
misin de soportar todas las experiencias que se proponen en este libro y muchas ms y consta de
los siguientes componentes:
1. Adaptador de zcalo con dsPIC30F4013 incorporado.
2. Motor de corriente continua.
3. Circuito integrado para controlar LCD LCDSYM20AA.
4..Cables y material auxiliar.
5. Tutoral con ejercicios y proyectos progresivos comentados y resueltos (este libro).
6. CD con informacin tcnica y programas.
Figura L0.27. Fotografa que muestra los materiales que componen el "mdulo dsPIC" para realizarlos
proyectos sobre dsPIC propuestos en este libro y muchos ms en la PIC School.
Para comenzar a trabajar con este mdulo, deber montarse el zcalo adaptador de dsPIC incor
porando el dsPIC30F4013 sobre la placa PIC School. Para ello, la placa PIC School dispone de un
nico zcalo de 40 pines donde se deber insertar. En cada aplicacin slo deber estar insertado el
microcontrolador usado.
LO.5. DESCRIPCIN DEL SOFTWARE
El sistema PIC School puede programar un dispositivo dsPIC directamente a travs del puerto serie
o emplear el canal ICSP y un programador de Microchip. En caso de realizar la grabacin con un
grabador de Microchip, el software de grabacin es el MPLAB, que permite la creacin de un pro
yecto, su depuracin, simulacin y programacin en el dispositivo. En caso de que no se disponga
de un sistema de desarrollo de Microchip, es posible grabar los dsPIC directamente con el hardwa
re de grabacin que se encuentra en la tarjeta PIC School. Para ello, hay que disponer de un fiche
ro hexadecimal correctamente compilado y de un software de programacin que se encargue de
318 dsPIC. DISEO PRCTICO DE APLICACIONES
transferir el fichero desde el ordenador hasta la memoria del dsPIC. Para realizar esta funcin de
programacin, se puede utilizar el software WinPlCSOO. Se trata de un excelente programa de libre
distribucin que puede descargarse de Internet y que se encuentra en la carpeta de Software de Pro
gramacin del CD del libro.
LO.5.1. Software WINP IC800
Este magnfico programa de Francisco Benach permite la programacin de la mayora de dispositi
vos dsPIC presentes en el mercado. Segn van saliendo nuevos modelos al mercado, se puede des
cargar una versin actualizada del software que incluya su programacin. La pgina web a travs de
la cual pueden descargarse gratuitamente versiones futuras que permitan grabar nuevos dsPIC es:
http://perso.wanadoo.es/siscobf/winpic800.htm Cuando se ejecuta el programa WinPlCSOO apare
ce la pantalla principal que dispone de unos mens de acceso a configuraciones del programa y tam
bin de unos conos para acceder directamente a las funciones ms empleadas, como borrar la me
moria de programa, introducir un nuevo fichero en la memoria del dsPIC, etc. Se trata de un
software genrico de programacin de microcontroladores PIC, pero que tambin recoge la gama de
circuitos dsPIC. En la parte superior derecha de la pantalla existe un men desplegable mediante el
cual se puede seleccionar el tipo de dsPIC que se va a programar. En la parte central del programa
hay una pantalla en la que se muestra el cdigo hexadecimal con el que se est trabajando para la
memoria de programa o de datos y un acceso directo a un men de seleccin de la palabra de con
figuracin.
El primer paso antes de realizar ninguna operacin de carga de ficheros es la configuracin del
tipo de hardware de programacin que se va a emplear. Para configurar el tipo de hardware se ha de
acceder al men Configuracin y seleccionar la opcin Hardware. Aparecer una pantalla en la que
se puede seleccionar el tipo de circuito de programacin disponible. En nuestro caso, es necesario
seleccionar el programador tipo PIC School. Adems de seleccionar este tipo de programador, otro
paso indispensable consiste en seleccionar el puerto COM del ordenador a travs del cual se conec
tar a la tarjeta PIC School. Por ejemplo, en la pantalla mostrada en la Figura L0.28, se ha selec
cionado el puerto C0M3. Para seleccionar un puerto en el que conectar el equipo PIC School, se de
be verificar previamente que es un puerto serie que se encuentra libre en el ordenador, es decir, que
no est siendo empleando por un MODEM, un ratn u otro dispositivo. No hay que modificar el res-
V/nPlc800 3 . 5 5 g
Q H S
1Schi vo Ed cor Disposavo cof t gj f acin Ldo.iv Ai,ua
H ! S* i% i? % j p x c r ! ^ ! 3 0 F 4 0 1 3 j j j I
I "S C d i g o 2 Da' - u a $ C o n t i c i . 4$Co d .TCSP --- t& $ k M
0 x 0 0 0 0 0 F F F F F F F F F FF F F F F P F F F F F FF F F F F F F F F F F F F F F F F F F F F F F F F F a
0 x 0 0 0 1 0 : F F F F F F F F F FF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
0x 00020: F F F F F F F F F FF F F F F F F F F F F F F F F F F F F F F PPPPP F F F FP P P P F FF F
0 x 0 0 0 3 0 : F F F F F F F F F FF P PPFFFP F F F FF P F F F F F F F F F F F F F F F F F F F F F F F F
UXUU4U: F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
0 x 0 0 0 5 0 : F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F PPPPPF FFPPPP F F F F F F
0 x 0 0 0 6 0 : F PPPFF F F F FF P P P F FF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
< 0 x 0 0 0 7 0 : F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
0 x 0 0 0 8 0 : F F F F F F F F F F F F F F F F F F F FFPPP F F F F P P P P F FF F PPPPPP F F F F F F
0 x 0 0 0 9 0 : PF P FF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
Ox OOOAO: F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
OxOOOBO: F F F F F F F F F FP P F F F F F F PPPPPF F F F F F F F F F F F F F F F F F F F F F F F F Y
>
1 Hx>T 7em rL FT l
Figura L0.28. Pntalla principili del software de programacin WinPlCSOO.
LABORATORIO 0: EL SISTFMA DE DESARROLLO PIC School 319
wmPlc80 [ Hardware Confgi.
S o lc c c io n d e l Hardware
G I P - U S B - H F 1
G I P - U S B - 2 3 2
I H E X - P a r a U L e l P o r t
; J DM P r o g r a m m e r
M l c r o 4 y o u
M i c r o 4 y o u _ 8 7 7
Po J )J . l n
; P r a P r o g
; PG3D
: P i c 8 0 0
13
sI eJ b jPlift
I t i & s de 3/C eL p\s*rfco
^ Bloqueo contigui acin F
9pp?. 1
v / . w w m i : .-im f Uc &Z V<d F
: r..; ..8 r . .Usar 15clv F
- l - M OV - I nv- xnvr
. si cy. i DTK +4- F r r
|cts
0 . Ir t s z
F
F r r
O :hy. !'* o J - r r r
0 V f I- j J F r r
. -m I- sJ "
r r r
& ^ J ::>!- J - . F r r
Cancelar Confi cant canbiua
Figura L0.29. Primer paso: es necesario seleccionar el tipo de programador y escoger un puerto serie
del PC.
to de iconos y casillas de seleccin que aparecen en la parte derecha de la pantalla.
La seleccin del tipo de programador que se va a utilizar tan slo es necesario la primera vez que
se ejecuta el programa. Para aplicaciones posteriores, esta configuracin habr quedado almacena
da como predeterminada, y se podr comprobar en la parte inferior izquierda de la pantalla princi
pal, en donde aparece PIC School y el puerto COM seleccionado.
El primer paso antes de iniciar una programacin consiste en seleccionar el modelo de dsPTC con
el que se va a trabajar. En nuestro caso, se selecciona el 30F4013. El men de seleccin se encuen
tra en la zona superior derecha de la pantalla principal. Al lado del nombre de cada modelo, se pue
de apreciar una breve descripcin de sus caractersticas principales. (Figura LO.30.)
Tras seleccionar el dispositivo, hay que abrir el fichero hexadecimal que se ha generado previa
mente con el programa MPLAB y que se va a introducir en la memoria de programa del dsPIC. Pa
ra abrir este fichero, se puede seleccionar el primer icono de la parte izquierda de la pantalla que
muestra una carpeta abierta. Al haber seleccionado un fichero hexadecimal para la memoria de pro
grama, aparecer en la pantalla del software de grabacin un conjunto de datos en hexadecimal que
se corresponden con el valor binario que va a ser introducido en cada una de las posiciones de me
moria de programa del dsPIC. El software permite hacer un recorrido por toda la memoria FLASH
del dsPIC y observar los vectores que estn ocupados con instrucciones y aquellos que se encuen-
VVinPic800 - 3. b i g
fcNvo Ejfan Dpipasiivo Cur/iga-scbc taioma filuda
G?- ?Q ^
[UrrfidBwifec
Figura LO.30. Seleccionando el modelo de dsPIC con el que se va a trabajar.
320 dsPIC DISEO PRCTICO DE APLICACIONES
- W l n P f c 8 0 0 - 3 . 5 5 g
E ) @ B
I Ar i hwo Fdct n f ^spcxtfwo ![ dema Ainjd
G * * H ^ * i ? % | PI C -x ! j J 1 3 0 F 4 0 1 3
C J C d i g o '- D a t o s # C o n i g . 4 3 Co d .ICSP 1 T - : '% k # 1
0 X 0 0 0 0 0 : 8 A 3 0 0 0 0 0 2 8 8 2 8 4 3 0 2 D 0 3 0 8 0 0 0 1 2 8 X 8 A 0 0 0 A 1 OCOBAO 0B 0B A1
: *
0x 0 0 0 1 1 1 : A 0 3 U 4 A 12UBAU 0 0 0 0 0 0 0 9 0 B 8 0 3 0 3 4 0 0 2 F 0 1 A 1 2 1 1 8 0 3 A 0 0 8 2 F
j .
0 X 0 0 0 2 0 : A 0 2 8 2 D B 1 3 0 0 8 AOODAP 2 0 0 8 3 0 A 0 1 8 0 3 B 10 DA 1 0 0 2 8 2 4 2 D 0 8 2 1
0 x 0 0 0 3 0 : 6 4 0 0 A P 19 00 B A D 0 8 2 0 3 0 0 8 2 1 4 1 1 D 0 3 4 0 1 0 2 E 401. 9A B 2 0 1 A 2 E .
0 x 0 0 0 4 0 : A E 2 8 4 3 A 1 1 2 2 E 0 C 0 8 2 1 9 9 2 8 4 5 A P0 82 D B 0 3 0 0 A 2 0 2 0 1 9 21 00 A D
0 X 0 0 0 5 0 : 0 3 3 0 3 0 A E 2 0 5 7 2R 2 8 5 C A 1 3 0 2 0 0 C 0 8 2 1 9 9 2 8 5 9 A 0 3 0 3 0 0C 0 82 D
0 x 0 0 0 6 0 : 9 9 2 0 5 F 7 7 1 1 8 A 0 C 3 0 4 3 9 9 2 8 6 5 A D 3 0 0 1 2 A 2 0 0 4 6C1E0C 0 1 0 0 9 9
0 x 0 0 0 7 0 : 0 4 0 0 A D A D082B A E 3 0 1 1 0 1 2 8 2 E 0 4 0 0 A D 0 C 0 8 2 C 9 9 2 8 7 B A D 3 0 0 1
> 0 x 0 0 0 8 0 : 0 0 2 0 0 4 1 F 0 1 81 0 6 0 5 8 3 9 F 1 6 8 3 9 9 3 0 1 9 9 8 3 0 2 6 8 3 3 0 9 0 A 6 0 0 9 8
0 x 0 0 0 9 0 : A 8 0 1 A 7 0 6 0 1 A 9 9 F 1 6 8 3 6 5 3 0 0 0 6 6 3 0 F E 6 7 3 0 4 6 0 7 1 2 8 3 A 63IK 10
Ox OOQAO: A 7 0 1 8 5 2 6 0 1 A 8 2 7 0 0 A A 28 00 A B 6 4 0 0 A C A A 3 0 1 4 A D30 FA A A 2 0 0 4
OxOOOBO: 3 1 2 0 A C 0 9 0 0 A 6 3 2 8 0 8 5 A 8 0 0 A 7 A A 0 8 2 6 A B 0 8 2 7 A C 0 8 2 8 6 4 2 0 6 4
Device:
\m ^ m m H
<Atrs (I; Siguenje> J ( Cancel J 1 Ayuda
Figura L1.6. Seleccin del dispositivo dsPIC30F4013.
El siguiente paso consiste en dar un nombre al proyecto y seleccionar una carpeta en la que guar
dar los ficheros generados, como el fichero hexadecimal que ser generado y que se programar en
la memoria FLASH del dsPIC. Finalmente, el cuarto y ltimo paso del Project Wizard solicita aa
dir los ficheros de cdigo necesarios para el proyecto. En este caso, hay que seleccionar el fichero
Laboratoriol.s que se encuentra en la carpeta Laboratorio 1dentro de la carpeta Laboratorios del
CD que acompaa al libro. Cualquiera de los pasos que se han realizado en esta configuracin, pue
den ser modificados una vez creado el proyecto. Por ejemplo, tambin es posible crear el proyecto
sin aadir el fichero con el cdigo fuente y crearlo posteriormente.
328 dsPIC. DISEO PRCTICO DE APLICACIONES
Project Wi7ard
Step Two:
Select a language tQQlsvrte
Active T oolsuite:
Toobuite Contents
MPLA.B LINK30 Objcct Linker (pic30- ld.ox)
UB30 Archiver (pic30- ar exe)
Location
C:\Aichivosdepiograma\Microchp\MPLABASM30Sute\bin\pic30-as. Browse
Help! My Suite Isnt Listed! ~~|
f~l Show a9installed toolsuites
<Atrs ~[| Siguiente: Cancelar Ayuda
Figura L1.7. Seleccin del compilador ASM.30, de libre distribucin y propiedad de Microchip.
La ventana del proyecto debe contener el fichero Laboratorio l.s bajo el directorio Source, el fi
chero p30f4013.gld bajo el directorio Linker Script y el fichero p30f4013.inc bajo el directorio He-
ader Files. Es imprescindible aadir estos tres ficheros en el proyecto para que el programa pueda
ser compilado sin errores. Los ficheros con nombre p30f4013 son universales para cualquier apli
cacin que utilice este modelo de dsPIC. Figura L1.8.
Para aadir estos dos ficheros a un proyecto hay que seleccionar la opcin Add File pinchando
con el botn derecho del ratn encima de cada directorio, tanto Header files como Linker Script.
Despus hay que buscar los ficheros en el disco duro, ya que se encuentran dentro de las carpetas
de instalacin del MPLAB en unos directorios nombrados INC y GLD, es decir, con las mismas ex
tensiones que los ficheros. Dentro de estas carpetas se encuentran los ficheros de definicin para to
dos los modelos de dsPIC. El fichero p30f4013.gld que se encuentra en la ubicacin C:\Archivos
de programa\Microchip\MPLAB ASM30 Suite\Support\gld del disco duro del ordenador. El fi
chero p30f4013.inc est en la ubicacin C:\Archivos de programa\Microchip\MPLAB ASM30
Suite\Support\gld.
I L b o ra to no l.mc w
Q Laborat or i ol .mcp
Q Source Res
j- Practica l.s
Header Files
: p30f4013.inc
Object Files
Library Files
B Linker Scripts
p30f4013.gld
Other Files
Figura L1.8. Ventana del proyecto Laboratorio!.
LABORATORIO 1: APLICACIN DE INSTRUCCIONES DSP CON ENTRADAS Y SALIDAS... 329
Al comienzo del programa en ensamblador hay que realizar una llamada al fichero p30f4013.inc.
Tambin es recomendable incorporar la definicin de la palabra de configuracin para el programa,
la cual ser generada en el fichero hexadecimal y cargada directamente por el software de grabacin.
Tambin cabe destacar que el resto de patitas del dsPIC que no se utilizan en el proyecto conviene
configurarlas como entradas digitales.
.include p30f4013.inc
.text
[lobal main
_main:
C.LR PORTD SE CONFIGURA LA PUERTA D COMO
MOV
#0x000F, WO ENTRADA RD0 RDl RD2 Y RD3
MOV WO, TRISD RD8 COMO SALIDA (AVISO)
MOV #0xFF0AV0 PUERTA B COMO SALIDA
MOV WUTRISB
MOV WO,PORTD APAGA RD8, AVISO
bucle:
BSET CORCON,#IF TRABAJ O CON ENTEROS
MOV PORTD.W4 LEE PORTD EN W4
AND W4,#OxOOOC,W l SE LEEN LOS BITS RD2 Y RD3 EN
LSR wi ,#0x0002, m EL REGISTRO W2
AND W4,#Ox0003,W3 Y RD0 Y RDl ENW3
CPSGT W3.W2 SI W3 >W2 HACEMOS
GOTO W3 MAYOR W3-W2
SUB W3,W2,W7 EN CASO CONTRARIO W2-W3
GOTO MULTIPLICA
W3MAYOR:
SUB W2.W3.W7
MULTIPLICA:
MPY W7*W7,A MULTIPLICAMOS LA DIFERENCIA
MOV ACCAL,W2 POR SI MISMA PARA ELEVARLA AL CUADRADO
MOV W2.PORTB MOSTRAMOS EL RESULTADO POR PORTB
MOV #0x0004, WO SI EL VALOR ES INFERIOR A 4
CPSGT W2AV0 APAGAMOS EL AVISO
BRA APAGAR EN CASO CONTRARIO ENCENDEMOS AVISO
BSET PORTD,#Ox8
GOTO bucle
APAGAR:
BCLR PORTD,#0x8
GOTO bucle REPETIMOS EL BUCLE INDEFINIDAMENTE
.end
Figura L1.9. Cdigo fuente del Laboratorio 1.s.
L1.5. CONEXIN DE LOS PERIFRICOS
Para conectar los distintos perifricos empleados en este laboratorio, deber seguirse con detalle las
conexiones descritas en la tabla siguiente.
330 dsPIC. DISEO PRCTICO DE APLICACIONES
Pin del dsP!C30F4013 Elemento de la PIC SCHOOL
RD8 S7 de SALIDAS DIGITALES (les)
RBO SO de SALIDAS DIGITALES
RB1 SI de SALIDAS DIGITALES
RB2 S2 de SALIDAS DIGITALES
RB3 S3 de SALIDAS DIGITALES
RDO E0 de ENTRADAS DIGITALES (Interruptor)
RD1 El de ENTRADAS DIGITALES
RD2 E2 de ENTRADAS DIGITALES
RD3 E3 de ENTRADAS DIGITALES
L1.6. GRABACIN V EJ ECUCIN
Para compilar el programa se accede a la opcin Project, Build All. Aparece un mensaje que indica
Build Succeeded en caso de que el programa no tenga errores y se haya generado correctamente el
fichero hexadecimal con extensin .hex que se introducir en la memoria FLASH del dsPIC. El l
timo paso consiste en conectar el equipo PIC School al ordenador mediante el puerto serie y ejecu
tar el programa de grabacin WinPICSOO. Desde este software se programa el dsPIC, siguiendo los
pasos sealados en el apartado Software WinPlC800 del captulo anterior.
Resulta conveniente recordar que a la hora de grabar el programa en la taijeta PIC School, se de
ber colocar el interruptor del circuito de grabacin en la posicin PC para realizar la grabacin por
el puerto serie.
Figura L1.10. Para grabar el programa el interruptor del circuito de grabacin deber situarse en la po
sicin PC.
Una vez grabado el programa en el dsPIC mediante el botn Programar Todo del programa Win-
Pic800, para ver el programa funcionando deber pasarse el mismo interruptor anterior a la posicin
RUN, es decir a la posicin central. Slo as comenzar a ejecutarse el programa creado.
LABORATORIO 1: APLICACIN DE INSTRUCCIONES DSP CON ENTRADAS Y SALIDAS... 331
Ahora ya slo falta probar el ejercicio con los perifricos incoiporados en la tarjeta P1C School
y de este modo comprobar que el funcionamiento se corresponde con los objetivos de la prctica.
Ya es posible modificar el val or de los interruptores de la tarjeta PTC School para que se visualicen
distintos valores en los diodos led que se correspondern con la distancia. El dato binario mostrado
en los led ser mayor segn se aumente la diferencia entre el dato introducido por los grupos de 2
interruptores.
Cuando en un grupo de conmutadores se simule la mxima distancia ( l - 1) y en el otro grupo la
mnima (0-0). se encender el led de aviso (RD8) ya que el resultado de la operacin ser mayor de
4. El zumbador dejar de pitar cuando el dato de respuesta vuelva a situarse por debajo de este um
bral. El programa se repite cclicamente.
Figura L1.11. Probando el ejercicio con el equipo PIC School.
L1.7. LIBRERA MATEMTICA
Adems de las instrucciones matemticas especficas que se han presentado en esta prctica, cabe
destacar que Microchip ha desarrollado una librera especfica de funciones matemticas y que ade
ms opera con precisin de simple y doble coma flotante segn el estndar IEEE-754. Esta librera
denominada dsPIC30FMcith Library de libre distribucin se suministra compilada, de modo que no
hay acceso para visualizar cmo se desarrollan las funciones matemticas, pero s se pueden utili
zar en los proyectos.
Adems, tiene la peculiaridad de poder llamar a estas funciones desde lenguaje C o desde len
guaje ensamblador. En la Figura L1.12 se muestra una tabla que resume las funciones matemticas
presentes en esta librera y los ciclos de ejecucin que necesita cada una de ellas operando en coma
flotante.
332 dsPIC. DISEO PRCTICO DE APLICACIONES
Grupo deFundones Funcin Ciclos de ejecucin
Suma 122
Resia 124
Operaciones bsicas en coma flotante Multiplicacin 109
Divisin 361
Cociente 385
Acos 478
Asin 363
Atan 696
Atan2 3206
Funciones Trigonomtricas c Hiperblicas
Cos 3249
Sin 2238
Tan 2460
Cosh 1049
Sinh 525
Tanh 338
Lxp 530
Frcxp 39
Funciones Logartmicas y Exponenciales Ldexp 44
Log 2889
Log10 3007
Potencias
Pow 2134
Sqrt 493
Funciones de redondeo
Ceil 94
Floor 51
Valor absoluto Fabs 6
Funciones de Aritmtica Modular
Modf 151
Fmod 129
Figura L1.12. Tabla con las instrucciones de la librera dsPIC30F Math Library.
NOTA:
En el CD que acompaa al libro podr encontrar los programas de los laboratorios en lenguaje
ensamblador y en C.
jando
a fondo los
temporizadores
de 32 bits
L2.1. OBJETIVOS
Este laboratorio profundiza en el manejo de temporizadores de 32 bits. Para ello, y al igual que se
realizara en el apartado de Simulacin y Programacin de Aplicaciones, se desarrollar un semfo
ro con pulsador. Los objetivos de este laboratorio son los siguientes:
Profundizar en el manejo de temporizadores de 32 bits y estudiar sus ventajas.
Manejar interrupciones controladas por el temporizados as como interrupciones externas provo
cadas con un pulsador.
Mostrar mensajes de texto por la pantalla LCD.
La introduccin de temporizadores de 32 bits en la arquitectura de los dsPIC permite controlar
perodos de tiempo mucho ms grandes que con los anteriores temporizadores de 16 bits de una for
ma mucho ms simple. Estos temporizadores de 32 bits se crean mediante la agrupacin de 2 con
tadores de 16 bits. As, en el presente laboratorio, el temporizador empleado es el compuesto por los
temporizadores 2 y 3 de 16 bits cada uno.
L2.2. DESCRIPCIN DEL LABORATORIO
Para implcmentar el semforo con pulsador se utilizarn varios recursos de la tarjeta de desarrollo
PIC School. Por un lado, las salidas de los leds S7 y S5 representarn la luz roja y la luz verde del
semforo respectivamente, cuyo valor ROJ O o VERDE tambin se reflejar sobre la pantalla LCD
incluida en la tarjeta.
Por otro lado, el semforo estar dotado con un pulsador que ser el E7 de las entradas digitales
de la placa, con el fin de que un peatn pueda pulsarlo y as el semforo cambie a ROJ O para que
los vehculos se detengan.
333
334 dsPIC DISEO PRCTICO DE APLICACIONES
Durante 10 segundos, el semforo estar en rojo, para despus pasar a verde durante otros 10 se
gundos, volver a color rojo y as sucesivamente. Esta secuencia slo se interrumpir cuando se ac
tive el pulsador E7 que har que el semforo pse a rojo y comience de nuevo el contaje de 10 se
gundos antes de pasar a color verde.
Figura L2.1. Diagrama de flujo de la aplicacin Semforo.
L2.3. ESQUEMA ELECTRNICO
El esquema electrnico de este laboratorio es sencillo. Por un lado se debe conectar la patita
RAI 1/INT0 a un pulsador de la seccin de Entradas Digitales (E7) de la placa PIC School y por otro
lado, conectar las patitas RDO y RD1 a 2 leds de la seccin Salidas digitales de la placa (S7 y S5).
Para la conexin de la pantalla LCD al dsPIC30F4013, se utilizar el controlador serie SYM 20-
AA que permite de una forma sencilla, mediante una transmisin UART y utilizando solamente una
patita del controlador dsPIC, mostrar mensajes por la misma. As, simplemente iniciando uno de los
mdulos UART del controlador, podremos enviar mensajes a la pantalla LCD a travs de la patita
U1TX.
El controlador serie SYM 20-AA requiere de las conexiones reflejadas en la Tabla L2.1.
Pin SYM 20- AA Pin PIC School
Pin 1 L6 de PIC School
Pin 2 L7 de PIC School
Pin 3,5 GND de PIC School
Pin 4,6,8,10,11,12,13 Sin conectar
Pin 7 RF3 de dsPIC30F4()13
Pin 9 Ede PIC School (LCD)
Pin 14 +5Vcc de PIC School
Pin 15' RS de PIC School
Pin 16 RAV de PIC School
Pin 17 L4 de PIC School
Pin 18 15 de PIC School
Tabla L2.1. Conexiones del controlador LCD serie SYM 20-AA.
LABORATORIO 2: MANEJ ANDO A FONDO LOS TEMPORIZADORES DE 32 BITS 335
Ntese que deben quedar ciertas lneas de la pantalla LCD sin conectar. As las lneas LO, L1, L2
y L3 quedarn libres sin ningn tipo de conexin, as como la entrada GND de la pantalla.
AP17 AP18
SALIDAS DIGITALES ENTRADAS DIGITALES
Figura L2.2. Esquema electrnico del laboratorio 2.
Para enviar datos a la pantalla LCD se aplica a la patita U1TX del mdulo UART1 del
dsPIC30F40l3, a 9600 bps, 8 bits de datos, 1de stop y sin control de flujo, el cdigo ASCII del ca
rcter a mostrar. Previamente es conveniente enviar el carcter OxOOOC que borra la pantalla y co
loca el cursor en la primera fila y columna de la pantalla.
As para escribir la palabra ROJ O, hay que enviar la siguiente secuencia de caracteres en hexa-
decimal: OxOC, 0x52,0x4F, 0x4A, 0x4F, correspondientes al cdigo de limpiar pantalla, y los cdi
gos ASCII de las letras R, O, J y O respectivamente.
L2.4. CONSTRUCCIN DEL PROGRAMA
La programacin del controlador se realizar desde el entorno de desarrollo MPLAB IDE. Puede
elegir entre hacer el desarrollo en lenguaje ensamblador o lenguaje C.
El programa en lenguaje ensamblador se encuentra divido en tres partes principales. La pri
mera muestra la rutina de atencin a la interrupcin externa, que simplemente hace que el se
mforo se ponga en rojo y vuelva a comenzar la secuencia del temporizador. Adems muestra el
mensaje ROJ O en la pantalla LCD.
336 dsPIC DISEO PRCTICO DE APLICACIONES
.global _main
.global INTOInterrupt
.global_T3Intcrrupt
__INTOInterrupt: ;Tratamiento de la interrupcin externa
DSI #3 :V ;Deshabilitamos interrupciones
BCLR IFS0,#0 ;Borramos el flag de la interrupcin
MOV #0x0001;wo ;Ponemos a rojo el semforo
MOV WO,PORTD ;moviendo 1a PORTD
CLR TMR2 ;Borramos el temporizador
CLR TMR3 ;Para que empiece de nuevo
MOV #OxOGOC,WO ;Limpia la pantalla LCD
CALL TRANSMITE
MOV #0x52,WO ;Transmite la letra R
CALL TRANSMITE
MOV #0x004F,W0 ;Letra O
CALL TRANSMITE
MOV #OxO()4A,WO ;Letra J
CALL TRANSMITE
MOV #0x0O4F,W0 ;Letra 0
CALL TRANSMITE
RETFTE ;Devolvemos el control al programa principal
La segunda parte se activa cuando el temporizador alcanza su objetivo y simplemente comprue
ba el estado del semforo para cambiar al estado contrario. As, si estuviera en rojo, pasara a verde
y viceversa, mostrando los mensajes correspondientes por la pantalla LCD y los leds conectados al
puerto D.
__T3Interrupt: ;Tratamiento interrupcin Timer 32 bits
BCLR IFS0,#7 ;Borramos el flag T3IF de la interrupcin
BTSS PORTD,#0 ;Si el semforo est verde, lo ponemos
GOTO ROJ O ;cn rojo
VERDE: ;y en caso contrario
MOV #0x0002,W0 ;lo ponemos en verde
MOV W0,PORTD ;en los leds conectados al puerto D
MOV #OxOOOC,WO ;Borramos LCD
CALL TRANSMITE
MOV #0x0056,W0 ;Mostramos a V
CALL TRANSMITE
MOV #0x0045,W0 ;E
CALL TRANSMITE
MOV #0x0052,W0 ;R
CALL TRANSMITE
MOV #0x0044,W0 ;D
CALL TRANSMITE
MOV #0x0045,W0 ;E
CALL TRANSMITE
GOTO FINAL
ROJO: ;Lo ponemos en rojo
LABORATORIO 2: MANEJ ANDO A FONDO LOS TEMPORIZADORES DE 32 BITS 337
MOV #0x0001 ,W0
MOV W0,PORTD
MOV #OxOOOCWO ;Limpia la pantalla LCD
CALL TRANSMITE
MOV #0x52,W0 ;Transmite la letra R
I f CALL TRANSMITE
MOV #0x004F,W0 ; Letra O
CALI, TRANSMITE
MOV #0x004A,W0 ;Lera J . "
CALL TRANSMITE
*
MOV #0x004p,w0 ;Letra0
CALL TRANSMITE
FINAL:
RETFDE ;Retomo de la interrupcin
La tercera parte se corresponde con el programa principal, que realiza la incializacin de los pe
rifricos y despus entra en un bucle hasta que se origine alguna interrupcin.
.tcxt
_main:
;nicializacin del puerto D
CLR PORTD
MOV #0xFCF0, WO
MOV WO, TRISD
MOV #0x000 LWO
MOV WO,PORT)
CLR WO
;Inicial i zainos el puerto D como
;RD0 y RD1 como salidas
configurando TRISD
;Ponemps el semforo
;en rojo moviendo 1a PORTD
Configuracin de interrupcin externa INTO
MOV #0x000-1, W0 ;Activamos la interrupcin externa
MOV WO, 1EC0 ;INT0 del pin R A11
:Inicializacin del Timer
CLR T2CON
CLR T3CON
CLR TMR3
CLR TMR-2
MOV #0x0280,W0
MOV W0J PR3
MOV #0x0000,W0
MOV W0,PR2
Para cualquier operacin con Timers
Borra el contenido del tcmporizador TMR3
Borra el contenido del temporizador TMR2
Inicializamos el temporizador con
el valor 0x02800000 (10 segundos aprox)
PR3 =00A0
PR2 =0000
BSET IPC1,#I2
BCLR PC1,#3
BCLR IPC1, #14
BCLR IFS0,#7
BSET ifeCO, #7
Activamos lag T3IP =001
Nivel de prioridad 1
Borramos el flag de interrupcin del Timer3
Habilita interrupciones del Timer 3
338 dsPIC DISEO PRCTICO DE APLICACIONES
BSET T2CON, #3 ;FIag T32 =1. Habilitamos Timer 32 bits
BSET T2CON, #15 Comienza el temporizador con prcescaler 1:1
; y fuente del reloj el ciclo de instruccin
'configuracin IJART1
CLR 1BRG ; Configuracin de la velocidad
MOV #0x0019,WO ; del UART1 segn la frmula descrita en la aplicacin 6
MOV W0.U1BRG
MOV #0x0510, WO Configuracin del registro U1STA
MOV WO, IJ ISTA
MOV #0x8020, W0
MOV W0, U1MODE
MOV #OxOOOC,WO ; Limpia pantalla
CALL TRANSMITE
MOV #0x0052,W0 ; Enva R
CLL TRANSMITE
MOV #0x004F,W0 ; Enva O
CALL TRANSMITE
MOV #0x004A ,W0 ; Enva J
CALL TRANSMITE
MOV #0x004KW0 ; Enva O
CALL TRANSMITE
PROGRAMA PRINCIPAL
PRINCIPAL:
CLRWDT ;Refrescamos Perro Guardian
GOTO PRINCIPAL ;mientras esperamos que se origine alguna interrupcin
TRANSMITE:
BTSS U 1STA,#TRMT Espera a poder transmitir
BRA TRANSMITE
MOV W0,U1TXREG ;Transmite el dato por el registro LJ1TXREG
RETURN
.end
Para la inicializacin de la configuracin del temporizador de 32 bits, deber tenerse en cuenta
el reloj utilizado en la placa PIC School, que se trata de un cuarzo tipo XT w/PLL 4X de 4 MHz.
Para conseguir una temporizacin de 10 segundos deber calcularse el nmero de ciclos de instruc
cin correspondientes.
Si el cristal es de 4 MHz, el perodo de un ciclo de instruccin ser 1/4 MHz. Si dividimos 10
segundos entre este valor nos dar el nmero de ciclos a contar, que deber multiplicarse por 4 de
bido a las caractersticas (XT w/PLL 4X) del circuito de reloj, obteniendo as un valor de
0x02800000 en hexadecimal, nmero de ciclos a contar.
Por otro lado, para conseguir una velocidad de 9600 baudios, deber aplicarse la frmula ana
lizada en la Aplicacin 6, Perifricos avanzados, correspondiente a la Segunda Parte de la obra.
U1BREG = (Frecuencia / (16 Baudios)) -1 = (4.000.000 / 153.600)-!= 26-1 = 25 =0x19
En el Laboratorio 4y Comunicacin USART encriptada se ahondar en el concepto anterior.
LABORATORIO 2: MANEJANDO A FONDO LOS TEMPORIZADORES DE 32 BITS 339
bl mismo programa en lenguaje C podra ser el siguiente:
include up30f4G13.hM
void attribute (( interrupt )) _T3Intermpt(void)
(
IFS0bils.T3TF =0;
if (PORTDbits.RDO = I)
PORTD - 2;
else
PORTD=I;
}
void attribute (( interrupt )) J NTOInterrupt(void)
(
IFSObits.INTOIF = 0;
PORTD=I;
TMR2 =0;
TMR3 =0:
; }
int main(void)
-'Jr i ' \ , . . . ' . ' '
//Inicializacin del temporizador
T2CON =0;
T3CON =0:
TMR3 = 0;
TMR2 =0;
PR3 =0x0280;
PR2 =0:
I PC1bits.T31P =ObOO 1;
FS0biis.T3IF =0:
IEC0bits.T3IE =1:
T2C:ONbits.T32 = 1;
T2CONbits.TON =1;
//Inicializacin del Puerto D
PORTD =0:
TRTSD =OxFCFO;
//Inicializacin de la rutina externa INT0
inco =1;
//Com enzo semforo
PORTD =1;
//Programa principal
whiled)
asmf'elrwdt"):
return(O);
}/
340 dsPIC. DISEO PRCTICO DE APLICACIONES
Una vez compilado el programa, se procede a su grabacin en la placa PIC School, de igual
manera que en captulos anteriores. Debe tenerse especial cuidado a la hora de configurar en la
pestaa Config del programa WinPic800, y seleccionar como fuente primaria del reloj XTx/PLL
4X - XT With 4X PLL.
L2.5. CONEXIN DE LOS PERIFRICOS
Adems de las conexiones anteriormente descritas para el controlador LCD serie, se debern co
nectar los siguientes perifricos de la placa PIC School, segn la Tabla L2.2.
Pin del dsPIC30F4013 Elemento de la PIC School
RA 1 E7 de E. DIGITALES
RDO S7 de SALIDAS DIGITALES
RD1 S5 de SALIDAS DIGITALES
RF3/U1TX PIN 7 DEL CONTROLADOR LCD SERIE
Tabla L2.2. Conexiones del semforo en la placa PIC School.
La Figura L2.3 recoge las conexiones anteriormente descritas.
Figura L2.3. Conexionado del semforo en la placa PIC School.
L2.6. GRABACIN Y EJECUCIN
Una vez cargado el fichero hexadecimal en el programa WinPic800, habr que configurar en la pes
taa Config del programa WinPicSOO el reloj de la placa PIC School. Para ello, una vez cargado el
fichero .hex, seleccionar de la lista desplegable Primary Oscillator la opcin XT W/PLL 4X - XT
cristal oscillator with 4X PLL. Tras llevar a cabo esta operacin, pulsando la opcin Grabar Todo,
se programar el controlador con la aplicacin del semforo.
LABORATORIO 2: MANEJ ANDO A FONDO LOS TEMPORIZA DORES DE 32 BITS 341
Al pasar el interruptor de la placa PIC School a modo RUN, comenzar la ejecucin del programa.
El led S7 de la placa que simula la luz roja de un semforo, se encender durante los primeros
10 segundos. A continuacin, se encender el led S5 que simula la luz verde del semforo durante
otros 10 segundos. De manera simultnea, aparecern en pantalla los mensajes ROJ O y VERDE.
Figura L2.4. Ejecucin del programa semforo sobre la placa PIC School.
Si en algn momento se pulsa E7, entonces automticamente comenzar de nuevo la secuencia
de 10 segundos de la luz roja.
LABORATORIO
..................... ' * ; ; 7 M ! 1! ! ! ! ! ! 1 '
analgico/digital
de alta precisin
L3.1. OBJETIVOS
El siguiente laboratorio describe cmo realizar una conversin analgico/digital de 12 bits optimi
zada empleando el dsP!C30F4013. Los dsPIC presentan mayor resolucin de conversin que los mi-
crocontroladores de Microchip, ya que stos son de 8 y 10 bits en funcin del modelo. Adems, la
velocidad de conversin tambin se ha elevado. Estas mejoras unidas a la capacidad de clculo DSP
van a permitir optimizar notablemente los resultados de las conversiones A/D. Los objetivos de es
ta prctica son:
Desarrollar una conversin analgico/digital de 12 bits de resolucin empleando el equipo PC
School
Mostrar las ventajas del clculo del dsPIC para realizar conversiones A/D optimizadas.
En esta prctica se van a utilizar las ventajas del conversor analgico/digital de los dsPIC unido
a su capacidad de clculo, ya que se va a muestrear 10 veces una seal en el mnimo tiempo posi
ble para calcular el dato promedio de la conversin.
Para un microcontrolador resultara muy costoso tener que promediar 10 seales, y si el dato fue
se alto, por ejemplo 1000, posiblemente se utilizara una memoria externa para almacenar las mues
tras y posteriormente ir leyndolas, sumndolas y finalmente realizar una costosa operacin de di
visin para un microcontrolador MCU. Obtener datos promedios de seales analgicas es
interesante para filtrar posibles ruidos o perturbaciones que puedan influir en un instante concreto
en el valor de salida de un sensor analgico.
Gracias a la capacidad de clculo de los dsPIC, es posible emplear una frmula estadstica que
permite ir obteniendo el dato promedio de un conjunto de datos sin necesidad de tener que almace
narlos para realizar el promedio. La frmula es:
Media_actuat =((Mediaanterior * (Contador - 1)) + Dato_Nuevo) / Contador
343
344 dsPIC. DISEO PRCTICO DE APLICACIONES
En la hoja de clculo de la Figura L3.1 se puede apreciar cmo la media aritmtica obtenida
como el sumatorio de todas las muestras dividido por el nmero de ellas, coincide con el dato fi
nal obtenido empleando la frmula estadstica. Esta frmula implica el empleo de multiplicacio
nes y divisiones de 16 bits, y debe realizarse a gran velocidad, no siendo aceptable su duracin
en un microcontrolador MCU.
Contador Dato Nuevo Media Actual
1 88 88
2 12 50,00
3 300 133,33
4 453 213,25
5 452 261,00
6 451 292,67
7 213 281,29
8 1025 374,25
9 2096 565,56
10 4000 909,00
Sumatorio 9090
Media Aritmtica 909
Figura L3.1. Clculos matemticos para obtener el promedio de valores.
L3.2. DESCRIPCIN DEL LABORATORIO
Para simular este ejercicio se utilizar un potencimetro de la tarjeta PIC School que servir para
introducir una seal analgica variable entre 0 V y 5 V y el dato resultado del mencionado clcu
lo estadstico se visualizar en modo binario por la pantalla LCD. Aunque la conversin analgi
co/digital es de 12 bits, en pantalla se mostrarn los 16 bits del registro donde se almacenar el
resultado, por eso los cuatro primeros bits siempre sern cero. El potencimetro utilizado se
corresponde con el nombre P1 del grupo ENTRADAS ANALOGICAS de la tarjeta y su seal es
introducida en la patita ANO del dsPIC.
En el organigrama de la Figura L3.2 se observan los pasos que hay que seguir para realizar
correctamente este laboratorio. Tras realizar las configuraciones necesarias en el dsPIC para con
figurar correctamente patitas de entrada y salida y la conversin A/D se realizan las 10 muestras y
el valor del resultado es mostrado en la pantalla LCD. El programa finaliza tras mostrar este re
sultado, permaneciendo en un bucle infinito. Al igual que sucede con un microcontrolador MCU,
la estructura general de un programa con dsPIC debe ser un bucle que se repite indefinidamente
ejecutando un conjunto de tareas o un conjunto de acciones a realizar y que una vez terminadas no
requieran ninguna otra ejecucin. En este ltimo caso, hay que finalizar el programa en un bucle
infinito de espera o introduciendo el dispositivo en modo bajo consumo, el cual detiene la CPU y,
por lo tanto, finaliza la ejecucin de ms instrucciones.
LABORATORIO 3: OPTIMIZANDO LA CONVERSIN ANALGICO/DIGITAL DE ALTA... 345
Seleccin de! DSPJ C
Seleccin de la palabra de
INICIO
Configuraciones de
Entrada y Salida
NO
Configuracin de .
Ir inrniA n- '
Aplicar la Frmula
estadstica
Muestra del
resultado en ia
pantalla LCD
Figura L3.2. Organigrama del programa de conversin analgico/digital optimizada.
L3.3. ESQUEMA ELECTRNICO
El esquema electrnico que resuelve esta prctica utiliza el dsPTC30F4013 correctamente alimen
tado y con su circuito de Reset y oscilador, un potencimetro ajustable con vstago y la conexin
a la pantalla LCD descrita en el Laboratorio 2, Utilizando tempo rizadores de 32 bits. Las cone
xiones necesarias para el dsPTC son las mismas que en la anterior experiencia y se vuelve a utili
zar un circuito oscilador con cuarzo de 4 MHz ya que es el que hay en la tarjeta PIC School. Cuan
do se realizan conversiones analgico/digitales es conveniente que la impedancia de salida del
sensor o del potencimetro que se va a utilizar no supere los 10 K2. Por esta razn, la resistencia
interna del potencimetro utilizado en esta prctica es de 1KQ. Deber conectarse el potenci
metro en sus extremos a seales de 0 V y 5 V para obtener una tensin variable entre estos dos
valores segn se mueva el vstago. Asimismo, se utilizar la patita U1TX para enviar a la pantalla
LCD el resultado.
346 dsPIC. DISEO PRCTICO DE APLICACIONES
Figura L3.3. Esquema electrnico del Laboratorio 2.
L3.4. CONSTRUCCIN DEL PROGRAMA
Para la construccin del programa se utilizar la herramienta de inicializacin de perifricos Visual
Initializer. Esta herramienta, como ya se describi en la Segunda Parte, permite configurar de for
ma rpida y cmoda el conversor analgico digital. Para ello se configurar este perifrico segn los
datos de la Finura L3.4.
12-bit A/D Converter Configuration
C'jei*s,vJ Shj!............................................................ UlH\Sl J Int
_ Cnabjt 5 1 1 CPU&63pO,Vli>Mrt
inat t e lMfluc<\SlTL
_ - . Cf. .a .
v ,
CdOtnAFcttut i ' - ' y e d i f t j a w :
CWJIOcOcctfw.
1 Pirz'iy. | v
Udoge S-ajccsr VdtVieh.AVscfcYrli v Cy t'rue v-;
SinfcioHode! CervwwsnMoe
CcrtQjre asA/D l^nAv.
_.vj *153* Swcs 1Iwsir*irrc
SanPaf cc. 13X
*E-w : i IClc.l
CorrO5oi/lrt 1 v
Corr/9cv*iPfli i^ i 0 ; u c ec )
OockSowse 2**.5*Tq> v
V& Si r f af J k o r t j ' o r c : l bcl ht ef eMol } v
0
V Pr I
*Pr 2
= 3
i t r e c k A P o . I wJ : 'ANO V;|
SneleA Nea lno.1: vRf- y,:
art 3 Pci. l-W A.')
*
G-srrp'e9 Mea Input V
L _ .
Figura L3.4. Configuracin del mdulo de Conversin Analgico Digital.
LABORATORIO 3: OPTIMIZANDO LA CONVERSIN ANALGICO/DIGITAI DF AITA. 347
Una vez configurado el mdulo, se generar el cdigo fuente necesario para dicha inicializacin
a travs del men Code Generation de la herramienta Visual Initializer.
El programa tambin utiliza el mdulo UART1 para enviar datos a la pantalla LCD. La confi
guracin de dicho mdulo no se realizar a travs de la herramienta Visual Initializer, ya que, se cre
ar un fichero con el cdigo fuente correspondiente a la visualizacin de datos por el LCD total
mente aparte del programa que realiza la conversin. As, dicho fichero podr utilizarse en cualquier
otra prctica sin tener que reescribir el cdigo correspondiente y sin tener que volver a inicializar el
mdulo dentro de la herramienta Visual Initializer.
Tras esta inicializacin, el programa entra en un bucle infinito hasta que se d la interrupcin ge
nerada por el Conversor Analgico Digital, que se encargar de.aplicar la frmula estadstica y mos
trar los datos en pantalla.
.include ';p30f40!3.inc"
.section .ndata
eontador: .hword 0x0800
media: .hword 0x0802
dato_nuevo; .hword 0x0804
.section .rcxt
.global ADCInterrupt
__ADCInterrupt:
BGLR 1FS0.#ADIF
MOV ADC BUFO,W0
MOV W0,dato_nuevo
INC contador
DEC eontador. WREG
MUL media
MOV dato_nuevo,W5
ADD W2,W5,W3
MOV contador,'W4
REPEAT #17
DIV.U W3.W4
MOV WO,media
MOV #OxOOOA ,W4;
MOV conta dor,W0
CPSEQ W4,W0
RETFIE
MOV medi a, W0
MOV w0,w2
CALL W2TOLCD
MOV #0x0000,W0
MOV W0,eontador
MOV W0,media
RETFIE
; Variable contador de la frmula
; Variable media de la frmula
; Dato recogido del conversor ADC
; Tratamiento de la interrupcin
;Borrado del 11ag de intemipcin
Recogida del dato de la interrupcin
;Se incrementa el contador
;Se multiplica por la media
; Di visin entera
;La operacin se hace 10 veces
;Sc muestra el valor por el LCD
;Se reinician las variables
.global main
348 dsPIC. DISEO PRCTICO DE APLICACIONES
..mam:
CALL _Visua}lnitialization
MOV #0x0000, WO
MOV W0,dato_nuevo
MOV W0,media
MOV W0,contador
bucle'
goto bucle
cnd
;lnicializacin del CAD
;lnicializacin de las variables
;Bucle infinito
Figura L3.5. Listado del programa Laboratorio 3.
Cabe destacar la instruccin CALL W2TOLCD que llama al procedimiento guardado en el fi
chero W2TOLCD.S que se encuentra en el mismo directorio que la aplicacin. Dicho procedimien
to utiliza el controlador analizado en el laboratorio anterior para mostrar por el LCD el contenido
del registro W2 en binario. As mismo, introduce un retardo para que pueda visualizarse, ya que de
lo contrario, la conversin se hara tan rpidamente que no le dara tiempo a la pantalla LCD a vi
sualizar los datos correctamente.
L3.5. CONEXIN DE LOS PERIFRICOS
Para las conexiones de este laboratorio resulta altamente recomendable aprovechar el conexionado
del controlador serie LCD de la prctica anterior. As, el resto de conexiones tan slo sern las in
dicadas en la Tabla L 2.1.
Pin del dsPIC30F4013 Elemento de la PIC SCHOOL
ANO P1 de ENTRADAS ANALGICAS
RF3/U1TX PIN 7 DEL CONTROLADOR LCD SERIE
Tabla L2.1. Conexiones de los perifricos del Laboratorio 3.
Adems debern conectarse a +5v y a GND las conexiones de referencia del potencimetro Pl
de ENTRADAS ANALGICAS.
L3.6. GRABACIN Y EJ ECUCIN
Para probar el experimento se puede abrir el proyecto que se encuentra en la carpeta LABORA
TORIOS, LABORATORIO 3 del CD del libro o desarrollar un proyecto nuevo siguiendo los pa
sos comentados en la primera prctica y con la ayuda del fichero laboratorio2.s, que se encuentra
en la misma carpeta del CD y contiene el cdigo fuente del ejercicio. Tras escribir el programa, hay
que compilarlo para obtener el fichero hexadecimal y posteriormente ejecutar el software de gra
LABORATORIO 3: OPTIMIZANDO LA CONVERSIN ANALGICO/DIGITAL DE ALTA.. 349
bacin WinPIC800 para grabar la memoria de programa del dsPTC empleando el equipo PIC Scho-
ol conectado al puerto serie del ordenador.
Una vez grabado el ejercicio en el dsPlC modelo 30F4013, se coloca el interruptor del circuito
de grabacin en modo RUN para comenzar su ejecucin. En la pantalla LCD aparecer un dato bi
nario que mostrar los 16 bits, de los cuales, los ltimos 12 muestran el resultado de la conversin
A/D tras realizar la frmula matemtica. Segn se cambie de posicin el valor del potencimetro P1
se observar cmo vara el resultado mostrado en la pantalla LCD. El resultado binario mostrado en
los diodos ir creciendo desde 000000000000 hasta 111111111111, a medida que el valor de la se
al analgica de entrada pasa desde 0V hasta 5V.
Figura L3.5. Probando el ejercido de conversin AD en la tarjeta PIC School.
NOTA:
En el CD que acompaa al libro podr encontrar los programas de los laboratorios en lenguaje
ensamblador y en C.
. ' i , : , . . ..
_:' '--: ' '......... : -
.........
S iS
m
ivS
encriptada
con el USART
: ;
L4.1. OBJETIVOS
En esta prctica se propone comunicar un dsPIC con un ordenador empleando el puerto serie del PC.
Se utiliza el hardware de comunicaciones USART disponible en el dsPIC que permite realizar este
lipo de comunicacin sin emplear recursos de la CPU. Los objetivos de la prctica son:
Configurar correctamente el dsPIC para el envo y recepcin de datos por el puerto serie.
Utilizar el Motor DSP para realizar una encriptacin de los datos en las comunicaciones.
Para visualizar los datos enviados desde el dsPIC en el PC se puede utilizar cualquier programa
Hypcrtcrminal de comunicaciones, como el software Hyperterminal que se encuentra en la carpeta
Accesorios/Comunicaciones del sistema operativo Windows.
Aprovechando las posibilidades matemticas de los dsPIC se pueden desarrollar mecanismos de
encriptacin de comunicaciones mucho ms avanzados que con un microcontrolador MCU. Con un
microcontrolador, para codificar un dato rpidamente se le puede sumar o restar una cantidad fija,
que slo sea conocida por el equipo con el que se establece comunicacin.
Por ejemplo, si se quiere enviar el carcter ASCII z\ correspondiente al cdigo ASCII 122, se
le puede sumar una cantidad de forma que al transmitir el dato no pueda ser reconocido. El equipo
receptor deber restar la misma cantidad al recibir el dato para desencriptarlo y convertirlo en un ca
rcter inteligible. Esto se aplicar a todos los datos transferidos. Sin embargo, un simple desplaza
miento de datos a travs de sumas y restas es una proteccin muy sencilla, que puede ser fcilmen
te descubierta por un programa que pruebe a restar y sumar cifras hasta localizar cadenas de
informacin vlidas.
Con un dsPIC es posible complicar mucho la encriptacin ya que las operaciones matemticas
que se pueden ejecutar a gran velocidad son mucho ms complejas que las sumas o restas de un mi
crocontrolador MCU. Por ejemplo, podemos elevar al cuadrado un dato, dividirlo entre una canti
dad y despus enviar dos datos, el cociente y el resto de la divisin. Para poder desencriptar esta
informacin, habra que conocer que hay 2 datos en transmisin por cada dato enviado, que est
351
352 dsPIC. DISEO PRCTICO DE APLICACIONES
previamente elevado al cuadrado y luego desglosado en cociente y resto de una divisin, que en el
caso de esta experiencia tendr como divisor el valor 100.
L4.2. DESCRIPCIN DEL LABORATORIO
En la aplicacin el dsPIC esperar la recepcin de un carcter ASCII por el puerto serie. Una vez
recibido el dato, lo reenviar hacia el PC a modo de ECO y hacia la pantalla LCD, pero aplicando
antes una codificacin para encriptar los datos. Las comunicaciones se realizan a una velocidad de
9600 baudios, 8 bits de datos y con 1bit de stop. Estos parmetros de la comunicacin hay que te
nerlos en cuenta a la hora de configurar el dsPIC, ya que la comunicacin por el puerto serie es de
tipo asincrono y es necesario que los dos equipos conozcan previamente estos parmetros.
Figura L4.1. Organigrama de la prctica de transferencia de datos encriptados.
El programa se repite de forma indefinida en un bucle. Se espera a la recepcin de un dato del
ordenador. Cuando llegue el dato se aplica el algoritmo de encriptacin que consiste en elevarlo al
cuadrado y dividirlo entre 100. Tras realizar esta operacin tenemos un cociente y un resto, ambos
de 8 bits. Estos dos datos son reenviados hacia el PC y se mostrarn en la pantalla del ordenador.
LABORATORIO 4: COMUNICACIN ENCRIPTADA CON EL USART 353
L4.3. ESQUEMA ELECTRNICO
1 hardware necesario para este programa se encuentra en la tarjeta PIC School. La conexin con
los perifricos es muy sencilla, ya que sobre el circuito conversor serie a LCD del laboratorio ante
rior slo hay que aadir una lnea para recibir los datos del PC, a travs de la lnea U1RX que se co
necta a la patita RxD del interfaz RS-232 de la placa PTC School.
Figura L4.2. Esquema electrnico de la prctica.
Las patitas, en las que se encuentran las salidas hardware de la USART, sern las utilizadas en
este laboratorio. Para probar las comunicaciones y poner en marcha la prctica hay que conectar la
tarjeta PTC School al ordenador empleando un cable para el puerto serie que disponga de un termi
nal DB9 hembra en un extremo y un DB9 macho en el otro. Los conectores tipo DB9 son el estn
dar ms extendido en las comunicaciones por el puerto serie. Es el mismo tipo de cable que se uti
liza para programar los dsPIC a travs del programa WinPIC800. As, se usa el mismo cable de la
siguiente manera: primero se programa el microcontrolador y una vez programado, en segundo lu
gar, antes de pasar a modo RUN, se cambia el cable de posicin en la PIC School, conectndolo
al interfaz RS-232 para poder observar el funcionamiento de dicho laboratorio.
L4.4. CONSTRUCCIN DEL PROGRAMA
El cdigo fuente del programa se encuentra en el CD del libro dentro del directorio LABORATO
RIOS y en el subdirectorio LABORATORIO 4. El fichero se denomina LABORAT0RI04.S. Al
principio es necesario incluir el fichero de definicin p30f4013.inc que contiene todos los bits y re
gistros de control nombrados.
Al comienzo del programa la configuracin que hay que realizar slo afecta al hardware de las
comunicaciones y a las patitas R J X y T1X del dsPIC. La primera de ellas debe configurarse como
entrada digital para poder recibir los datos y la segunda como salida. Es necesario acceder a los re
gistros de control de la USART para activar la comunicacin a la velocidad adecuada.
354 dsPIC. DISEO PRCTICO DE APLICACIONES
.include "p30f4013.incM
.global __U 1RXliiterrupt
L1RX Interrupt: ;Tratamiento de interrupcin de recepcin
BCLR IFS0,#U1RXIF ; de dato. Primero se borra el flag de interrupciones
MOV U1RXREG,W7 : Se mueve a W7 el dato recibido
MPY W7*W7,A ;Se eleva al cuadrado dicho dato
MOV ACCAL,W2 ;Se mueve a W2
MOV
#0x0064,'W3 ;Se divide entre 100
REPEAT #17
DIV.U W2jW3 ;Se transmite el resultado de la divisin
CALL TRANSMITE
MOV W1AVO ;Sc transmite el resto de la divisin
CALL TRANSMITE
RETFE
.global _main
_main:
BSET CORCON,#OxO ;Trabajo con enteros
CALL INCIAUART ;Inicializacin mdulo UART
bucle:
CLRWDT ;Se espera en un bucle infinito
GOTO bucle ; a que se origine una interrupcin por llegada
;de un carcter
N ICI AU ART:
CLR U1BRG ;Se inicial iza U1BREG para transmisin
MOV #0x0019,'W0 ;a 9600 baudios con un reloj de 4Mhz
MOV W0U1BRG
MOV #0x8000, W0 ;Se habilita la recepcin de datos
MOV WO, Ul MODE
MOV #0x0510, WO
MOV WO, U1STA
MOV #0x8020; WO ;Se habilita el mdulo
MOV WO. Ul MODE
MOV #0x0200, WO ;Sc habilita interrupcin por recepcin
MOV WO, IECO
CLR IEC1
CLR IEC2
RETURN
TRANSMITE: ;Rutina que enva un carcter
BTvSS U1STA,#8 Espera a estar disponible
BRA TRANSMITE ;
MOV W0,U ITXREG ;Enva el dato a travs de U1TXREG
RETURN
.end
Figura L4.3. Cdigo fuente del programa Laboratorio 4.
LABORATORIO 4: COMUNICACIN FNCRIPTADA CON EL USAR! 355
Una vez configurado el chip, el programa queda a la espera de recibir un nuevo carcter por el
puerto serie, evento que es detectado por la USART. Cuando llegue el nuevo dato, se descarga y se
aplica el algoritmo de cifrado para reenviarlo. Hay que destacar que la comunicacin es full-duplex,
de modo que si se recibe un nuevo dato mientras se est enviando la respuesta anterior tambin es
almacenado en el buffer de recepcin de la USART.
L4.5. CONEXIN DE LOS PERIFRICOS
La conexin de los perifricos es bien sencilla. Manteniendo las conexiones del adaptador serie al
LCD del ejercicio anterior, slo se debern realizar las conexiones reflejadas en la siguiente tabla y
que pueden apreciarse en la Figura L4.2.
Pin del dsPIC30F4013 Elemento de la PIC SCHOOL
RF2/U1RX RxD de! Interfaz RS-232
KB/U1TX Patita 7 del controlador LCD serie y TxD del interfaz RS-232
L4.6. GRABACIN Y EJECUCIN
Una vez abierto el proyecto LABORATORIO 4 que se encuentra en el CD del libro y tras compilar
y grabar el programa en la memoria del dsPIC mediante el uso de la tarjeta PIC School y el softwa
re WinPIC800, se deber ejecutar un programa de comunicacin en el PC para poder enviar datos
por el puerto serie y recibir las respuestas del dsPIC. A modo de ejemplo, se muestran a continua
cin los pasos necesarios para probar el ejercicio con el programa Hyperterminal de Windows, que
se encuentra en el men Accesorios/Comunicaciones. Recordemos que una vez pasado a modo
ktRUN deberemos cambiar el cable serie utilizado para la grabacin del conector donde se en
cuentra al conector del interfaz serie RS-232.
Descripcin de \<x conexin
3*... Nueva conexin
Esciiba un nombre y elija un cono para la conexin:
Hombre:
[directo C0M1
Icono:
( Aceptor | [ Cancele?
Figura L4.4. Pantalla inicial Iras ejecutar el programa de Windows Hyperteminal.
Tras ejecutar el programa Hyperterminal hay que configurar una nueva conexin, para lo cual el
programa solicita un nombre, y escoger un icono. A continuacin, aparecer otra pantalla en la que se
escoge el puerto COM del PC con el que se quiere comunicar con el dsPIC. Es necesario seleccionar
un puerto COM que est libre, es decir, que no est siendo utilizado por algn otro dispositivo hard
ware conectado en el ordenador. En la pantalla que se muestra en la Figura L4.5 se ha escogido el
356 dsPIC. DISEO PRCTICO DE APLICACIONES
puerto COM1. El ltimo paso de la configuracin es la pantalla de seleccin de velocidad y tipo de
datos. Se ha de escoger la misma configuracin que la cargada en el dsPIC: 9.600 baudios, 8 bits
de datos, sin paridad, 1bit de stop y ningn control de flujo. Tras realizar este ltimo paso, se abrir
el puerto serie del ordenador.
Una vez que el programa entra en ejecucin, todo carcter escrito con el teclado es enviado por
el puerto serie hacia la taijeta PTC School. Cada vez que se reciba un carcter por el puerto es mos
trado en la pantalla. Se puede seleccionar en el men de configuracin del Hypcrtcrminal la opcin
ECO de los caracteres escritos localmente, que sirve para que veamos en la pantalla los caracteres
que estamos tecleando y estn siendo enviados hacia el dsPIC. En la pantalla principal hay 2 iconos
con los que iniciar y detener la comunicacin, que tienen la forma de un telfono colgado y un te
lfono descolgado respectivamente.
directo C0M1
Escffca detafcs del nmero de telfono que desea marcar
Eais o regin; - parta (34;
Cdigo de rea: |91 \
Nmero de
telefona
Conectar usando-
l Aceptar j | C^ xetar ]
Figura L4.5. Seleccin de un puerto COM libre en el ordenador.
Propiedades de COMI
C on hgu ac wn e fe pu e rto j
por segundo: 119200
Bis de datos 18
Bits efeparada: 1
Control de Rupc [
Restaurar predetenroadre
Ac e pt ar j [ C an c e l ar ) [ Api c ar
Figura L4.6. Pantalla de configuracin del puerto serie en el ordenador. Hay que escoger los mismos
parmetros que los seleccionados en la USART del dsPIC.
Respecto a la configuracin necesaria en la taijeta PTC School, se ha de grabar el dsPIC con el fi
chero LABORATORIO 4.hex generado en el proyecto empleando el programa WinPIC800. Hay que
tener en cuenta que el programa WinPIC800 utiliza el puerto serie del ordenador para transmitir los
LABORATORIO 4: COMUNICACIN ENCRIPTADA CON EL USART 357
Figura L4.7. Programa Hyperterminal en ejecucin. Las tedas pulsadas sern enviadas hacia el dsPIC
y los caracteres recibidos se mostrarn por la pantalla.
ficheros hexadecimales a la memoria FLASH del dsPIC. Por esta razn, si se va a utilizar el mismo
puerto serie que el WinPlCSOO para probar posteriormente el programa con el Hyperterminal, el soft
ware WinPICBOO debe estar cerrado. De no ser as, el pueito serie estara controlado por este otro pro
grama y no se podra entrar en comunicacin desde el Hyperterminal.
Tras grabar el dsPIC, se pulsar el botn de Reset para comenzar la ejecucin de la experiencia.
Al teclear un carcter en el programa Hyperterminal de Windows se reciben dos caracteres en la
pantalla del ordenador y en la pantalla LCD, que es un resultado ECO del carcter enviado pero en-
criptado. Se puede probar a realizar manualmente la operacin de desencriptacin y as comprobar
que las operaciones son realizadas correctamente por el dsPIC. Todo carcter ASCII recibido tiene
un valor asignado entre 0 y 255 que puede ser consultado en una tabla estndar de cdigos ASCII o
en el programa Mapa de Caracteres de las Herramientas del sistema operativo Windows.
Figura L4.8. Fotografa de la PIC School conectada al puerto serie de un ordenador y con el Labori-
torio 4 en ejecucin.
358 dsPIC. DISEO PRCTICO DE APLICACIONES
En la fotografa mostrada en la Figura L4.8, se ha tecleado en el ordenador la letra m que se co
rresponde con el cdigo ASCII 109. El resultado de elevar 109 al cuadrado es 11881. Al dividir
11881 entre 100, el resultado es de 118 y resto 81, que se corresponden con los caracteres ASCII de
v y Q respectivamente, que aparecen sobre la pantalla LCD.
NOTA:
En el CD que acompaa al libro podr encontrar los programas de los laboratorios en lenguaje
ensamblador y en C.
' ;
.
ORATORIO
Control de
: ' ?j m -m
un motor de CC
PWM
L5.1. OBJ ETIVOS
Este laboratorio estudia cmo emplear la capacidad del dsPlC para generar seales PWM y regular
la velocidad de funcionamiento de un motor de corriente continua. Se proceder a configurar el m
dulo OC1 del dsPIC30F40l3 para generar una seal cuadrada que aplicada a un chip amplificador
regule la velocidad de funcionamiento de un motor. El dsPIC30F4013 pertenece a la familia de pro
psito general de los dsP!C30F. Sin embargo, existe una familia especfica que dispone de un hard
ware adicional para el control de motores. Estos dispositivos, adems de generar seales PWM pa
ra control bsico de motores de corriente continua, pueden controlar motores ms avanzados, como
los motores Brushlcss y los motores de induccin de corriente alterna.
Microchip ha creado una serie de diseos de referencia para el control de motores de alto rendi
miento empleando la familia dsPIC de control de motores. Estas aplicaciones realizan control vecto
rial de un Motor de Induccin de Alterna, denominado por las siglas ACIM, y control sin sensores de
un Motor de Continua sin escobillas, siglas BLDC. Estas aplicaciones son gratuitas y se encuentran
descritas completamente en las notas de aplicacin AN908 y AN901 de Microchip. Pueden descar
garse desde www.microchip.com en la seccin correspondiente a las Notas de Aplicacin para dsPIC.
Figura L5.1. Sistema de desarrollo para control de motores dsPICDEM MC.1.
359
360 dsPIC DISEO PRCTICO DE APLICACIONES
Gracias a las familias dsPIC30F y dsP33F especficas de control de motores pueden resolverse
aplicaciones de control mucho ms complejas que las habituales con cualquier otro microcontrola-
dor MCU. Como ejemplo, se muestra en la Figura L5.2 el algoritmo de control vectorial que es de
sarrollado por un dsPIC para gestionar un motor AC de induccin. Hace falta una gran capacidad
de clculo para resolver este algoritmo de control en tiempo real ya que dispone de lazos de posi
cin, de velocidad, elementos de control Proporcional-Integral, etc. Para poner en funcionamiento
los ejemplos de aplicacin que facilita Microchip para control avanzado de motores, est disponi
ble el sistema de desarrollo de control de motores dsPICDEM MCI de Microchip. (Figura L5.1).
Figura L5.2. Control vectorial de motores de induccin AC mediante dsPIC.
L5.2. DESCRIPCIN DEL LABORATORIO
En esta prctica se regula la velocidad del motor de corriente continua con cuatro velocidades dis
tintas, seleccionables mediante dos interruptores de la tarjeta PIC School. Con la combinacin 00,
el motor estar parado e ir aumentando su velocidad progresivamente hasta que se seleccione el
mximo valor binario, que se corresponde con los dos interruptores activados, valor 11.
El ejercicio emplea el mdulo hardware Output Compare del dsPIC configurado en modo
PWM sencillo. Para realizar el control bsico de un motor de corriente continua se emplea el con
trol de velocidad en funcin de la tensin de alimentacin del motor. Cuanta mayor sea la tensin
en las bornas del motor, mayor ser la velocidad de giro de su eje. Al aplicar una seal cuadrada a
un motor de corriente continua, se consigue modificar la tensin media aplicada en los terminales
del motor. Manteniendo la misma frecuencia de la seal cuadrada y modificando el ciclo de traba
jo, es dccir, la proporcin de tiempo que la onda cuadrada permanece a nivel alto respecto a nivel
bajo, se consigue que el motor gire a distintas velocidades.
L5.3. ESQUEMA ELECTRNICO
El esquema electrnico configurado en la tarjeta PIC School para esta aplicacin emplea el driver
de motores L293D como interfaz entre el dsPIC y el motor. No se puede conectar directamente el
LABORATORIO 5: CONTROL DE UN MOTOR DE CC MEDIANTE PWM 361
Figura L5.3. Organigrama del Laboratorio 5.
dsPIC a un motor, puesto que no tiene capacidad para suministrar la corriente necesaria a travs
de sus patitas. Hacer esto estropeara el dsPIC. Es necesario utilizar un driver que acte como
amplificador, convirtiendo las seales TTL generadas por el dsPC en seales amplificadas en co
rriente adecuadas para el manejo de un motor. El driver L293D tiene una capacidad de carga de
0,6 A, mucho mayor que los 20 mA suministrados por cada patita de salida de un dsPIC. Otra
ventaja de emplear este driver es que la tensin aplicada al motor puede ser independiente de la
tensin de alimentacin de la electrnica de control que se introduce a travs de la patita +V de
la zona DRIVER 4 CANALES 0,6 A de la placa PIC School. En el presente laboratorio se utili
zar la fuente de alimentacin comn para toda la placa y, por esta razn, esa patita permanece
r desconectada.
AP18
ENTRADAS AL DRIVER ENTRADAS DIGITALES
Figura L5.4. Esquema electrnico del Laboratorio 5.
362 dsPIC. DISEO PRCTICO DE APLICACIONES
L5.4. CONEXIN DE LOS PERIFRICOS
Para llevar a cabo el laboratorio sobre la placa PIC School, debern realizarse 4 conexiones princi
pales, resumidas en la Tabla L 5.1.
Deber prestarse especial atencin a conectar la entrada E4 del DRIVER 4 CANALES, a tierra
(GND en la placa).
Y por ltimo, deber conectarse el motor en los bornes S3 y S4 del DRIVER 4 CANALES.
Pi n del d sPIC30F4013 El ement o de l a PIC SCHOOL
RDO/O1 F3 de DRIVER 4 CANALES (E4 CONECTADO A GND)
RFO EOde ENTRADAS DIGITALES
RF1 El de ENTRADAS DIGITALES
Tabla L5.1. Conexin de los elementos utilizados en el Laboratorio 5.
L5.6. CREACION DEL PROGRAMA
En primer lugar el programa configura el mdulo OCl comparador de salida. Al igual que se indi
c en captulos anteriores, se utilizar la herramienta Visual Initializer para llevar a cabo esta tarea.
CPU Idle Operation
16 Bi t Ti me r 2 C on f i gu rat i on
0 perational S ettings.......
. 0 Enable on Startup
O Gated Time Accumulation
Timer Clock Prescale: | 1:256 v
Timer Period: 1
Timer Frequency: 1,00006400409; (KHz ) (Calc.)
Continue v :
Postscale: :
(msec)
Interrupt
Enable Interrupt on Startup
Interrupt Priority:
Help OK Cancel Apply
Figura L5.5. Configuracin del temporizador medanle Visual Initializer.
El primer paso ser configurar el circuito del reloj y colocar un reloj tipo XT w/PLL 4X a 4 MHz.
A continuacin, se configura el temporizador Timer2 estableciendo los parmetros recogidos en la
Figura L5.5, es decir, habilitarlo al inicio (Encible on startup), pre-cscaler de 1:256 y un perodo
de 1milisegundo. Y por ltimo, segn recoge la Figura L5.6, se proceder a configurar el mdulo
OCl, estableciendo el Timer2 como elemento de con taje, modo de operacin PWM Mode fault pin
disabled y cargando en OC1R el valor 7000 y en OC1RS el valor FFFF.
LABORATORIO 5: CONTROL DE UN MOTOR DE CC MEDIANTE PWM 363
Out put Compare Confi gurat i on
Output Compare Settings----------
0C2 ; 0C3 : 0C4 0C1
I O Enable Interrupt on Startup
' Interrupt Priority:
0
Help OK Cancel Apply
Timebase lor input compare: j Timer 2 :-V:
Compare Operating Mod PWM mode. Fault pin disabled
CPU Idle Operation Continue V
i
OCIR (hex):
'V
j
:
0C1RS (hex):
Activa la salida
RDO paja
encender led de
aviso de fin.
Figura L7.2. Diagrama de flujo del Laboratorio 7.
LABORATORIO 7: GRABANDO LA MEMORIA FLASH DE UN PROGRAMA CON UN. 377
L7.3. ESQUEMA ELECTRNICO
El Laboratorio 7 emplea perifricos analizados en temas anteriores, como son el display LCD, el in
terfaz RS-232 y una salida digital conectada al led S5 que sealiza que el proceso de grabacin en
memoria de programa se ha llevado a cabo. El esquema de estas conexiones se muestra en la Figu
ra L7.3.
CANAL SERIE SALIDAS DIGITALES
Figura L7.3. Esquema electrnico del Laboratorio 7.
17A . CONEXIN DE LOS PERIFRICOS
La conexin de los perifricos queda resumida en la tabla siguiente y es muy similiar a la de labo
ratorios anteriores,
Ratita del dsPIC30F4013 Elemento de la PIC SCHOOL
RF2/U1RX RxD del Interfaz RS-232
RF3/U1TX Ratita 7 del controlador LCD serie
RDO S5 de SALIDAS DIGITALES
L7.5. CONSTRUCCIN DEL PROGRAMA
Para la construccin del Laboratorio 7 se ha creado un proyecto con 3 ficheros de cdigo fuente.
Un primer fichero llamado LCD.s es el encargado de las rutinas de visualizacin de datos por la
pantalla LCD de la placa PTC School y su estudio ya se ha realizado en laboratorios anteriores.
378 dsPIC. DISEO PRCTICO DE APLICACIONES
Hxiste un segundo fichero, denominado grabaprograma.s, que se analiza a continuacin y con
tiene las rutinas necesarias para grabar los 96 bytes recibidos por el puerto serie en la memoria de
programa a partir de la posicin 0x0A00.
Para determinar la primera posicin desde la que se almacena el programa una vez creado den
tro del MPLAB IDE con la opcin View Disassembly listing se puede observar hasta qu posicin
ocupa el mismo. Con un pequeo margen se localiza una posicin libre de la memoria de programa
donde ubicar los datos recibidos por el puerto serie. Para este laboratorio se ha elegido la posicin
OxOAOO.
.global GRABA
.include "p30f40i3.inc"
GRABA:
SECUENCIA DE BORRADO
MOV #0X4041,wO ;carga en NVMCON 0x4041
MOV WO.NVMCON ;para iniciar el borrado
MOV #tblpage(#OxAOO),WO ;mueve a NVMADRU
MOV WO.NVMADRU ;la pgina de memoria a borrar
MOV #tbIoftset(#0xA00),W0 ;mueve a NVMADR
MOV WO, NVMADR los2 bytes de menos peso de la direccin
DfSI #5 ;deshabilita interrupciones en 5 instrucciones
MOV #0X55,W0 ;mueve la secuencia
MOV W0.NVMKEY ;de 55 y AA
MOV #0XAA,W0 ;al registro de control
MOV W0,NVMKEY NVMKEY
BSET NVMCON,#OXF ;activa bit WR (el bit 15de NVMCON)
NOP ;para que se inicie la grabacin
NOP introducir 2 NOP
CLR W2
CLR W3
El fichero grabaprograma contiene la rutina GRABA que comienza borrando 32 instrucciones a
partir de la posicin OxOAOO de la memoria de programa.
; CARGA DE LOS DATOS EN MEMORIA
; RELLENAMOvS LA FILA COMPLETA DE 96 BYTES
MOV
#0X0, wo ;Mueve a TBLPAG
MOV W0,TBLPAG ;la pgina memoria de la direccin a escribir
MOV #0xA00,W0 ;deja en W0 el desplazamiento de la pgina
MOV #0x090 i,W4 ;el primer byte recibido est en 901
MOV #0x096 LW6 ;el ltimo en 0x0961 de la memoria datos
OTRANSTR:
MOV.B [W4],W3 ;carga en W2 los 2 bytes de menos peso
LABORATORIO 7: GRABANDO LA MEMORIA FLASH DE UN PROGRAMA CON UN. 379
ADD W4J 0x0001,W4 laade 1al coniador de direccin
MOV.B [W4],W2 ;carga el dato en W2
SL VV2,#0x008, W2 .desplazael dato al byte alto de W2
ADD
W4>#0x000l,W4 ;aade 1al contador de memoria
MOV.B |W4],W7 ;nive el contenido a W7
ADD W7,W2.W2 ;suma W2+W7 para tener en W2 2 datos
TBLWTL W2,( W0J ;escribe direccin apuntada por W0 el
;contenido W2
TBLWTII
W34W0++] ;guarda W3
ADD W4,#0x0001, W4 :suma uno al contador
CPSEQ W4.W6 ;comprueba si es el ltimo dato
GOTO OTRAINSTR :graba otra instruccin
A continuacin la rutina recupera los datos de las posiciones de memoria 0x0901 hasta la posi
cin 0x0960 para su grabacin en memoria.
; PROCEDIMIENTO DE ESCRITURA
MOV #0x4001.W0 ;indica a NVCOM el dato 0x04001
MOV WO,NVMCON ;para realizar grabacin memoria
DISI #5 ;deshabilita interrupciones en 5 instrucciones
MOV #0X55,W2 ;genera la secuencia de control
MOV W2.NVMKEY ;55 y CAA en NVMKEY
MOV #0XAA,W1
MOV WLNVMKEY
BSET N VMCON,#W R ;A 1el bit WR de NVMCON para que se
NOP ;inice la grabacin
NOP ; y espera con 2 NOP
ESPERA2:
;asimismo espera a que el bit WR
BTSC NVMCON,#WR ;pase a 0
GOTO ESPERA2 ;para seguir con el programa
NOP
Se ejecuta el procedimiento de escritura en memoria como ya se estudiara en secciones anterio-
res de esta obra.
CLR TRSD niciaJ iza PORTD como salida
BSET PORTD,#OxO ;enciende el led conectado a RD0
RETURN ;retomo
Por ltimo, enciende el lcd conectado a RD0 para indicar al usuario que el proceso de grabacin
ha finalizado.
Esta rutina GRABA del fichero GRABAPROGRAMA.s es llamada desde el programa principal al
macenado en el fichero laboratorio?.s. Este fichero contiene las rutinas principales de la aplicacin.
380 dsPIC DISEO PRCTICO DE APLICACIONES
.include "p3Gf401 3.ine"
cclhhl T1R XTnfp.mmf
_lRXInterrupt:
Recepcin de un byte por UART
BCLR IFS0,#U1RXIF
CLR WO
MOV U1RXREG,Wr0
MOV.b W0,[W4] ;Se guardan los datos consecutivamente
AD D W4, #0X0001,W4 ;a partir de la posicin 0x0901
MOV #0x0960,W3 ;hasta la posicin 0x0961
CPSEQ W4,W3
GOTO FNRX ;Si se reciben todos los datos
CALL GRABA ;entonces se graban en FLASH
FNRX:
MOV U 1RXRHG,W2 ; Visualiza el dato recibido
CALL LIMPIA ;en la primera lnea del LCD
CALL W2TOLCD
MOV W4,W2 Visualizala posicin de memoria
: CALL W2TOLCD ;donde guarda dicho dato
RETFIE ;Retomo de la interrupcin
Esta rutina de interrupcin es la encargada de ir guardando los datos recibidos por el puerto se
rie en la memoria de datos del dsPIC. La rutina va guardando los datos desde la posicin 0x0901
hasta la posicin 0x0961. Los guarda en la memoria de datos para que este proceso de almacena
miento sea ms rpido y para que una vez recibidos todos los datos se llame a la rutina GRABA en
cargada de almacenarlos en la memoria FLASH de programa. Mientras no recibe el ltimo dato la
rutina visualiza en pantalla el dato recibido y la posicin de memoria donde es almacenado.
.global _main
main:
CALL INICIAUART Jnicializacin del mdulo UART
MOV #0x0900,W4 ;Direccin donde empezar a
;guardar los datos
bucle: ;PROGRAMA PRINCIPAL
CLRWDT ;Bucle infinito a la espera
GOTO bucle ;de interrupcin
INICIA UART.
CLR
MOV
J nicializacin UART
;Configura U1BREG para 4MHz U1BRG
#0x0019,W0 ;y 9600bps
MOV W0,U 1BRG
MOV #0x8000. W0
MOV W0. U1MODE ;Gonfigura modo
MOV #0x0510. W0
MOV W0, U1STA
MOV #0x8020. WO
MOV W0, UMODE
MOV #0x0200, W0
MOV W0. BCO ;Configura interrupciones
CLR IEC1
CLR IF.-C2
RETURN ;Retomo subrutina
.end
LABORATORIO 7: GRABANDO LA MEMORIA FLASH DE UN PROGRAMA CON UN... 381
Esta parte del cdigo contiene el programa principal, que simplemente inicializa el mdulo
UART para una comunicacin serie a 9600 baudios, 8 bits de datos, 1de stop y sin control de
paridad. Inicia tambin el contador de posicin de memoria donde almacenar los dalos y entra en
un bucle, infinito esperando que se produzca una interrupcin en el mdulo UART al recibir los da
tos del programa Minibootloader.
17.6. GRABACIN Y EJECUCIN DEL PROGRAMA
Una vez compilado el proyecto y generado el fichero laboratorio?.hex hay que cargar dicho fiche
ro en el dsPIC a travs del programa WinPicBOO. Es conveniente recordar que en la pestaa Config
hay que seleccionar XT w/PLL 4X en la opcin Primary Source antes de la grabacin del mismo.
Figura 17 A. Fotografa del Laboratorio 7 montado sobre la PIC School.
A continuacin, se situar el interruptor del circuito grabador de la placa PIC School en modo
RUN para ejecutar el programa.
En la pantalla LCD no aparecer ningn dato hasta que se arranque en el PC el programa Mini-
bootloader, se conecte el cable serie en el conector del interfaz RS232 y se pulse el botn Enviar Da
los del programa Minibootloader. Deber elegirse de forma adecuada el puerto serie a utilizar.
Pu e r t o se ri e : C O M I v
En vi ai programa
Figura L7.5. Programa Minibootloader.
382 dsPIC DISEO PRCTICO DE APLICACIONES
Al pulsar el botn Enviar programa el dsPIC comienza a recibir datos por el puerto serie que se
visualizan en la pantalla LCD junto con la direccin de la memoria donde se almacena, tal como se
puede observar en la Figura L7.6.
Figura L7.6. El display LCD muestra el dato recibido y la posicin de memoria donde es almacenado.
Una vez enviados los datos al dsPIC, el programa Minibootloader muestra un mensaje en pan
talla indicando que el envo ha finalizado. Figura L7.7. Luego el dsPIC activa el led S5 para indicar
que el proceso de grabacin ha concluido. (Figura L7.8.)
Figura L7.7. Fin del envo de datos.
M i rri boot l oa... X
Datos enviados
Aceptar
1
____1
Figura L7.8. El led S7 se
Queda por comprobar que la grabacin ha sido correcta. Mediante el programa WinPicBOO se
leer el contenido de la memoria de programa del dsPIC para efectuar esta comprobacin.
Se coloca el interruptor del circuito de grabacin en posicin PC. Y en el programa WinPic800
se pulsa la opcin Leer Todo. Tras realizar esta operacin en la pestaa Datos se observa que en la
posicin OxOOAOO se encuentran unos bytes distintos al resto, que son los enviados por el programa
Minibootloader. (Figura L7.9.)
enciende al finalizar la grabacin del programa.
LABORATORIO 7: GRABANDO LA MEMORIA FLASH DE UN PROGRAMA CON UN... 383
p WnPic800 - v 3.56.c FRE3
'fiiwbwo CcWv j oc wi {ik*no AnwJa w i w n g n x v w
\g*i \ 0 :; M v ^ ^ % j ?ic 0? HK'zl &
Figura L7.9. Memoria de programa modificada en la posicin 0x00A00.
*><.- ^ m " . V S I ' r : ' % j 3 0 F 4 0 1 3 3:Qr'
: Sn
Datos 4 Conf irj, ^Cod.I CSP
-
r i csr
; <)x009A0: FFFPFF FFFFFF FEFEFF FFFFFF FFFPFF FFEFFF FFFPFF FPFFFP
1
OX009B0: FFFFFF FFFFFF FFFEFF FFFFFF FFFFFF FFEFEF FFFFFF FFFFFF
J uxuuycu: FFFFT FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF
Ok 009D0: FFFFFF FFFFFF FFFPFF FFFFPF FPFFFP FFFFPF FFFPFF PPFFFF
OX009E0: FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF
m
i
OxOOOFO: FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF
QxOOAOO: EF22D2 A802D4 FE6000 OOAO-1 J PFPFF
FFpf pf
FFFPFF FFPFPF
OxOOAlO: FFFFFF FFFFFF FFFFFF FFFFFF Fpf pf f FFPFPF FPFFFP FFFFFF
UX00A20: FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF FFFFFF
inti;
for (i=0;i<longitud;i++)
txt2LCD(cadena[i]);
}
Estas funciones definidas son similares a las ya analizadas en laboratorios anteriores.
En la tercera parte del cdigo del laboratorio se encuentran las rutinas de atencin a las inte
rrupciones.
La interrupcin _ADCInterrupt se encarga de guardar en la variable Temperatura el resultado de
la operacin de conversin analgico digital del sensor colocado en ANO.
La interrupcin JU/ RXInterrupt se encarga de recibir va RS-232 las rdenes de equipo y ac
tuar en consecuencia. Al recibir el comando L enviar a la consola de los ingenieros va UART2
la lectura del sensor de temperatura. Con el comando B limitar la velocidad del motor bajando
en 0x10 su velocidad actual. El comando S anular cualquier limitacin anterior establecida con
el comando B.
Por ltimo, la interrupcin JNTOInierrupt har que la variable Parar tome el valor 0 y as se de
tenga totalmente el vehculo emulando una parada de emergencia.
LABORATORIO 9: PILOTANDO UN FRMULA 1 399
// RUTINAS DE ATENCIN A INTERRUPCIONES
// Atencin a la interrupcin del mdulo ADC
void_attribute ((__interrupt__)) _ADCInterrupt(void)
!
IFSObits.ADTF =0; //Borra tlag de interrupcin
Temperatura =ADCBUFO; //Guarda la temperatura
}
//Atencin a recepcin de orden de equipo
void_attribute _((__interrupt__)) _U I RXInterrupt(void)
i
char comando;
IFSObits.U 1RXIF = 0;
comando =U1RXREG;
if (comando =='L')
i
//Enviar Temperatura por UART2
binario2U A RT2 (Temperatura);
!
if (comando ==B)
limitacin =0x10; //Reducir velocidad
if (comando S')
limitacin =0; //Quitar restriccin
1
//Rutina de interrupcin INTO. Detiene el vehculo
void_attribute__((__interrupt__)) _INT01nterrupt(void)
{
IFSObits.INTOIF =0;
Parar =0; //La variable de control parar =0
}
La cuarta parte contiene las rutinas de inicializacin de los perifricos que ya se han estudiado
en laboratorios anteriores.
//RUTI NAS DH I NI CI ALI ZACI N DE PERI FRI COS
void J niciali/aINTOO
{
IHCObits.INTOlH = 1;
)
void Inicial i zaADC-0
{
ADPCFG =0xFFFF;
ADCON1 = 0;
400 dsPIC. DISEO PRCTICO DE APLICACIONES
ADCSSL = 1;
ADCHS =0;
ADPCFG =0;
ADCON3 =0x0016;
ADCON2 =0;
ADCON1 = 0x80E4;
IPCO =0x4444;
IPC1= 0x4444;
IPC2 =0x4444;
IECObits. ADIE =1;// =0x0800;
}
void InicializaOC I (void)
{
OC1RS =0;
OC1R =0;
OC1CON =0x0006;
T2CON =0x8030;
}
void lnicializaUARTl()
{//Transmisin y recepcin de datos a 9600bps
//con XT w/PLL 4X 4Mhz.
U1BRG =0x0019;
U1MODE =0x8000;
UISTA =0x0510;
UIMODE =0x8020;
IECObits. U I.RXIE =1;
}
void InicializaUART2()
(
U2BRG=0x0019;
U2MODE=OxBOOO;
U2STA =0x0510;
U2MODE=0x8020;
}
Y en la quinta y ltima parte del programa se encuentra el bucle principal del programa que tras
inicializar los perifricos, va calculando la velocidad actual en funcin de los pulsadores conecta
dos a la puerta F, el valor del sensor de temperatura y las rdenes de equipo. As mismo, muestra la
informacin referente a la velocidad y a la temperatura en la pantalla LCD al piloto del vehculo.
// PROGRAMA PRINCIPAL
/ / = = = = = = = = = = =
int main (void)
{
LABORATORIO 9: PILOTANDO UN FRMULA 1 401
// Iteiaiiza la puerta F RFO y RF1 como entradas
TRLSF=3;
//Iniciaiiza el mdulo de comunicacin UART1
InicializaUARTl();
//Iniciaiiza el mdulo de comunicacin UART2
IniciaizaU ART20;
//Iniciaiiza el mdulo de comparacin de salida OC1 para control motor
TnieializaOClO;
//Iniciaiiza el conversor analgico para leer la temperatura
Inicial izaADCQ:
//Iniciaiiza la interrupcin INTO para actuar como parada de emergencia
fnicializalNTOO;
//Iniciaiiza la temperatura y la limitacin del motor a 0
Temperatura =0;
limitacin =0;
//Iniciaiiza PR2 con el valor mximo a introducir en OC1RS
PR2=0x0100:
//Iniciaiiza Parar a 1para que el programa entre en bucle infinito
//hasta que se ejecute la interrupcin INTO
Parar =1;
// Bucle principal del programa
\vhile(Parar ==1)
{
int Velocidad;
int Proteccin;
Proteccin =0;
asm.(,'c l r w ^,:,).
Velocidad =0;
//tee los interruptores de la puerta F para elegir la velocidad
if (PORTFbits.RFO ==1) Velocidad =Velocidad +l;
if (PORTFbits.RFl ==1) Velocidad =Velocidad +2;
txt2LCD()f
//Muestra temperatura en LCD y protege el motor
//si la temperatura es superior a 0x07FF
if (Temperatura >=0x07FF)