SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
   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.            •   MCU.
 Uso general.    •   Uso especifico.
 Mas potentes.   •   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:
               Instruction                     Data
                memory             CPU        memory




   Von Neumann
                             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.           • Zilog
 Texas Instruments.   • ST
 Microchip.
                         microelectronics.
 Atmel.
                       • NEC.
 Samsung.
                       • Fujitsu.
                       • NXP.
 Renesas.
                       • Toshiba.
 Infineon.
                       • 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 suceptibles
  a 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.

Más contenido relacionado

La actualidad más candente

Mantenimiento folleto instalación s.o1
Mantenimiento folleto instalación s.o1Mantenimiento folleto instalación s.o1
Mantenimiento folleto instalación s.o1natalialwl
 
Taller #1 de informática 2017
Taller #1 de informática 2017Taller #1 de informática 2017
Taller #1 de informática 2017florgava
 
Introduccion de memorias
Introduccion de memorias Introduccion de memorias
Introduccion de memorias osedvani
 
Conociendo Las Nuevas Tecnonologías.
Conociendo Las Nuevas Tecnonologías.Conociendo Las Nuevas Tecnonologías.
Conociendo Las Nuevas Tecnonologías.Moises Reyes
 
Cuestionario mtto preventivo pc sistemas - resuelto
Cuestionario mtto preventivo pc   sistemas - resueltoCuestionario mtto preventivo pc   sistemas - resuelto
Cuestionario mtto preventivo pc sistemas - resueltoDuvanCASAS
 
Tecnologia relacionada para colocar o unir tarjetas de video
Tecnologia relacionada para colocar o unir tarjetas de videoTecnologia relacionada para colocar o unir tarjetas de video
Tecnologia relacionada para colocar o unir tarjetas de videoAlejandro Hidalgo
 
Tipos de tarjetas de vídeo (1ro.INF)
Tipos de tarjetas de vídeo (1ro.INF) Tipos de tarjetas de vídeo (1ro.INF)
Tipos de tarjetas de vídeo (1ro.INF) Jose David
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadorasm220
 
Mantenimiento
MantenimientoMantenimiento
Mantenimientoedwinmaya
 

La actualidad más candente (18)

Trabajo con normas_ieee1
Trabajo con normas_ieee1Trabajo con normas_ieee1
Trabajo con normas_ieee1
 
Mantenimiento folleto instalación s.o1
Mantenimiento folleto instalación s.o1Mantenimiento folleto instalación s.o1
Mantenimiento folleto instalación s.o1
 
Taller #1 de informática 2017
Taller #1 de informática 2017Taller #1 de informática 2017
Taller #1 de informática 2017
 
FUNDAMENTOS DEL LENGUAJE ENSAMBLADOR
FUNDAMENTOS DEL LENGUAJE ENSAMBLADORFUNDAMENTOS DEL LENGUAJE ENSAMBLADOR
FUNDAMENTOS DEL LENGUAJE ENSAMBLADOR
 
Adriana mantenimiento
Adriana mantenimientoAdriana mantenimiento
Adriana mantenimiento
 
6 la memoria
6 la memoria6 la memoria
6 la memoria
 
Introduccion de memorias
Introduccion de memorias Introduccion de memorias
Introduccion de memorias
 
Tp 1
Tp 1Tp 1
Tp 1
 
Conociendo Las Nuevas Tecnonologías.
Conociendo Las Nuevas Tecnonologías.Conociendo Las Nuevas Tecnonologías.
Conociendo Las Nuevas Tecnonologías.
 
Cuestionario mtto preventivo pc sistemas - resuelto
Cuestionario mtto preventivo pc   sistemas - resueltoCuestionario mtto preventivo pc   sistemas - resuelto
Cuestionario mtto preventivo pc sistemas - resuelto
 
Tecnologia relacionada para colocar o unir tarjetas de video
Tecnologia relacionada para colocar o unir tarjetas de videoTecnologia relacionada para colocar o unir tarjetas de video
Tecnologia relacionada para colocar o unir tarjetas de video
 
Tipos de tarjetas de vídeo (1ro.INF)
Tipos de tarjetas de vídeo (1ro.INF) Tipos de tarjetas de vídeo (1ro.INF)
Tipos de tarjetas de vídeo (1ro.INF)
 
