PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA
Sistemas Digitales Especialidad : Área Ciclo Semestre
: : :
Profesor
:
I.
Ingeniería Electrónica y Mecatrónica Electrónica Quinto 2014-1 Jorge Benavides Hugo Pratt Rolando Sánchez
Clave
: IEE256
Créditos Teoría Práctica Laboratorio Requisitos
: : : : :
5.5 4 horas semanales 2 horas quincenales 4horas quincenales IEE144, INF135, IEE146
(IEE144) (IEE146)
DESCRIPCIÓN DEL CURSO En el curso se enseña a diseñar computadoras de aplicación específica en base al microcontrolador ATmega88A de Atmel. Para ello se describen las computadoras de aplicación específica, diferenciándolas de las computadoras de propósito general. Se describe el microcontrolador (sus partes internas y juego de instrucciones) y también las herramientas de desarrollo a utilizar (compilador cruzado de C, ensamblador, simulador). Finalmente, como parte de un proyecto, se diseña un computador y el programa que lo controla. Las clases son un complemento a los trabajos realizados r ealizados en el laboratorio del curso.
II. OBJETIVOS OBJETIVO GENERAL: Al final del curso, los alumnos de Sistemas Digitales estarán en condiciones de diseñar un computador basado en un microcontrolador de 8 bits, y desarrollar el programa que lo controla. También serán capaces de leer y comprender la documentación técnica (manuales de referencia y especificaciones técnicas) de un microcontrolador. Como parte del desarrollo de las habilidades informacionales, serán capaces de identificar la necesidad de información, construir estrategias para localizarla y evaluarla. OBJETIVOS ESPECÍFICOS: 1. Conocer las partes básicas de un computador y la terminología relacionada (tanto en castellano como en inglés). 2. Conocer el lenguaje (juego de instrucciones) de un microcontrolador. 3. Utilizar adecuadamente el lenguaje C, empleando un compilador cruzado de C, para el desarrollo desarrollo de los programas. 4. Interpretar adecuadamente los programas en lenguaje ensamblador (tanto las instrucciones como las directivas) generados generados por el compilador de C. 5. Conocer el uso y saber utilizar un simulador para la depuración de programas. 6. Desarrollar, simular y depurar programas en lenguaje C empleando para ello herramientas de desarrollo de software (simuladores).
7. Conocer y utilizar interfaces y periféricos programables. 8. Diseñar un computador basado en un microcontrolador de 8 bits, utilizando las interfaces y periféricos adecuados, y desarrollar el programa que lo controla, tomando en consideración las especificaciones técnicas y documentación técnica de los fabricantes de microcontroladores. 9. Identificar la necesidad de información, evaluar su conocimiento actual e identificar los vacíos en este conocimiento, y construir estrategias para localizar información y datos. Estos objetivos contribuyen significativamente al logro del siguiente resultado del programa de ingeniería electrónica: (k) Habilidad para utilizar técnicas, destrezas y herramientas de ingeniería moderna necesarias para la práctica ingenieril.
III. PROGRAMA ANALÍTICO 1. INTRODUCCIÓN (7 horas) 1.1 Introducción al curso. (1.5 horas) 1.2 El computador digital: sus partes. Microprocesador y microcontrolador. (2 horas) 1.3 Memorias semiconductoras: tipos, características. Modelo de memoria con compuertas lógicas y registros. (1.5 horas) 1.4 Arquitectura de un computador: Harvard, Von Neuman. Sus diferencias. (0.5 horas) 1.5 Lenguaje máquina, código máquina, lenguaje de ensamblaje, lenguaje de alto nivel, modos de direccionamiento. (1.0 hora) 1.6 Sistemas embebidos y herramientas de desarrollo (0.5 horas). Lecturas: [9a] Capítulo 1 parte 1: para secciones 1.1 a 1.4 (19 páginas) [9b] Capítulo 1 parte 2: para sección 1.5 (páginas 1 a 12) 2. PERIFÉRICOS PROGRAMABLES PARTE I (Puertos de E/S) (8 horas) 2.1 Características generales del microcontrolador Avr-ATmega88 de Atmel: Diagrama de bloques; disposición de pines; espacio de registros, puertos de E/S; mapa de memoria. (1 hora) 2.2 Puertos: definición. Registro de direcciones DDR. Registro de salida PORT, registro de entrada PIN. Manejo de puertos en lenguaje C (operaciones de entrada/salida). Ejemplo. (2 horas) 2.3 Enmascaramiento de bits con operaciones lógicas. Ejemplo en lenguaje C para manejo de puertos (2 horas) 2.4 Lenguaje ensamblador: Instrucciones LDI, IN, OUT, RJMP, BREQ, BRNE. Etiquetas. Codificación de instrucciones. Ejemplo. (3.0 horas) Lecturas: [1] Barnett. Subcapítulos 1.3 a 1.7.1 (19 páginas) [2] Barret. Subcapítulos 1.1, 1.2, 1.3 [9c] Capítulo 2 parte 1 (19 páginas) [10] ATmega48A/PA/88A/PA/168A/PA/328/P datasheet: Para sección 2.1 páginas 5 a 12, y 17 a 19; para sección 2.2 páginas 77 a 82.
3. MANEJO DE TABLAS (3 horas) 3.1 Uso de memoria volátil: Arreglos en memoria RAM. (0.5 horas) 3.2 Implementación de tablas en memoria Flash. Su implementación en lenguaje C mediante arreglos. Ejemplos. (2.5 horas) Lecturas: [1] Barnett. Capítulo 1, sección 1.9 “Pointers and arrays” [3] Pardue. Capítulo 8 “C Pointers and arrays”. Es importante todo el capítulo, pero revisar especialmente la parte “projects: arrays in R AM and ROM” que comienza en página 171, pues describe la manera como deben definirse los arreglos en memoria Flash para el compilador cruzado de C que se empleará en el curso. En ninguno de los otros libros de la bibliografía se emplea este compilador. 4. PERIFÉRICOS PROGRAMABLES PARTE II (USART) (5 horas) 4.1 Niveles lógicos TTL, RS232. Formato de una comunicación serial asíncrona: bits de arranque, datos, paridad, parada. Velocidad de comunicación (bps). (2 horas) 4.2 Uso de la interfaz RS232 del ATmega88A: Disposición de pines. Registros de control y de velocidad. Ejemplos. (2.5 horas) 4.3 Lenguaje ensamblador: Instrucciones LDS, STS (0.5 horas) Lectura: [2] Barret. Capítulo 2 “Serial Communication Subsystem” (10 páginas)
[1] Barnet. Subcapítulo 2.8 [10] ATmega48A/PA/88A/PA/168A/PA/328/P datasheet: USART0 (páginas 178 a 205). 5. PERIFÉRICOS PROGRAMABLES PARTE III (Circuito temporizador) (5 horas) 5.1 Temporizador 1: Disposición de pines. Su uso en modo normal. Señal de reloj, preescalador. Modo de operación CTC. Comparadores de salida. Lectura y escritura de registros de 16 bits. Ejemplos (5 horas) Lecturas: [9i] Contadores y Temporizadores: páginas 1 a 20. [2] Barret. Capítulo 5 “Timing Subsystem” [1] Barnet. Subcapítulo 2.7 “Timer/Counters” [10] ATmega48A/PA/88A/PA/168A/PA/328/P datasheet: 16-Bit Timer/Counter 1 (Páginas 115 a 121 y 124 a 128) 6. INTERRUPCIONES (6 horas) 6.1 Concepto de interrupción. (1.5 horas) 6.2 Interrupciones en el ATmega88A: Habilitadores de interrupción, vectores de interrupción. (1.5 horas) 6.3 Implementación de funciones de servicio de interrupción en lenguaje C. Ejemplo de interrupciones con el temporizador 1. (3 horas) Lecturas: [9j] Interrupciones (22 páginas) [2] Barret. Capítulo 4 “Interrupt Subsystem” (8 páginas) [3] Pardue. Capítulo 7 “Microcontroller interrupts and timers”
[10] ATmega48A/PA/88A/PA/168A/PA/328/P datasheet: Interrupts (páginas 59 a 62, y 72 a 76) 7. PERIFÉRICOS PROGRAMABLES PARTE IV (Circuito temporizador)
(7 horas)
7.1 Temporizador 1: Generación de ondas PWM usando el modo PWM rápido. Ejemplos basados en interrupciones. (4 horas) 7.2 temporizador 1: Capturador de entrada. Ejemplos. (3 horas) Lecturas: [2] Barret. Capítulo 5 “Timing Subsystem” [3] Pardue. Capítulo 7 “Microcontroller interrupts and timers”
[9i] Contadores y Temporizadores: páginas 15 y 16. [10] ATmega48A/PA/88A/PA/168A/PA/328/P datasheet: 16-Bit Timer/Counter 1 (páginas 122, 123, 128 a 130, 136 a 142) 8. LENGUAJE ENSAMBLADOR (11 horas) 8.1 Instrucciones de transferencia de datos: MOV, MOVW, LPM, LD, ST. Ejemplos de uso. (2.5 horas) 8.2 Banderas: De acarreo, de cero, de medio acarreo, de signo, de desborde. (1 hora) 8.3 Instrucciones aritmético-lógicas, de comparación, de salto condicional e incondicional, de rotación y desplazamiento. (3.5 horas). 8.4 La pila. Funcionamiento. Puntero de pila. Instrucciones PUSH y POP (1 hora) 8.5 Instrucciones de llamada a subrutinas y retorno: RCALL, RET, RETI. Ejemplos (3 horas) 8.6 Directivas del lenguaje ensamblador. Ejemplos. (1 hora) Lecturas: [9g] Manejo de Tablas: Para sección 8.2 [9d] Modelo del Programador, Banderas y Modos de Direccionamiento: Para sección 8.3 [9e] Instrucciones AVR8 Parte 2: para sección 8.4 [9f] Instrucciones AVR8 Parte 3: para sección 8.5 [9k] la pila y subrutinas: para secciones 8.5 y 8.6 [11] 8-bit AVR Instruction Set [12] AVR assembler user´s guide: Directives. Para sección 8.7 [16] AVR108 [17] AVR200 [18] AVR202 9. DISEÑO DE UN COMPUTADOR (1 hora) 9.1 Consideraciones para los puertos: Interpretación de las características eléctricas (corrientes, voltajes), resistencias PULL-UP internas, puertos con funciones múltiples. (1 hora) Lecturas: [2] Barret. Capítulo 6 “Atmel AVR Operating Parameters and Interfacing”
PROGRAMA DEL LABORATORIO 1. Familiarización con las herramientas de desarrollo. Manejo de puertos de E/S. 2. Programación empleando puertos de E/S. 3. Comunicación serial asíncrona y el temporizador 1. 4. El temporizador 1 e interrupciones. 5. Temporizadores e interrupciones.
Las actividades a realizar para cada sesión de laboratorio son: Tarea para la casa : Es un problema propuesto que deben resolver los alumnos y presentar al inicio del laboratorio funcionando. El problema se coloca en el campus virtual con una semana de anticipación. Programa para el laboratorio : Es un problema que los alumnos deben de resolver durante el laboratorio, y que tiene relación con la tarea dejada para la casa. En la cuarta y quinta sesión del laboratorio no se contará con asesoría de los jefes de prácticas para el desarrollo del programa, y tendrá un valor de 16 puntos en la cuarta y quinta sesiones de laboratorio. Prueba de entrada : Es una prueba escrita de corta duración (máximo 20 minutos) que se toma al inicio del laboratorio y cuya finalidad es medir el conocimiento de los alumnos en detalles de carácter práctico o teórico necesarios para poder llevar a cabo el trabajo del laboratorio. Avance de proyecto y presentación final : En la primera sesión de laboratorio se proponen una serie de proyectos para que los alumnos, en parejas, desarrollen e implementen. Los proyectos son propuestos por los jefes de prácticas y profesores del curso. Los tipos de proyectos y el número de grupos que pueden realizar el mismo proyecto está determinado en gran medida por los recursos con que cuenta el laboratorio. Dada la importancia de la motivación para poder terminar con éxito el proyecto, se puede aceptar, previa revisión y aprobación de los docentes del curso, alguna iniciativa de los alumnos. Los alumnos deben elegir a su pareja para el proyecto. Una vez definidos y asignados los proyectos, cada pareja contará con un asesor de proyecto, que será uno de los jefes de práctica del horario de laboratorio. El asesor de proyecto definirá las tareas (avance del proyecto) que debe realizar cada alumno y presentar en la siguiente sesión de laboratorio. Habrán dos avances, correspondientes a la segunda y cuarta sesiones de laboratorio. La presentación final del proyecto se realiza en la última semana de clases, pues en dicha semana no hay sesiones de laboratorio programados para los cursos de la facultad. La fecha y hora para cada horario de laboratorio se programará al inicio del semestre. Se evaluará en el proyecto el funcionamiento, la documentación, y la sustentación del mismo consistente en una evaluación oral que se hace a cada integrante. La nota correspondiente al proyecto es individual. Se considerará que un alumno abandona a su compañero de proyecto si no presenta los avances de proyectos, en cuyo caso la nota por presentación final que tendrá será cero.
A cada actividad del laboratorio le corresponde un puntaje de la nota de dicho laboratorio.
IV. BIBLIOGRAFÍA Los tres primeros libros de la lista (Richard Barnet, Steven Barret, Joe Pardue) se usarán como referencia para el curso. El capítulo 1 del libro de Richard Barnnet es un resumen del lenguaje C aplicado a sistemas embebidos, y se usará como referencia para el uso de dicho lenguaje. Como segunda referencia se empleará el libro de Pardue.
El libro de Barret abarca la mayoría de periféricos que tiene la familia AVR8. Se recomienda la lectura del capítulo 6, pues les será útil para el desarrollo del proyecto del laboratorio. 1.- Richard Barnett, Larry O’Cull, Sarah Cox; “Embedded C Programming and the Atmel AVR”; 2007, 2da edición, Thomson Learning Inc. 2.- Barret, Steven F.; “Atmel AVR microcontroller primer: programming and interfacing”, 2012, Morgan & Claypool (2nd ed.) 3.- Pardue, Joe ; "C programming for microcontrollers : featuring ATMEL's AVR butterfly and the free WinAVR compiler", 2005, Smiley Micros. 4.- Gadre, Dhananjay V.; "Programming and customizing the AVR microcontroller"; 2001, McGraw-Hill. 5.- Margush, Timothy S.; “S ome assembly required : assembly language programming with the AVR microcontroller ”, 2012, CRC Press 6.- John Morton; “AVR An Introductory Course”; 2002, Elsevier Science. 7.- Eady, Fred; “ Networking and internetworking with microcontrollers”; 2004, Elsevier 8.- Arnold S. Berger, “Embedded Systems Design. An introduction to processes, tools, & techniques”, 2002, CMP Books . 9.- Separatas del curso: a. Capítulo 1 parte 1: El computador Digital. b. Capítulo 1 parte 2. c. Capítulo 2 parte 1: Puertos de Entrada/Salida. d. Instrucciones AVR8 Parte 1: Modelo del Programador, Banderas y Modos de Direccionamiento. e. Instrucciones AVR8 Parte 2: Instrucciones aritméticas. f. Instrucciones AVR8 Parte 3: Instrucciones de rotación y desplazamiento. g. Manejo de Tablas. h. Comparación de números. i. Contadores y temporizadores. j. Interrupciones. k. La pila y subrutinas.
Manuales 10.- Atmel Corporation, "ATmega48A/PA/88A/PA/168A/PA/328/P datasheet", Mayo 2011 11.- Atmel Corporation, "AVR Instruction Set", Julio 2010 12.- Atmel Corporation, "AVR assembler user´s guide", manual en línea 13.- Advanced Micro Tools, “VMLAB”, manual en línea 14.- Atmel Corporation, "Atmel Studio 6.0 user's guide", manual en línea Notas de aplicación 15.- AVR072: Accessing 16-bit I/O Registers (4 pages, revision B, updated 5/02) 16.- AVR108: Setup and use of the LPM Instructions (4 pages, revision B, updated 5/02) 17.- AVR200: Multiply and Divide Routines (21 pages, revision C, updated 05/06) 18.- AVR202: 16-Bit Arithmetics (3 pages, revision B, updated 5/02) 19.- AVR360: Step Motor Controller Páginas WEB: - Página web de la compañía Atmel Corporation para la familia de microcontroladores AVR. http://www.atmel.com/products/avr/
-
V.
Portal especializado en los microcontroladores de la familia AVR de Atmel. http://www.avrfreaks.com Página web de la compañía Advanced Micro Tools (creadora del programa VMLAB empleado en el curso). http://www.amctools.com
METODOLOGÍA En las clases se fomenta la participación de los alumnos y se llevan a cabo actividades grupales. Como parte del desarrollo de las habilidades informacionales, se llevarán a cabo actividades individuales y grupales en clase. Las actividades serán evaluadas, y contribuirán a la nota de la tarea académica. Por ello es importante la asistencia a clases. Las clases son un apoyo al laboratorio, donde adquirirán las habilidades que son parte de los objetivos del curso, para lo cual, al inicio del semestre se define un proyecto que debe desarrollarse a lo largo del semestre y se presenta en la última sesión del laboratorio. Desde la primera clase se dejará material de lectura anticipada, para ser estudiadas antes de la próxima clase. Las lecturas corresponden a temas que deben aprender para poder realizar con éxito las prácticas en el laboratorio. Las clases tienen por objetivo absolver las dudas de los alumnos con relación a las lecturas o temas relacionados con el programa del curso y del laboratorio. Si no hay dudas, se avanza con el siguiente tema del curso. Los temas de prácticas y exámenes son los vistos en clase, o los dejados como lectura, y por tanto, muy relacionados con el laboratorio. Se les recomienda contar con un computador para poder realizar los ejercicios necesarios para su aprendizaje (no se aprende a programar tan solo leyendo). Debido a las características del curso, es necesario que antes de la primera sesión de laboratorio se lleguen a cubrir las 12 primeras horas de clase. Por esta razón, se adelantarán dos clases en las dos primeras semanas de clase , en el horario que correspondería a la práctica de aula del curso, y no se dictarán las dos últimas clases del semestre. Esto se informará por correo electrónico, antes del inicio de clases.
Recomendaciones: Debido a las características del curso, entre las cuales están el aprendizaje de un nuevo lenguaje y la realización de tareas dejadas en el laboratorio del curso, se recomienda una dedicación de 12 horas semanales para el curso teórico y el laboratorio. Este tiempo puede ser menor dependiendo del conocimiento adquirido en los cursos previos (Circuitos Digitales, Laboratorio de Circuitos Digitales, Lenguaje de Programación, Circuitos Eléctricos 1) con lo cual la dedicación puede reducirse a 8 horas semanales. No se recomienda la matrícula en este curso a los alumnos que no hayan acreditado el nivel de idioma inglés requerido para egresar de Estudios Generales Ciencias.
VI.
SISTEMA DE EVALUACIÓN
El curso tiene la modalidad de evaluación 2 , consistente en dos exámenes, cuatro prácticas de aula calificadas, 5 sesiones de laboratorio, y una tarea académica. El promedio final del curso se obtiene con la siguiente fórmula: NF = (20*Ex1 + 25*Ex2 + 15*Pa + 20*Pb + 20*TA)/100 Donde: Ex1 : Ex2: Pa: Pb: TA:
Nota del primer examen Nota del segundo examen Promedio de prácticas de aula sin considerar la menor nota Promedio de las notas de las cinco sesiones de laboratorio. Tarea académica. 17 puntos corresponden a la nota del proyecto, y 3 puntos a las actividades relacionadas con habilidades informacionales.
San Miguel, marzo de 2014