Microcontroladores Ciscx

55

description

Presentacion utilizada para el taller "Programacion de microcontroladores con lenguaje c" del decimo Congreso Internacional de Sistemas Computacionales (CISC X)

Transcript of Microcontroladores Ciscx

Page 1: Microcontroladores Ciscx
Page 2: Microcontroladores Ciscx

Este taller presenta una introducción al panorama actual tecnológico en referencia a los microcontroladores; arquitecturas, aplicaciones, modos de programación, etc. La parte practica se enfoca en la programación de microcontroladores de 8 bits utilizando el lenguaje de programación C (brevemente se presentan otras opciones de programación). Se utilizaran microcontroladores y herramientas de Freescale.

Page 3: Microcontroladores Ciscx

¿Qué son los microcontroladores?

› Características de los microcontroladores

uC vs uP.

Clasificacion de arquitecturas.

› Tipos de microcontroladores (y similares).

8, 16, 32 bits.

DSPs.

Page 4: Microcontroladores Ciscx

Programando microcontroladores.› Formas de programar un micro controlador

Lenguaje ensamblador.

Lenguajes de nivel medio a alto.

Software corriendo sobre OS embebido.

› Conociendo el HCS08AC

› Practicas:

Practica 1: GPIO.

Practica 2: ADC.

Practica 3: Timers.

Practica 4: Puerto serial (SCI).

Page 5: Microcontroladores Ciscx

Objetivos:

Describir la función de un

microcontrolador.

Características generales de

arquitectura.

Diferentes tipos de microcontroladores.

Page 6: Microcontroladores Ciscx

También llamados:

SoC, controlador embebido, micro

computadora, etc...

Page 7: Microcontroladores Ciscx

Electrodomesticos.› Microondas, Lavadoras, Refrigeradores.

Entretenimiento.› Dispositivos portátiles multimedia.

› Televisores, Blue-Ray, Equipos de sonido, etc.

Automotriz.› Monitoreo y control de subsistemas.

› Infotainment.

Industrial.› Control de procesos.

Page 8: Microcontroladores Ciscx

Un solo chip (hardware necesario para

funcionar minimo).

Utilizados para control.

Sus componentes son:

› Memoria.

› I/O.

› Nucleo de procesamiento.

› Perifericos.

Page 9: Microcontroladores Ciscx

ROM:

› Programa, Constantes.

RAM

› Programa en ejecución, Variables.

Page 10: Microcontroladores Ciscx

Algunos de los periféricos mas comunes

en un microcontrolador son los

siguientes:

› Timer, GPIO, A/D, D/A, Comparador, PWM

› Controladores:

LCD, Touchscreen, Teclado, comunicación

serial.

Page 11: Microcontroladores Ciscx

Conexión entre los periféricos y el

exterior.

Pueden tener múltiples funciones de

manera que se debe configurar cual

será la función de cada pin del chip.

Page 12: Microcontroladores Ciscx

Lee y almacena datos.

Realiza operaciones matemáticas básicas.

Realiza operaciones lógicas (AND, OR, etc).

Controla el flujo del programa. Conjunto de Instrucciones especifico.

Modelo de programación especifico:› Bits de status.

› Registros.

› Program Counter.

› Stack pointer.

Núcleos propios (PPC, S12, XGATE,) o con licencia (ARM, 8051).

Page 13: Microcontroladores Ciscx

MPU.

Uso general.

Mas potentes.

• MCU.

• Uso especifico.

• Todo en un chip.

• Módulos “ayudan”

al nucleo.

Page 14: Microcontroladores Ciscx
Page 15: Microcontroladores Ciscx

Por tamaño del bus de datos:

› 4, 8, 16, 32 bits.

Por el conjunto de instrucciones:

› CISC, RISC.

Por el acceso a memoria:

› Harvard

› Von Neumann

Page 16: Microcontroladores Ciscx

4-32 bits.

Típicamente el tamaño del bus de datos

es también el tamaño de las

operaciones.

El tamaño del bus de datos también es

relevante por que en combinación con

el modelo de programación nos dirá

cuanta memoria se puede accesar.

Page 17: Microcontroladores Ciscx

CISC (Complex Instruction Set Computer).› Instrucciones mas complejas.

› Instrucciones de tamaño variable.

› Se necesitan convertir primero a micro instrucciones.

› Mayor numero de ciclos por instrucción.

› Programas cortos.

RISC (Reduced Instruction Set Computer).› Instrucciones mas sencillas.

› Menos instrucciones.

› Idealmente un ciclo por instrucción.

› Pocos formatos de instrucciones con tamaño fijo.

› Programas largos.

Page 18: Microcontroladores Ciscx

Harvard:

Von Neumann

Instruction

memory CPUData

memory