16 Tarjeta GráFica
16 Tarjeta GráFica16 Tarjeta GráFica
16 Tarjeta GráFica
 
Luisa garcía
Luisa garcíaLuisa garcía
Luisa garcía
 
Luisa garcía
Luisa garcíaLuisa garcía
Luisa garcía
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
16 tarjeta gráfica
16 tarjeta gráfica16 tarjeta gráfica
16 tarjeta gráfica
 
Mantenimiento
MantenimientoMantenimiento
Mantenimiento
 

Destacado

Trabajo verano mate 1º eso2012
Trabajo verano mate 1º eso2012Trabajo verano mate 1º eso2012
Trabajo verano mate 1º eso2012Cristina
 
Un Grito Desesperado
Un Grito DesesperadoUn Grito Desesperado
Un Grito Desesperadoguest5d23b6
 
Patente für Talente
Patente für TalentePatente für Talente
Patente für TalenteThomas Hapke
 
Asesoria Adm Fcra Mundo Cime
Asesoria Adm Fcra Mundo CimeAsesoria Adm Fcra Mundo Cime
Asesoria Adm Fcra Mundo Cimejpabloquintero
 
Els Biocombustibles
Els BiocombustiblesEls Biocombustibles
Els BiocombustiblesXalet
 
Whymen die young
Whymen die youngWhymen die young
Whymen die youngzone
 
Aparato Digestivo
Aparato DigestivoAparato Digestivo
Aparato Digestivoestifer93
 
La amistad como desarrollo de la dimensión social grado 6°
La amistad como desarrollo de la dimensión social grado 6°La amistad como desarrollo de la dimensión social grado 6°
La amistad como desarrollo de la dimensión social grado 6°psicologaelena
 
Creamos Una Wiki Juntos Con Wikispaces
Creamos Una Wiki Juntos Con WikispacesCreamos Una Wiki Juntos Con Wikispaces
Creamos Una Wiki Juntos Con WikispacesSendy
 
Voicethread no ensino e aprendizaxe de linguas
Voicethread no ensino e aprendizaxe de linguasVoicethread no ensino e aprendizaxe de linguas
Voicethread no ensino e aprendizaxe de linguasAna Losada Pérez
 
Engage the crowd - Social Media in der Schweiz
Engage the crowd - Social Media in der SchweizEngage the crowd - Social Media in der Schweiz
Engage the crowd - Social Media in der SchweizStrategiepartner
 
Technorati Jose Maria E IváN (1)
Technorati Jose Maria E IváN (1)Technorati Jose Maria E IváN (1)
Technorati Jose Maria E IváN (1)Laurammsov76
 

Destacado (20)

Trabajo verano mate 1º eso2012
Trabajo verano mate 1º eso2012Trabajo verano mate 1º eso2012
Trabajo verano mate 1º eso2012
 
Hacia un enfoque de la educación en competencias
Hacia un enfoque de la educación en competenciasHacia un enfoque de la educación en competencias
Hacia un enfoque de la educación en competencias
 
Acceder a la universidad desde el Domenico Scarlatti
Acceder a la universidad desde el Domenico ScarlattiAcceder a la universidad desde el Domenico Scarlatti
Acceder a la universidad desde el Domenico Scarlatti
 
Un Grito Desesperado
Un Grito DesesperadoUn Grito Desesperado
Un Grito Desesperado
 
Variedades de la lengua
Variedades de la lenguaVariedades de la lengua
Variedades de la lengua
 
Patente für Talente
Patente für TalentePatente für Talente
Patente für Talente
 
Asesoria Adm Fcra Mundo Cime
Asesoria Adm Fcra Mundo CimeAsesoria Adm Fcra Mundo Cime
Asesoria Adm Fcra Mundo Cime
 
Els Biocombustibles
Els BiocombustiblesEls Biocombustibles
Els Biocombustibles
 
Que es el software
Que es el softwareQue es el software
Que es el software
 
Whymen die young
Whymen die youngWhymen die young
Whymen die young
 
Aparato Digestivo
Aparato DigestivoAparato Digestivo
Aparato Digestivo
 
