Sei sulla pagina 1di 51

ING.

JOSE ESTRADA MONTES


Manejo de Puertos
ENTRADAS ANLOGAS
Y ENTRADAS/SALIDAS
DIGITALES (PUERTO B)

ING. JOSE ESTRADA M.


Manejo de Puertos
LEDS EN EL EXPLORER-16
(PUERTO A)

ING. JOSE ESTRADA M.


Manejo de Puertos
AD1PCFG

TRISA

PORTA PUERTO A
ING. JOSE ESTRADA

LATA

ODCA

ING. JOSE ESTRADA M.


Manejo de Puertos

AD1PCFG

El registro
AD1PCFG Configura TRISA
los pines del
microcontrolador
PORTA PUERTO A
como ANALOGICO ING. JOSE ESTRADA

O DIGITAL
LATA

ODCA

ING. JOSE ESTRADA M.


Manejo de Puertos

AD1PCFG
Despus de configurado
como digital El registro
TRISA
TRISA configura al pin
de puerto del
microcontrolador PORTA PUERTO A
como ENTRADA O ING. JOSE ESTRADA

SALIDA
LATA

ODCA

ING. JOSE ESTRADA M.


Manejo de Puertos
Con un 1 en la posicin de bit correspondiente en AD1PCFG es
programado como modo digital y un 0 como un canal de modo anlogo.
TRISA en modo digital con donde un 1 programa el puerto como
entrada y un 0 como salida y solo ser 1 cuando AD1PCFG este
programado en modo anlogo.

ING. JOSE ESTRADA M.


Manejo de Puertos

AD1PCFG
PORTA y LATA tienen
funciones similares
TRISA

PORTA PUERTO A
ING. JOSE ESTRADA

LATA

ODCA

ING. JOSE ESTRADA M.


Manejo de Puertos
PORTA y
LATA
tienen
funciones
similares

ING. JOSE ESTRADA M.


Manejo de Puertos
PORTA y
LATA
tienen
funciones
similares

ING. JOSE ESTRADA M.


Manejo de Puertos
PORTB0=1

READ: PORTB es ledo STORE: El dato es


almacenado dentro
de un registro
temporal en el PIC

Los niveles reales de voltaje en los pines del MCU son relevantes

ING. JOSE ESTRADA M.


Manejo de Puertos

MODIFY: El dato es modificado WRITE: PORTB es escrito con


y establece el bit RB0. el dato modificado. El
driver de salida de RB0
se activa y el capacitor
empieza a cargar.

Los niveles reales de voltaje en los pines del MCU son relevantes

ING. JOSE ESTRADA M.


Manejo de Puertos
PORTB1=1
READ: PORTB es ledo STORE: porque el capacitor esta todava
cargndose, el voltaje en RB0
esta todava bajo y se lee como
un 0 (puesto que leemos
directamente de los pines y no
del registro PORTB).

ING. JOSE ESTRADA M.


Manejo de Puertos

MODIFY: El dato es modificado WRITE: PORTB es escrito con un


para establecer el bit. nuevo dato. El driver de
salida de RB1 se activa,
pero el driver de RB0
vuelve a desactivarse.

ING. JOSE ESTRADA M.


Manejo de Puertos

LATB0=1

READ: LATB es ledo. STORE: El dato es almacenado


en un registro interno
temporal del PIC.

ING. JOSE ESTRADA M. 30


Manejo de Puertos

MODIFY: El dato es modificado WRITE: LATB es escrito con el


para establecer el bit dato modificado. El driver
RB0. de salida de RB0 se activa
y el capacitor empieza a
cargar.

ING. JOSE ESTRADA M.


Manejo de Puertos
LATB1=1
READ: LATB es ledo. STORE: Puesto que los niveles de
voltaje en los pines del
PIC no son tan
relevantes, obtenemos el
valor esperado.

ING. JOSE ESTRADA M.


Manejo de Puertos
LATB1=1
MODIFY: El dato es modificado WRITE: LATB es escrito con el
para establecer el bit, nuevo dato. El driver
de salida de RB1 se activa
y el driver de salida de
RB0 permanece activo.

