PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA
Sistemas Digitales Especialida Especialidadd Área Área Ciclo Semestre Semestre Profesore Profesoress
: : : : :
Ingeniería Ingeniería Electrónica Electrónica Electr Electróni ónica ca Quinto 2010-2 2010-2 Hugo Pratt L. Javier Javier Chang Chang
Clave Crédit Créditos os Teoría Teoría Práctica Práctica Laboratori Laboratorioo Requisitos Requisitos
: : : : : :
IEE256 IEE256 5.5 4 horas semanales semanales 2 horas quincenales quincenales 4 horas quincenales quincenales IEE144, IEE144, INF135, INF135, IEE146 IEE146
I. DESCRIPCIÓN DEL CURSO En el curso se enseña a diseñar computadoras de aplicación específica, en base al microcontrolador ATmega8 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 (ensamblador, simulador). Finalmente se diseña un computador y el programa que lo controla. Las clases son un complemento a los trabajos realizados 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. 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 un lenguaje ensamblador (tanto las instrucciones como directivas) para el desarrollo de programas. 4. Conocer el uso y saber utilizar uti lizar un simulador para la depuración de programas. 5. Desarrollar, simular y depurar programas en lenguaje ensamblador empleando para ello herramientas de desarrollo de software (ensamblador, simulador). 6. Conocer y utilizar interfaces y periféricos programables. 7. 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.
III. PROGRAMA ANALÍTICO 1. INTRODUCCIÓN (7 horas) 1.1 Introducción al curso (2 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. (1 hora) Lecturas: [6a] Capítulo 1 parte 1: para secciones 1.1 a 1.4 (17 páginas) [6b] 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) (7 horas) 2.1 Características generales del microcontrolador Avr-ATmega8 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. Instrucciones LDI, OUT. Ejemplo. Codificación de instrucciones y ciclos máquina. Instrucción RJMP. (3 horas) 2.3 Instrucción IN. Instrucción Y lógica (ANDI). Banderas: definición; bandera de cero (Z). Instrucción de comparación inmediata (CPI). Instrucciones de salto relativo incondicional (RJMP) y condicional (BREQ, BRNE). Ejemplo: Programa con uso de puertos configurados como entrada y salida. (2.0 horas). 2.4 Enmascaramiento de bits con operaciones lógicas. Instrucciones de manejo de bits (CBI, SBI). Ejemplos para manejo de puertos(1.0 horas) Lecturas: [6c] Capítulo 2 parte 1: para secciones 2.1, 2.2 y 2.3 (7 páginas) [6d] Modelo del Programador, Banderas y Modos de Direccionamiento: Para secciones 2.3 y 2.4 (páginas 1 a 3, hasta bandera de cero, y páginas 5 a 8, hasta direccionamiento relativo). [7] ATmega8 datasheet: Para sección 2.1 leer páginas 1 a 12, y 16 a 18; para sección 2.2 leer páginas 51 a 56. [12] AVR072 3. DIRECTIVAS DEL ENSAMBLADOR E INSTRUCCIONES DEL CPU (8.5 horas) 3.1 Directivas: .ORG, .EQU. Ejemplos. (0.5 horas) 3.2 Directivas: .CSEG, .DSEG, .ESEG, .BYTE. Funciones del ensamblador: Low(), High(). (1.5 horas) 3.3 Banderas: De acarreo, de cero, de medio acarreo, de signo, de desborde. (1 hora) 3.4 Instrucciones aritméticas de suma: ADD, ADC, ADIW. (0.5 horas) 3.5 Instrucciones de transferencia de datos: MOV, LDS, STS, LD, ST. Ejemplos. (3 horas) 3.6 Directivas: .INCLUDE, .DB, .DW. (0.5 horas) 3.7 Instrucción de lectura de tablas en memoria de programa (LPM). Ejemplos. (2 horas) Lecturas: [9] AVR assembler user´s guide: Directives. Para secciones 3.1, 3.2, 3.6 [6d] Modelo del Programador, Banderas y Modos de Direccionamiento: Para sección 3.3 (páginas 2 a 5), y para sección 3.5 (páginas 8 a 11). [6e] Instrucciones ATmega8 Parte 2: para sección 3.4 (páginas 1 a 4) -2-
[8] 8-bit AVR Instruction Set: Para secciones 3.4, 3.5 (Instrucciones ADD, ADC, ADIW, MOV, LDS, STS, LD, ST). [6g] Manejo de Tablas: Para sección 3.7 (17 páginas) [13] AVR108 4. LA PILA Y SUBRUTINAS (4 horas) 4.1 La pila. Funcionamiento. Puntero de pila (SP). Instrucciones PUSH, POP. (1 hora) 4.2 Instrucciones de llamada a subrutinas y retorno: RCALL, RET. Ejemplos. (3 horas) Lecturas: [6k] Subrutinas (12 páginas) 5. PERIFÉRICOS PROGRAMABLES PARTE II (5 horas) 5.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). (1.5 horas) 5.2 Uso de la interfaz RS232 del ATmega8: Disposición de pines. Registros de control y de velocidad. Ejemplo. (3 horas) 5.3 Instrucciones de salto condicional: SBIS, SBIC (0.5 horas) Lectura: [7] ATmega8 datasheet: USART (páginas 133 a 162). 6. JUEGO DE INSTRUCCIONES PARTE II (3.5 horas) 6.1 Instrucciones aritmético-lógicas. Instrucciones de comparación y de salto condicional e incondicional. (2.5 horas) 6.2 Instrucciones de rotación y desplazamiento (1 hora) Lecturas: [6e] Instrucciones ATmega8 Parte 2: para sección 6.1 (páginas 4 a 10) [6h] Comparación de números. Para sección 6.1 (6 páginas) [6f] Instrucciones ATmega8 Parte 3: para sección 6.3 (6 páginas) [14] AVR200 [15] AVR202 7. PERIFÉRICOS PROGRAMABLES PARTE III (Circuito temporizador) (5 horas) 7.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: [6i] Contadores y Temporizadores: páginas 1 a 15. [7] ATmega8 datasheet: 16-Bit Timer/Counter 1 (Páginas 76 a 83, y 85 a 89) 8. INTERRUPCIONES (6 horas) 8.1 Concepto de interrupción. (1.5 horas) 8.2 Interrupciones en el ATmega8: Habilitadores de interrupción, vectores de interrupción. (1.5 horas) 8.3 Ejemplo de interrupciones con el temporizador 1. (3 horas) Lecturas: [6j] Interrupciones (16 páginas) [7] ATmega8 datasheet: Interrupts (páginas 46 a 48, y 66 a 68) -3-
9. PERIFÉRICOS PROGRAMABLES PARTE IV (Circuito temporizador) (7 horas) 9.1 Temporizador 1: Generación de ondas PWM usando el modo PWM rápido. Ejemplos basados en interrupciones. (4 horas) 9.2 temporizador 1: Capturador de entrada. Ejemplos. (3 horas) Lecturas: [6i] Contadores y Temporizadores: páginas 15 y 16. [7] ATmega8 datasheet: 16-Bit Timer/Counter 1 (páginas 89 a 91) 10. DISEÑO DE UN COMPUTADOR (1 hora) 10.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)
PROGRAMA DEL LABORATORIO 1. Familiarización con las herramientas de desarrollo. Manejo de puertos de E/S. 2. Programación empleando juego de instrucciones del microcontrolador. Manejo de arreglos en memoria RAM. 3. Comunicación serial asíncrona. Manejo de tablas en memoria Flash. 4. Contadores, temporizadores e interrupciones. 5. Presentación del proyecto. 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. El realizado en la cuarta sesión de laboratorio corresponde a 2 puntos de la nota del examen final. 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. •
•
•
•
•
-4-
• •
•
•
Habrán dos avances, correspondientes a la segunda y cuarta sesiones de laboratorio. En la quinta sesión de laboratorio se hace la presentación final del proyecto y su sustentación. La sustentación incluye una evaluación oral que se hace a cada integrante. El buen funcionamiento y documentación del proyecto corresponden además a cinco puntos del examen final. 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 1.- Gadre, Dhananjay V.; "Programming and customizing the AVR microcontroller"; 2001, McGraw-Hill. 2.- John Morton; “AVR An Introductory Course”; 2002, Elsevier Science. 3.- Richard Barnett, Larry O’Cull, Sarah Cox; “Embedded C Programming and the Atmel AVR”; 2003, Thomson Learning Inc. 4.- Pardue, Joe ; "C programming for microcontrollers : featuring ATMEL's AVR butterfly and the free WinAVR compiler", 2005, Smiley Micros. 5.- Arnold S. Berger, “Embedded Systems Design. An introduction to processes, tools, & techniques”, 2002, CMP Books. 6.- 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 ATmega8 Parte 1: Modelo del Programador, Banderas y Modos de Direccionamiento. e. Instrucciones ATmega8 Parte 2: Instrucciones aritméticas. f. Instrucciones ATmega8 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. Subrutinas.
Manuales 7.- Atmel Corporation, "ATmega8 datasheet", Octubre 2006 8.- Atmel Corporation, "8-bit AVR Instruction Set", Noviembre 2005 9.- Atmel Corporation, "AVR assembler user´s guide", manual en línea. 10.- Advanced Micro Tools, “VMLAB”, manual en línea 11.- Atmel Corporation, "Avr Studio 4.0 user's guide", manual en línea. Notas de aplicación 12.- AVR072: Accessing 16-bit I/O Registers (4 pages, revision B, updated 5/02) 13.- AVR108: Setup and use of the LPM Instructions (4 pages, revision B, updated 5/02) 14.- AVR200: Multiply and Divide Routines (21 pages, revision C, updated 05/06) 15.- AVR202: 16-Bit Arithmetics (3 pages, revision B, updated 5/02) 16.- AVR360: Step Motor Controller -5-
Páginas WEB: - Página web de la compañía Atmel Corporation para la familia de microcontroladores AVR. http://www.atmel.com/products/avr/ - 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 Bases de datos en línea (accesibles desde cualquier computadora de la universidad): Base de datos ProQuest www.bellhowell.infolearning.com/pqdauto V. METODOLOGÍA En las clases se fomenta la participación de los alumnos. 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 aprobado el curso Circuitos Eléctricos 1, que no hayan acreditado el nivel de idioma inglés requerido para egresar de Estudios Generales Ciencias, o que no estén llevando el curso Circuitos Analógicos. •
•
-6-
VI. SISTEMA DE EVALUACIÓN En este curso se aplica la modalidad de evaluación 4, que establece que el promedio se calcula con la siguiente fórmula: Nota Final = (3 Ex1 + 4 Ex2 + 2 Pa + 1 Pb) / 10 Donde:
Exi = Examen iésimo Pa = Promedio de prácticas Tipo “a”, sin considerar la menor nota Pb = Promedio de prácticas Tipo “b”, sin considerar la menor nota
El puntaje del examen final corresponde a: 13 puntos como prueba escrita, 5 puntos por buen funcionamiento del proyecto y su documentación, 2 puntos por la prueba individual que se toma en la cuarta sesión de laboratorio. San Miguel, agosto de 2010
-7-