Laboratorio de Sistemas Embebidos - um.es

44
Laboratorio de Sistemas Embebidos Conceptos generales (2009)

Transcript of Laboratorio de Sistemas Embebidos - um.es

Page 1: Laboratorio de Sistemas Embebidos - um.es

Laboratorio de Sistemas Embebidos

Conceptos generales

(2009)

Page 2: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 3: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (1)

  PIC   Microchip no usa PIC como un acrónimo, pero

son conocidos como Peripheral Interface Controllers

  Familia de microcontroladores con arquitectura Harvard

  Amplia funcionalidad de I/O   Populares por su bajo coste, amplia disponibilidad

y uso, y gran cantidad de recursos sobre ellos   Usado en una amplia gama de dispositivos (ej.

PlayStation)

Page 4: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (2)

  Familia PIC

  PICs de gama baja   Memoria de código

direccionable por 12 bits   Pila de llamada de dos

niveles   Programación por

acumulador   PIC10, PIC12, y algunos

PIC16

Page 5: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (3)

  Familia PIC

  PICs de gama media   Memoria de código

direccionable por 14 bits   Pila de llamada de 8

niveles   Leve modificación del

conjunto de instrucciones

  Mayoritariamente PIC12 y PIC16

Page 6: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (4)

  Familia PIC

  PIC17   Nunca llegó a ser popular   Fue absorbido por el PIC18   Mayor cantidad de

instrucciones   Pila de 16 niveles   Movimiento de datos

registro a registro   Opción de memoria externa   Multiplicador

Page 7: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (5)

  Familia PIC

  PIC18   El más popular de toda

la gama   Hereda las nuevas

funcionalidades del PIC17

  Pila de 31 niveles   Mejora del

direccionamiento

Page 8: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (6)

  Familia PIC

  PIC24   Mejora significativa de la

arquitectura   Mayor frecuencia de

reloj   Capacidades DSP   Primeros PIC de 16 bits

reales (direccionamiento y registros de 16 bits)

  Multiplicación mejorada   División

Page 9: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (7)

  Familia PIC

  dsPIC30   Arquitectura

prácticamente equivalente a PIC24

  El dsPIC30 fue anterior a los PIC24

  Incluye capacidades como procesador de señales digitales

  Canales A/D: 16 canales de 10 bits y 16 canales de 12 bits

Page 10: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (8)

  Familia PIC

  dsPIC33   Incremento del número

de interrupciones disponibles

  Mayor número de timers   Incremento en el número

de líneas de captura de señales de entrada

  Incremento del número de líneas para señales de salida

Page 11: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (9)

  PIC18 -> PIC24   Salto cualitativo en la arquitectura   Paso de tamaño de instrucción de 16 a 24 bits   Frecuencia de reloj doblada   16 registros de trabajo, frente a un único registro

en PIC18   De un registro de estado a dos   La pila pasa a ser software   El multiplicador pasa de 8x8 a 17x17   Inclusión de un divisor

Page 12: Laboratorio de Sistemas Embebidos - um.es

Introducción a los PIC (10)   Resumen comparativo de la familia PIC

Precio ($)

CPU (MIPS)

Flash (KB)

RAM (KB)

EEPROM (KB)

Puertos I/

O

ADC (cha) Input Capture

(cha)

Output Compare (cha)

Motor Control

(cha)

Timers UART SPI I2C CAN

PIC10F222 0.47 0.002 0.75 0.02 0 4 2 8-bit 0 0 0 1 8-bit 1 WDT

0 0 0 0

PIC12HV615 0.71 0.005 1.75 0.0625 0 6 4 10-bit 1 1 0 2 8-bit 2 16-bit 1 WDT

0 0 0 0

PIC14000 5.49 0.005 7 (OTP)

0.1875 0 20 8 8-bit 1 1 0 1 8-bit 1 16-bit 1 WDT

0 0 0 0

PIC16HV785 1.18 0.005 3.5 0.125 0.25 18 12 10-bit 1 1 0 2 8-bit 1 16-bit 1 WDT

0 0 0 0

PIC18F8722 7.41 10 0.125 3.84 1 70 16 10-bit 5 5 0 2 8-bit 3 16-bit 1 WDT

2 1 2 0

PIC24FJ128GA010 5.05 16 128 8 0 86 16 10-bit 5 5 0 5 16-bit 2 2 2 0

PIC24HJ64GP510 4.90 40 64 8 0 85 32 10-bit 32 12-bit

8 8 0 9 16-bit 4 32-bit

