Los microcontroladores estn adquiriendo mayor presencia en nuestra vida cotidiana sin que aparentemente notemos su presencia. Estn presentes en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de los computadores, en los telfonos, en los hornos microondas, los televisores, los telfonos mviles, las consolas de videojuegos...
Microcontrolador
Sistema cerrado (un solo chip que integra:) La CPU La Memoria de datos (RAM EEPROM) La Memoria de programa (ROM, EPROM, FLASH) Unidades de entrada/salida. Timmers y contadores. Opcionalmente tambin pueden integrar: Controladores de interrupciones. Clock interno. Comparadores PWM Convertidores A/D y D/A. Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.
Aumento de la fiabilidad. Menor riesgo de averas Menos ajustes Disminucin del tamao del producto. Menor volumen Mano de obra Stocks Disminucin del coste del producto.
Microcontroladores en el hogar
Cocina o Lavadora....................... 1 o Horno.......................... 1 o Frigorfico.................... 1 o Lavavajillas................... 1 Saln o TV............................. 2 o Mando a distancia.............. 1 o Video.......................... 1 o DVD............................ 2 o Receptor TDT................... 1 o Telfono fijo.................. 1 o Telfono mvil................. 2 Garaje o Puerta automtica.............. 1 o Alarma robo/incendio/gas....... 3 Ascensor............................ 2
General o Calefaccin........... o Aire acondicionado.... o Video portero......... Automvil o Frenos ABS............ o Climatizacin......... o Alarma antirrobo...... o Airbag................ o Equipo msica......... o Ordenador de viaje.... o Control motor......... o Sistema seguridad..... PC y perifricos..............
1 1 2 1 1 1 1 1 1 1 1 6
TOTAL: . . . . . . . . .
. 38
Qu microcontrolador emplear?
Factores a considerar segn la aplicacin: Eleccin de la familia (fabricante).
Experiencia previa. Documentacin. Herramientas de desarrollo y precio. Disponibilidad.
Caractersticas (arquitectura) I
Todos los microcontroladores disponen de bloques bsicos: - Procesador (CPU), - Memoria de datos y de instrucciones, - Lneas de E/S, - Oscilador de reloj - Mdulos controladores de perifricos (recursos especiales). Sin embargo, cada fabricante intenta enfatizar los recursos ms idneos para las aplicaciones a las que se destinan preferentemente. En la actualidad la mayora de uC incorporan CPUs cuya arquitectura es de tipo: Von Neumann Harvard
Caractersticas (arquitectura) II
El modelo bsico de arquitectura empleada por los computadores digitales fue establecida en 1945 por Von Neumann. Este tipo de arquitectura consta de los siguientes bloques: Memoria principal Unidad aritmtico-lgica Unidad de control Unidad de entrada/salida
Unidad de control: se encarga de generar las seales necesarias para que todo el
computador ejecute las instrucciones ledas de la unidad de memoria. La unidad de control es la encargada de leer de forma consecutiva las instrucciones (que se encuentran almacenadas en la unidad de memoria), y generar las seales elctricas necesarias para proceder a la ejecucin de cada una de estas instrucciones. Es la unidad que gobierna y gestiona el comportamiento de un computador.
La agrupacin de algunos bloques funcionales del computador como son la unidad de control, la unidad aritmtico-lgica y los registros recibe el nombre de unidad central de proceso (CPU).
Arquitectura HARVARD
En la arquitectura Harvard, existen dos tipos de memorias, y por lo tanto dos buses, que suelen ser de anchura diferente, es posible acceder a ambas memorias al mismo tiempo, con lo cual la velocidad del sistema aumenta.
Ejemplo:
Bsqueda 1
Ejecuta 1
1. MOVLW 55h
Bsqueda 2
Ejecuta2
2 .MOVWF PORTB
Bsqueda 3
Ejecuta 3
3. CALL SUB_1
Bsqueda 4
Salir
4. BSF PORTA,BIT3
Bsqueda SUB_1
Ejecuta SUB_1
Microcontroladores (CPU)
CISC: Complex Instruction Set Computer
Muchas instrucciones diferentes. Potentes y especializadas. Facilita la programacin. Cdigo muy compacto P.e.: Motorola
Tipos de memoria no voltil en los microcontroladores (I) Los diferentes tipos de memoria no voltil que nos podemos encontrar en un microcontrolador son: ROM CON MSCARA. OTP. EPROM. EEPROM. FLASH.
Reloj principal
Genera las seales que determinan la velocidad de trabajo del uC. Suele estar integrado en el propio chip, solo necesita unos pocos componentes externos. Cristales de cuarzo. Resonadores cermicos. Circuitos R/C. Oscilador externo. Existen uC, que incluso integran toda la circuiteria necesaria para generar la seal de reloj.
Recursos especiales
Temporizadores o timers. Perro guardin o watchdog. Proteccin ante fallos de alimentacin o brownout. Estado de bajo consumo o sleep. Convertidor A/D. Convertidor D/A. Control se anchura de pulsos PWM. Puertos de comunicacin.
UART USART USB I2C CAN TCP/IP
Anlisis y Diseo
Implementacin
Depuracin y prueba
Herramientas de desarrollo
Las herramientas de desarrollo estn formadas por un conjunto de programas e interfaces que permiten realizar los proyectos de la forma ms eficiente posible.
Ensamblador. Compilador. Simulador. Placas de prototipo + ICD. Emuladores en circuito + ICD. Programador.
Proceso de implementacin
Entorno IDE Editar cdigo fuente
*.c (editor de textos)
MIKROC
(Mikroe compiler)
MPASM, MIKROC
Fichero ejecutable
WINPIC800 + TE-20
Implementacin y prueba
SIMULACIN/CORRECCIN
PROGRAMACIN
Foto placa
Microcontroladores (Familias I)
8051 (Intel)
Arquitectura Harvard (direccionamiento separado para datos e instrucciones) Bus de 8 bits de datos Puede direccionar 64K de programa (los 4K 8K bajos pueden residir en chip) y 64K de memoria de datos externa. 128 bytes de RAM interna + registros especiales. E/S direccionadas en espacio propio. Bus de direcciones de 16 bits Gran potencia en instrucciones de bit Timers y puertos serie (no A/D ni PWM) 8048 serie baja 80c196 de 16 bits 80186: microcontrolador con un 8086 como ncleo (PC XT)
Porqu PIC?
No porque esta familia sea mejor que otras, sino porque presentan diversas caractersticas que los hacen especialmente interesantes: - Facilidad de uso. - Gran cantidad de informacin disponible en libros, revistas e Internet. - Herramientas de desarrollo muy asequibles. - Bajo precio y fcil disponibilidad. En muchos casos la eleccin de una versin adecuada de PIC es la mejor solucin para resolver un problema. Otras familias de microcontroladores son ms eficaces en aplicaciones concretas, especialmente si predomina una caracterstica especial.
Gamas de PICs
bit s
Gama alta mejorada
PIC24 , (DsPIC)
75, (84) instrucciones, hasta 16,(40)MIPS
16
PIC18
32 niveles de pila17 vectores de interrupcin, 75 instruciones de 16 bits, 10 MIPS
8b its
PIC16* 8 niveles de pila, 4 vectores de interrrupcin 35 instrucciones de 14 bits, 1 timer 8 bit y 2 de 16bit, hasta 5MIPS
Comparativa
Modelo Mem. Prog. Mem. Datos Bytes Palabras
Bytes EEP Bytes RAM
Conversin A/D Lneas de E/S Comparador Analog Temporizadores N de pins PWM Frec. Max. Precio
7(10bits) 8(10bits)
8 No 4 Mhz. 2,04
18 No 20Mhz. 5,17
40 Si 20Mhz. 10,85
64 Si 40Mhz 23,75
La memoria de programa
El espacio marcado como "Espacio de Memoria de Usuario" es donde ir el programa, desde la direccin 0000h hasta la 3FFh (3FFh en decimal es 1023, que mas la direccin 0000h hace 1024 direcciones, es decir, 1Kbyte). "Reset Vector" es la primera direccin (0000h) a la que se dirige el PIC al encenderlo o al resetearlo y donde debe estar siempre la primera instruccin. "Vector de Interrupcin" es la direccin (0004h) a la que se dirige el PIC cuando se produce una interrupcin, esto es, un evento que permite sacar al PIC de la ejecucin normal del programa para ejecutar una subrutina de atencin a la interrupcin. "PC" (Contador de Programa) es un registro de 13 bits que apunta a la direccin de la memoria de programa que contiene la instruccin a ejecutar. "Niveles de la pila de 1 a 8" son los niveles de la pila, que se utiliza cuando se ejecutan subrutinas.
-El rea RGP (Registros de Propsito General) comprende los registros que podemos utilizar como variables de trabajo a partir de la direccin 0Ch hasta la 4Fh (68 bytes de SRAM). Puede accederse directamente o bien indirectamente haciendo uso del registro FSR. - El rea RGP as como algunos registros especiales son los mismos en los dos bancos del mapa de memoria del PIC.
Interrupciones
Registro INTCON
Registro OPTION
// Preescaler a TMR0 // PORTB como salida // iniciar PORTB // Habilitar interupcin TMR0 // Resetear cnt
RAM 16F84
RAM 16F877
Lcd_Init
Lcd_Init(&PORTB);
Lcd_Out
void Lcd_Out(unsigned short row, unsigned short col, char *text); Lcd_Out(1, 3, "Hello!");
Lcd_Custom_Cmd
void Lcd_Custom_Cmd(char out_char); Lcd_Custom_Cmd(Lcd_Clear);
LCD Command
LCD_FIRST_ROW LCD_SECOND_ROW LCD_THIRD_ROW LCD_FOURTH_ROW LCD_CLEAR LCD_RETURN_HOME
Purpose
Move cursor to 1st row Move cursor to 2nd row Move cursor to 3rd row Move cursor to 4th row Clear display Return cursor to home position, returns a shifted display to original position. Display data RAM is unaffected. Turn off cursor Underline cursor on Blink cursor on Move cursor left without changing display data RAM Move cursor right without changing display data RAM Turn LCD display on Turn LCD display off Shift display left without changing display data RAM Shift display right without changing display data RAM
Lcd_Custom_Out Lcd_Custom_Cmd
2007";
void main() { TRISB = 0; TRISC = 0; // PORTB y PORTC Salida Lcd_Custom_Config(&PORTC,7,6,5,4,&PORTB,0,1,2); Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Ocultar cursor Lcd_Custom_Out(1, 1, text); //Imprimir texto }
Registro de datos
Conversin A/D TRISA = 0xFF; ADCON1 = 0x80; ADCON0 = 0x81; Comando: Adc_Read( )
Inicializa el convertidor A/D para trabajar como oscilar RC, y como parmetro se le pasa el canal que queramos convertir, devolviendo un entero con el resultado de la conversin.
Interfaz Serie
Posibilidad de configuracin para comunicacin:
full-duplex asncrona. Sincrona como Master Sncrona como Slave
Interfaz Serie
MODO ASINCRONO:
codificacin standard NRZ
1 bit inicio 8-9 de datos y 1 bit de paro.
formato standard de 8 bits ( configurable ) se transmite primero el bit LSB paridad no soportada por HW pero puede calcularse por SW y almacenarse en bit 9
Interfaz Serie
DIAGRAMA DEL BLOQUE DE TRANSMISION
Interfaz Serie
PROGRAMACION:
1) Inicializar registro del Generador de baudios (SPBRG) y el bit de alta velocidad si necesario (BRGH)
Interfaz Serie
2) Modo Asncrono
Clear bit SYNC
4) Interrupciones habilitadas
Set bit TXIE
Interfaz Serie
6 ) Habilitar transmision
Set bit TXEN (habilita el bit TXIF)
7) Si se ha seleccionado 9 bit
Cargar bit en TX9D
// ejemplo para simular en placa de prototipos // PICDEM2 + PIC16F877 unsigned int temp; char txt[5]; void main(){ ADCON1 = 0x8E; TRISA = 0x11; Lcd_Custom_Config(&PORTD,3,2,1,0,&PORTA,3,2,1); Lcd_Custom_Out(1, 1, "valor conversion:"); do { temp = Adc_Read(0); // Almacena valor de la conversion WordToStr(temp*5/1020, txt); delay_ms(100); Lcd_Custom_Out(2, 1, txt); }while(1); }
/* * Project name: ADC_USART (enviar al puerto serie el valor del ADC) */ unsigned short temp_res; void main() { USART_Init(9600); // Inicializar puerto serie (9600 baud rate, 1 stop bit, ADCON1 = 0; TRISA = 0xFF; // Todos los pin analgicos y VDD es Vref // PORTA entrada
...
do { // leer ADC y enviar los 8 bits al puerto serie temp_res = ADC_Read(0) ; USART_Write(temp_res); } while (1);
Ejercicio n 1 (flujograma)
P ra c t ic a 0 1 -D e fin ir va ria b le s -P a --> E n t ra d a -P b --> S a lid a
L e e r P u e rt o A (R a 0 )
No
P 1 (R a 0 ) e s t a p u ls a d o ?
Si
A pagar Led L1 (R b 0 )
E nc ender Led L 1 (R b 0 )
Resultado
Proceso de trabajo
Ejecutar el compilador. Crear un proyecto nuevo, o abrir uno existente.
Proyect -> new proyect.
Escribir el cdigo fuente. Construir el proyecto (build) y comprobar que esta libre de errores.
En el subdir de trabajo se generan 4 nuevos ficheros: *.asm, *.lst, *.mcl y *.hex
El fichero *.hex generado es el ejecutable que emplearemos para simular en proteus, y posteriormente grabarlo en el microcontrolador.
-Define un puerto o un pin como entrada o salida. -Un 1 define el pin como entrada y un 0 como salida. - Ejemplo: TRISA = 0xFF; TRISB = 129; TRISE = % 11110001;
PORTx
Donde x = A, B, C D E
-Asigna un valor a un puerto. -Ejemplo: PORTB = %10000111; PORTA = 0xF8; PORTC = ~PORTB
PORTx.Fy
Donde x = A, B, C D E e y = 0..7
Var = PORTx.Fy
-Lee el pin y del puerto x y lo asigna a var. -Ejemplo: temp = PORTA.F2;
Ejercicio 1
void main(){ TRISB = 0; TRISD = 0; PORTB = 0; PORTD = 0; do { PORTB = 0xFF; PORTD = 0; delay_ms(1000); PORTB = 0; PORTD = 0xFF; delay_ms(1000); } while(1); } // inicializamos el puerto B y el D como salida. // 0 --> Salida, 1 --> entrada
// Retardo de 1 seg.
PIC 16F88
PIC 16F88
Microcontrolador Pic 16F88 Clock Frecuencia tpica Frecuencia mxima Memoria Flash (programa) de 14 bits Memoria Memoria RAM Memoria EEPROM Temporizadores Comparadores Perifricos PWM hasta 10 bits Convertidores A/D 10 bits Comunicacin serie SPI Oscilador interno de 32 Khz a 8 MHZ Fuentes de interrupcin Patillas de E/S Caractersticas Rango de tensin Encapsulados 2.05.5 V 18 pin DIP, SOIC, 20 pin SSOP 4 Mhz 20 Mhz 4096 384 256 Tmr0, Tmr1, Tmr2 2 1 7 USART Si 10 16