ING. JOSE ESTRADA M.


Manejo de Puertos
REGISTROS LAT
El registro LATx asociado con un pin de E/S elimina los problemas que podran
ocurrir con las instrucciones de lectura-modificacin-escritura (read-modify-
write). Una lectura del registro de LATx devuelve los valores mantenidos en las
salidas de los puertos latches, en lugar de los valores de los pines de E/S. Una
operacin de lectura-modificacin-escritura en el registro LAT, asociado con un
puerto I/O, se evita la posibilidad de escribir al pin de entrada valores en los
puertos latches. Una escritura en el registro LATx tiene el mismo efecto que
una escritura en el registro PORTx.

Las diferencias entre los registros PORT y LAT se pueden resumir como sigue:
Escribir en el registro PORTx escribe el valor de datos en el puerto latch
Escribir en el registro LATx escribe el valor de datos en el puerto latch.
Una lectura del registro PORTx lee el valor de los datos en el pin de I/O.
Una lectura del registro LATx lee el valor de datos retenido en el puerto
latch.

Cualquier bit y sus registros asociados de datos y de control que no son vlidos
para un dispositivo concreto sern desactivados. Eso significa que los
correspondientes registros LATx y TRISx y el pin del puerto, se lee como
ceros.

ING. JOSE ESTRADA M.


Manejo de Puertos
REGISTROS PORT

Los datos sobre un pin E/S se accede a travs de un registro PORTx.


Una lectura del registro PORTx lee el valor del pin E/S, mientras que
una escritura en el registro PORTx escribe el valor al latch puerto de
datos.

Muchas instrucciones, tales como las instrucciones BSET y BCLR, son


operaciones de leer-modificacin-escritura (read-modify-write). Por lo
tanto, una escritura en un puerto implica que los pines del puerto se
leen, este valor es modificado, y despus escribe en el puerto latch de
datos. Se debe tener cuidado cuando los comandos leer-modificar-
escribir (read-modify-write) se utilizan en los registros PORTx y
cuando algunos pines E/S asociados con el puerto se configuran como
entradas. Si un pin E/S configurado como entrada se cambia a una
salida en algn momento posterior, un valor inesperado puede ser salida
en el pin E/S. Este efecto se debe a que la instruccin de leer-
modificacin-escritura (read-modify-write) lee el valor instantneo en
el pin de entrada y carga este valor en el latch puerto de datos.
ING. JOSE ESTRADA M.
Manejo de Puertos
REGISTROS ODCx
Cada pin del puerto tambin se puede
configurar de forma individual, ya sea
para una salida digital o de drenaje
abierto. Esto es controlado por el AD1PCFG
Registro de Control de Open-Drain,
ODCx, asociado con cada puerto.
Colocando a 1 cualquiera de los bits TRISA
configura el pin correspondiente para pin
como una salida de drenaje abierto.
La caracterstica de drenaje abierto PORTA PUERTO A
permite la generacin de salidas ING. JOSE ESTRADA

superior a VDD (por ejemplo, 5V) en


cualquier digital deseado slo pines LATA
mediante el uso de resistencias
externas pull-up. La tensin mxima
permitida de drenaje abierto es el
mismo que el valor mximo especificado ODCA
en el Data Sheet, VIH= 5.5V
normalmente.

ING. JOSE ESTRADA M.


Manejo de Puertos
MAPA DE REGISTROS DE PORTA
Este es el mapa de los Registros que intervienen en el PORTA en el que
se puede ver la posicin de los bits que estn disponibles o no.
Y cuando estn en reset cual es el valor que tienen.

ING. JOSE ESTRADA M.


Interrupciones
Una interrupcin es una suspensin temporal de la ejecucin
de un programa, con la finalidad de atender a un dispositivo
que lo requiere y esto se realiza mediante una subrutina de
servicio de interrupcin (ISR).

El MCU PIC24FJ128GA010 de 16 bits tienen un esquema de


excepcin vectorizada con soporte para hasta 8 vectores de
interrupcin no enmascarables y hasta 118 fuentes de
interrupcin. Cada fuente de interrupcin se puede asignar a
uno de los siete niveles de prioridad.