2 2 2 1

dsPIC30F6010A 8.31 30 144 8 4 68 16 10-bit 8 8 8 5 16-bit 2 32-bit

2 2 1 2

dsPIC33FJ64MC710 5.82 40 64 16 0 85 24 12-bit 24 10-bit

8 8 8 9 16-bit 4 32-bit

2 2 2 2

Page 13: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 14: Laboratorio de Sistemas Embebidos - um.es

Conceptos generales sobre el dsPIC30F (1)

  Arquitectura optimizada para programación en alto nivel

  144 KB de memoria de programa   12 KB de memoria de datos (8 KB SRAM y 4

KB EEPROM)   Hasta 30 MIPS   Capacidades DSP, comunicación, conversión

analógica. (No trataremos estas características en las prácticas)

Page 15: Laboratorio de Sistemas Embebidos - um.es

Conceptos generales sobre el dsPIC30F (2)

  Modelo de programación   16 registros de trabajo   Pila implementada en

software   W15 -> Puntero a pila   SPLIM -> Límite pila   Pila en espacio de datos

  Registro de estado   Todos los registros están

mapeados en memoria de datos, salvo los que contienen la configuración inicial

Page 16: Laboratorio de Sistemas Embebidos - um.es

Conceptos generales sobre el dsPIC30F (3)

  Memoria de código   Dirección para empezar a ejecutar código

(Reset-GOTO Instruction)   Tabla de vectores de interrupción (normal

y alternativa)   Memoria flasheable de instrucciones   EEPROM que amplia los 8 KB de

memoria de datos   Registros de configuración

Page 17: Laboratorio de Sistemas Embebidos - um.es

Conceptos generales sobre el dsPIC30F (4)

  Memoria de datos   Espacio para los

registros del PIC (Special Function Registers)

  8 KB para datos de programa.

  Direccionamiento opcional hacia memoria en el espacio de código (EEPROM)

Page 18: Laboratorio de Sistemas Embebidos - um.es

Conceptos generales sobre el dsPIC30F (5)

  Primeros registros del PIC y su mapeo en memoria

Page 19: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 20: Laboratorio de Sistemas Embebidos - um.es

Reloj del sistema (1)

  El reloj del sistema viene dado por la selección de una fuente de oscilación y una configuración de la señal dada por éste.

  Tipos de osciladores:   Interno: Disponible en el propio PIC.   Externo: Generalmente instalado en la placa en donde se inserta

el PIC.   Tratamientos posibles a la señal dada por el oscilador:

  Phase Locked Loop (PLL): Multiplica una señal de reloj (aumenta la frecuencia).

  Programmable Clock Divider: Divide una señal de reloj (disminuye la frecuencia).

  La selección del reloj y sus propiedades se guardan en los registros de configuración del sistema (memoria de código).

Page 21: Laboratorio de Sistemas Embebidos - um.es

Reloj del sistema (2)

  Posibles configuraciones de reloj

Page 22: Laboratorio de Sistemas Embebidos - um.es

Reloj del sistema (3)

  Esquema general de funcionamiento del reloj del sistema

Page 23: Laboratorio de Sistemas Embebidos - um.es

Reloj del sistema (4)

  La frecuencia a la que funciona el PIC (Fcy), es decir, a la que se ejecutan las instrucciones, se calcularía según la siguiente expresión:

Fcy = (Fosc*PLL)/Post/4, , donde:

  Fosc: Frecuencia del oscilador usado.   PLL: Multiplicador que implica el preescaler.   Post: Divisor que implica el   4: Indica los ciclos necesarios para completar una

instrucción (considerar que no existe pipeline)

Page 24: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 25: Laboratorio de Sistemas Embebidos - um.es

Entrada/salida con puertos paralelos (1)

  La E/S del PIC permite conectar éste a diversos dispositivos.   Aunque los PIC suelen diponer de otros tipos de comunicación

(RS232, SPI, I2C, CAN, etc), los puertos de comunicación paralelos, o Parallel I/O (PIO) Ports, son los más comunes.

  La mayoría de las pines (patillas) de un PIC pueden usarse como líneas de E/S, aunque también pueden tener un uso específico en su conexión con diversos periféricos.

  Las líneas de E/S se organizan en puertos para facilitar su identificación.

  El dsPIC30F6014 dispone de 68 líneas PIO, divididas en 6 puertos.

Page 26: Laboratorio de Sistemas Embebidos - um.es