Juny 2012
Juny 2012Juny 2012
Juny 2012
 
La amistad como desarrollo de la dimensión social grado 6°
La amistad como desarrollo de la dimensión social grado 6°La amistad como desarrollo de la dimensión social grado 6°
La amistad como desarrollo de la dimensión social grado 6°
 
Creamos Una Wiki Juntos Con Wikispaces
Creamos Una Wiki Juntos Con WikispacesCreamos Una Wiki Juntos Con Wikispaces
Creamos Una Wiki Juntos Con Wikispaces
 
ICT Eintrittsbedingungen für PH-Studierende
ICT Eintrittsbedingungen für PH-StudierendeICT Eintrittsbedingungen für PH-Studierende
ICT Eintrittsbedingungen für PH-Studierende
 
Voicethread no ensino e aprendizaxe de linguas
Voicethread no ensino e aprendizaxe de linguasVoicethread no ensino e aprendizaxe de linguas
Voicethread no ensino e aprendizaxe de linguas
 
Missionsreise Ukraine
Missionsreise UkraineMissionsreise Ukraine
Missionsreise Ukraine
 
Engage the crowd - Social Media in der Schweiz
Engage the crowd - Social Media in der SchweizEngage the crowd - Social Media in der Schweiz
Engage the crowd - Social Media in der Schweiz
 
Technorati Jose Maria E IváN (1)
Technorati Jose Maria E IváN (1)Technorati Jose Maria E IváN (1)
Technorati Jose Maria E IváN (1)
 
US7511032
US7511032US7511032
US7511032
 

Similar a Introducción a microcontroladores

Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASMdave
 
Informática básica
Informática básica Informática básica
Informática básica maikt16
 
Miguel angel pastor moreno
Miguel angel pastor morenoMiguel angel pastor moreno
Miguel angel pastor morenoSam Gutierrez M
 
TRABAJO PERSONAL
TRABAJO PERSONALTRABAJO PERSONAL
TRABAJO PERSONALtelesup
 
Introducción a los microcontroladores
Introducción a los microcontroladoresIntroducción a los microcontroladores
Introducción a los microcontroladoresUNEFA
 
COMPUTACION BASICA
COMPUTACION BASICACOMPUTACION BASICA
COMPUTACION BASICAgpaz65
 
DEFINICIONES E IDENTIFICACIONES
DEFINICIONES E IDENTIFICACIONESDEFINICIONES E IDENTIFICACIONES
DEFINICIONES E IDENTIFICACIONESN1Colaz
 
Qué es un microcontrolador
Qué es un microcontroladorQué es un microcontrolador
Qué es un microcontroladorDaysi Morante
 
Computación e Informatica
Computación e InformaticaComputación e Informatica
Computación e Informaticalondons
 
Computación e Informatica
Computación e InformaticaComputación e Informatica
Computación e Informaticalondons
 
Electronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdfElectronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdfWalterCuellarFierro
 
Assembler
AssemblerAssembler
Assemblerwai258
 

Similar a Introducción a microcontroladores (20)

Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASM
 
Risc
RiscRisc
Risc
 
Informática básica
Informática básica Informática básica
Informática básica
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
Miguel angel pastor moreno
Miguel angel pastor morenoMiguel angel pastor moreno
Miguel angel pastor moreno
 
TRABAJO PERSONAL
TRABAJO PERSONALTRABAJO PERSONAL
TRABAJO PERSONAL
 
Introducción a los microcontroladores
Introducción a los microcontroladoresIntroducción a los microcontroladores
Introducción a los microcontroladores
 
Arquitectura risc
Arquitectura riscArquitectura risc
Arquitectura risc
 
Procesadores }
Procesadores  }Procesadores  }
Procesadores }
 
COMPUTACION BASICA
COMPUTACION BASICACOMPUTACION BASICA
COMPUTACION BASICA
 
DEFINICIONES E IDENTIFICACIONES
DEFINICIONES E IDENTIFICACIONESDEFINICIONES E IDENTIFICACIONES
DEFINICIONES E IDENTIFICACIONES
 
5154 - Tema 2
5154 - Tema 25154 - Tema 2
5154 - Tema 2
 
Qué es un microcontrolador
Qué es un microcontroladorQué es un microcontrolador
Qué es un microcontrolador
 