Atencin rpida es de 4 ciclos de instruccin para ingreso a


la ISR y 3 ciclos para salir de la ISR. El Control de
Interrupciones reduce la numerosas peticiones de interrupcin
de los perifricos a una simple peticin de interrupcin al
CPU, esta caracterstica hace que sea superior a la mayora
de las otras arquitecturas.
ING. JOSE ESTRADA M.
Interrupciones

Cada fuente de interrupcin provoca siempre y cuando esta


habilitado, la ejecucin de un conjunto de cdigo nico,
llamado rutina de servicio de interrupcin (ISR).

ING. JOSE ESTRADA M.


Interrupciones

Solo se usa cuando se realiza Debug (depuracin) o


Emulacin

ING. JOSE ESTRADA M.


Interrupciones
PROCESO DE LA INTERRUPCIN

Cuando un evento de excepcin ocurre:


1. Hardware (central o perifrico) detecta eso.
2. Si la prioridad programada del evento excepcin es
mayor que la actual prioridad de la CPU, se detiene la
ejecucin actual del programa.
3. Se inicia la ISR (INTERRUPT SERVICE ROUTINE-
Rutina de servicio de Interrupcin).
4. Cuando la ISR (Rutina de servicio de Interrupcin)
finaliza.
5. El Hardware restaura la ejecucin del programa que
haba sido previamente detenido y devuelve en la
instruccin exacta que habra sido ejecutado de no
haber ocurrido el evento de excepcin.

ING. JOSE ESTRADA M.


Interrupciones
TIPOS DE INTERRUPCIONES
1. Interrupcin No enmascarables (No- Maskables Traps)
Estn diseados para detectar ciertos problemas de
hardware y software. tiene 4 fuentes de Non-Maskable
Traps:
Oscillator Failure Trap
Address Error Trap
Stack Error Trap
Math Error Trap
2. Interrupcin por perifrico y externo.
Estas son las regulares, solicitudes de interrupcin
enmascarables que provienen de una variedad de perifricos
implementados:
External Interrupt Pins
Input Capture/Output Compare
Communication Interfaces
(UART/SPI/I2C/USB/Ethernet)
Analog I/O (Comparator, ADC/DAC) etc
ING. JOSE ESTRADA M.
Interrupciones

PRIORIDAD DEL CPU

Una de las caractersticas fundamentales del


sistema procesamiento de excepciones, es
la IMPLEMENTACIN DE PRIORIDADES
PROGRAMABLE POR EL USUARIO para fuentes
de interrupcin de perifricos y externos.

Esto requiere una comprensin del concepto de


prioridad de la CPU (de 16 bits) que puede operar
en 16 niveles de prioridad, desde 0 a 15.

ING. JOSE ESTRADA M.


Interrupciones

PRIORIDAD DEL CPU


Una fuente de interrupcin (traps) tiene un nivel
de prioridad mayor que la actual prioridad de la
CPU con el fin de iniciar un proceso de atencin a
la Interrupcin.

Los niveles de prioridad de las fuentes de los


perifricos y interrupciones externas son
programados desde el nivel 0 al nivel 7, mientras
que los niveles de Prioridad del CPU del 8 al 15
son reservados para las fuentes No enmascarables
(Non-Maskables Traps).
ING. JOSE ESTRADA M.
Interrupciones
PRIORIDAD DEL CPU
La prioridad de la CPU para el hilo de ejecucin actual se
indica con los bits "IPL" en el estado de la CPU y Control
Core registra con la prioridad del CPU para el hilo de
ejecucin actual, se indica con los bits "IPL" en el registro
de estado de la CPU (Status Register) y el registro de
control del ncleo (Core Control register).
Al poner 111deshabilita
todas las interrupciones
Status Register (SR)

IPL IPL IPL


2 1 0

Si IPL3 es 1 habilita
ING. JOSE ESTRADA
Core Control Register (CORCON)
interrupciones
IPL
3 no-enmascarables
ING. JOSE ESTRADA M.
Interrupciones
PRIORIDAD DEL CPU

