Вы находитесь на странице: 1из 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.

Вам также может понравиться