Introducción a los Microcontroladores

Slides:



Advertisements
Presentaciones similares
PIC 16F873 CONVERSIÓN A/D Y TRANSMISIÓN POR PUERTO SERIE
Advertisements

MICROCONTROLADORES NOCIONES BÁSICAS.
MICROCONTROLADOR PIC 16F877.
Alumno: Roy R. Mercado Núñez
Telecomunicaciones Calificación Final. Primer parcial 30%
El ordenador.
MICROPROCESADORES y MICROCONTROLADORES
ARQUITECTURA DE COMPUTADORAS
Hardware.
Adquisición de datos Señal (I, V, f, …) Instrumento Acondicionamiento
Rommel Chang Suárez Jefferson Moreno Briones
Capítulo II DISEÑO DEL PROGRAMA DE MONITOREO EN LOOKOUT”.
MICROCONTROLADORES AVANZADOS
COMUNICACIÓN SERIAL Javier Garcia Ramos.
Introducción a los Procesadores Digitales de Señal (DSP)
Programación básica de la interfase RS232 C
SD card en modo SPI Pablo Irrera Condines Ayudante de TP
Introducción a los MCU´s de Motorola
Introducción a los microcontroladores.
Entrada / salida digital con ccs
Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al costo de una memoria de baja velocidad Los puntos básicos relacionados con.
Seminario programación microcontroladores ARM LPC 1769
El Sistema de Memoria. Contenido Arquitectura del sistema Arquitectura del DIMM Descripción del reloj Arquitectura del chip RAM Latencia de Memoria Detección.
Entrada/Salida.
Microcontroladores PIC
Capítulo 1: Introducción a redes conmutadas
INTRODUCCIÓN A LAS COMUNICACIONES DE DATOS José Estay A.
Vista General del Funcionamiento del Computador y sus Interconexiones
Técnicas Digitales III Familia DSP56F801 Universidad Tecnológica Nacional Facultad Regional San Nicolás.
Operación de Micros e Interfaces
Microcontroladores.
Placa de expansión para Comunicaciones C ommunication B oard T ask F orce.
Central analógica direccionable configurable en red
ARQUITECTURA DE COMPUTADORES
INTERRUPCIONES Introducción.
Maquinas Digitales  La idea principal es dividir el procesamiento de cada una de las instrucciones en una serie de pasos totalmente independientes.
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Control de Acceso Biométrico
Memorias RAM Características: Son de lectura escritura
Objetivos Generales Entender el funcionamiento de un microcontrolador
MICROCONTROLADORES NOCIONES BÁSICAS COMPUTO II. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
I2C (Inter-Integrated Circuit) (Modo Maestro-Esclavo )
M.C. Luis Ricardo Salgado Garza Depto. Ciencias Computacionales, ITESM-MTY Marzo 2004.
Pure Valve Tone Guitar Amp
MICROCONTROLADORES COMPATIBLES CON 8XC51
Tema 1: Introducción a los microcontroladores
Memorias.
“Organización y Arquitectura de Computadores” William Stallings
Sesión 11: - Comparador, Captura y PWM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales.
Sesión 09: TIMER como base de tiempo.
Tema: Componentes físicos de una computadora
TARJETAS DE RED.
Tema 4: El microcontrolador PIC16F876
INTRODUCCIÓN A LAS HERRAMIENTAS DE DISEÑO CON PIC
NOCIONES BÁSICAS COMPUTO II
Contenido Los puntos 9.7 y 9.8 no se dan 9.1. Revisión del concepto de máquina secuencial. Taxonomía Temporización en los circuitos lógicos síncronos.
MICROPROCESADORES INTEGRANTES: Williams Rodríguez C.I: Peña julio C.Ojeda 17/04/2012.
CORPOCIDES Ing. Emilio Medina Baquero
INTRODUCCIÒN MICROCONTROLADORES
¿Qué es un Microcontrolador?
REPUBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD ALONSO DE OJEDA FACULTAD DE INGENIERÍA ESCUELA DE COMPUTACIÓN ING. PROF. LEONEL SEQUERA MEMORIAS.
Programando puertos en C freescale
Tema 1- Generalidades sobre Control Digital
Unidad de transferencia de memoria
Programación de microcontroladores PIC16f877a en linux
Arquitectura de Computadores Clase 17 Tecnologías de Memorias IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de.
HARDWARE Fuente principal:.
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
Tecnologías y Arquitecturas de SE
Transcripción de la presentación:

