Introducción a los sistemas digitales con el Microcontrolador MCF5272

Introducción a los sistemas digitales con el Microcontrolador MCF5272

  • Author: San Segundo Hernández, Rubén; Montero Martínez, Juan Manuel (coords.)
  • Publisher: Marcombo
  • ISBN: 9788426714077
  • Place of publication:  Barcelona , Spain
  • Year of publication: 2006
  • Pages: 160

En este libro se introduce al lector en el diseño de Sistemas Digitales basados en un microcontrolador. En este caso concreto el microcontrolador utilizado es Motorola ColdFire 5272 a través de la plataforma hardware ENT2004CF desarrollada íntegramente en el Departamento de Ingeniería Electrónica de la E.T.S.I. Telecomcunicación de la Universidad Politécnica de Madrid. Esta plataforma pretende establecer un punto de convergencia entre las actividades docentes y de investigación llevadas a cabo por este departamento.

La implementación de Sistemas Digitales sobre esta plataforma se realiza utilizando el entorno de desarrollo EDColdFire v3(1) que permite la generación de programas tanto en lenguaje ensamblador como en C.

  • Cover
  • Title page
  • Copyright page
  • Agradecimientos
  • Índice
  • Figuras
  • Tablas
  • 1. Introducción
    • 1.1. Tutoriales desarrollados
    • 1.2. Material necesario
  • 2. Descripción de la plataforma ENT2004CF
    • 2.1. Descripción de ENT2004CF
      • 2.1.1. Descripción de Antares
      • 2.1.2. Descripción de la placa de adaptación de usuario
      • 2.1.3. Mapa de memoria
      • 2.1.4. Instalación
      • 2.1.5. Interfaz de usuario
      • 2.1.6. Llamadas al sistema
    • 2.2. Los conversores Analógico Digital (ADC) y Digital Analógico (DAC)
      • 2.2.1. Conceptos generales de conversión entre los mundos analógico y digital
      • 2.2.2. Los conversores de la plataforma ENT2004CF
  • 3. Aspectos prácticos de programación en sistemas electrónicos digitales
    • 3.1. Principios básicos de Ingeniería de Sistemas Software
      • 3.1.1. Abstracción
      • 3.1.2. Distinción entre análisis y diseño
      • 3.1.3. Encapsulamiento de la información y reutilización
      • 3.1.4. Tratamiento de la complejidad
      • 3.1.5. Diseño para el cambio: Escalabilidad
      • 3.1.6. Estructuración de los datos
      • 3.1.7. Implementación a la defensiva y manejo de situaciones excepcionales
      • 3.1.8. Errores y depuración
      • 3.1.9. Documentación
    • 3.2. Estructura general de un programa
    • 3.3. Variables
    • 3.4. Subrutinas
      • 3.4.1. Conceptos importantes sobre las subrrutinas
    • 3.5. Desarrollo de software
    • 3.6. Desarrollo de software de tiempo real
      • 3.6.1. Programación concurrente
      • 3.6.2. Registros
      • 3.6.3. Memoria
      • 3.6.4. Dispositivos
      • 3.6.5. Depuración de un sistema SW de tiempo real
    • 3.7. Calidad de SW
  • 4. Entrada y salida con el ordenador y manejo de los puertos digitales
    • 4.1. Introducción
    • 4.2. Ejemplo de entrada de caracteres con el teclado y salida en la pantalla del ordenador
      • 4.2.1. Estructura del programa Cadena.asm
      • 4.2.2. Funcionamiento general del programa Cadena.asm
      • 4.2.3. Ejecución del programa Cadena.asm
    • 4.3. Manejo de los puertos de entrada y salida digitales
      • 4.3.1. Estructura del programa CocheFantastico.asm
      • 4.3.2. Funcionamiento y ejecución del programa CocheFantastico.asm
    • 4.4. Ejemplos
      • 4.4.1. Ejemplo 1: Cadena.asm y Cadena.c
      • 4.4.2. Ejemplo 2: CocheFantastico.asm y CocheFantastico.c
  • 5. Manejo de Interrupciones y temporizadores
    • 5.1. Introducción
    • 5.2. Tutorial para el manejo de temporizadores e interrupciones en tiempo real
      • 5.2.1. Estructura del programa InterrTimer.asm
      • 5.2.2. Funcionamiento general del programa InterrTimer.asm
      • 5.2.3. Configuración del temporizador y de las interrupciones.
    • 5.3. Tutorial para el manejo de una interrupción externa
      • 5.3.1. Estructura del programa InterrExterna.asm
      • 5.3.2. Funcionamiento general del programa InterrExterna.asm
      • 5.3.3. Configuración de la interrupción externa INT1
    • 5.4. Tutorial para el manejo de una interrupción por fin de temporización
      • 5.4.1. Estructura del programa FinTemp.asm
      • 5.4.2. Funcionamiento general del programa FinTemp.asm
      • 5.4.3. Configuración de las interrupciones de los temporizadores
    • 5.5. Código de los programas: en ensamblador (InterrTimer.asm, InterrExterna.asm y FinTemp.asm) y C (InterrTimer.c, InterrExterna.c y FinTemp.c)
      • 5.5.1. InterrTimer.asm e InterrTimer.c
      • 5.5.2. InterrExterna.asm e InterrExterna.c
      • 5.5.3. FinTemp.asm y FinTemp.c
  • 6. Moduladores de ancho de pulso (PWM)
    • 6.1. Introducción
    • 6.2. Tutorial de manejo de moduladores de ancho de pulso
      • 6.2.1. Estructura del programa pwm.asm
      • 6.2.2. Funcionamiento general del programa pwm.asm
      • 6.2.3. Configuración del modulador de ancho de pulso PWM0
      • 6.2.4. Código del programa pwm.asm y pwm.c
  • 7. Gestión de un teclado matricial y un LCD: placa auxiliar TL04
    • 7.1. Descripción de la placa auxiliar TL04
    • 7.2. Tutorial para la gestión de un teclado matricial
      • 7.2.1. Estructura del programa teclado.asm
      • 7.2.2. Funcionamiento general del programa teclado.asm
      • 7.2.3. Exploración del teclado matricial: subrutina TECLADO
    • 7.3. Tutorial para la configuración y manejo de un LCD
      • 7.3.1. Estructura del programa lcd.asm
      • 7.3.2. Funcionamiento general del programa lcd.asm
      • 7.3.3. Configuración y manejo del LCD y del controlador HD44780
    • 7.4. Utilización conjunta del teclado y del LCD
    • 7.5. Código de los programas: en ensamblador (teclado.asm, lcd.asm y teclado_lcd.asm) y en C (teclado.c, lcd.c y teclado_lcd.c)
      • 7.5.1. Teclado.asm y Teclado.c
      • 7.5.2. Lcd.asm y lcd.c
      • 7.5.3. Teclado_lcd.asm y Teclado_lcd.c
  • 8. Conversores Digital-Analógico y Analógico-Digital utilizando QSPI
    • 8.1. Tutorial de manejo del conversor Digital-Analógico (DAC)
      • 8.1.1. Estructura del programa dac.asm
      • 8.1.2. Funcionamiento general del programa dac.asm
      • 8.1.3. Configuración del módulo QSPI para la utilización del DAC
      • 8.1.4. Envío de datos a través del QSPI y utilización del DAC
    • 8.2. Tutorial de manejo del conversor Analógico Digital (ADC)
      • 8.2.1. Estructura del programa adc.asm
      • 8.2.2. Funcionamiento general del programa adc.asm
      • 8.2.3. Configuración del QSPI para la utilización del ADC
      • 8.2.4. Captura de datos a través del QSPI y utilización del ADC
    • 8.3. Código de los programas: en ensamblador (dac.asm y adc.asm) y en C (dac.c y adc.c)
      • 8.3.1. Dac.asm y dac.c
      • 8.3.2. Adc.asm y adc.c
  • 9. Anexo I: Lenguaje ensamblador
    • 9.1. Introducción
    • 9.2. Formato del archivo fuente
      • 9.2.1. Formato de una línea
      • 9.2.2. Símbolos
      • 9.2.3. Etiquetas
      • 9.2.4. Instrucción
      • 9.2.5. Comentario
      • 9.2.6. Constantes
      • 9.2.7. Expresiones
      • 9.2.8. Directivas
    • 9.3. Formato del archivo de depuración
    • 9.4. Formato del archivo objeto
    • 9.5. Ensamblar y corregir errores
  • 10. Anexo II: Estructura de un programa en C empleando el compilador de GNU
    • 10.1. El fichero start.asg
    • 10.2. El fichero main.c
    • 10.3. Uso de instrucciones en ensamblador propias de ColdFire
      • 10.3.1. Insertar código ensamblador
      • 10.3.2. Enlazar código ensamblador con código en C
    • 10.4. Librerías de C
      • 10.4.1. Librería m5272
      • 10.4.2. Librería m5272lib
      • 10.4.3. Librería m5272gpio
      • 10.4.4. Librería m5272adc_dac
      • 10.4.5. Librería m5272lcd
  • 11. Anexo III: Interfaz de periféricos QSPI
    • 11.1. Introducción
    • 11.2. Cola FIFO
    • 11.3. Modelo de programación
    • 11.4. Protocolo general de inicialización del QSPI y envío de datos: DAC en QSPI_CS1
    • 11.5. Protocolo general de inicialización del QSPI y envío de datos: ADC en QSPI_CS0
    • 11.6. Mapa de memoria del QSPI y registros relacionados
  • 12. Anexo IV: Dudas y Preguntas Frecuentes
    • 12.1. Configuración general
      • 12.1.1. ¿Qué registros del MCF5272 es necesario configurar?
      • 12.1.2. ¿Se debe trabajar en modo usuario o supervisor?
    • 12.2. Configuración del HW – Mapa de memoria
      • 12.2.1. ¿El vector de RESET se puede modificar?
      • 12.2.2. ¿En qué posiciones de memoria debe residir el programa?
      • 12.2.3. Posición a la que apunta inicialmente el puntero de pila
    • 12.3. Problemas con la plataforma de desarrollo ENT2004CF
      • 12.3.1. El programa indica que no puede abrir el puerto COM1 al que está conectado la plataforma de desarrollo
    • 12.4. Estrategias / problemas de depuración
      • 12.4.1. ¿Cómo se visualizan las salidas de la plataforma?
      • 12.4.2. ¿Qué debo hacer cuando ejecuto el programa y falla?
      • 12.4.3. ¿Se puede ejecutar una TRAP en modo de “ejecución paso a paso”?
      • 12.4.4. ¿Cómo se puede ver el valor de una variable?
      • 12.4.5. Se produce un Error de dirección
      • 12.4.6. Se produce un Error de bus
    • 12.5. Problemas con la sintaxis / ensamblador
      • 12.5.1. Las etiquetas deben estar SIEMPRE en la misma línea que un instrucción
      • 12.5.2. Utilización de la etiqueta PPAL
      • 12.5.3. Las instrucciones lógicas deben operar siempre en LONG
      • 12.5.4. Las instrucciones deben ir en direcciones pares
      • 12.5.5. ¿Cómo se carga una dirección en un registro de direcciones?
      • 12.5.6. ¡Cuidado con los tamaños de las variables!
      • 12.5.7. ¿Se pueden usar etiquetas de más de 8 caracteres?
      • 12.5.8. El programa principal debe acabar con un bucle infinito
      • 12.5.9. ¿Para qué sirve la directiva END?
      • 12.5.10. RTS al principio de la línea
      • 12.5.11. Paso de datos entre subrutinas
      • 12.5.12. Puntos de comienzo y terminación en subrutinas
      • 12.5.13. Terminación en subrutinas de atención a interrupciones
    • 12.6. Modos de direccionamiento
      • 12.6.1. ¿Qué modo de direccionamiento hay que utilizar para el acceso a un búfer o array?
      • 12.6.2. Un modo de direccionamiento inexistente
      • 12.6.3. Otro modo de direccionamiento inexistente
    • 12.7. Gestión de las interrupciones
      • 12.7.1. ¿Cuándo se habilitan las interrupciones?
      • 12.7.2. ¿Cómo se habilitan e inhabilitan las interrupciones?
      • 12.7.3. Inicialización del vector de interrupciones
      • 12.7.4. Al habilitar las interrupciones el sistema deja de funcionar
      • 12.7.5. ¿En qué consiste la TRAP 15?
      • 12.7.6. Cuando se produce una interrupción, ¿se puede producir otra antes de ejecutarse la instrucción RTE?
    • 12.8. Problemas con las Entradas/Salidas digitales
      • 12.8.1. Cuando leo los registros de datos de los puertos los valores no tienen sentido
      • 12.8.2. Problemas al usar BSET, BCLR o BCHG
      • 12.8.3. Al escribir en el puerto de salida, aparece el dato duplicado en el byte alto y en el byte bajo
    • 12.9. Recomendaciones generales
      • 12.9.1. Básese en la documentación para escribir el código
    • 12.10. Programación en C
      • 12.10.1. Manejo de bits
      • 12.10.2. Declaración e inicialización de un array dentro de una función
      • 12.10.3. Optimización del código
  • 13. Anexo V: Soluciones a los tutoriales
    • 13.1. Manejo de interrupciones y temporizadores
    • 13.2. Utilización de moduladores de ancho de pulso
    • 13.3. Gestión de un teclado matricial y de un LCD (placa auxiliar TL04)
    • 13.4. Conversores DAC y ADC
  • 14. Bibliografía

SUBSCRIBE TO OUR NEWSLETTER

By subscribing, you accept our Privacy Policy