Sesión 3 Introduccion A Microcontroladores
Sesión 3 Introduccion A Microcontroladores
Sesión 3 Introduccion A Microcontroladores
Contenido
Introduccin a los sistemas digitales. Introduccin a LabView. Introduccin a la programacin de Microcontroladores PIC. Controladores Lgicos Programables, PLCs.
OBJETIVO GENERAL
Conocer los conceptos fundamentales para la programacin de microcontroladores, mediante lenguajes de programacin ensamblador y C.
BIBLIOGRAFIA BSICA
1. 2. Microcontrolador PIC16F84; Enrique Palacios, 2006; Alfaomega marcombo; 2. edicin; 623 pginas. Microcontroladores PIC. Diseo prctico de aplicaciones, Angulo Usategui, Jos Mara y Angulo Martnez, Ignacio, McGraw-Hill. Advanced PIC Microcontroller Projects in C, Dogan Ibrahim, 2008, Ed. Elsevier.
3.
INTRODUCCION AL MICROCONTROLADOR
Un poco de historia
Inicialmente cuando no existan los microprocesadores, se requera para el diseo de circuitos electrnicos muchos componentes y clculos matemticos. Un circuito lgico bsico requera de una gran cantidad de elementos electrnicos basados en transistores, resistencias, etc,
INTRODUCCION AL MICROCONTROLADOR
Un poco de historia
En el ao 1971 apareci el primer microprocesador el cual origin un cambio decisivo en las tcnicas de diseo de la mayora de los equipos. Entre los microprocesadores mas conocidos tenemos el popular Z-80 y el 8085.
INTRODUCCION AL MICROCONTROLADOR
Un poco de historia
Los diseadores de equipos electrnicos ahora tenan equipos que podan realizar mayor cantidad de tareas en menos tiempo y su tamao se redujo considerablemente. sin embargo, despus de cierto tiempo aparece una nueva tecnologa llamada microcontrolador que simplifica aun mas el diseo electrnico.
Microprocesador
Es un sistema abierto con el que puede construirse un computador con las caractersticas que se desee, acoplndole los mdulos necesarios. La Unidad Central de Proceso (UCP), interpreta las instrucciones y el cambio de datos que las ejecuta.
8
Microprocesador
Microcontrolador
Es un sistema cerrado que contiene un computador completo. Todas las partes del computador estn contenidas en su interior y solo salen al exterior las lneas que gobiernan los perifricos.
10
Cada fabricante de microcontroladores oferta un elevado nmero de modelos diferentes, desde los ms sencillos hasta los ms sofisticados.
11
ARQUITECTURA INTERNA
Un microcontrolador posee todos los componentes de un computador, pero con unas caractersticas fijas que no pueden alterarse: Procesador Memoria de programa (No voltil) Memoria datos (lectura y escritura) Lneas E/S para los controladores de perifricos Recursos auxiliares
12
ARQUITECTURA INTERNA
1. 2. 3. 4. 5.
Procesador o CPU. Memoria no voltil para contener el programa. Memoria de lectura y escritura para guardar los datos. Lneas de E/S para los controladores de perifricos. Recursos auxiliares (Mdulos para el control de 13 perifricos)
PROCESADOR O CPU
Es el elemento ms importante del microcontrolador y determina sus principales caractersticas, tanto a nivel de hardware como de software Existen dos arquitecturas, se diferencian en la forma de conexin de la memoria al procesador y en los buses que cada una necesita: Arquitectura Von Neumann Arquitectura Harvard
14
Existe una sola memoria, donde coexisten las instrucciones de programa y los datos, accedidos con un bus de direccin, uno de datos y uno de control.
16
ARQUITECTURA VON NEUMANN Limitacin: Longitud de las instrucciones por el bus de datos (varios accesos a memoria para instrucciones complejas). Velocidad de operacin (bus nico para datos e instrucciones) e impide superponer ambos tiempos de acceso.
17
ARQUITECTURA HARVARD
18
ARQUITECTURA HARVARD
Memoria de datos separada de la memoria de instrucciones
Palabra de datos Palabra de instruccin
Conjunto reducido de instrucciones (RISC) Ejecucin de instrucciones en un ciclo de instruccin. Paralelismo implcito, segmentacin del procesador (pipe-line)
19
20
TIPOS DE MEMORIAS
Esta diseado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. 1. 2. 3. 4. 5. ROM con mscara OTP (One Time Programmable) EPROM EEPROM FLASH
21
22
23
3. EPROM
En la superficie de la cpsula del microcontrolador existe una ventana de cristal por la que se puede someter al chip de la memoria a rayos ultravioleta para producir su borrado y emplearla nuevamente.
24
4. EEPROM
La grabacin es similar a las memorias OTP y EPROM, pero el borrado es mucho ms sencillo al poderse efectuar de la misma forma que el grabado, o sea, elctricamente. Garantizan 1.000.000 de ciclos de escritura/borrado.
25
5. FLASH
Se puede escribir y borrar en circuito al igual que la EEPROM, pero suelen disponer de mayor capacidad que estas ltimas. Pueden ser programadas con las mismas tensiones de alimentacin del microcontrolador.
26
MEMORIA DE DATOS (RAM) Es una memoria voltil y se destina a guardar las variables y los datos (SRAM). Los microcontroladores disponen de capacidades de RAM comprendidas entre 20 y 512 bytes. Existen microcontroladores que disponen de memoria EEPROM para contener datos.
27
REGISTROS Y BITS
Un registro es una posicin de memoria en la cual se puede almacenar un dato. Es decir que la memoria esta dividida en pequeas partes llamadas Registros. El primer registro de una memoria corresponde a la direccin 00H. Hay un conjunto de registros que ya vienen Predefinidos desde la fbrica. Cada registro esta dividido en 8 partes, Bits.
28
Los microcontroladores cuentan con una serie de pines destinados a entrada y salida de datos o seales digitales. A estos pines se les denomina Puerto. Los puertos estn controlados por los registros. Entradas salidas de propsito general, trabajo con dispositivos simples como rels, Leds, etc.
29
RECURSOS AUXILIARES
Circuito de reloj. Temporizadores y contadores. Conversores AD y DA. Comparadores Modulador de ancho de pulsos (PWM) Puerto serie Otros puertos de comunicacin (USB, CAN) Sistema de proteccin. Estado de reposo
30
LOS MICROCONTROLADORES PIC Los 'PIC' son una familia de microcontroladores tipo RISC (Reduced Instruction Set Computer) fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la divisin de microelectrnica de General Instruments. PIC Peripheral Interface Controller. El PIC de 8 bits se desarrollo para el ao 1975
31
PIC nnLLLxxx
nn: Un nmero propio de la gama del PIC LLL:
Cdigo de letras donde la primera indica la tensin de alimentacin y las otras dos el tipo de memoria que utiliza
35
Aunque solo tienen 8 pines, pueden destinar hasta 6 como lneas de E/S para los perifricos porque disponen de un oscilador interno R-C.
36
37
Mejores relaciones coste/prestaciones. Encapsulados con 18 y 28 pines Pueden alimentarse con una tensin 2.5V 33 instrucciones con formato de 12bits.
38
GAMA MEDIA
Encapsulado desde 18 hasta 68 pines 35 instrucciones de 14 bits
40
GAMA ALTA
Alcanzan 58 instrucciones de 16 bits Sistema de gestin de interrupciones vectorizadas Incluyen variados controladores de perifricos, puertas de comunicacin serie y paralelo Arquitectura abierta.
42
EL PIC16X84
Pertenece a la familia de la gama media Tiene solo 18 pines Posee una memoria de programa de 1K palabras de 14bits cada una 64 bytes como memoria de datos auxiliar y opcional
43
TARJETA DE PRESENTACION DE PIC16X84 Memoria de programa 1Kx14 Memoria de datos RAM 36 byte-PIC16C84 y de 68 byte-PIC16F84 Memoria de datos 64bytes/EEPROM Pila de 8 niveles Interrupciones 4 tipos diferentes Juego de instrucciones 35 Encapsulado Platico DIP de 18 pines Frecuencia de trabajo 10MHz Mxima
44
Temporizadores : Solo uno TMR0 Lneas E/S digitales : 13 Puerta A y Puerta B Voltaje de alimentacin : VDD de 2 a 6VDC Corriente mxima absorbida : 80mA-Puerta A y 150mA-Puerta B Corriente mxima suministrada : 50mAPuerta A y 100mA-Puerta B
45
ASPECTO EXTERNO
46
TIPOS DE OSCILADORES OSCILADOR TIPO RC Un oscilador formado por una resistencia y un condensador
48
TIPOS DE OSCILADORES
OSCILADOR TIPO HS Un oscilador que alcanza una alta velocidad entre 4 y 20MHz, basado en un cristal de cuarzo o un resonador cermico
49
TIPOS DE OSCILADORES
OSCILADOR TIPO XT Es un resonador de cristal o resonador para frecuencias estndar, comprendida entre 100KHz y 4MHz.
50
TIPOS DE OSCILADORES OSCILADOR TIPO LP Oscilador de bajo consumo con cristal o resonador diseado para trabajar en un rango de frecuencias de 35 a 200KHz. El cristal de cuarzo o el resonador cermico se coloca entre los pines OSC1 y OSC2
51
REINICIALIZACION O RESET
Con un nivel lgico bajo en MCLR# el microcontrolador se reinicializa: 1. El contador de programa se carga con la direccin 0. 2. La mayora de los registros de estado y control del procesador toman un estado conocido y determinado.
52
53
EN EL INTERIOR DEL PROCESADOR El manejo intensivo del banco de registros, los cuales participan de una manera muy activa en la ejecucin de instrucciones. La ALU, efecta sus operaciones lgicoaritmtica con dos operandos, uno es del registro W(Work) y el otro que puede provenir de cualquier registro o del propio cdigo de instruccin.
55
57
58
PIC16F877A Features
High Performance RISC CPU:
Only 35 single word instructions to learn All single cycle instructions except for program branches, which are two-cycle Operating speed: DC - 20 MHz clock input DC 200 ns instruction cycle
PORTD PORTC
PORT D
PIC Memory
The PIC16F877A has an 8192 (8k) 14bit instruction program memory 368 Bytes Registers as Data Memory : Special Function Registers: used to control peripherals and PIC behaviors General Purpose Registers: used to a normal temporary storage space (RAM) 256 Bytes of nonvolatile EEPROM
Indirect Addressing: Direct Addressing: Full7 8bits bit register address is written the special function Uses of 14 bit instruction to identify a register file register address FSR 8th and 9th bit comes from RP0 and RP1 bits of INDF isregister. used to get the content of the address pointed by FSR STATUS Exp : A program to clear RAM locations H20 i.e. Z sample equ D2 ; Z=2 H2F: btfss STATUS, Z ; test if the 3rd bit of the MOVLW 0x20 ;initialize pointer STATUS register is set MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear INDF register
contains various control bits to configure the TMR0 prescaler/WDT postscaler ,the External INT Interrupt, TMR0 and the weak pull-ups on PORTB
OPTION_REG
PIC Peripherals
Each peripheral has a set of SFRs to control its operation. Different PICs have different on-board peripherals
Peripheral Features
5 Digital I/O Ports Three timer/counter modules
Timer0: 8-bit timer/counter with 8-bit pre-scaler Timer1: 16-bit timer/counter with pre-scaler, can be incremented during SLEEP via external crystal/clock Timer2: 8-bit timer/counter with 8-bit period register, pre-scaler and post-scaler
A 10-bit ADC with 8 inputs Two Capture, Compare, PWM modules Capture is 16-bit, max. resolution is 12.5 ns Compare is 16-bit, max. resolution is 200 ns PWM max. resolution is 10-bit Synchronous Serial Port (SSP) with SPI (Master mode) and I2C (Master/Slave) Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI) with 9bit address detection Parallel Slave Port (PSP) 8-bits wide, with external RD, WR and CS controls
PIC Applications
LED Flasher
Loop: bsf call bcf call goto PORTB, 0 Delay_500ms PORTB, 0 Delay_500ms Loop
PIC Applications
Button Read
Movlw 0 movwf TRISD, f bsf TRISD, 2 Loop: btfsc goto goto Light: bsf goto No_light: bcf goto PORTB,0 Loop PORTB,0 Loop PORTD, 2 light No_light
mikro C
77
Las variables bsicas en este compilador especfico son: bit char short int long float double
78
Las variables bit permiten almacenar un valor lgico es decir verdadero o falso, 0 1. Las variables char se utilizan para almacenar caracteres codificados con el cdigo ASCII, son tiles para guardar letras o textos. Una variable short almacena un nmero entero de 8 bits corto puede valer de: -127 a 127. Las variables tipo int guardan nmeros enteros de 16 bits, est variable permite guardar nmeros de: -32767 a 32767. La variable tipo long almacena nmeros enteros largos de 32 bits, su rango puede ser de: -2147483647 a 2147483647. Las variables tipo float y double permiten guardar nmeros 79 con punto decimal
80
bit VARIABLE1_BIT; //Declaracin de una variable tipo bit. char CARACTER; //Declaracin de una variable tipo char. char CARACTER2='J'; //Declaracin de una variable tipo char inicializada con el //valor ASCII del carcter J. int ENTERO=1234; //Declaracin de una variable tipo entera inicializada con //el valor 1234. float DECIMAL=-12.45; //Declaracin de una variable con punto decimal //inicializada con el valor -12,45. double DECIMAL2=56.68; //Declaracin de una variable con punto decimal //inicializada con el valor 56,68. long ENTERO2=-954261; //Demacracin de una variable de tipo entero largo 81 //inicializada con el valor -954261.
Los siguientes ejemplos muestras como declarar variables sin signo: unsigned char CARACTER; //Declaracin de una variable tipo char sin signo. unsigned int ENTERO; //Declaracin de una variable tipo entera sin signo. unsigned long ENTERO2; //Demacracin de una variable de tipo entero largo sin signo.
82
void main() { TRISA = 0x00; TRISB = 0x00; TRISC = 0x00; TRISD = 0x00; do { PORTA = 0x00; PORTB = 0x00; PORTC = 0x00; PORTD = 0x00; Delay_ms(100); // set direction to be output // set direction to be output // set direction to be output // set direction to be output
// Turn OFF LEDs on PORTA // Turn OFF LEDs on PORTB // Turn OFF LEDs on PORTC // Turn OFF LEDs on PORTD // 1 second delay
PORTA = 0xFF; // Turn ON LEDs on PORTA PORTB = 0xFF; // Turn ON LEDs on PORTB PORTC = 0xFF; // Turn ON LEDs on PORTC PORTD = 0xFF; // Turn ON LEDs on PORTD Delay_ms(100); // 1 second delay } while(1); // Endless loop }
83
84