Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Electrónica
Área: Electrónica
(Programa del año 2021)
I - Oferta Académica
Materia Carrera Plan Año Periodo
PROCESADORES II PROF.TECN.ELECT 005/09 2021 1° cuatrimestre
PROCESADORES II TEC.UNIV.ELECT. 15/13-CD 2021 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
MURDOCCA, ROBERTO MARTIN Prof. Responsable P.Adj Exc 40 Hs
NUÑEZ MANQUEZ, ALEJANDRO ENRIQ Responsable de Práctico JTP Exc 40 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
3 Hs.  Hs.  Hs. 4 Hs. 7 Hs. 1º Cuatrimestre 05/04/2021 08/07/2021 14 90
IV - Fundamentación
En la industria, automóviles, sistemas de comunicaciones, electrónica de entretenimiento, laboratorios y en general en todos los equipos electrónicos actuales se tiene un microcontrolador embebido encargado de controlar el funcionamiento de dicho aparato o instrumento.
Este curso ofrece a los estudiantes la oportunidad de estudiar las características de un microprocesador / microcontrolador y aprender a desarrollar un sistema electrónico para resolver problemas del mundo real.
V - Objetivos / Resultados de Aprendizaje
Estudiar la arquitectura y programación de microprocesadores y microcontroladores actuales de 8, 16 y 32 bits.
Utilizar herramientas de desarrollo para realizar el depurado y programación de los mismos en lenguajes de alto nivel.
Desarrollar los conocimientos y habilidades necesarios para diseñar un sistema embebido para una aplicación específica descrita mediante requisitos de diseño, tanto a nivel de conexionado eléctrico (Hardware) como de su programación (Software).
VI - Contenidos
Unidad 01: Tecnologías y Arquitecturas
Tecnologías de Sistemas Digitales. Lógica cableada, programable, hardware reconfigurable. Evolución de los sistemas de cómputo. Lógica programable: Microprocesadores y Microcontroladores. Clasificación por aplicación o propósito: GPP, Microcontrolador, DSP, ASIC, ASIP, GPU. Clasificación por arquitectura: RISC, CISC, Superescalar, VLIW, Reconfigurable, System on a Chip (SoC), Network on a Chip (NoC). Clasificación de Flynn: SISD, SIMD, MISD, MIMD. Clasificación por conjunto de instrucciones (ISA).

Unidad 02: Introducción a los Microcontroladores
Microcontroladores de 8, 16 y 32 bits. Mercado actual de Microcontroladores. Características de los Microcontroladores de propósito general. Aplicaciones. Periféricos internos de los microcontroladores. Sistemas Embebidos. Definición. Áreas de aplicación de los Sistemas Embebidos. Ejemplos de sistemas embebidos. Software Embebido. Firmware. Lenguajes de programación utilizados. Modelos de software. Herramientas de desarrollo integrado. Programas de diseño y simulación electrónica. Descripción de placas de desarrollo para microcontroladores de gama baja, media y alta.

Unidad 03: Microcontroladores de 8 bits
Microcontroladores Atmel. Descripción general del microcontrolador ATMEGA 328. Características. Memoria de programa. Memoria de datos. Memoria EEPROM. Temporizados-Contadores. Interrupciones. Descripción de las características de la placa Arduino. Alimentación. Conexiones. Especificaciones eléctricas. Circuito eléctrico. Puertos de entrada/salida de propósito general (GPIO). Función de los LEDs. Frecuencia de operación. Conector para expansión (shields). Distribución de señales en el conector de expansión. Características eléctricas.

Unidad 04: Herramientas de desarrollo
Conceptos básicos sobre compilado en alto nivel. Compilador C/C++. Pre-procesador. Librerías. Elementos del lenguaje C/C++. Estructura de un programa para Arduino. Entorno de desarrollo integrado Arduino. Elementos del lenguaje. Técnicas de depurado (Debbugging). Herramientas para programación / Debugging.

Unidad 05: Periféricos internos del Microcontrolador
Conceptos básicos de puertos de E/S e Interfaces. Reloj. Interrupciones en Arduino. Configuración. Tabla de vectores. Manejo de interrupciones. Interrupciones de periféricos.
Temporizadores y contadores, configuración y sus interrupciones. Modulación de ancho de pulso (PWM). Conversor AD. Lectura de los canales AD. Comunicación serie. Comunicación síncrona y asíncrona. La UART en Arduino. Comunicación entre Arduino y PC. Uso de terminales serie. Puertos Virtuales en el PC. Configuración. Comunicación SPI síncrono. Interfaces. Aplicaciones. Comunicación I2C. Interfaces. Configuración. Dispositivos I2C. Transmisión y recepción por interrupción.

Unidad 06: Interface con dispositivos externos
Conexión de dispositivos externos con el microcontrolador. Características eléctricas de los puertos de microcontroladores. Interfaces con dispositivos de entrada. Conexión de Interruptores y pulsadores. Interface con teclados: independientes y matriciales. Adaptación de señales de entrada. Opto aislación. Interfaces con dispositivos de salida. Interface con LEDS. Uso de Displays. Conexión a Display 7 segmentos. Display 7 segmentos multiplexado. Display LCD inteligente. Displays gráficos. Interfaces de potencia. Interface con circuitos de corriente alterna. Interfaces con reles. Interface con otros periféricos externos. Interface con Shields. Distintos tipos de Shields. Descripción.