Computación e Informatica
Computación e InformaticaComputación e Informatica
Computación e Informatica
 
Computación e Informatica
Computación e InformaticaComputación e Informatica
Computación e Informatica
 
Electronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdfElectronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdf
 
Programación de microcontroladores
Programación de microcontroladoresProgramación de microcontroladores
Programación de microcontroladores
 
Assembler
AssemblerAssembler
Assembler
 
Informática elemental
Informática elemental Informática elemental
Informática elemental
 

Introducción a microcontroladores

  • 1.
  • 2. 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.
  • 3. ¿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.
  • 4. 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).
  • 5. Objetivos:  Describir la función de un microcontrolador.  Características generales de arquitectura.  Diferentes tipos de microcontroladores.
  • 6. También llamados: SoC, controlador embebido, micro computadora, etc...
  • 7. 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.
  • 8.  Un solo chip (hardware necesario para funcionar minimo).  Utilizados para control.  Sus componentes son: › Memoria. › I/O. › Nucleo de procesamiento. › Perifericos.
  • 9. ROM: › Programa, Constantes.  RAM › Programa en ejecución, Variables.
  • 10. 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.
  • 11.  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.
  • 12. 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).
  • 13.  MPU. • MCU.  Uso general. • Uso especifico.  Mas potentes. • Todo en un chip. • Módulos “ayudan” al nucleo.
  • 14.
  • 15. 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
  • 16.  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.
  • 17. 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.
  • 18. Harvard: Instruction Data memory CPU memory  Von Neumann CPU Data and instruction memory
  • 19.  Bajo consumo de potencia.  Mayor integracion.  Grandes cantidades de memoria Flash.  Mayor tamaño de bus.  Multiples nucleos (Cortex A9, XGATE).
  • 20.  Aplicaciones con baja demanda de procesamiento.  Ejemplo: Freescale HCS08ac60 › 40 MHz. › Ahorro de potencia: wait mode, stop mode. › 60KB Flash. › 2KB RAM.
  • 21.
  • 22.  Aplicaciones mas demandantes:  Automotriz, Industrial.  Mayor gama de protocolos de comunicación: › CAN, FlexRay, etc.  Ejemplo: Freescale HCS12XEP100.
  • 23.  S12X max frequency 50 Mhz  Prioridad de interrupciones programable.  XGATE operando al doble de la frecuencia del bus (hasta 100Mhz).  1MB Flash.  64KB RAM.
  • 24.
  • 25. Aplicaciones altamente demandantes. › Power train (automotriz). › Voice recognition. › Networking. › Multimedia. › PDA.  Ejemplo: OMAP44xx › Full HD. › 1 Ghz.
  • 26.
  • 27.  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
  • 28.  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.
  • 29. 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)!!!!!!!!!
  • 30.
  • 31.  Freescale. • Zilog  Texas Instruments. • ST  Microchip. microelectronics.  Atmel. • NEC.  Samsung. • Fujitsu. • NXP.  Renesas. • Toshiba.  Infineon. • Analog Devices.
  • 32.  Periféricos e interfaces disponibles.  Roadmap.  Caracterizticas del microcontrolador: › Consumo de potencia. › Capacidades de procesamiento. › Memorias.
  • 33.
  • 34.  Lenguaje ensamblador.  Lenguaje de alto nivel.  Cargando un SO y programando sobre este.
  • 35.  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.
  • 36.  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.
  • 37.  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).
  • 38.
  • 39.  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.
  • 40.  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.
  • 41.
  • 42.
  • 43.  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.
  • 44.  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 suceptibles a las optimizaciones del compilador, se debe tener en cuenta cuando se realizan operaciones que no tienen efecto sobre ninguna parte del programa.
  • 45. Las herramientas a usarse en este taller son: Development kit DEMO9S08AC60 IDE Code warrior
  • 46.  Evaluation kit  Development kit  Reference Design kit  VirtuaLab
  • 47.  Editor  Compilador  Ensamblador  Linker  Simulador  Debugger
  • 48.  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.
  • 49.  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.
  • 50. 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.
  • 51. 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.
  • 52. 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).
  • 53.  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.
  • 54.  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.
  • 55.  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.