El documento describe la arquitectura de los microcontroladores PIC de gama media. Estos tienen una arquitectura RISC de 14 bits, memoria de programa de hasta 8K y memoria de datos de 8 bits. Su núcleo incluye un procesador segmentado de pipeline, ALU, registros y buses separados para programa y datos.
Trabajo que refleja desde un punto de vista Histórico las dos grandes arquitecturas de hoy en día:
ARM-(RISC,MIPS...)
X86 - (INTEL...)
Al final hay una comparativa de dos programas en ambas arquitecturas,espero le sirva para comprender el débate ¿cuál es mejor?
Trabajo que refleja desde un punto de vista Histórico las dos grandes arquitecturas de hoy en día:
ARM-(RISC,MIPS...)
X86 - (INTEL...)
Al final hay una comparativa de dos programas en ambas arquitecturas,espero le sirva para comprender el débate ¿cuál es mejor?
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
1. eman ta zabal zazu
ARQUITECTURA
Hay dos cosas infinitas: el Universo
y la estupidez humana. Y del
Universo no estoy seguro.
Albert Einstein
Sainz de Murieta Mangado, Joseba Andoni
Departamento de Ingeniería de Sistemas y Automática
2. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Características más relevantes:
– Su procesador es tipo RISC
– Tiene una arquitectura HARVARD
– Su procesador es segmentado, "pipe-line".
– El formato de las instrucciones es ortogonal
– Todas las instrucciones tienen la misma longitud (14 bits)
– La arquitectura está basada en banco de registros
2
3. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Procesador tipo RISC:
Las CPU´s atendiendo al tipo de instrucciones que utilizan pueden clasificarse en:
CISC: (Complex Instruction Set Computer) Computadores de juego de
instrucciones complejo, que disponen de un repertorio de instrucciones
elevado (unas 80), algunas de ellas muy sofisticadas y potentes, pero
que como contrapartida requieren muchos ciclos de máquina para
ejecutar las instrucciones complejas.
RISC: (Reduced Instruction Set Computer) Computadores de juego de
instrucciones reducido, en los que el repertorio de instrucciones es muy
reducido (en nuestro caso 35), las instrucciones son muy simples y
suelen ejecutarse en un ciclo máquina. Además los RISC deben tener una
estructura pipeline y ejecutar todas las instrucciones a la misma
velocidad.
SISC:(Specific Instruction Set Computer) Computadores de juego de
instrucciones específico.
3
4. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Arquitectura Harvard
La CPU está conectado a dos memorias por medio de dos buses separados.
Una de las memorias contiene solamente las instrucciones del programa, y es
llamada Memoria de Programa.
La otra memoria solo almacena los datos y es llamada Memoria de Datos.
Los microcontroladores PIC tienen una memoria de datos de 8 bits, y una
memoria de programa que, según el modelo, puede ser de 12 bits, 14 bits y 16
bits, siendo en los de gama media de 14 bits.
4
5. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Procesador segmentado "pipe-line":
Quiere decir que aplica la técnica de segmentación que permite al procesador
realizar simultáneamente la ejecución de una instrucción y la búsqueda de código
de la siguiente. De esta manera, se puede ejecutar una instrucción en un ciclo.
(Cada ciclo de instrucción son cuatro ciclos de reloj).
Ejemplo: Búsqueda 1 Ejecuta 1
1. MOVLW 55h Búsqueda 2 Ejecuta2
2 .MOVWF PORTB Búsqueda 3 Ejecuta 3
3. CALL SUB_1 Busqueda 4 Salir
4. BSF PORTA,BIT3 Busqueda SUB_1 Ejecuta SUB_1
5
6. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Arquitectura Ortogonal:
Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como
fuente o destino.
Arquitectura basada en banco de registros:
Implica que todos los elementos del sistema, es decir, temporizadores, puertos
de entrada/salida, posiciones de memoria, etc, están implementados físicamente
como registros.
En la figura se muestra como la
ALU (Unidad Aritmético-Lógica)
efectúa sus operaciones con dos
operandos, uno que proviene del
registro W (Work o Acumulador),
y el otro que se encuentra en
cualquier otro registro o del
propio código de instrucción.
6
7. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Arquitectura basada en banco de registros: Ejemplo
7
8. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Diagrama de Bloques:
En este esquema se
muestra la organización
interna del núcleo de los
microcontroladores PIC de
gama media.
8
9. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
PIC16F84:
• 1K de memoria de programa (flash) • 15 registros hardware especiales
• 68 bytes de memoria de datos (RAM) • stack de 8 niveles
• 64 bytes de memoria de datos (EEPROM) • 4 fuentes de interrupción
• Juego de 35 instrucciones (RISC) • 13 pines de E/S
• Instrucciones de 14 bits • 1 temporizador/contador de 8 bits
• Datos de 8 bits. • Watchdog
9
10. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Diagrama de Bloques del PIC16F84:
10
11. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Patillaje (Pinout) del PIC16F84:
5
RA0-RA4
PORTA - Puerto de Entrada/Salida (I/O Port)
TOCK1 – Entrada del contador temporizador TMR0
8
RB0-RB7
PORTB - Puerto de Entrada/Salida (I/O Port)
INT – Entrada de interrupción externa
VSS y VDD Es la alimentación, que puede ser de 2V a 6V.
VDD es el terminal positivo.
MCLR Es el Reset del microcontrolador (Master Clear)
OSC1/CLKIN OSC2/CLKOUT Son los terminales para la conexión del oscilador externo
que proporciona la frecuencia de trabajo o frecuencia del
reloj principal.
11
12. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Diagrama de Bloques del PIC16F873:
12
13. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Oscilador:
El circuito oscilador interno se emplea para generar el reloj del dispositivo. Este reloj
es el que se emplea para ejecutar las instrucciones y hacer funcionar a los diversos
periféricos.
Cada cuatro ciclos de reloj, se genera un ciclo de instrucción.
Existen hasta ocho modos de configurar el oscilador. Esta configuración se realizará
mediante los bits de configuración.
Existen dos modos que permiten direccionar la salida del oscilador interno
(CLKOUT) hacia uno de los pines de salida.
Los modos del oscilador son:
LP: Cristal de baja frecuencia
XT: Cristal / Resonador
HS: Cristal / Resonador de alta frecuencia
RC: Célula R-C externa (con CLKOUT)
EXTRC: Célula R-C externa
EXTRC: Célula R-C externa con CLKOUT
INTRC: Célula R-C interna de 4MHz
INTRC: Célula R-C interna de 4MHz con CLKOUT
13
14. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Oscilador: Cristal / Resonador Cerámico
En los modos XT, LP o HS se conecta un cristal o un resonador cerámico a los pines
OSC1/CLKIN y OSC2/CLKOUT para establecer la frecuencia de reloj de trabajo.
CRISTAL OSCILADOR
RESONADOR CERÁMICO
14
15. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Oscilador: Entrada de reloj externa
En los modos XT, LP o HS se puede emplear una señal de reloj externa para
gobernar el funcionamiento del oscilador interno.
Oscilador: Célula R-C
En aplicaciones insensibles al tiempo puede emplearse una solución económica para
establecer la frecuencia de reloj mediante el empleo de una célula R-C.
La frecuencia del oscilador vendrá determinada por la tensión de alimentación, el
valor de la resistencia, el valor del condensador y la temperatura de trabajo.
3kΩ≤ REXT ≥100kΩ
CEXT>20pF
15
16. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Oscilador: Célula R-C interna
El oscilador R-C interno (no en todos los dispositivos de la gama media)
proporciona una señal de reloj fija de 4MHz a Vdd=5V y 25ºC.
Se emplea el registro OSCCAL para sintonizar la frecuencia del oscilador interno.
Bit 7:4 CAL3:CAL0. Bits de calibración del oscilador RC interno
0000= Frecuencia más baja del rango
...
1111= Frecuencia más alta del rango
Bit 3 CALFST: Bit de compensación (offset) del rango de osc.
1= Incrementa la frecuencia del oscilador en el rango CAL3:CAL0
0= No se aplica compensación
Bit 2 CALFST: Bit de compensación (offset) del rango de osc.
1= Decrementa la frecuencia del oscilador en el rango CAL3:CAL0
0= No se aplica compensación
Bit 1:0 No implementados
16
17. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
La CPU y la ALU:
La CPU puede considerarse
como el cerebro del dispositivo.
En las instrucciones aritméticas
y lógicas, emplea la Unidad
Aritmético Lógica (ALU) para
llevar a cabo la instrucción.
La ALU realiza la operación entre el contenido del acumulador (8 bits) y o bien
un literal contenido en la instrucción o bien el contenido de un registro de
memoria.
Dependiendo de la instrucción ejecutada la ALU puede afectar a alguno de los
bits del registro STATUS.
17
18. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Organización de la memoria:
Existen dos bloques principales de memoria:
La memoria de programa
La memoria de datos
Cada uno de estos bloques dispone de su propio
bus (arquitectura Harvard) de forma que el
acceso a ambos bloques puede tener lugar
durante el mismo ciclo de oscilador.
18
19. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos y de Programa del PIC16F84:
Memoria de
Programa
Memoria de
Datos
19
20. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Programa:
210=1024=1K
213=8192=8K
PIC16F84
Los PIC de gama media disponen de un contador de programa
de 13 bits capaz de direccionar un espacio de memoria de 8K x
14.
La anchura del bus de la memoria de programa es de 14-bits.
Esta es la longitud de una instrucción y dado que en estos
microcontroladores todas las instrucciones son de palabra
simple, el espacio disponible es de 8K de instrucciones.
La memoria de programa se encuentra dividida en cuatro
páginas de 2K-words cada una de ellas.
PIC16F84
Para moverse entre páginas de memoria será necesario
1024 posiciones X 14 bits modificar los bits altos del PC lo cual se realizará escribiendo el
valor deseado en un SFR llamado PCLATH (Program Counter
00 0000 0000 000H
Latch High).
En una ejecución de programa secuencial, será el propio PC el
11 1111 1111 3FFH
encargado de saltar de página sin necesitar de la intervención
del usuario.
20
21. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Programa:
El Vector de Reset (Reset Vector):
En todos los dispositivos, un RESET fuerza el
contador de programa a la dirección 0h.
Además, el RESET del dispositivo borrará el contenido
del registro PCLATCH direccionándose el dispositivo a
la primera de las páginas de memoria de programa.
El Vector de Interrupción (Interrupt Vector):
Cuando el microcontrolador reconoce una interrupción, el contador de programa se
fuerza a la dirección 0004h.
El registro PCLATH no se ve modificado por lo que la rutina de servicio de
interrupción, antes de realizar el salto a la dirección deseada, deberá modificar este
registro en caso de ser necesario, restaurándolo al regresar de la interrupción.
21
22. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Programa: Este es el motor que hace que el programa avance, y
que después de ejecutarse una instrucción, vaya a la
siguiente, o a la que la instrucción anterior indica
000H Vector Reset PC (Contador de Programa)
13
Apunta al principio del
programa después de 13
encenderse o
resetearse
Nivel 1
004H Vector Interrupción
Pila
LIFO
Nivel 8
Cuando a través de una instrucción, ejecutamos un
subproceso o subrutina, el contador de programa (PC)
dejará de contar en su curso habitual e irá a la posición
de memoria de programa donde empieza esta
subrutina; en el primer nivel de la pila se almacenará
esta llamada, hasta que se acaben de ejecutar las
3FFH
instrucciones que contiene, momento en el cual se
recogerá y seguirá con las instrucciones normales a
Las instrucciones son de 14 bits 14 partir de la llamada.
RI (Registro de Instrucciones)
22
23. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Programa:
El Contador de Programa (Program Counter (PC)):
El contador de programa especifica la dirección de la
instrucción a ejecutar.
Tiene una longitud de 13 bits.
El byte bajo se denomina: registro PCL y es de
lectura/escritura.
El byte alto se denomina : registro PCH y no se puede leer
ni escribir directamente sino que hay que hacerlo a través
del registro PCLATH
Caso 1: Instrucción con el PCL como destino
23
24. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Programa:
Paginación de la memoria de programa:
Algunos de los microcontroladores de la gama media, poseen una
memoria de programa superior a 2K-words, pero las instrucciones
CALL y GOTO solamente tienen un rango de 11 bits, es decir, solo
tienen capacidad de direccionar saltos dentro de una página de
2K-words.
Para solucionar esto se emplean los bits 4 y 3 del PCLATH de
forma que permiten direccionar la página de memoria deseada.
Es decir, antes de ejecutar una instrucción CALL o GOTO, el
usuario debe asegurarse de que estos bits del PCLATH están
direccionando la página deseada.
Al regresar de la subrutina, no es necesario manipular el PCLATH
ya que son recuperados del STACK los 13 bits del contador de
programa.
Ejemplo:
Llamada desde la página 0 a una
subrutina situada en la página 1.
24
25. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Programa:
El Contador de Programa (Program Counter (PC)):
Caso 2: Instrucción GOTO
Caso 3: Instrucción CALL
Caso 4: Instrucción RETURN, RETFIE O RETLW
25
26. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos:
La memoria de datos se puede dividir en:
Registros RAM de propósito general (GPR)
Registros de Función Especial (Special Function Registers (SFR))
Registros:
Cada una de las posiciones de memoria de datos, de longitud 8-bits, se denomina
registro.
A cada registro se puede hace referencia bien por su dirección de memoria o bien
por un identificador específico para cada uno de ellos.
General Purpose Registers (GPR):
Es el área de memoria donde se guardan y manipulan los datos necesarios
para las operaciones del microcontrolador.
Special Function Registers (SFR):
Es el área de memoria donde se guardan y manipulan los datos que
configuran y controlan el funcionamiento del microcontrolador.
26
27. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos:
16F873
16F84
27
28. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos:
La memoria de datos se encuentra dividida en diferentes bancos, siendo necesario
manipular una serie de bits de control del registro STATUS para conmutar entre
estos bancos de memoria.
16F84
Dos bancos de datos o páginas de 128 registros de 8 bits
cada uno.
El PIC16F84 usa:
Los 80 primeros de la página “0” (00h al 4Fh)
Los 12 primeros de la página “1” (80h al 8Bh)
Los primeros 12 registros de ambas páginas son específicos
(SFR) y los 68 restantes, solo en la página 0 son de
propósito general (GPR).
La memoria RAM así como algunos registros especiales
son los mismos en los dos bancos del mapa de memoria
del PIC. La anchura de los registros en la memoria es de
8 bis.
28
29. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
16F873 R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-X R/W-X R/W-X
Registro STATUS IRP RP1 RP0 TO PD Z DC C
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 IRP: Register Bank Select Bit (Para direccionamiento indirecto)
1= Banco 2,3 (100h - 1FFh)
0= Banco 0.1 (000h - 0FFh)
Bit 6-5 RP1:RP0: Register Bank Select Bit (Para direccionamiento directo)
11= Banco 3 (180h – 1FFh)
10= Banco 2 (100h – 17Fh)
01= Banco 1 (080h – 0FFh)
00= Banco 0 (000h – 07Fh)
Cada banco es de 128 bytes
Bit 4 TO: Time-out Bit
1= Después del encendido, la instrucción CLRWDT o la instrucción SLEEP
0= Se ha rebosado el WDT
Bit 3 PD: Power-down Bit
1= Después del encendido o la instrucción CLRWDT
0= Después de ejecutar la instrucción SLEEP
Bit 2 Z: Zero Bit
1= El resultado de una operación aritmética o lógica es cero
0= El resultado de una operación aritmética o lógica es distinto de cero
Bit 1 DC: Digit Carry Bit (ADDWF, ADDLW, SUBLW, SUBWF)
1= Existe carry del cuarto bit de bajo orden del resultado
0= No existe carry del cuarto bit de bajo orden del resultado
Bit 0 C: Carry Bit (ADDWF, ADDLW, SUBLW, SUBWF)
1= Existe carry del bit más significativo del resultado
0= No existe carry del bit más significativo del resultado
29
30. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos:
Para mover un valor de un registro a otro registro, se ha de pasar a través del
acumulador (W), por lo que los movimientos de datos de un registro a otro
requerirán de dos ciclos de instrucción.
Direccionamiento:
A la memoria de datos se puede acceder de forma directa o indirecta.
Direccionamiento directo:
Requiere el empleo de los bits RP1:RP0 del registro STATUS.
Ej.: bsf 03 , 0x05
30
31. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos:
Direccionamiento indirecto:
Requiere del empleo del registro FSR (File Select Register) y del bit IRP (Indirect
Register Pointer) del registro STATUS.
Ejemplo para borrar las
direcciones de la RAM 20h – 2Fh
31
32. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Ejemplo1:
;Ejemplo
;
;Sumar dos números, A y B, de 16 bits cada uno.
;
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
Dato_A_L equ 0x10 ;Define la posición del dato A (bajo)
Dato_A_H equ 0x11 ;Define la posición del dato A (alto)
Dato_B_L equ 0x12 ;Define la posición del dato B (bajo)
Dato_B_H equ 0x13 ;Define la posición del dato B (alto)
Resultado_L equ 0x14 ;Define la posición del resultado (bajo)
Resultado_H equ 0x15 ;Define la posición del resultado (alto)
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva el vector de interrupción
Inicio movf Dato_A_L,W ;Carga menos peso del dato A
addwf Dato_B_L,W ;Suma menos peso del dato B
movwf Resultado_L ;Almacena el resultado
movf Dato_A_H,W ;Carga más peso del dato A
btfsc STATUS,C ;Hubo acarreo anterior ??
addlw 1 ;Si, suma 1 al acumulador
addwf Dato_B_H,W ;Suma más peso del dato B
movwf Resultado_H ;Guarda el resultado
Stop nop ;Poner breakpoint de parada
nop
end ;Fin del programa fuente
32
34. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Ejemplo2:
Un tanque de fuel con capacidad de 255 litros dispone de un sensor que transmite al
microcontrolador la capacidad remanente y la guarda en el byte FUEL.
Se desea escribir una rutina que active el bit 0 del byte ALARMA cuando el nivel del tanque sea
menor o igual a 20 litros y que active el bit 1 de este mismo byte cuando el nivel sea menor o
igual a 5 litros.
FUEL 0x0C LEER FUEL
ALARMA 0x0D
NO SI
FUEL<20
ALARMA<0>=0 ALARMA<0>=1
NO SI
FUEL<5
C Z
1 0 Resultado positivo
ALARMA<1>=0 ALARMA<1>=1
1 1 Resultado cero
SOLO EN LA RESTA
0 0 Resultado negativo
34
35. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Ejemplo2:
List p=16F84 ;Tipo de procesador NOTA
include "P16F84.INC" ;Definiciones de registros internos
Mirar bien como se
Fuel equ 0x0C ;Define la posición del nivel de llenado modifica el bit C
Alarma equ 0x0D ;Define la posición del byte de alarmas del registro
STATUS con las
constant Nivel_1=.5 instrucciones de
constant Nivel_2=.20 suma y resta.
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva el vector de interrupción
Inicio movf Fuel,W ;Carga el nivel del Fuel
sublw Nivel_2 ;Resta Nivel_2-(W)
btfss STATUS,C ;Mira el signo del resultado en el bit de carry
goto else1
if1 bsf Alarma,0 ;Si C=1 W<=20 enciendo el bit
goto cont1
else1 bcf Alarma,0 ;Si C=0 W>20 apago el bit
cont1 movf Fuel,W ;Carga el nivel del Fuel
sublw Nivel_1 ;Resta Nivel_2-(W)
btfss STATUS,C ;Mira el signo del resultado en el bit de carry
goto else2
if2 bsf Alarma,1 ;Si C=1 W<=5 enciendo el bit
goto cont2
else2 bcf Alarma,1 ;Si C=0 W>5 apago el bit
cont2 goto Inicio
end ;Fin del programa fuente
35
36. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: ARQUITECTURA -
Memoria de Datos EEPROM:
Compuesta por una serie de registros de 8bits cada uno (64 registros en el 16F84
del 00h al 3Fh).
Está situada en un bloque distinto y aislado de la de programa.
Este tipo de memoria permite 1 millón de ciclos de escritura y es capaz de guardar
la información más de 40 años, sin necesidad de ningún recurso externo.
No se puede acceder directamente a estos registros, sino que hay que emplear
registros especiales específicos (EEDATA, EEADR, EECON1, EECON2).
EEDATA
Contiene los 8 bits a leer o escribir en la EEPROM
EEADR
Contiene los dirección de la EEPROM a la que se
quiere acceder.
EECON1
Contiene los bits de control.
EECON2
Habilita la lectura o escritura en la EEPROM
36
37. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Interrupciones:
Los MicroPIC de la gama media, reconocen distintas fuentes de interrupción.
Normalmente, cada uno de los periféricos integrados en el dispositivo puede ser
fuente de una o varias interrupciones.
Las fuentes de interrupción más usuales son:
• Interrupción externa a través del pin de interrupción (INT)
• Overflow del TMR0, TMR1 o TMR2
• Cambio en los pines RB7:RB4 del puerto B Una interrupción es un
proceso asíncrono en el
• Cambio en un comparador
cual el microprocesador
• Puerto paralelo detiene la ejecución de
• USART: Recepción y Transmisión un programa para
atender una petición
• Conversión Analógico/Digital completada especial solicitada por
• LCD el propio programa o
por un dispositivo físico
• EEPROM completa
conectado al
• CCP microprocesador
• SSP externamente.
37
38. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Interrupciones:
Para poder hacer uso de las interrupciones es necesario activar el bit GIE (Global
Interrupt Enable) del registro INTCON. De esta forma se habilitan todas las
interrupciones no enmascaradas.
Además, es necesario habilitar individualmente cada uno de los periféricos que
queramos usar como fuente de interrupción mediante su correspondiente bit de
habilitación (ENABLE).
Cuando un determinado periférico provoque una interrupción, lo hará poniendo a
"1" su bit de FLAG, el cual será necesario volver a poner a "0" por software antes
de regresar al programa principal.
Cuando se dispara una interrupción programada, el microcontrolador responde de la
siguiente forma:
• Se pone a cero el bit GIE. (Impidiendo así que una segunda
interrupción interrumpa a la primera)
• La CPU termina de ejecutar la instrucción en curso.
• Guarda la posición de retorno en el STACK.
• El Program Counter apunta al vector de interrupción (0x04)
38
39. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
39
40. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Interrupciones:
Para gestionar las interrupciones, será necesario usar, como mínimo un registro de
control que recogerá los bits de flag de las interrupciones internas del dispositivo.
Este registro se denomina:
INTCON (Interrupt Control Register)
Además, si el dispositivo reconoce interrupciones asociadas a periféricos, será
necesario emplear otros registros de control destinados a habilitar o deshabilitar las
interrupciones y a guardar los bits de flag.
Dependiendo del dispositivo, estos registros son:
PIE1 (Peripheral Interrupt Enable Register 1)
PIR1 (Peripheral Interrupt Flag Register 1)
PIE2 (Peripheral Interrupt Enable Register 1)
PIR2 (Peripheral Interrupt Flag Register 1)
40
41. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
16F873 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
Registro INTCON GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 GIE: Global Interrupt Enable Bit
1= Habilita todas las interrupciones no enmascaradas
0= Deshabilita todas las interrupciones
Bit 6 PEIE: Peripheral Interrupt Enable Bit (EEIE en el 16F84)
1= Habilita todas las interrupciones no enmascaradas de periféricos
0= Deshabilita todas las interrupciones de periféricos
Bit 5 TOIE: TMR0 Overflow Interrupt Enable Bit
1= Habilita la interrupción de overflow del timer 0
0= Deshabilita la interrupción de overflow del timer 0
Bit 4 INTE: INT External Interrupt Enable Bit
1= Habilita la interrupción externa del pin INT
0= Deshabilita la interrupción externa del pin INT
Bit 3 RBIE: RB Port Change Interrupt Enable Bit
1= Habilita la interrupción por cambio de nivel en el puerto B
0= Deshabilita la interrupción por cambio de nivel en el puerto B
Bit 2 TOIF: Overflow Interrupt Flag Bit
1= Ha habido overflow del TMR0 (Debe borrarse por software)
0= No hay overflow del TMR0
Bit 1 INTF: INT External Interrupt Flag Bit
1= Se ha producido una interrupción externa en el pin INT (Debe borrarse por software)
0= No hay interrupción externa.
Bit 0 RBIF: RB Port Change Interrupt Flag Bit
1= Al menos uno de los bits RB7:RB4 ha cambiado de estado (Debe borrarse por software)
0= Ninguno de los bits RB7:RB4 ha cambiado de estado
41
42. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
16F873 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
Registro PIE1 (8Ch) PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 PSPIE: Parallel Slave Port Read/Write Interrupt Enable Bit
1= Habilita la interrupción de lectura/escritura del PSP
0= Deshabilita la interrupción de lectura/escritura del PSP
Bit 6 ADIE: A/D Converter Interrupt Enable Bit
NOTA
1= Habilita la interrupción del convertidor A/D
0= Deshabilita la interrupción del convertidor A/D El bit PEIE (INTCON<6>) debe
Bit 5 RCIE: USART Receive Interrupt Enable Bit estar puesto a ‘1’ para habilitar
1= Habilita la interrupción de recepción de la USART las interrupciones de periféricos
0= Deshabilita la interrupción de recepción de la USART
Bit 4 TXIE: USART Transmit Interrupt Enable Bit
1= Habilita la interrupción de transmisión de la USART
0= Deshabilita la interrupción de transmisión de la USART
Bit 3 SSPIE: Synchronous Serial Port Interrupt Enable Bit
1= Habilita la interrupción del SSP
0= Deshabilita la interrupción del SSP
Bit 2 CCP1IE: Capture/Compare/PWM Module Interrupt Enable Bit
1= Habilita la interrupción del CCP1
0= Deshabilita la interrupción del CCP1
Bit 1 TMR2IE: TMR2 to PR2 (Period Register) Interrupt Enable Bit
1= Habilita la interrupción de alcance del PR2 por el TMR2
0= Deshabilita la interrupción de alcance del PR2 por el TMR2
Bit 0 TMR1IE: TMR1 Overflow Interrupt Enable Bit
1= Habilita la interrupción de overflow del TMR1
0= Deshabilita la interrupción de overflow del TMR1
42
43. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
16F873 R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0
Registro PIR1 (0Ch) PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 PSPIF: Parallel Slave Port Read/Write Interrupt Flag Bit
1= Ha tenido lugar una operación de lectura o de escritura
0= No ha tenido lugar ninguna operación de lectura o de escritura
Bit 6 ADIF: A/D Converter Interrupt Flag Bit
NOTA
1= Se ha completado una conversión A/D
0= La conversión A/D no se ha completado El bit PSPIF (PIR1<7>) está
Bit 5 RCIF: USART Receive Interrupt Flag Bit reservado en los PIC16F873/876
1= El buffer de recepción de la USART está lleno y debe mantenerse siempre a 0.
0= El buffer de recepción de la USART está vacío
Bit 4 TXIF: USART Transmit Interrupt Flag Bit
1= El buffer de transmisión de la USART está vacío
0= El buffer de transmisión de la USART está lleno
Bit 3 SSPIF: Synchronous Serial Port Interrupt Flag
1= Ha tenido lugar una condición de interrupción del SSP
0= No ha tenido lugar una condición de interrupción del SSP
Bit 2 CCP1IF: Capture/Compare/PWM Module Interrupt Flag Bit
1= Se ha producido una captura del TIMER 1 o se ha alcanzado una comparación (No se usa en PWM)
0= No se ha producido una captura del TIMER 1 o no se ha alcanzado una comparación (No se usa en PWM)
Bit 1 TMR2IF: TMR2 to PR2 (Period Register) Match Interrupt Flag Bit
1= Ha ocurrido una coincidencia entre el PR2 y el TMR2.
0= No ha ocurrido una coincidencia entre el PR2 y el TMR2.
Bit 0 TMR1IF: TMR1 Overflow Interrupt Flag Bit
1= Se ha producido un desbordamiento del TIMER1
0= No se ha producido un desbordamiento del TIMER1
43
44. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
16F873 U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0
Registro PIE2 (8Dh) - Res. - EEIE BCLIE - - CCP2IE
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Uninplemented.
Bit 6 Reserved: Debe mantenerse siempre a 0
Bit 5 Uninplemented.
Bit 4 EEIE: EEPROM Write Operation Interrrupt Enable
1= Habilita la interrupción de escritura en la EEPROM
0= Deshabilita la interrupción de escritura en la EEPROM
Bit 3 BCLIE: Bus Collision Interrupt Enable
1= Habilita la interrupción por colisión en el bus
0= Deshabilita la interrupción por colisión en el bus
Bit 2 Uninplemented
Bit 1 Uninplemented
Bit 0 CCP2IE: CCP2 Interrupt Enable Bit
1= Habilita la interrupción del CCP2
0= Deshabilita la interrupción del CCP2
44
45. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
16F873 U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0
Registro PIR2 (0Dh) - Res. - EEIF BCLIF - - CCP2IF
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Uninplemented.
Bit 6 Reserved: Debe mantenerse siempre a 0
Bit 5 Uninplemented.
Bit 4 EEIF: EEPROM Write Operation Interrrupt Flag Bit
1= La operación de escritura en la EEPROM se ha completado
0= La operación de escritura en la EEPROM no se ha completado
Bit 3 BCLIF: Bus Collision Interrupt Flag Bit
1= Se ha producido una colisión de bus en el módulo SSP configurado en modo I2C maestro
0= Se ha producido una colisión de bus
Bit 2 Uninplemented
Bit 1 Uninplemented
Bit 0 CCP2IE: CCP2 Interrupt Enable Bit
Modo Capture
1= Se ha producido una captura del TIMER1
0= No se ha producido una captura del TIMER1
Modo Compare
1= Se ha producido una coincidencia del TIMER1
0= No se ha producido una coincidencia del TIMER1
Modo PWM: No se utiliza
45
46. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Interrupt Latency (Latencia de Interrupción):
La latencia de interrupción se define como el tiempo que transcurre desde que se
produce el evento que dispara la interrupción (=se pone a uno el bit de flag de
interrupción correspondiente) hasta que la instrucción de la dirección 0004h
comienza su ejecución.
Para las interrupciones síncronas (internas) es de 3 ciclos de instrucción.
Para las interrupciones asíncronas (externas:INT, PORTB) es de entre 3 y 3,75
ciclos de instrucción, dependiendo el tiempo exacto del instante en que se haya
producido la interrupción.
46
47. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Las interrupciones externas
La interrupción externa a través del pin 6 (RB0/INT) se activa por flanco.
INTDEG (OPTION<6>)=1 Flanco Ascendente
INTDEG (OPTION<6>)=0 Flanco Descendente
Cuando aparece un flanco válido en el pin INT, el bit INTF (INTCON<1>) se pone a ‘1’.
Esta interrupción puede habilitarse o deshabilitarse mediante el bit INTE (INTCON<4>)
El bit INTF debe borrarse por software en la rutina de servicio de la interrupción.
La aparición de una interrupción externa puede producir la salida del microcontrolador
del modo SLEEP.
47
48. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Copia del contexto ante una interrupción:
Cuando se produce una interrupción, el microcontrolador guarda en el STACK la
dirección de retorno del programa.
Generalmente, es necesario también hacer una copia de los valores de los registros
clave como por ejemplo el acumulador (W) o el registro STATUS. Esta copia se deberá
implementar por software.
A esta acción de guardar información se la conoce normalmente como PUSH mientras
que a la acción de recuperar la información guardada se la denomina POP.
Estos no son mnemónicos de instrucciones sino acciones conceptuales y se realizan
programando una secuencia de instrucciones o realizando segmentos de código
almacenados como macros.
48
49. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Copia del contexto ante una interrupción:
LIST P=16F84
include <p16f84.inc>
WBuffer equ 0x0c
StatBuffer equ 0x0d
push macro
movwf WBuffer ;guarda el acumulador
swapf WBuffer, F ;intercambia los nibbles
swapf STATUS,W ;obtiene el STATUS alterado
movwf StatBuffer ;lo guarda en StatBuffer
endm
pop macro
swapf StatBuffer,W ;restablece el registro STATUS
movwf STATUS ;/
swapf WBuffer,W ;restablece el acumulador Es necesario emplear la instrucción
endm SWAPF ya que ésta no modifica
org 0x00 ninguno de los flag del registro
goto Inicio ;salta el vector de interrupción STATUS.
org 0x04
push Si empleáramos la instrucción MOVF se
call rsi ;llama a la rutina de servicio modificaría el flag Z del registro
pop STATUS.
retfie
Inicio ........
movlw b’11111000’ ;Máscara para habilitar todas las
movwf INTCON ;interrupciones del reg. INTCON
........
bucle ........
........
goto bucle ;Bucle del programa principal
49
50. eman ta zabal zazu
2.- MICROCONTROLADORES PIC
2.-
- GAMA MEDIA: INTERRUPCIONES -
Copia del contexto ante una interrupción (cont.):
Si se encuentran habilitadas varias interrupciones, será necesario testear el registro INTCON para
saber cual de las posibles interrupciones ha sido la que ha provocado la ruptura de la ejecución
cíclica del programa principal.
Una vez identificada la interrupción, se ejecutará la subrutina correspondiente reactivando el flag
de interrupción antes de regresar.
rsi btfsc INTCON,RBIF ;Testea la interrupción RB4:RB7
call rsi_rb
btfsc INTCON,INTF ;Testea la interrupción externa INT
call rsi_int
btfsc INTCON,T0IF ;Testea la interrupción del timer 0
call rsi_tmr0
return
rsi_rb ...............
...............
bcf INTCON, RBIF ;Restaura el flag de la interrupción
return
rsi_int ...............
...............
bcf INTCON, INTF ;Restaura el flag de la interrupción
return
rsi_tmr0 ...............
...............
bcf INTCON, T0IF ;Restaura el flag de la interrupción
return
50
51. eman ta zabal zazu
ARQUITECTURA
Hay dos cosas infinitas: el Universo
y la estupidez humana. Y del
Universo no estoy seguro.
Albert Einstein
Sainz de Murieta Mangado, Joseba Andoni
Departamento de Ingeniería de Sistemas y Automática