You are on page 1of 37

dsPIC.

Arquitectura
Dispositivos Lgicos Programables Ingeniero de Telecomunicacin

Arquitectura
Arquitectura Harvard Datos de 16 bits Instrucciones de 24 bits PC de 24 bits Capacidad para ejecutar instrucciones de 3 operandos en un ciclo: ej. A+B=C Instrucciones de dos tipos: MCU y DSP

Arquitectura
Dos bancos X e Y Memoria programa Memoria EEPROM Motor DSP 16 Registros W Perifricos Watchdog .

Registros bsicos

Registros W
Mapeados en memoria W15, puntero de pila. RESET = 0x0800 W0W3 tienen shadow (PUSH.S y POP.S) W14 permite definir un stack frame pointer

Memoria de programa

Memoria de programa
Se puede leer/escribir en la memoria de programa:
TBLRDL: TBLRDH: TBLWTL: TBLTH: Leer parte baja Leer parte alta Escribir parte baja Escribir parte alta

Memoria de datos

Memoria de datos
SFR: Special Function Registers til a partir de 0x800 La parte inferior puede mapearse como memoria de programa Las instrucciones tipo DSP ven un mapeo diferente

Memoria datos. Instrucciones DSC-MAC

Memoria de datos: SFR bsicos

Memoria de datos: SFR bsicos

Memoria datos: modos de direccionamiento


Directo a memoria Directo a registro Indirecto sobre registro
Con pre-incremento o pre-decremento Con post-incremento o post-decremento Con offset de registro (slo en algunas instr.) MOV [W1 + W2], [W3++] Con offset de literal (slo en algunas instr.) MOV [W1 + #0x020], [W3++]

Inmediato

Modos direccionamiento. Ejemplo

Direccionamiento de datos en memoria de programa


A travs del registro PSV A travs de la instrucciones TABLE

Direccionamiento circular
XMODSRT, YMODSRT
Contienen la direccin de inicio de los buffers

XMODEND, YMODEND
Contienen la direccin de fin de los buffers

MODCON
Indica el W (para X e Y) sobre el que se realiza el direccionamiento circular

Direccionamiento con inversin de bit

MODCOM,
BWM para seleccionar el W que se usa como puntero para el buffer

XBREV:
BREN, para habilitar el direccionamiento XB define el tamao del buffer

Direccionamiento con inversin de bit

Oscilador
Oscilador primario externo Oscilador secundario a 32 kHz Oscilador interno RC de 8 MHz Oscilador interno LPRC de 512 kHz

Oscilador
Se configura en el registro FOSC En general el EC o el XT Input 4-10MHz Output 120 MHz mx. con PLL El PLL permite multiplicar la frecuencia

Oscilador
XT, HS EC

Oscilador (registros)
FSOC OSCON

Oscilador
Ciclo de instruccin

I/O Ports
Registros
TRISx: 1 input, 0 output PORTx: Lectura o escrita en el puerto LATx: Para escribir= PORTx; Para leer, lee la entrada a los latches

Reset
POR: Power on Reset EXTR: Reset externo por el pin MCLR SWR: Instruccin de reset BOR: Brown-out reset WDTR: Reset por watchdog TRAPR: Cuando existen mltiples trap simultneas UWR: cuando de utiliza un registro W sin inicializar como puntero
El registro RCON indica la causa del RESET

Temporizadores
Varios temporizadores de 16 bits Registros asociados:
TMRx: Contador de 16 bits PRx: Perodo de 16 bits TxCON: Registro de control

Bits de interrupcin asociados:


TxIE: Habilitacin de interrupcin TxIF: Flag de interrupcin TxIP <2:0>: Prioridad de la interrupcin

Tres variantes: A, B y C Algunos se pueden encadenar y formar 32 bits

Temporizadores
Tipo A
Puede funcionar con el oscilador de bajo consumo de 32kHz Puede funcionar de forma asncrona con un reloj externo El Timer 1 es de tipo A

Tipo B
Se puede encadenar con uno de tipo C y formar 32 bits La sincronizacin de reloj se produce despus del prescalado El Timer 2 y el 4 suelen ser de tipo B

Tipo C
Se puede encadenar con uno de tipo B Al menos un temporizador de tipo C puede disparar una conversin A/D El Timer 3 y el 5 suelen ser de tipo C

Temporizadores (tipo A, TxCON)

Interrupciones
8 interrupciones tipo trap no enmascarables 54 vectores de interrupcin Tabla alternativa (AIVT) se selecciona en registro ALTIVT

Interrupciones
Cada interrupcin salta a una posicin Registros asociados
INTCON1, INTCON2 IFSx IECx IPCx SR CORCON

Interrupciones: INTCON1

NSTDIS:

1 deshabiltadas las anidadas 0 habilitadas (por defecto) El resto asociadas con los conflictos TRAP

Interrupciones: INTCON2

ALTIVT: 1 tabla de vectores alternativa, 0 standard DISI: permite deshabilitar interrupciones INTxEP: Interrupciones externas
1 en el flanco negativo 0 en el positivo

Interrupciones: IFSx (Flags)


ADIF: Fin conversin A/D TxIF: Temporizador x INTxIF: Interrupcin externa 0 INTxIF: Input capture canal x OCxIF: Outpu caputure

Interrupciones: IECx, habilitar int.

Interrupciones: prioridad CPU


La prioridad de la CPU se indica con IPL0..3 (registros SR+CORCON) Para deshabilitar las interrupciones usuario IPL2..0=111 (prioridad 7 CPU)

Interrupciones: prioridad
Registros IPC0..IPC11 P.e. T1IP, en IPC0 fija la prioridad de Timer 1 Por defecto la prioridad es 4 Prioridad 0 equivale a deshabiltarla

Interrupciones
Poner a 1 NSTDIS si no anidadas 2. Seleccionar la prioridad en IPCx 3. Borrar el flag en IFSx 4. Habilitar la interrupciones en IECx
1.

You might also like