Introducción a los Microcontroladores

Introducción a los Microcontroladores Arquitectura Memoria I/O Interrupciones Timers/PWM Interfaces y Otros Periféricos

Introducción Uso de los microcontroladores Microondas, Lavarropas, Televisores, ... Automóviles, aviones, barcos Teléfonos Automatización industrial Pequeños dispositivos ad-hoc ...

Introducción Ejemplo. Se quiere: Leer periódicamente una temperatura Prender y apagar un calefactor Mostrar en un display la temperatura Permitir al usuario ajustar la temperatura Posibilidad de actualizar la funcionalidad con un interfase serie

Introducción Diseño discreto. Se requiere: Un microprocesador 20 líneas de I/O (2 chips de 16 c/u) 1 Interfaz serie (1 chip) 1 Timer (1 chip) Memoria SRAM (para variables) Memoria Flash (para programa) Memoria EEPROM (para constantes)

Introducción Diseño discreto.

Introducción Diseño Integrado. ATmega16 (atmel)

Oferta de Microcontroladores Estructurada por “familias” y “subfamilias”. Por ejemplo, cada familia tiene el mismo nucleo del procesador (su código será compatible): 8051,PIC,HC,ARM O son familias orientadas a la aplicación O por performance (de diferente tipo)

Oferta de Microcontroladores

Oferta de Microcontroladores

Oferta de Microcontroladores Ver aquí el catálogo

Oferta de Microcontroladores Dentro de cada “familia” hay mucha varidad de dispositivos Pueden estar agrupados en “subfamilias” Una forma de clasificación es en base a los perifericos que integran o memoria

Oferta de Microcontroladores MC9RS08KA Family

Arquitectura

Arquitectura: Procesador REPASO Arquitectura: Procesador

Arquitectura Von Neuman vs. Hardvard CISC vs. RISC Tamaño/variedad de las instrucciones Velocidad: clock; 8/16/32 bits

Arquitectura de las instrucciones Por stack Por acumulador REPASO Arquitectura de las instrucciones Por stack Por acumulador Dos direcciones Tres direcciones

REPASO Arquitectura Modos de direccionamiento

Memoria Registros (memoria de corto plazo): Memoria de datos Pequeña (relativamente) Almacenamiento temporario p/CPU Memoria de datos Relativamente Grande Almacena datos mientras el MCU funciona Memoria de programa De preferencia, mantiene el programa incluso con el MCU apagado.

REPASO Memoria: Tipo físicos

Memoria: Atención S/DRAM: sin limite de escrituras EEPROM: 100.000 ciclos de borrado Flash: 10.000 ciclos de borrado

Memoria: Direccionamiento Separado: Cada tipo físico se direcciona por separado (por ejemplo, usando diferentes registros índices) Hay direcciones repetidas Contínuo: Se accede siempre igual y la logica interna accede a la memoria que corresponde No hay direcciones repetidas

Memoria: Direccionamiento Separado

Memoria: Direccionamiento Continuo

Memoria: ejercicio For (i=100;i>=0;i--) Inadvertidamente i es almacenada en EEPROM Inadvertidamente i esta implementada como unsigned Como la EEPROM es lenta, cada iteración lleva, digamos, 10 ms ¿Que pasa al conectar el MCU?: el programa se cuelga Me doy cuenta, digamos, a los 10 segundos Empiezo a “debuggear” el programa (pero no apago el MCU) ¿En cuanto tiempo me quedo sin microcontrolador?

I/O

Digital I/O Implementadas por pines de conexión directa al exterior: Los MCU tienen en general de 8 a 32 pines (o más). Se agrupan en “ports” de a 8 pines. En general, los pines se pueden configurar como entrada o salida La lógica puede ser positiva o negativa. Los pines pueden tener otras funciones alternativas.

Digital I/O pin 1 del port B Módulo de Interrupción 1 - entrada 5 Pin Tx de puerto serie Conversor AD canal 5

Digital I/O Los pines se controlan mediante 3 registros: Data Direction Register (DDR): hay uno por cada puerto y cada bit determina la dirección de un pin. Port Register (PORT): uno por cada puerto y cada bit controla el estado del puerto (si es de salida) Port Input Register (PIN): uno por cada puerto y cada bit da el estado de su respectivo pin, esté este configurado como entrada o salida.

Digital I/O

Digital I/O

