Microcontroladores Ciscx
-
Upload
elohim-flores -
Category
Documents
-
view
3.146 -
download
14
description
Transcript of 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.
¿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.
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).
Objetivos:
Describir la función de un
microcontrolador.
Características generales de
arquitectura.
Diferentes tipos de microcontroladores.
También llamados:
SoC, controlador embebido, micro
computadora, etc...
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.
Un solo chip (hardware necesario para
funcionar minimo).
Utilizados para control.
Sus componentes son:
› Memoria.
› I/O.
› Nucleo de procesamiento.
› Perifericos.
ROM:
› Programa, Constantes.
RAM
› Programa en ejecución, Variables.
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.
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.
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).
MPU.
Uso general.
Mas potentes.
• MCU.
• Uso especifico.
• Todo en un chip.
• Módulos “ayudan”
al nucleo.
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
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.
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.
Harvard:
Von Neumann
Instruction
memory CPUData
memory
CPU Data and
instruction
memory
Bajo consumo de potencia.
Mayor integracion.
Grandes cantidades de memoria Flash.
Mayor tamaño de bus.
Multiples nucleos (Cortex A9, XGATE).
Aplicaciones con baja demanda de
procesamiento.
Ejemplo: Freescale HCS08ac60
› 40 MHz.
› Ahorro de potencia: wait mode, stop mode.
› 60KB Flash.
› 2KB RAM.
Aplicaciones mas demandantes:
Automotriz, Industrial.
Mayor gama de protocolos de
comunicación:
› CAN, FlexRay, etc.
Ejemplo: Freescale HCS12XEP100.
S12X max frequency 50 Mhz
Prioridad de interrupciones
programable.
XGATE operando al doble de la
frecuencia del bus (hasta 100Mhz).
1MB Flash.
64KB RAM.
Aplicaciones altamente demandantes.
› Power train (automotriz).
› Voice recognition.
› Networking.
› Multimedia.
› PDA.
Ejemplo: OMAP44xx
› Full HD.
› 1 Ghz.
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
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.
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)!!!!!!!!!
Freescale.
Texas Instruments.
Microchip.
Atmel.
Samsung.
Renesas.
Infineon.
• Zilog
• ST microelectronics.
• NEC.
• Fujitsu.
• NXP.
• Toshiba.
• Analog Devices.
Periféricos e interfaces disponibles.
Roadmap.
Caracterizticas del microcontrolador:
› Consumo de potencia.
› Capacidades de procesamiento.
› Memorias.
Lenguaje ensamblador.
Lenguaje de alto nivel.
Cargando un SO y programando sobre
este.
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.
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.
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).
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.
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.
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.
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.
Las herramientas a usarse en
este taller son:
Development kit
DEMO9S08AC60
IDE
Code warrior
Evaluation kit
Development kit
Reference Design kit
VirtuaLab
Editor
Compilador
Ensamblador
Linker
Simulador
Debugger
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.
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.
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.
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.
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).
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.
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.
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.