Está en la página 1de 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

 Sepuede leer/escribir en la memoria de


programa:
 TBLRDL: Leer parte baja
 TBLRDH: Leer parte alta
 TBLWTL: Escribir parte baja
 TBLTH: 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

1. 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

También podría gustarte