Digital I/O bit 7 bit 0 Ejemplo: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 PTBDD = 0x80; // initialize PTB7 as output PTBD = 0; // initialize PTB to 0 PTBD_PTBD7 = ~PTBD_PTBD7; // invert the output

Digital I/O PORT Register: de preferencia debe escribirse con operaciones de escritura de bit, si estan disponibles Caso contrario usar : Read-Modify-Write con cuidado.

Digital Input La entrada se muestrea con cada pulso (flanco ascendente normalmente) del clock, lo que ocasiona “metaestabilidad”:

Digital Input Normalmente incorporan un Schmitt-trigger. Para reducir la “metaestabilidad” se introducen “sincronizadores”

Digital Input Cancelación de ruidos Resistencias de pull-up/down en las entradas: puede (debe) programarse su conexión/desconexión (a veces mediante el registro PORT).

Digital Output Apenas el DDR setea un pin como salida, el MCU excita el pin de acuerdo al contenido del registro PORT correspondiente. Cuidado con los cortocircuitos Orden de seteo de DDR y PORT

Analog I/O Conversión DIGITAL a ANALOGICA: Usando un modulador de ancho de pulso

Conversión DIGITAL a ANALOGICA: REPASO Conversión DIGITAL a ANALOGICA: Por redes del tipo R-2R. Para r bits sería:

Conversión Analógica-Digital (CAD) Comparador: determina si V1 >V2 y arroja 1, ó 0 en caso contrario.

Conversión Analógica-Digital (CAD) REPASO Conversión Analógica-Digital (CAD) Conversion de valor

Conversión Analógica-Digital (CAD) REPASO Conversión Analógica-Digital (CAD) La velocidad de muestreo determina la máxima frecuencia posible de muestrear (fmax<fs/2). Además, hay que tener en cuenta el tiempo que puede llevar la conversión. La conversion lleva tiempo: para asegurar la estabilidad se usa una etapa de retención (sample-hold)

Conversión Analógica-Digital (CAD) REPASO Conversión Analógica-Digital (CAD) Directa (flash): muy rápida (1 bit time); muy cara Este modo de conversión rápido es utilizado en algunos MCU y por lo general, no hay mas de 1 o 2 canales “rápidos”.

Conversión Analógica-Digital (CAD) REPASO Conversión Analógica-Digital (CAD) Seguidor (tracking): muy lenta (2r bit times) y variable; barata.

Conversión Analógica-Digital (CAD) REPASO Conversión Analógica-Digital (CAD) Aproximaciones sucesivas: velocidad media y fija en r+1 Este es el modo mas utilizado

Conversión Analógica-Digital (CAD) Control del CAD Tensión de Referencia Entrada Salida (registro) Start Conversion Conversion Complete Habilitación

Conversión Analógica-Digital (CAD) Los MCU pueden tener de 4 a 16 o más entradas (canales) y un solo CAD, de 8 a 12 bits de precisión. Se multiplexan los canales (aumentan los tiempos) Autoincremento: al leer un canal, se pasa al siguiente y se efectúa un SC automáticamente. Existe el “modo contínuo” y de disparos sucesivos mediante el RTC Una conversión puede “dispararse” por eventos como un timer, una variación de una entrada digital o una señal externa.

CAD: Ejemplo de características en un MCU Linear successive approximation algorithm with 12 bits resolution. Up to 28 analog inputs. Output formatted in 12-, 10- or 8-bit right-justified format. Single or continuous conversion (automatic return to idle after single conversion). Configurable sample time and conversion speed/power. Conversion complete flag and interrupt. Input clock selectable from up to four sources. Operation in wait or stop3 modes for lower noise operation. Asynchronous clock source for lower noise operation. Selectable asynchronous hardware conversion trigger. Automatic compare with interrupt for less-than, or greater-than or equal-to, programmable value.

CAD: Ejemplo de implementación en un MCU Estado, control y configuración reloj multiplexor comparador

CAD: Ejemplo de un registro de configuración Ver hoja de datos del MC9S08QE128

0 1 0 0 0 1 0 0 // Configures ADC peripheral (ADC clock = 6.25MHz) 0 1 0 0 0 1 0 0 // Configures ADC peripheral (ADC clock = 6.25MHz) // Bus clock as clock source, 12-bit conversión and divisor=4 ADCCFG = 0x44;

Conversión Analógica-Digital

Conversión Analógica-Digital