CPU Data and

instruction

memory

Page 19: Microcontroladores Ciscx

Bajo consumo de potencia.

Mayor integracion.

Grandes cantidades de memoria Flash.

Mayor tamaño de bus.

Multiples nucleos (Cortex A9, XGATE).

Page 20: Microcontroladores Ciscx

Aplicaciones con baja demanda de

procesamiento.

Ejemplo: Freescale HCS08ac60

› 40 MHz.

› Ahorro de potencia: wait mode, stop mode.

› 60KB Flash.

› 2KB RAM.

Page 21: Microcontroladores Ciscx
Page 22: Microcontroladores Ciscx

Aplicaciones mas demandantes:

Automotriz, Industrial.

Mayor gama de protocolos de

comunicación:

› CAN, FlexRay, etc.

Ejemplo: Freescale HCS12XEP100.

Page 23: Microcontroladores Ciscx

S12X max frequency 50 Mhz

Prioridad de interrupciones

programable.

XGATE operando al doble de la

frecuencia del bus (hasta 100Mhz).

1MB Flash.

64KB RAM.

Page 24: Microcontroladores Ciscx
Page 25: Microcontroladores Ciscx

Aplicaciones altamente demandantes.

› Power train (automotriz).

› Voice recognition.

› Networking.

› Multimedia.

› PDA.

Ejemplo: OMAP44xx

› Full HD.

› 1 Ghz.

Page 26: Microcontroladores Ciscx
Page 27: Microcontroladores Ciscx

Se estima que en el 2012 los dispositivos

con nucleos ARM desplazaran a intel del

mercado de las netbooks.

http://www.youtube.com/watch?v=lrLa

1qTVf34

Page 28: Microcontroladores Ciscx

Procesador digital de señales.

Se puede definir como un

microcontrolador cuyo modelo de

programacion esta optimizado para

realizar un alto numero de MACs

(Multiply and Accumulate)

Ejemplo:

› Texas Instruments TMS320C6472-700.

Page 29: Microcontroladores Ciscx

6 megamodulos los cuales cuentan con:› 32 Kbytes de cache L1 para datos.

› 32 Kbytes de cache L1 para programa.

› 608 Kbytes de cache L2 (unificado para datos y programa).

› Un núcleo de DSP de alto rendimiento C64x+.

› DMA interno.

64 canales de EDMA.

Un controlador de memoria DDR2.

768 Kbytes de RAM interna.

33600 MMACS (Mega MAC por segundo)!!!!!!!!!

Page 30: Microcontroladores Ciscx
Page 31: Microcontroladores Ciscx

Freescale.

Texas Instruments.

Microchip.

Atmel.

Samsung.

Renesas.

Infineon.

• Zilog

• ST microelectronics.

• NEC.

• Fujitsu.

• NXP.

• Toshiba.

• Analog Devices.

Page 32: Microcontroladores Ciscx

Periféricos e interfaces disponibles.

Roadmap.

Caracterizticas del microcontrolador:

› Consumo de potencia.

› Capacidades de procesamiento.

› Memorias.

Page 33: Microcontroladores Ciscx
Page 34: Microcontroladores Ciscx

Lenguaje ensamblador.

Lenguaje de alto nivel.

Cargando un SO y programando sobre

este.

Page 35: Microcontroladores Ciscx

El lenguaje ensamblador es un lenguaje de bajo nivel por que hay una relación directa entre las instrucciones en ensamblador y opcodes del lenguaje maquina.

Cada núcleo tiene su propio conjunto de instrucciones y modelo de programacion.

Se recomienda utilizar lenguaje ensamblador cuando:› Se quiere tener una relación directa entre software y hardware.

› Se tiene memoria de programa muy limitada.

› Aplicaciones criticas.

Desventajas: curva de aprendizaje pronunciada, dificil de comprender, dificil de portar.

Page 36: Microcontroladores Ciscx

Código sencillo de comprender y

codificar aun cuando no se ha

trabajado con el microcontrolador.

Sencillo de migrar (si se codifica

adecuadamente).

Se puede combinar con ensamblador (si

el compilador lo permite).

Desventajas: Entre mayor sea el nivel del

lenguaje mayor sera el overhead.

Page 37: Microcontroladores Ciscx

Se recomienda cuando se tienen aplicaciones demasiado grandes o cuya administración es complicada.

Se programa como si se estuviera programando una PC.

Se utiliza el toolchain especifico de la plataforma para compilar las aplicaciones (cross-compile).

Se puede utilizar un NFS (Network File System) para facilitar el debugeo.

Algunos ejemplos: WinCE, Linux (varias distribuciones), Android, ChromeOS, sistemas operativos en tiempo real.

