PIC32 01 Introduccion PDF
PIC32 01 Introduccion PDF
PIC32 01 Introduccion PDF
_n L_ngu[j_ C32
TABLA DE CONTENIDO
1 INTRODUCCIN............................................................................................................................ 1
ARQUITECTURA DEL PIC32...................................................................................................................... 1
Lectura y escritura de un PBCLK Peripheral..................................................................................... 2
Bus Masters y Acceso Concurrente .................................................................................................... 2
Mdulo de Prefetch Cache.................................................................................................................. 4
Funcionamiento del mdulo de Prefetch Cache ................................................................................. 6
DMA (Direct Memory Access) ............................................................................................................ 6
NCLEO MIPS M4K................................................................................................................................ 9
Pipelines ........................................................................................................................................... 10
MINI-32................................................................................................................................................. 12
2 EL PRIMER PROGRAMA........................................................................................................... 16
CREACIN DEL PROYECTO ..................................................................................................................... 16
CREACIN DEL ARCHIVO FUENTE........................................................................................................... 18
GRABACIN DEL PIC32 USANDO EL BOOTLOADER................................................................................ 20
CREACIN DE LIBRERAS........................................................................................................................ 22
BITS CONFIGURACIN............................................................................................................................ 25
3 EL CIRCUITO DE RELOJ........................................................................................................... 26
RENDIMIENTO VS CONSUMO DE ENERGA.............................................................................................. 27
GENERACIN DEL SYSTEM CLOCK (SYSCLK) ...................................................................................... 28
Oscilador Externo Primario (POSC)................................................................................................ 29
Oscilador Externo Secundario (SOSC)............................................................................................. 32
Oscilador Interno de Alta Velocidad (FRC) ..................................................................................... 32
Oscilador Interno de Baja Potencia (LPRC) .................................................................................... 34
GENERACIN DEL PERIPHERAL BUS CLOCK (PBCLK)........................................................................... 34
GENERACIN DEL USB CLOCK (USBCLK) ........................................................................................... 34
4 PUERTOS DE ENTRADA-SALIDA............................................................................................ 36
REGISTROS DE CONTROL........................................................................................................................ 37
EL PROBLEMA DE LA ESCRITURA............................................................................................................ 39
EJEMPLO 1. USO DE PUERTOS DE ENTRADA/SALIDA.............................................................................. 41
PRCTICA 1. USO DE PUERTOS DE ENTRADA/SALIDA ............................................................................ 43
INTERFACES DIGITALES DE DISTINTOS VOLTAJES.................................................................................. 44
Conexin de 3.3V a 5V...................................................................................................................... 44
Conexin de 5V a 3.3V...................................................................................................................... 47
DISPLAY DE CRISTAL LQUIDO (LCD).................................................................................................... 54
EJEMPLO 2: USO DE DISPLAY LCD 16X2 ............................................................................................... 56
EJEMPLO 3: MOSTRAR VALORES NUMRICOS EN LCD 16X2 .................................................................. 57
LIBRERAS DE C32.................................................................................................................................. 60
TIPOS DE DATOS DE C32......................................................................................................................... 61
PRCTICA 2: FUNCIONES TRIGONOMTRICAS EN LCD 16X2.............................................................. 62
5 INTERRUPCIONES ...................................................................................................................... 63
BITS ASOCIADOS CON CADA FUENTE DE INTERRUPCIN ......................................................................... 63
LIBRERA DE MANEJO DE INTERRUPCIONES ........................................................................................... 66
MANEJO DE INTERRUPCIONES DE UN VECTOR (SINGLE VECTOR) .......................................................... 66
EJEMPLO 1: INTERRUPCIN CN EN SINGLE VECTOR .............................................................................. 67
Configuracin de Change Notification............................................................................................. 68
MLTIPLES INTERRUPCIONES EN UN SOLO VECTOR (SINGLE VECTOR)................................................... 70
EJEMPLO 2. INTERRUPCIONES INT0 Y CN EN EL MISMO VECTOR ........................................................... 71
MANEJO DE INTERRUPCIONES CON MLTIPLES VECTORES ..................................................................... 73
EJEMPLO 3. INTERRUPCIONES INT0 Y CN EN MLTIPLES VECTORES...................................................... 75
USO DE UN TECLADO MATRICIAL .......................................................................................................... 77
5.1.1 Conexin de un Teclado matricial con un PIC32............................................................... 77
5.1.2 Algoritmo para lectura del teclado..................................................................................... 78
EJEMPLO 4. USO DE TECLADO MATRICIAL............................................................................................. 84
6 TIMERS........................................................................................................................................... 85
7 CONVERTIDOR ANLOGO-DIGITAL.................................................................................... 86
8 MODULACIN DE ANCHO DE PULSO (PWM) ..................................................................... 87
9 COMUNICACIN SERIAL ......................................................................................................... 88
10 ALMACENAMIENTO MASIVO................................................................................................. 89
11 UNIVERSAL SERIAL BUS .......................................................................................................... 90
12 ETHERNET.................................................................................................................................... 91
13 SISTEMAS OPERATIVOS DE TIEMPO REAL (RTOS)......................................................... 92
APNDICE A........................................................................................................................................... 93
BITS DE CONFIGURACION............................................................................................................... 93
APNDICE B: LIBRERAS ................................................................................................................... 96
LIBRERA LCD....................................................................................................................................... 96
LIBRERA TECLADO.............................................................................................................................. 106
BIBLIOGRAFA.................................................................................................................................... 111
1- Introduccin
Ing. Juan Ramon Terven Salinas 1
1 INTRODUCCIN
El presente curso est enfocado a estudiantes o Ingenieros de Electrnica o rea afn
con buenos conocimientos de programacin en Lenguaje C y conocimiento de
Microcontroladores. Si usted nunca ha usado un Microcontrolador, le recomiendo
empezar con uno de 8 bits y una vez dominado puede saltar a una familia de 16 bits o
32 bits. En este curso se supone que el lector sabe programar en lenguaje C, por lo tanto
no se explicarn detalles bsicos del lenguaje C y nos enfocaremos ms en lo que se
puede hacer con un Microcontrolador PIC32 usando el lenguaje C32.
Arquitectura del PIC32
Los PIC32 son una familia de microcontroladores de 32 bits de propsito general
del fabricante Microchip Technology. La Figura 1-1 muestra un diagrama a bloques
del PIC32. Los PIC32 contienen un ncleo de 32 bits MIPS M4K desarrollado por
MIPS Technologies. Este ncleo est basado en arquitectura Harvard, ya que posee
buses separados de datos y de instruccin conectados al Bus Matrix.
El ncleo conecta a todos los mdulos a travs de este Bus Matrix, el cual es un
switch de alta velocidad que proporciona conexiones punto a punto entre mdulos como
se muestra en la figura. El Bus Matrix corre a la misma velocidad que el CPU. Los
mdulos conectados directamente a este bus son llamados SYSCLK Peripherals y
pueden correr a la misma velocidad que el CPU, por lo tanto todos los accesos a los
SYSCLK Peripherals se pueden completar en 1 slo ciclo de reloj.
Figura 1-1. Diagrama a bloques del PIC32 [1]
1- Introduccin
Ing. Juan Ramon Terven Salinas 2
Dentro del chip se encuentra otro bus llamado Peripheral Bus, el cual se usa para
comunicar mdulos de menor velocidad como el SPI, UART, I
2
C, ADC, RTCC, etc.
Los mdulos conectados al Peripheral Bus son denominados PBCLK Peripherals. Estos
mdulos corren a una velocidad determinada por el PBCLK, el cual se deriva del reloj
principal (SYSCLK).
Por medio de los bits de configuracin y en tiempo de ejecucin se puede configurar la
velocidad del PBCLK en tasas de 1:1, 1:2, 1:4 y 1:8 del SYSCLK.
Lectura y escritura de un PBCLK Peripheral
Cuando PBCLK corre a la misma velocidad que SYSCLK (1:1), el CPU y los
SYSCLK Peripherals pueden acceder a los PBCLK Peripherals en un ciclo de reloj.
Sin embargo si PBCLK corre a una frecuencia menor, una lectura a un PBCLK
Peripheral tomar tantos ciclos de reloj como lo especifique el divisor. Por ejemplo si el
PBCLK corre a 1:8 del SYSCLK entonces se tomarn 8 ciclos de reloj en leer un PBCLK
Peripheral.
En la escritura es diferente, ya que cuando el CPU escribe en un SFR de un PBCLK
Peripheral, el Bus Matrix toma la operacin de escritura y permite al CPU continuar
con la siguiente operacin. Como resultado an si el PBCLK corre a 1:8 del SYSCLK, el
CPU completar la escritura en un ciclo. Sin embargo la escritura real en el SFR se
completar hasta 8 SYSCLKs despus.
Bus Masters y Acceso Concurrente
La arquitectura del PIC32 usa un concepto llamado Bus Masters. Los Bus Masters
son un conjunto especial de mdulos que pueden iniciar una lectura o escritura de otro
mdulo (o Target). Por ejemplo el CPU puede leer y escribir en la SRAM o en
cualquier otro perifrico. De manera similar, el DMA puede leer y escribir en cualquier
otro perifrico del bus.
Los PIC32 siguen evolucionando pero hasta la fecha los Bus Masters son CPU,
ICD, USB, DMA, Ethernet y CAN.
El Bus Matrix permite funcionamiento concurrente de Bus Masters, por ejemplo si
un Bus Master inicia una transaccin con un mdulo, otro Bus Master puede iniciar una
1- Introduccin
Ing. Juan Ramon Terven Salinas 3
segunda transaccin con otro mdulo aun cuando no haya terminado el Bus Master
anterior.
La Figura 1-2 muestra un ejemplo de 3 transacciones concurrentes. Mientras el
CPU esta tomando instrucciones del mdulo Prefetch Cache, el USB esta leyendo o
escribiendo en la SRAM, y al mismo tiempo el mdulo DMA puede leer del mdulo
UART. En este ejemplo, las transacciones usan caminos separados y no se generan
conflictos ni retrasos.
Figura 1-2. Acceso concurrente [1]
En otro ejemplo, si el CPU quiere acceder a la SRAM mientras el USB est accediendo
a esta, ocurre un conflicto y el Bus Matrix arbitrar y permitir a uno de ellos completar
antes que el otro pueda continuar.
La prioridad est determinada por la programacin de los registros del Bus Matrix. Por
medio de programacin podemos darle mayor prioridad al CPU o a cualquier otro Bus
Master.
Como podemos ver, los Bus Masters pueden transferir datos dentro y fuera del
microcontrolador sin ninguna asistencia del CPU. Los Bus Masters pueden leer y
escribir en otros Bus Masters excepto en el CPU, por ejemplo el mdulo DMA puede
leer o escribir registros USB, sin embargo no puede acceder a los registros del CPU.
Solamente el CPU puede acceder a sus registros.
1- Introduccin
Ing. Juan Ramon Terven Salinas 4
Mdulo de Prefetch Cache
Como se puede observar en las figuras anteriores, el PIC32 usa una memoria Flash
de 128 bits de longitud de palabra. Los diseadores del PIC32 escogieron este ancho
para incrementar el flujo de instrucciones y mejorar el rendimiento del CPU.
Para mejorar an ms el rendimiento, el PIC32 usa un mdulo llamado Prefetch
Cache el cual se adelanta a las instrucciones y almacena 128 bits de instruccin en una
memoria cach de alta velocidad.
El mdulo Prefetch Cache est diseado para almacenar en cach solo el contenido
de la memoria Flash. La memoria SRAM corre a la misma velocidad que el CPU y no
requiere de ninguna memoria cach.
La Figura 1-3 muestra tres escenarios diferentes:
1. El escenario Ideal asume que la memoria Flash corre a la misma velocidad
que el CPU. Esto conlleva a que si la frecuencia del procesador aumenta, el
rendimiento (performance) aumenta linealmente.
Figura 1-3. Efecto de Prefetch Cache [2]
Pero en casi todos los procesadores de alta velocidad, la memoria Flash esta
limitada a una frecuencia menor que la del CPU. Por ejemplo la memoria del PIC32
corre a 30 MHz mximo. Esta restriccin provoca que si la frecuencia del
procesador es mayor que 30MHz, el CPU tiene que insertar un estado de espera por
1- Introduccin
Ing. Juan Ramon Terven Salinas 5
cada leida de la memoria Flash. Si el procesador opera a 60 MHz, se requieren 2
estados de espera.
Debido a estos estados de espera, el rendimiento del CPU se ve reducido.
2. La lnea Non-Cached muestra lo que ocurre cuando no hay mdulo
Prefetch Cache disponible y la memoria Flash est limitada a 30 MHz.
Observe como el rendimiento del procesador cae significativamente con
respecto al Ideal.
3. La lnea Cached muestra el rendimiento cuando el mdulo Prefetch Cache
est habilitado. Observe que el rendimiento es significativamente mejor que
el escenario Non-Cached.
El Mdulo Prefetch Cache consiste de un Prefetch Buffer, memoria cach y la
circuitera lgica asociada (vea la Figura 1-4). Por medio de software podemos habilitar
o inhabilitar el prefetch buffer o la memoria cach.
Figura 1-4. Prefetch Cache [2]
El prefetch buffer tiene la funcin de obtener los siguientes 128 bits de de la
memoria Flash en funcin de la instruccin actual que se est ejecutando. La memoria
cach tiene 16 lneas de 128 bits. Cada lnea puede almacenar 4 instrucciones de 32 bits
u 8 instrucciones de 16 bits.
Por medio de software podemos reservar hasta 4 lneas para almacenar datos
constantes. Esta caracterstica es til si la aplicacin interacta frecuentemente con
datos constantes.
Toda la memoria cach puede ser leda y escrita por el software y tambin puede ser
bloqueada. Cuando una lnea es bloqueada, ya no puede ser reemplazada por nuevos
datos. Esta caracterstica es til para incrementar el rendimiento de fragmentos de
cdigo usados frecuentemente, como un pequeo ciclo o el prlogo de una interrupcin.
1- Introduccin
Ing. Juan Ramon Terven Salinas 6
Funcionamiento del mdulo de Prefetch Cache
A continuacin se describe el funcionamiento del mdulo de Prefetch Cache en un
proceso de 6 pasos:
1. El CPU pide una direccin de Flash especfica (puede ser una instruccin o un
dato constante).
2. Si es la primera vez que el CPU accede a esta direccin, quiere decir que la
memoria cach no contiene esa direccin en particular. Esta condicin es
llamada Cache Miss (falla de cach).
3. Como hubo un fallo en cach, el mdulo de prefetch cache carga el prefetch
buffer con los datos requeridos (mas unas cuantas instrucciones o datos mas
hasta llenar los 128 bits). Esto puede tardar unos cuantos ciclos (SYSCLK)
debido a la baja velocidad de la Flash.
4. Una vez que el buffer tiene los 128 bits de datos, los copia en una lnea
disponible de la memoria cach. El controlador de cach usa el algoritmo LRU
(Leas Recently Used) o de menos usado recientemente para determinar que
lnea de cach usar.
5. Ahora que la direccin pedida est en memoria cach, el mdulo cach le pasa el
contenido al CPU.
6. Mientras el CPU ejecuta la instruccin, el modulo de Prefetch Cache
automticamente carga los siguientes 128 bits de datos de la memoria Flash y
los tiene listos en caso que el CPU los necesite.
DMA (Direct Memory Access)
El DMA es un mdulo Bus Master usado para transferir datos de perifricos a
memoria sin la intervencin del CPU. El mdulo DMA puede acceder a cualquier
direccin de memoria dentro del sistema, ya sea SRAM, Flash o SFRs de perifricos.
Este mdulo est diseado para aumentar la tasa de transferencia de datos y mejorar
el rendimiento del PIC32.
1- Introduccin
Ing. Juan Ramon Terven Salinas 7
Para entender como ayuda el DMA veamos un ejemplo. Suponga que necesitamos
desarrollar una aplicacin que recibe datos por el mdulo UART a una tasa de 115200
bps (bits por segundo). Una solucin comn (sin DMA) consiste en los siguientes pasos
(vea la Figura 1-5):
1. El mdulo UART recibe datos.
2. Se llena el buffer de recepcin (comnmente son 4 bytes en los PIC).
3. Se genera una interrupcin.
4. El CPU deja pendiente lo que est haciendo para obtener los datos del buffer
5. y guardarlos en la RAM para futuras operaciones.
Figura 1-5. Transaccin UART sin DMA [3]
Este procedimiento se repite cada vez que se llena el buffer, y si estamos recibiendo
a 115200 bps, el CPU es interrumpido aproximadamente cada 0.3 milisegundos.
Tome en cuenta que esta tasa de transferencia es muy baja, el mdulo UART del
PIC32 soporta una transferencia de 20Mpbs, lo cual equivaldra a una interrupcin cada
2 microsegundos.
Cuando el CPU es interrumpido constantemente de esta manera se reduce bastante
el rendimiento.
Ahora veamos como ayuda el mdulo DMA.
1- Introduccin
Ing. Juan Ramon Terven Salinas 8
Por medio de software podemos asignar un canal del DMA (se tienen hasta 8
canales) al mdulo UART para que obtenga los datos del buffer UART y los deposite
en RAM. El procedimiento se muestra en la Figura 1-6:
1. El mdulo UART recibe datos.
2. Se llena el buffer de recepcin.
3. El DMA obtiene los datos del buffer UART
4. y los deposita en RAM, adems podemos hacer que el DMA tom mltiples
datos del UART.
5. Cuando el nmero de bytes especificados se transfieren a RAM entonces el
DMA interrumpe al CPU para decirle que ya estn listos los datos en RAM para
que los utilice.
Figura 1-6. Transaccin UART con DMA [3]
De esta manera, el CPU puede hacer otras tareas de mayor importancia y dejar el
manejo del perifrico al mdulo DMA logrando un mayor rendimiento del CPU.
1- Introduccin
Ing. Juan Ramon Terven Salinas 9
Ncleo MIPS M4K
Adems de todas las fantsticas caractersticas de la arquitectura del PIC32, su
verdadero poder radica en su ncleo. Toda la familia PIC32 posee como corazn un
procesador MIPS M4K de 32 bits capaz de funcionar a una frecuencia mxima de 80
MHZ y proporcionando un rendimiento cercano a 1 instruccin por cada ciclo de reloj!
A diferencia de las familias anteriores de PICs como PIC24, PIC18, PIC16, etc. El
rendimiento del PIC32 no se puede medir simplemente con la velocidad del oscilador,
ya que debido a la compleja arquitectura interna de su ncleo y a los mdulos que
ayudan a mejorar el rendimiento (Prefetch cache, cache, DMA), la duracin de cada
instruccin vara por diversos factores como son, la aplicacin, el compilador, la
estructura del cdigo, etc.
Sin embargo con todos los mdulos de rendimiento activados y con una
optimizacin de cdigo, el PIC32 puede llegar a funcionar a 80 MIPS
1
(Millones de
Instrucciones por Segundo) con un reloj de 80 MHz.
A continuacin de listan las caractersticas principales del procesador MIPS M4K
que poseen los PIC32 [6] :
Hasta 1.5DMIPS/MHz de rendimiento.
Memoria cach programable para mejorar la ejecucin desde memoria Flash.
Modo de instrucciones de 16-bit (MIPS16e) para generar cdigo ms compacto.
Controlador de interrupciones sectorizado con 63 niveles de prioridad.
Modos de operacin de Usuario y Kernel (para optimizar el uso de sistema
operativo).
Manipulaciones de bit atmicas (en un solo ciclo) en registros de perifricos.
Unidad de multiplicacin y divisin capaz de multiplicar 32 x 16 bits en un ciclo
de reloj.
Soporte para depuradores y programadores por JTAG e ICD.
Modos de alimentacin programables para reducir el consumo de potencia.
Pipeline de 5 niveles.
Proteccin de cdigo interna para proveer propiedad intelectual.
1
No confundir MIPS que se refiere al nombre del fabricante del ncleo (cuyo origen proviene de
Microprocessor without Interlocked Pipeline Stages) con el trmino MIPS que es el acrnimo de Millions of
Instructions per second (Millones de instrucciones por segundo).
1- Introduccin
Ing. Juan Ramon Terven Salinas 10
Pipelines
El nucleo del PIC32 consiste de 2 pipelines (Figura 1-7), un pipeline de instruccin
de 5 niveles y un pipeline iterativo en la unidad de Multiplicacin y Divisin.
Figura 1-7. Pipelines [4]
Las 5 etapas del pipeline de la unidad de ejecucin (Figura 1-8) son las siguientes:
1. Bsqueda de Instruccin (Instruction Fetch)
2. Ejecucin (Execution)
3. Bsqueda de memoria (Mem Fetch)
4. Alineacin de memoria (Align)
5. Escritura en memoria (Writeback)
La Figura 1-8 muestra como las instrucciones (I0, I1, I2, I3, I4) se ejecutan en el
pipeline.
Asuma que C1 es el primer ciclo de reloj del CPU. Durante este ciclo, la
instruccin I0 es tomada de la memoria de programa (Inst Fetch) y resto del
pipeline est vacio.
En el siguiente ciclo C2, la instruccin I0 pasa a la etapa de ejecucin (E) y al
mismo tiempo, la siguiente instruccin I1 es tomada.
En el siguiente ciclo C3, I0 pasa a la etapa M e I1 pasa a la etapa E y al
mismo tiempo la siguiente instruccin (I2) se busca en memoria (etapa I).
1- Introduccin
Ing. Juan Ramon Terven Salinas 11
En el ciclo C4 ya se tienen 4 etapas del pipeline llenas y en ciclo C5 ya se tiene
el pipeline lleno.
A partir de aqu, el CPU ejecuta una instruccin por cada ciclo de reloj recibido.
Figura 1-8. Pipeline de la unidad de ejecucin [4]
1- Introduccin
Ing. Juan Ramon Terven Salinas 12
MINI-32
Los PIC32 los encontramos en versiones de 64 pines y 100 pines de montaje
superficial. La Figura 1-9 muestra los empaquetados disponibles.
Figura 1-9. Opciones de encapsulado [5]
Para poder realizar prcticas en una tablilla de pruebas usaremos la tarjeta MINI-32
desarrollada por MikroElectronika (http://www.mikroe.com), mostrada en la Figura
1-10.
Esta mini tarjeta posee un PIC32MX534F064H y los componentes mnimos para
echar a volar nuestro microcontrolador (oscilador de cristal de 8 MHz, oscilador de
cristal de baja velocidad de 32.768kHz, boton de reset, conector USB para grabacin y
posible alimentacin, LED de alimentacin y otros 2 LEDs de uso general).
Figura 1-10. Mini-32 [14]
1- Introduccin
Ing. Juan Ramon Terven Salinas 13
La Mini-32 tiene el mismo tamao que un chip de 40 pines (DIP40) y la podemos
usar en nuestra tablilla de pruebas como si fuera un chip de 40 pines. La Figura 1-11
muestra los pines disponibles y sus funciones.
Es importante mencionar que esta tarjeta viene con un Bootloader grabado con
comunicacin USB, de tal forma que no necesitamos un programador de PICs para
hacer nuestras prcticas. Solo requerimos un cable USB con conector mini-B que no
viene incluido en la tarjeta.
Figura 1-11. Pines de la Mini-32 [14]
La Figura 1-12 muestra el diagrama detallado de la tarjeta Mini-32 desarrollada por
Microelectrnica y la Figura 1-13 muestra todos los pines del PIC32MX534F0G4H.
1- Introduccin
Ing. Juan Ramon Terven Salinas 14
Figura 1-12. Diagrama detallado de la Mini-32 [14]
1- Introduccin
Ing. Juan Ramon Terven Salinas 15
Figura 1-13. Pines del PIC32MX534F064H [9]