Entrada/salida con puertos paralelos (2)

  Cada puerto tiene tres registros para su operación   TRISx: Indica la dirección de los datos (1 entrada y 0

salida)   PORTx: Lee el nivel lógico de la línea en cuestión.   LATx: Lee el valor del latch del puerto.

  Accediendo a los bits individuales de estos registros se puede acceder a una línea concreta de I/O.

  Por ejemplo, el bit 15 del registro LATA permite leer el valor de la línea 15 del puerto A.

Page 27: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 28: Laboratorio de Sistemas Embebidos - um.es

Timers (1)

  Un timer es un reloj que periódicamente emite una señal.

  Los timers en el PIC están implementados como contadores que se incrementan con el reloj del sistema (generalmente).

  Útiles para programar tareas periódicas o basadas en control temporal.

  El dsPIC30F6014 dispone de 5 timers de 16 bits: Timer1, Timer2/3 y Timer 4/5. Los cuatro últimos pueden agruparse para formar timers de 32 bits.

Page 29: Laboratorio de Sistemas Embebidos - um.es

Timers (2)

  Esquema general   Registros:

  TMRx: Valor actual del timer.

  PRx: Periodo del timer.   TxCON: Configuración

del timer   Cuando TMRx=PRx se

habilita la bandera asociada al timer.

  En timers de 32 bits el esquema variaría ligeramente

Page 30: Laboratorio de Sistemas Embebidos - um.es

Timers (3)

  El registro asociado TxCON establece:   La habilitación del timer.   El funcionamiento en diversos estados de ejecución (bajo

consumo, etc).   El preescaler usado. El reloj del sistema (o reloj externo)

funciona demasiado rápido para un timer. Preescaler disponibles: 1:1, 1:8, 1:64 y 1:256.

  El periodo de un timer viene dado por: P= (Fcy / PRx) / Pre ,donde Pre es el divisor de frecuencia que implica el

preescaler.

Page 31: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 32: Laboratorio de Sistemas Embebidos - um.es

Interrupciones (1)

  Las interrupciones sirven para controlar de forma asíncrona el flujo del software y para que el PIC informe de determinados eventos.

  Existen dos tipos de interrupciones:   Interrupciones controladas por el usuario. Son configuradas

por el usuario y sirven para gestionar el funcionamiento del hardware y actuar ante determinados eventos.   Interrupciones internas. Son las más comunes, y están

relacionadas con los interfaces de comunicación, los timers, etc.   Interrupciones externas. Están conectadas a líneas externas

(pines), y son activadas cuando éstas reciben un valor lógico alto.   Excepciones del procesador (traps). Las genera el PIC ante

situaciones anómalas. Pueden ser tratadas, pero no desactivadas.

  El dsPIC30F6014 dispone de 41 interrupciones de usuario (4 de ellas externas) y 4 traps.

Page 33: Laboratorio de Sistemas Embebidos - um.es

Interrupciones (2)

  La parte del código que debe ejecutarse ante una interrupción se direcciona a partir de la Tabla de Vectores de Interrupción, o Interrupt Vector Table (IVT).

  Dicha dirección equivale al comienzo de la Rutina de Servicio a la Interrupción, o Interrupt Service Routine (ISR).

  Se incluye, además, una tabla alternativa (AIVT) que se usa en situaciones de depuración o pruebas.

Page 34: Laboratorio de Sistemas Embebidos - um.es

Interrupciones (3)

  Control de las interrupciones   28 registros de control

  INTCON1: Contiene los bits de bandera (flags) para los traps.   INTCON2: Configura el comportamiento de las interrupciones

externas y el uso de la AIVT.   IFS0-4: Contienen los bits de estado o flags para todas las

interrupciones de usuario.   IEC0-4: Bits de habilitación de las interrupciones de usuario.

  Los bits usados para cada interrupción de usuario en los registros IFS e IEC están asignados en el mismo orden en el que se encuentran en la IVT.

  Por ejemplo, la primer interrupción de la IVT (INT0), está en el bit 0 de los registros IFS0 y del IEC0..

Page 35: Laboratorio de Sistemas Embebidos - um.es

Interrupciones (4)

  Prioridad de las interrupciones (1)   La prioridad es útil para establecer un

orden de preferencia ante la ocurrencia de dos o más interrupciones simultáneas.

  Por defecto, la estrategia seguida sigue el orden natural de las prioridades, que no es más que el orden en la IVT.

  Adicionalmente existe un sistema de asignación de prioridades

Page 36: Laboratorio de Sistemas Embebidos - um.es