La prioridad del CPU para el hilo de ejecucin actual, se


indica con los bits "IPL" en el registro de estado de la
CPU (Status Register) y el registro de control del ncleo
(Core Control register).

Cuando el dispositivo se resetea, el estado de la


prioridad del CPU = 000

Los Bits de IPL son controlados automticamente por la


lgica de procesamiento excepcin basada en la fuente de
interrupcin.

ING. JOSE ESTRADA M.


Interrupciones

PRIORIDAD DEL CPU

El programador puede establecer manualmente los bits de


prioridad de la CPU de usuario (IPL<2:0>) en cualquier
momento. Esto es til para enmascarar temporalmente
todas las otras interrupciones para realizar una tarea con
mayor intensidad de la CPU.

IPL3 slo se establece por el ncleo e indica un evento de


Traps (Non-maskable).

ING. JOSE ESTRADA M.


Interrupciones

PRIORIDAD DEL CPU

Las interrupciones por defecto son anidables. Cualquier ISR


que est en curso puede ser interrumpida por otra fuente
de interrupcin que tiene un nivel de prioridad programada
ms alta.

La siguientes figuras muestra como se mueve el rastro de


ejecucin de la CPU que implica el inicio en el main ( ),
junto con 3 ISR pre-programados en diferentes niveles de
prioridad con anidacin de interrupcin habilitada.

ING. JOSE ESTRADA M.


Jerarquizacin de las Interrupciones
La atencin rpida (latencia) en las interrupciones anidadas
para entrar es de 4 ciclos de instruccin y para salir es 3
ciclos.
RETURN

IRQ7
IRQ7 4 ciclos 7 ciclos
RETURN
IRQ4
7 ciclos
4 ciclos
RETURN
IRQ1

IRQ4 3 ciclos
IRQ1

main ( )
ING. JOSE ESTRADA
rastro de ejecucin de la CPU

ING. JOSE ESTRADA M.


Jerarquizacin de las Interrupciones

La anidacin de la interrupcin se puede desactivar, con


un 1 el bit de control NSTDIS (INTCON1 <15>).

Cuando se habilita con 0 el bit NSTDIS, todas las


interrupciones en curso fuerzan la CPU prioridad a nivel 7,
ajustando IPL <2:0> = 111.

Esto efectivamente enmascara todas las dems fuentes de


interrupcin hasta un RETFIE (regreso de interrupcin) se
ejecuta.

ING. JOSE ESTRADA M.


Jerarquizacin de las Interrupciones

Cuando anidacin de interrupcin est deshabilitada, los


niveles de prioridad asignados por el usuario no tendrn
ningn efecto, salvo para resolver los conflictos entre las
solicitudes de interrupcin simultneamente pendientes.

Resolviendo conflicto de interrupciones, Por ejemplo, en el


reinicio del sistema, los registros IPCx, se inicializan de
tal forma que todas las fuentes de interrupcin de
usuario, tengan un nivel de prioridad 4.

ING. JOSE ESTRADA M.


Jerarquizacin de las Interrupciones

Primero, por la prioridad asignada por el usuario de esa


fuente en el registro IPCx.

ING. JOSE ESTRADA M.


Jerarquizacin de las Interrupciones

Luego, se define
por la prioridad
orden natural
dentro de la
tabla de vectores
de interrupcin

ING. JOSE ESTRADA M.


Configuracin de las Interrupciones
Hay tres conjuntos de bits de control que deben tenerse
en cuenta cuando se trabaja con interrupciones:

Banderas de interrupcin
Indica que se ha producido un evento de Interrupcin.
Que es fijado por el hardware y borrado por el
programador.

Habilitadores de Interrupcin
Activar o desactivar fuentes de interrupcin de forma
individual.

Asignacin de prioridad
Establecer individualmente la prioridad de las fuentes
de interrupcin
ING. JOSE ESTRADA M.
Configuracin de las Interrupciones
Las banderas (Flag), los habilitadores (enable) y bits de
control de prioridad(IP) son usados por el Controlador de
Interrupciones dar prioridad a todas las solicitudes de
excepcin y enviar un nico vector y IP al CPU, ver figura:
VECTOR DE
NIVELES DE PRIORIDAD INTERRUPCION
DE INTERRUPCION Controlador de CPU
Interrupciones
INTERRUPCIONES NO Traps IP 8-15
ENMASCARABLES