Introducción a los Microcontroladores Arquitectura Memoria I/O Interrupciones Timers Interfaces y Otros Periféricos

Interrupciones Un programa sin uso de interrupiones (polling): ¿inconvenientes?

Interrupciones Con interrupciones: Pueden no existir

REPASO Interrupciones Las interrupciones se generan cuando cuando cambia un “estado”. Permiten la reacción ante eventos Restricciones de tiempo real Polling vs. Interrupts Interrupt Service Routine (ISR)

Interrupciones Control de Interrupciones Interrupt Enable (IE): bit que se setea para habilitar al controlador que llame a la ISR cuando se produce el evento. Interrupt Flag (IF): lo setea el MCU cuando se produce el evento. Se limpia automatica o manualmente. Interrupt mode (IM): mas de un bit para indicar si la interrupcion se produce por flanco ascendente, descendente, , etc. Global Interrupt Enable.

Interrupciones Control de Interrupciones Inhabilitar las interrupciones no implica perder eventos. Cuidado al limpiar la IF Normal Interrupts and NMI

REPASO Interrupciones Interrupt Vector Table: es una tabla donde se indica para cada interrupcion en donde se encuentra la ISR que la atiende. Puede contener la dirección de la primera instrucción de la ISR respectiva o una instrucion jump (JSR) a la ISR (depende el MCU)

Interrupciones: IVT En el Atmega128 (Atmel):

MC9S08QG8 (Freescale)

Interrupciones Prioridades: fijas o variables Dentro de una ISR se puede establecer cuales interrupciones se permiten (sin hacerlo “a mano” vía los IE) Cancelación de ruidos Eventos internos