Unidad 07: Desarrollo de Sistemas Embebidos.
Técnicas de diseño programación de sistemas embebidos. Etapas de desarrollo de un proyecto. Programación Bare Metal. El patrón Súper Lazo. Programación mediante interrupciones (background / foreground). Modularización del software. Bibliotecas estáticas. Control de versiones y repositorios. Modelo de capas de abstracción de hardware (HAL). Uso de drivers de periféricos. . Uso de modelos de software. Máquinas de estados finitos (FSM). Tablas y diagramas de estados. Implementación de FSM en C. Procesos. Threads. Procesos secuenciales. Procesos concurrentes. Diagrama de Estado (Statecharts). Herramientas para Modelado, Simulación y Validación de Modelos.

Unidad 08: Sistemas Operativos en Tiempo Real
Introducción a los Sistemas de Tiempo Real. Hard Real Time System. Soft Real Time System. Clasificación de Sistemas; reactivos y transformacionales. Procesamiento en tiempo real. Sistemas Operativos en Tiempo Real (RTOS). Componentes básicos de un RTOS. Multitarea cooperativa y preventiva. Caso de estudio: FreeRTOS. Aspectos generales. Tipos de tareas y sus implementaciones. Estados de las tareas. Sincronización entre tareas: uso de semáforos. Intercambio de datos entre tareas: uso de colas. Mecanismos de exclusión mutua en el acceso a recursos compartidos (Mutex). Problemas asociados: inversión de prioridades, deadlocks. Uso de interrupciones. Manejo dinámico de memoria.

Unidad 09: Otras plataformas de desarrollo
Breve descripción de plataformas actuales embebidas. Intel Galileo. Arduino. Plataformas compatibles con Arduino. ChipKit. STM32. STM32 Núcleo. Plataformas computacionales de alto desempeño: Raspberry Pi. Distintos modelos. Descripción y características. Software.

VII - Plan de Trabajos Prácticos
PRÁCTICAS DE LABORATORIO

Laboratorio 01 - Herramientas de desarrollo para Arduino.
Laboratorio 02 - Programación en Lenguaje Processing.
Laboratorio 03 - Uso de los GPIOs. Gestión de librerías.
Laboratorio 04 - Temporizadores e Interrupciones.
Laboratorio 05 - Modelos de programación - Maquinas de Estado.
Laboratorio 06 - Comunicación Serie. Modulo conversor AD y PWM.
Laboratorio 07 - Herramientas para versionado y repositorios.
Laboratorio 08 - Técnicas de Debugging en Arduino.
Laboratorio 09 - Sistemas Operativos en Tiempo Real.
VIII - Regimen de Aprobación
Para obtener la regularidad en la materia y rendir el examen final como alumno regular será necesario:

- Haber aprobado la totalidad de los exámenes parciales. Cada examen parcial posee dos recuperaciones.
- Haber aprobado el 100% de las Prácticas de Laboratorio.
- Se podrán recuperar solo el 30% de las prácticas de laboratorio, no aprobadas durante el cuatrimestre.

No se aceptan alumnos que no estén en condiciones regulares.
La materia no podrá rendirse en forma libre.
IX - Bibliografía Básica
[1] Massimo Banzi, Michael Shiloh, Getting Started with Arduino - Maker Media, 2014, 262p.
[2] Óscar Torrente Artero, Arduino Curso práctico de formación - Alfaomega Grupo Editor, S.A, 2013, 588p.
[3] Michael Margolis, Arduino CookBook - O’Reilly Media, Inc, 2011, 688p.
[4] John Boxall, Arduino Workshop: A Hands-On Introduction with 65 Projects – 2013, 394p.
X - Bibliografia Complementaria
[1] Julien Bayle, C Programming for Arduino - Packt Publishing Ltd, 2013, 512p.
[2] Ganssle Jack, The Firmware Handbook – EEUU, ELSEVIER, 2004, 365p.
[3] Zurawski Richard, Embedded Systems HandBook, Taylor & Francis Group, 2006, 1089p.
[4] Keith E. Curtis, Embedded multitasking with Small Microcontrollers, ELSEVIER, 2006, 417p.
[5] Ken Arnold, Embedded Controller Hardware Design, , LLH Technology Publishing, 2000, 244p.
[6] Tammy Noergaard, Embedded Systems Architecture A Comprehensive Guide for Engineers and Programmers, , ELSEVIER, 2005, 657p.
XI - Resumen de Objetivos
Estudiar la arquitectura y programación de microprocesadores y microcontroladores de 8, 16 y 32 bits actuales.
Utilizar herramientas de desarrollo para realizar la programación de una familia de microcontroladores.
Dotar al alumno de los conocimientos necesarios para desarrollar un sistema embebido.
XII - Resumen del Programa
Unidad 01: Tecnologías y Arquitecturas.
Unidad 02: Introducción a los Microcontroladores.
Unidad 03: Microcontroladores de 8 bits.
Unidad 04: Herramientas de desarrollo.
Unidad 05: Periféricos internos de Microcontroladores.
Unidad 06: Interface con Dispositivos Externos.
Unidad 07: Desarrollo de Sistemas Embebidos.
Unidad 08: Sistemas Operativos en Tiempo Real
Unidad 09: Otras plataformas de desarrollo.
XIII - Imprevistos
El presente programa puede estar sujeto a cambios dada la situación epidemiológica por COVID-19.
XIV - Otros