You are on page 1of 52

Microcontroladores y DSPs

Introduccin a los Controladores


Digitales de seales dsPIC30F

SESION2_1
MICROCONTROLADORES
UNAC-FIEE

Revisado por : MSc. Jacob Astocondor Villar


dsPIC30F Controladores digitales
de seales de 16 bits

Ofrecen la capacidad de un DSP con las


caractersticas de control en tiempo real de
un microcontrolador.
Interrupciones priorizadas
Perifericos extensivos incluidos
dsPIC30F Controladores digitales
de seales de 16 bits
Caractersticas para manejo de potencia
Todo esto combinado con una mquina
DSP
Acumuladores duales de 40 bits.
MACS de 16 x 16 de un solo ciclo
Barrel Shifter de 40 bits
Bsquedas duales de operandos
dsPICs Familia de controladores
digitales de seales de 16 bits
Ofrecen la flexibilidad y control de un
microcontrolador, con las caracteristicas de
cmputo y la eficiencia de un DSP.
La familia de controladores digitales de
seales de 16 bits dsPIC30F, es la mas
reciente y avanzada familia de procesadores
de Microchip.
Arquitectura Harvard Modificada
Arquitectura Harvard
Permite palabras de diferente tamao:
Programa 24 bits
Datos 16 bits
Mejora la eficiencia del conjunto de instrucciones
Permite procesamiento mas rpido, el procesador
puede buscar anticipadamente la prxima
instruccin, mientras ejecuta la instruccin actual
que accesa datos en la RAM.
Memoria de programa
PC de 24 bits, para direccionar hasta
4M x 24 palabras
El espacio de memoria de programa contiene:
Localidad de reset
Tablas de vectores de interrupcin
Memoria de programa de usuario
EEPROM de datos
Memoria de configuracin.
Facilidad de instrucciones para
realizar ciclos.
Se pueden realizar ciclos con las
instrucciones do y repeat, ambas pueden
interrumpirse en cualquier momento.
Estas caractersticas hacen los algoritmos
repetitivos DSP muy eficientes, mientras
mantienen la habilidad de manejar eventos
de tiempo real
Memoria de datos
Espacio de datos de 64Kbytes, y es tratado como
un espacio lineal de datos para muchas
instrucciones.
Las instrucciones de multiplicacin de DSP
dividen la memoria en dos bloques X, Y.
Estas instrucciones DSP soportan lecturas duales
de operandos.
Cuando no se usan las instrucciones de DSP, la
memoria es tratada como un solo bloque de
memoria X
Memoria de datos
Primeros 2KB SFRs
Despus de los SFR hasta 8 KB RAM de
datos, se puede dividir en los bloques X, Y
para instrucciones DSP
Los primeros 8 KB de datos (2k SFR+ 6k
RAM), son conocidos como RAM cercana,
accesible
Arreglo de registros de trabajo
16 registros de trabajo de 16 bits cada uno W0...W15
W15 apuntador del stack de software (unicamente)
Los registros de trabajo restantes pueden funcionar como:
Registros de datos
Apuntador de direcciones de datos
Registro de offset de direccin
Modos de direccionamiento
Inherente (sin operandos)
Relativo
Literal
Memoria directa
Registro directo
Registro indirecto
Los seis modos de direccionamiento son soportados
por cada instruccin.
Los registros de trabajo son usados ampliamente como
apuntadores para los modos de direccionamiento indirecto
Visibilidad de espacio de
programa
Los 32 KB superiores del mapa de
memoria de datos pueden mapearse
opcionalmente en memoria de programa,
usando el registro de 8 bits de visibilidad
de pgina en memoria de programa
(PSVPAG)
El mapeo de memoria de programa, como
si fuera memoria de datos, permite que
cualquier instruccin tenga acceso a la
memoria de programa como si fuera
memoria de datos.
Esta caracterstica es usada para tablas de
bsqueda, especialmente para tablas de
coeficientes de filtros, para algoritmos
DSP.
dsPIC30F Conjunto de
Instrucciones.
Instrucciones MCU
Instrucciones DSP

Estas dos clases de instrucciones estn