Interrupciones (5)   Prioridad de las interrupciones (y 2)

  Registros usados:   IPC0-10: Indican el valor de prioridad asignado a una interrupción,

desde 0 hasta 7 (la mayor prioridad).   CORCON: Contiene los bits menos significativos, y asignables por el

usuario, del valor de Nivel de Prioridad de las Interrupciones, o Interrupt Priority Level (IPL). Desde 0 hasta 7.

  STATUS: Contiene el bit más significativo del valor de IPL, que permite establecer un valor de IPL mayor a 7. Este bit solamente puede establecerlo el núcleo.

  De esta manera, una interrupción será tratada si IPC>IPL. Si saltasen dos interrupciones con mismo valor de IPC, se seguirá la prioridad natural.

  Si se asigna un valor de IPL=7 se deshabilitarían todas las interrupciones de usuario.

  Cuando salta un trap el valor de IPL es siempre >=8.

Page 37: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 38: Laboratorio de Sistemas Embebidos - um.es

La placa dsPICDEM 1.1 (1)

  La placa dsPICDEM 1.1 dispone de diverso hardware que permite la creación de software de evaluación con los dsPIC30f:   Interfaz para programación/

depuración del PIC   Puertos de comunicación

RS232 y CAN   Codec de sonido   Osciladores   Pulsadores y LEDs   Pantalla LCD   Área de prototipado

Page 39: Laboratorio de Sistemas Embebidos - um.es

La placa dsPICDEM 1.1 (2)

Page 40: Laboratorio de Sistemas Embebidos - um.es

Índice

  Introducción a los PIC   Conceptos generales sobre el dsPIC30F   Reloj del sistema   Entrada/salida con puertos paralelos   Timers   Interrupciones   La placa dsPICDEM 1.1   El compilador C30

Page 41: Laboratorio de Sistemas Embebidos - um.es

El compilador C30 (1)

  El compilador C30 usa un lenguaje de programación prácticamente equivalente al C de ANSI.

  Diversas librerías facilitan la programación del PIC y abstraen (en lo posible) al programador de los detalles del microcontrolador usado.

  Existe un conjunto de estructuras que permite la asignación de valores a los registros, tal y como aparecen en el data sheet del fabricante.

  Un conjunto de macros facilita el establecimiento de la configuración inicial del PIC

  Las ISR pueden declararse fácilmente.

Page 42: Laboratorio de Sistemas Embebidos - um.es

El compilador C30 (2)   Estructura general de un programa en C30

// Fichero de cabecera del PIC #include <p24fj128ga010.h>

// Configuración del PIC (las macros disponibles dependen del .h del PIC) _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2) _CONFIG2( FCKSM_CSDCMD & POSCMOD_XT & FNOSC_PRIPLL )

// Prototipos de funciones void configButtons(); //…

// Rutina principal del programa int main(void) {

//…

// Operaciones a realizar continuamente while (1) { //… } }

// Rutinas de tratamiento de interrupción (ISR) void _ISR _T1Interrupt(void) { //… }

// Resto de funciones void configButtons() {

// Habilitar los pulsadores como entradas TRISDbits.TRISD6 = 1; // S3 TRISDbits.TRISD13 = 1; // S4 TRISAbits.TRISA7 = 1; // S5 TRISDbits.TRISD7 = 1; // S6 } //… Nota: El ejemplo es para el PIC24F128GA010

Page 43: Laboratorio de Sistemas Embebidos - um.es

El compilador C30 (3)

  El .h asociado al PIC incluye el conjunto necesario de definiciones para acceder a los registros, usar macros y realizar declaracion de ISR.

  La configuración del PIC es necesaria para establecer los parámetros de funcionamiento iniciales del PIC.

  Las ISR se pueden declarar de forma fácil siguiendo la nomenglatura:

void _ISR _<nombre_int>Interrupt(void) { , donde nombre_int correspondería al nombre de la

interrupción a tratar, que puede extraerse directamente de la IVT del data sheet expuesta anteriormente.

Page 44: Laboratorio de Sistemas Embebidos - um.es

El compilador C30 (4)

  El acceso a los registros del PIC se puede realizar mediante dos métodos:   <nombre_reg>   <nombre_reg>bits.<nombre_bit>

  En el primero de los casos se asignaría directamente un valor (16 bits) al registro completo (ej. IFS0=0x0001 ó IFS=1)

  En el segundo caso se podría acceder al valor para un bit concreto (ej. IFS0bits.INT0IF=1).

  En algunas ocasiones el uso de máscaras puede ser tedioso, y el acceso por bit es muy útil.