Habilitador IP 08-15
Bandera IP 0-7 Ing.J.Estrada

Habilitador
NIVEL DE PRIORIDAD
INTERRUPCIONES Bandera IP 0-7 DE INTERRUPCION
DE PERIFERICOS

Habilitador

Bandera IP 0-7 Ing.J.Estrada

ING. JOSE ESTRADA M.


Registros de las Interrupciones

IFSx

IECx

INTERRUPCIONES
ING. JOSE ESTRADA IPCx

SR
&
CORCON

INTCONx

ING. JOSE ESTRADA M.


Registros de las Interrupciones

IFSx

Registros: ISF0,ISF1,
ISF2, IFS3 y IFS4.
IECx

Contienen el estado
INTERRUPCIONES
ING. JOSE ESTRADA IPCx de todas las banderas
(Flags) de interrupcin
SR
&
CORCON

INTCONx

ING. JOSE ESTRADA M.


Registros de las Interrupciones

IFSx

Registros IEC0, IEC1,


IEC2, IEC3 y IEC4.
IECx

Habilitan (enable) las


INTERRUPCIONES
ING. JOSE ESTRADA IPCx interrupciones en el
dispositivo.
SR
&
CORCON

INTCONx

ING. JOSE ESTRADA M.


Registros de las Interrupciones

IFSx
Registros: IPC0, IPC1,
IPC2, . IPC16.
IECx
Configura la prioridad
INTERRUPCIONES de las interrupciones
ING. JOSE ESTRADA IPCx

SR
&
CORCON

INTCONx

ING. JOSE ESTRADA M.


Registros de las Interrupciones

IFSx
Registros: SR (Status
Register) y CORCON
IECx (Core Control Register)

INTERRUPCIONES Configurar los bits


IPCx
IPL(3..0) que definen
ING. JOSE ESTRADA

el Nivel de Prioridad
SR
& del CPU.
CORCON

INTCONx

ING. JOSE ESTRADA M.


Registros de las Interrupciones

IFSx
Registros:
INTCON1,
IECx INTCON2

INTERRUPCIONES Contienen la
IPCx
configuracin
ING. JOSE ESTRADA

global de las
SR
& interrupciones.
CORCON

INTCONx

ING. JOSE ESTRADA M.


La Interrupcin Externa 0 (INT0)

Se configura el Registro IEC0 escribiendo en la posicin


0 un 1 habilitando la interrupcin externa INT0 o un
0 deshabilitndolo.

ING. JOSE ESTRADA M.


La Interrupcin Externa 0 (INT0)

La interrupcin externa INT0 ha ocurrido, indicndose con


la activacin (con un 1) de una bandera (flag) en la
posicin 0 del Registro IFS0.

Interrupt Flag Status Register 0 (IFS0)


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 = No ha ocurrido la
Interrupcin externa INT0
INT0IF
1 = La interrupcin externa
ING. JOSE ESTRADA INT0 ha ocurrido

ING. JOSE ESTRADA M.


La Interrupcin Externa 0 (INT0)

En el registro IPC0, se configura la prioridad de la


interrupcin externa INT0, como puede verse en la figura.

Interrupt Priority Control Register 0 (IPC0) 000: Deshabilitado


001: Prioridad 1 (baja)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 010: Prioridad 2
011: Prioridad 3
INT0IP<2:0>
100: Prioridad 4
101: Prioridad 5
ING. JOSE ESTRADA 110: Prioridad 6
111: Prioridad 7(alta)

ING. JOSE ESTRADA M.


Interrupciones

Declarando una interrupcin en MPLABx

ING. JOSE ESTRADA M.


SISTEMAS DIGITALES BASADOS EN
MICROPROCESADORES

MUCHAS GRACIAS

ING. JOSE ESTRADA MONTES