integradas independientemente en la
arquitectura y desarrolladas en una sencilla
unidad de ejecucin.
dsPIC30F Conjunto de
Instrucciones.
Casi todas las instrucciones se ejecutan en un solo
ciclo.
Instrucciones de dos ciclos:
Instrucciones que cambian el flujo del
programa (bra, call, etc).
Movimiento doble de palabras (mov D)
Instrucciones de lectura/escritura de memoria
de programa
dsPIC30F Conjunto de
Instrucciones.
Para muchas instrucciones, el dsPIC30F, es capaz de
ejecutar:
Lectura de memoria de datos
Lectura de registro de trabajo
Escritura a memoria de datos
Lectura de memoria de programa (instruccin).
Todo esto durante un solo ciclo de mquina!
Operaciones del tipo A+B=C en un solo ciclo
Divide Support
Mquina DSP
Multiplicador de punto fijo de 17 x17 bits
de alta velocidad.
ALU de 40 bits.
Dos acumuladores saturados de 40 bits
Corredor de barril bidireccional de 40 bits
(capaz de recorrer hasta 15 bits a la derecha
o 16 bits a la izquierda en un solo ciclo)
Interrupciones
El dsPIC30F tiene un sistema priorizado de
interrupciones.
Cada fuente de interrupcin tiene su propio
vector, y se le puede asignar dinmicamente
uno de siete niveles de prioridad.
La tabla de vectores de interrupciones (IVT)
reside en la parte baja de la memoria de
programa.
Perifricos
Variantes del dispositivo

Los dsPICS se dividen en tres categoras principales:


Propsito general
Control de motores/Conversin de energa
Sensores
Familia de propsito general
40-80 pines ideal para una variedad de aplicaciones
empotradas de 16 bits
Motor Control and Power
Conversion Family
28-80 pines, ideales para soportar aplicaciones de control de
motores, UPS, inversores, fuentes de alimentacin conmutadas y
equipo relacionado.
10-bit, 500-ksps A/D Converter
. Motor Control PWM
. Quadrature Encoder
. Timers, Input Capture, Output Compare
. UART, SPI, I2C, CAN Serial Interfaces
Sensor Family

18-28 pines, ideal para soportar aplicaciones incrustadas de bajo


costo.
. 12-bit, 100-ksps A/D Converter
. Timers, Input Capture, Output Compare
. UART, SPI, I2C Serial Interfaces
Herramientas de desarrollo
El proceso de desarrollo se puede dividir en tres partes principalmente:
a. Escribir el cdigo
b. Corregir el cdigo
c. Programar el dispositivo

M.C. Ricardo Alvarez


Herramientas de programacin.
MPLAB PM3, puede programar todos los
tipos de encapsulado y tiene mas memoria
que el ICD2, ideal para programar en
produccin.
MPLAB ICD2, adems de ser un
programador, es un depurador, ideal para
probar y depurar cdigo.
MPLAB PM3 Universal Device
Programmer
Puede controlarse desde el MPLAB IDE, desde una linea de
comandos, o puede funcionar solo.
. Built-in support for In-Circuit Serial Programming.
. Serialized programming for unique ID numbers.
. Safe mode for code security.
. High-speed programming and download through USB.
. Secure digital and multimedia card slot for convenient program
storage.
MPLAB ASM30 Assembler
Interpreta instrucciones y directivas en archivos de cdigo
fuente, para generar cdigo objeto.
Se usa un ligador para convertir el cdigo objeto en un archivo
final de salida (.hex) para programar un dispositivo.
Las directivas son interpretadas en tiempo de construccin, por
el ensamblador, y se usan para definir secciones de memoria,
inicializar constantes, declarar y definir smbolos, etc.
Un punto . Debe preceder cada directiva.
Formato general para instrucciones y directivas:
[label:] instruction[operands] [; comment]
[label:] directive[arguments] [; comment]
Directivas comunmente usadas:
.equ equates a value to a symbol
.include includes another file into the current file
.global makes a symbol globally visible
.text starts a section of executable code
.end ends assembly within a file
.section starts a section (of code or data, in program or data
memory)
Directivas comunmente usadas:
.space allocates space within a section
.bss adds variables to the uninitialized data section
.data adds variables to the initialized data section
.hword declares words of data within a section
.palign aligns code within a section
.align aligns data within a section
MPLAB LINK30 LINKER
OVERVIEW
Funcin del ligador

Esencialmente liga todos los archivos ensamblados y


compilados en el proyecto, para formar un solo archivo
ejecutable que pueda programarse en un dispositivo, simularse
o emularse.
El archivo hex y el archivo mapa se genera a partir del archivo
coff
Ejemplo 1
/*Programa de ejemplo para realizar el encendido/apagado
de dos leds conectados a RD0 y RD1.

*/
.title "parpadeo de led"
.equ __30F2010,1
.include "p30F2010.inc"
.text
.equ cont,0x0810
.global __reset
__reset:goto main
.org 100
main: mov #__SP_init,W15 ;inicializa el SP
mov #__SPLIM_init,W0
mov W0,SPLIM
nop
bclr TRISD,#00 ;RD0 salida
bclr TRISD,#01 ;RD1 salida
nop
bset PORTD,#00
bclr PORTD,#01
loop: btg PORTD,#00
call rtdo
btg PORTD,#01
call rtdo
bra loop
;************************************************
rtdo: mov #0xFFFF,W0
mov W0,cont
resta: dec cont
bra NZ,resta
return
.end

You might also like