Interrupciones Pasos que ocurren ante una interrupción: MCU setea la IF (esté o no habilitada la interrupción Se termina la instrucción en curso o si el MCU está en estado “sleep”, se despierta. Se identifica la ISR considerando los IE y la interrupcion de mas alta prioridad (si hay mas de un IF seteado). Se llama a la ISR (... y ya pasó un tiempito)

Interrupciones Ejemplo: El controlador de interrupciones 1 (KBI1) tiene 8 entradas conectadas a determinados puertos KBI1P2

Interrupciones Registros de control (ubicación en la memoria) Son 3 dirección mnemónicos de funcion de cada bit

Interrupciones

Interrupciones Mapeo a variables:

Interrupciones Ejemplo inicialización: void InitKBI() { /*KBI1 Init*/ KBI1SC_KBIE = 0; // Mask KBI1 interrupts KBI1ES_KBEDG3 = 0; // KBI1P3 internal pull-up, falling edge/low level KBI1ES_KBEDG2 = 0; // KBI1P2 internal pull-up, falling edge/low level KBI1PE_KBIPE3 = 1; // Enable KBI1P3 interrupts KBI1PE_KBIPE2 = 1; // Enable KBI1P2 interrupts KBI1SC_KBIMOD = 0; // Detect edges only KBI1SC_KBACK = 1; // Clear possible false interrupts KBI1SC_KBIE = 1; // Enable KBI1 interrupts } //end InitKBI

Interrupciones Atención de la interrupción

Interrupciones Alternativa: Calificador: dice que la función es una subrutina de interrupción Interrupciones Número de vector que debe atender esta rutina Alternativa: Se le puede definir al linker (archivo .prm) que guarde la direccion de la funcion directamente: VECTOR ADDRESS 0xFFDA KBIx-ISR Y entonces la sintaxis queda: interrupt void KBIx_ISR(void) { ...

Interrupciones En el main:

Interrupciones

Interrupciones Polling vs. Interrupts Siempre hay que analizar la situación puntual, pero en general, usar interrupciones cuando: Los eventos son infrecuentes Hay mucho tiempo entre eventos El cambio de estado es importante Quiero detectar impulsos cortos Hay eventos generados por hardware (no hay rebotes o picos) Hay muy poco para hacer así que conviene estar en modo sleep

Interrupciones Conviene “polear” cuando: El operador es humano No se requiere una temporización precisa El estado es mas importante que el cambio Los “impulsos” duran mucho Hay ruido en la señal Hay cosas para hacer en el main (pero no demasiado)

Introducción a los Microcontroladores Arquitectura Memoria I/O Interrupciones Timers Interfaces y Otros Periféricos

Timers Son contadores que suben o bajan con cada pulso de reloj. El valor actual se lee de un registro o se setea en el mismo. Cuidado al acceder a timers con longitud de registro mayor a la palabra del MCU

Timers Los timers generalmente generan una interrupción cuando hacen overflow Esto sirve para generar señales o eventos peródicos (con acotada precisión) Pueden tener una señal de clock independiente del MCU. Con ella se incrementa la cuenta.

Timers Prescaler Es otro contador (de 8 o 10 bits) que trabaja contra el clock y produce una salida que es la que entra al timer. Se logra una extension de tiempos a medir por la division del prescaler. Ejemplo: 8 bit timer, clock de 1 Mhz -> cuenta máxima 255 uS con una resolución de 1 uS 8 bit timer, clock de 1 Mhz, prescaler en 1024 -> cuenta máxima 260 ms con una resolución de 1 ms.

Timers Otras fuentes de cuenta: Pulsos externos Cristal externo: generlamente de 32.768 KHz que implementa otro RTC independiente en el MCU Timestamp (input capture) Puede setearse un evento para que automáticamente se copie el valor del contador en un registro de captura. Ejemplo: cuando un comparador cambia, tomar la cuenta. Disparo de salida (output compare) Se setea el timer una cuenta y cuando se alcanza, automáticamente se levanta una salida, o similar.

Timers Ejemplo de registros (un solo timer) Este timer es muy versátil y trabaja tambien como PWM

Timers

Timers

Timers Ejemplo de uso simple: Clock=BUSclk=>8 Mhz

Introducción a los Microcontroladores Arquitectura Memoria I/O Interrupciones Timers Interfaces y Otros Periféricos

Modulación de Ancho de Pulso (PWM) Es un timer que genera una señal periódica de salida con período y ciclo de trabajo configurables

Modulación de Ancho de Pulso (PWM) Además de su uso como CDA, los PWM se usan para controlar ABS en autos, niveles de iluminación en LCDs, control de motores, etc.

Timers y PWM

Otras características RTC (Real Time Counters) Watchdog Consumo: reduccion de tensión, frecuencia y modo sleep Reset, POR y BOR External, Internal (software) Reset Keyboard interrupts

Interfaces y Otros Periféricos SCI (UART) Provee una (o mas) interface de comunicación asincrónica serie (UART) por medio de dos hiloas (Tx y Rx) Parámetros comunes: full o half duplex, data bits, parity bits, stop bits, baud rate

Interfaces y Otros Periféricos SCI (UART) Generalmente los modulos generan interrupciones (fin de transmisión, recepción, etc.) De las SCI del MCU se pueden generar con componentes externos interfases físicas RS232, RS422, RS485, etc. USART (sincrónica) Agrega un hilo para sincronismo, el cual es generado por una de las partes Si se usa como UART, el pin se puede usar como I/O

Interfaces y Otros Periféricos SPI (Serial Peripherical Interface) Para comunicación serie mediante 4 hilos basada en master-slave: MOSI: Master Out – Slave In MISO: Master In – Slave out SCK: System Clock, generado por el master SS: Slave select. Si hay mas de una linea, con un decodificador externo se pueden atender 2n slaves.

Interfaces y Otros Periféricos

Interfaces y Otros Periféricos IIC (I2C) Inter-IC bus, de Phillips, es un bus sincrónico que opera en modo master-slave con dos hilos SCL y SDA en modo half duplex, para distancias cortas, hasta 3.4 Mbps, mediante el intercambio de tramas. No hay límites al numero de dispositivos a conectar (capacidad total en el bus < 400pF) Cada nodo (uno debe ser master, por lo menos) tiene una dirección de 7 o 10 bits

Interfaces y Otros Periféricos IIC (I2C)

Interfaces y Otros Periféricos Ethernet Implementación de 10/100/1000* Ethernet MAC con PHY Para conexiones a redes de area local estándar CAN (Controller Area Network) de Bosh y Flexcan Originalmente diseñado para su uso en automoviles y ahora extendido a otras areas, permite la comunicación por bus en 1 Mbps hasta 40 m. mediante “broadcast”.

Interfaces y Otros Periféricos Módulos de criptografía Stack TCP/IP (para módulos ethernet) IEEE 1149.1 Test Access Port (JTAG) DMA Timers QSPI (Queued SPI) EzPort, para programar la memoria flash interna desde flash externas en forma directa LCD controllers ...

Interfaces y Otros Periféricos

Arquitectura

MC9S08LC60

MCF52235