Desventaja: El sistema operativo consume recursos adicionales, se necesita contar con una version del sistema operativo compatible con la plataforma (o adaptarlo de otra).

Page 38: Microcontroladores Ciscx
Page 39: Microcontroladores Ciscx

C es el lenguaje por excelencia para programación de sistemas embebidos.

Es un lenguaje de nivel medio-alto.

Existen recomendaciones a seguir para programar sistemas embebidos, es decir se recomienda solo usar un subconjunto del lenguaje C.

Ventajas:› Al compilarse no dará un overhead demasiado grande.

› Soportado por la mayoría de las plataformas y compiladores.

› Es mas fácil programar código eficiente en c (que se convierta en código eficiente en ensamblador) que ensamblador eficiente.

› Altamente conocido.

Desventajas:› Los estándares del lenguaje (ANSI C, ISO 9899) no especifican

algunos detalles, estos pueden traer problemas.

Page 40: Microcontroladores Ciscx

El codigo en C es compilado para

generar un codigo objeto.

Todos los codigos objeto que se

compilan junto con un proyecto se

“acomodan” en memoria de acuerdo a

la informacion del Linker.

Page 41: Microcontroladores Ciscx
Page 42: Microcontroladores Ciscx
Page 43: Microcontroladores Ciscx

Se debe evitar usar tamaños de datos

mayores al tamaño del bus de datos.

Procurar usar unsigned.

El punto flotante se debe utilizar solo

cuando sea estrictamente necesario.

Los tamaños de datos NO están

completamente estandarizados se

recomienda definir nuevos tipos de

datos.

Page 44: Microcontroladores Ciscx

Las variables volátiles (volatile) son aquellas que se pueden modificar fuera de la ejecución normal del programa como es el caso de los registros.

Las variables volatile no son suceptiblesa las optimizaciones del compilador, se debe tener en cuenta cuando se realizan operaciones que no tienen efecto sobre ninguna parte del programa.

Page 45: Microcontroladores Ciscx

Las herramientas a usarse en

este taller son:

Development kit

DEMO9S08AC60

IDE

Code warrior

Page 46: Microcontroladores Ciscx

Evaluation kit

Development kit

Reference Design kit

VirtuaLab

Page 47: Microcontroladores Ciscx

Editor

Compilador

Ensamblador

Linker

Simulador

Debugger

Page 48: Microcontroladores Ciscx

Descargar la siguiente hoja de datos:

http://www.freescale.com/files/microcontr

ollers/doc/data_sheet/MC9S08AC60.pdf

?fpsp=1

Revisar el overview ubicado al principio.

Analizar el mapa de memoria.

Page 49: Microcontroladores Ciscx

Descargue la siguiente guía de usuario:

http://www.freescale.com/files/microcontr

ollers/doc/user_guide/DEMO9S08AC60E_

UG.pdf?fpsp=1

Ubicar donde están las conexiones de

los leds los push buttons y los switches.

Page 50: Microcontroladores Ciscx

1. Desactivar el watchdog.

2. Configurar los pins donde están

conectados los LEDs como salidas.

3. Configurar los switches y los push

buttons como entradas.

4. Programar que los LED prendan cuando

se presionen los switches y/o push

button.

Page 51: Microcontroladores Ciscx

Existen dos métodos para esperar a que externamente se modifique el valor de un registro:› Polling: se pone una condicion en espera hasta

que el valor monitoreado cambie:

while (flag); /*cuando la bandera cambie a 1 continuara la ejecucion */

› Interrupciones: Se configura el sistema de manera que cuando haya suceda el evento esperado se llame la interrupción que le corresponda a dicho evento. Cuando el evento esperado sucede se guarda el

contexto y se carga la dirección del vector de interrupciones correspondiente en el PC.

Page 52: Microcontroladores Ciscx

Configurar el ADC para que trabaje con

el potenciometro de la tarjeta y que

modifique el valor que se muestra en los

LEDs (toda la barra de LEDs).

Page 53: Microcontroladores Ciscx

Configurar el clk para que trabaje a

20Mhz.

Configurar los timer para que trabajen

con un tiempo de aproximadamente 1

micro segundo (primero manejar por

polling y después por interrupciones).

Utilizando el timer configurado hacer

que un LED parpadee cada segundo.

Page 54: Microcontroladores Ciscx

Configurar un canal del timer para

trabajar como PWM conectado a un

LED.

Modificar la intensidad de la iluminación

del LED de acuerdo a la posición del

potenciómetro.

Page 55: Microcontroladores Ciscx

Configurar el SCI para un baud rate de

9600.

Configurar las interrupciones de manera

que cuando se reciba un dato se envie

y cada que se envie dicho dato se

prenda o apague un LED.

Conectar el puerto serial del

microcontrolador al puerto serial de la

computadora.