Curso sobre Microcontroladores Familia HC9S08 de Freescale

Documentos relacionados
Lanzamiento de nueva versión KIT PLUGIN_AW... Ahora aprender C es más fácil!

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Lanzamiento de nueva versión KIT PLUGIN_AW... Ahora aprender C es más fácil!

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA

Curso de Microcontroladores Familia HC908 Flash de Freescale Parte II. CPU08 Core ING. DANIEL DI LELLA

EDUKIT08. Características. Aplicaciones. Descripción general

Sistemas Didácticos en el aprendizaje con MCU s.

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Elección de un microcontrolador

Arquitectura de Computadores II

Capítulo 1. Introducción a los PIC de 8 bits

Control remoto del EDUKIT08 vía PC...

Arquitectura de Computadoras

Capítulo 2 LOS MICROCONTROLADORES MC68H(R)C908JL3/JK3/JK1. Capítulo 3 INTRODUCCIÓN A LA PROGRAMACIÓN DE LOS MICROCONTROLADORES MOTOROLA- FREESCALE

Introducción a la arquitectura PIC

Curso de Microcontroladores. Familia HC908 Flash Freescale. Parte II ING DANIEL DI LELLA

Arquitectura de Computadoras

Microcontroladores ( C)

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Microcontrolador PIC16F84: Arquitectura

MONITOR ROM MODULE (MON08)

Tema 4. Organización de la memoria

Interrupciones. Sistemas con Microcontroladores y Microprocesadores.

RESETS & INTERRUPCIONES

Diseño Basado en Microcontroladores.

Curso sobre Microcontroladores Familia HC9S08 de Freescale

RESETS & INTERRUPCIONES

Introducción a los microcontroladores. Decanato de Postgrado Mayo de 2011

Microprocesadores. Informática Aplicada DSI-EIE FCEIA

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI

Microcontroladores. Sistemas embebidos para tiempo real

Curso sobre Microcontroladores Familia HC9S08 de Freescale

ARQUITECTURA DEL PIC16F84A

Contenido MICROCONTROLADORES PIC16F877A Y PIC16F887 / SALVATIERRA. Alfaomega. 3.4 Soporte Muestras... 25

Curso de Microcontroladores. Familia HC908 Flash...

ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES

1.2 Arquitectura interna del microcontrolador

Contenidos. Arquitectura de ordenadores (fundamentos teóricos) Elementos de un ordenador. Periféricos

Taller de Firmware. Introducción a los Microcontroladores. Facultad de Ingeniería Instituto de Computación

Tema 3: Microprocesador ColdFire MCF5282

Buceando en el HC908...

Unidad 2: Taller de Cómputo. Estructura y Componentes de la Computadora UNIDAD DOS: INTRODUCCIÓN

UNIVERSIDAD TECNICA DE AMBATO NOVENO SEMESTRE INGENIERIA ROBOTICA MICROCONTROLADORES Y SU APLICACION EN ROBOTICA PROFESOR: UTA 2009 ING. G.

para el mercado industrial. Para poder cumplir con estas demandas del mercado están en muchas ocasiones

APENDICE A Microcontrolador de 8 bits MC68HC11F1

UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA. Ingeniería en Electrónica EL MICROCONTROLADOR PIC16F84 PRESENTA: M. C. Felipe Santiago Espinosa

Sensores inalámbricos de bajo

Arquitectura Interna del 8088

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

Arquitectura (Procesador familia 80 x 86 )

Arquitectura del MIPS: Introducción

Sistemas con Microprocesadores I

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Seminario de Actualización tecnológica en Paraná realizado por ELKO/ARROW, Freescale y EduDevices..

Unidad 5 Unidad central de proceso

DISEÑO CURRICULAR ARQUITECTURA DEL COMPUTADOR

INDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)

MICROCONTROLADORES: FUNDAMENTOS Y APLICACIONES CON PIC. Autores: Fernando E. Valdés Pérez Ramon Pallàs Areny. Título de la obra:

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

PANORAMA GENERAL DE LOS µc

SISTEMAS OPERATIVOS Arquitectura de computadores

Microprocesadores, Tema 2:

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

SOMI XVIII Congreso de Instrumentación ELECTRONICA ASC1876

Estructura de los sistemas de cómputo

Unidad IV: Programación de microcontroladores

9. Lenguaje ensamblador

Arquitectura del PLC. Dpto. Electrónica, Automática e Informática Industrial)

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Un. VIII. Generación de Código Objeto

Velocidades Típicas de transferencia en Dispositivos I/O

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

SIMULACION GRAVES AGUDOS.CIR m 0.400m 0.800m 1.200m 1.600m 2.000m V(SALIDA) T

Dispositivos de Entrada/Salida

AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas MARCO TEORICO. Estructura Interna

Organización del Computador I. Introducción e Historia

Buceando en el HC908...

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Funcionamiento de la Pila (o stack)

Como sacarle mayor provecho a las herramientas disponibles para la familia HC908

Optimización de código en el 68HC908

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Introducción a la arquitectura de computadores

Arquitectura de Computadores II Clase #3

CAPITULO 4. LOS DSPs

INTRODUCCIÓN A LOS µc

Arquitectura de Computadores II. Arquitectura Intel 32 y modo protegido

HERRAMIENTAS DE DESARROLLO HARDWARE & SOFTWARE

Unidad 1: Conceptos generales de Sistemas Operativos.

Memoria y Entrada/Salida Tecnología Organización - Expansión

Unidad Nº II Capacidad de la unidad central. de procesamiento. Instituto Universitario Politécnico. Santiago Mariño

INSTRUCCIONES. Las instrucciones del microcontrolador Z8 PLUS se pueden clasificar en grupos de acuerdo a su función como:

Técnicas Digitales III

Qué es un Microcontrolador?

Microchip Tips & Tricks...

Transcripción:

Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar e-mail: info@edudevices.com.ar Responsable Area Educación ELKO / ARROW www.elkonet.com e-mail: ddilella@elkonet.com Descripción del curso. El curso sobre microcontroladores de la familia HC9S08 de Freescale Semiconductor está basado en los conceptos impartidos a lo largo del Curso sobre Microcontroladores HC705 y HC908 de Freescale Semiconductor contenido en el CD ROM de Instalación que forma parte del apoyo bibliográfico del sistema didáctico EDUKIT08. Se supone que el lector dispone de los conocimientos necesarios, tanto teóricos como prácticos en la familia de microcontroladores HC908 FLASH alcanzando un grado de dominio óptimo de las herramientas de desarrollo de hardware y software disponibles para dicha familia. Si ello no fuera así, se sugiere al lector poco experimentado, comenzar con el paquete básico contenido en el sistema didáctico que tiene como objetivo la capacitación en la familia HC908 o consultar el numeroso material bibliográfico que se encuentra en el sitio web de EduDevices (www.edudevices.com.ar) y numerosos sitios en Internet. La familia HC9S08 es una versión muy mejorada de la familia HC908 y 100% código compatible con esta, por lo que es de vital importancia que el lector tenga experiencia previa con la familia HC908 pues todo este curso estará basado en las diferencias, mejoras y características similares que presenten ambas familias. Cuando sea necesario se harán referencias a la familia HC908 que ayudarán a entender las mejoras introducidas en la familia HC9S08 y las diferencias de funcionamiento entre ambas.

Breve comentario del Autor: Durante mucho tiempo, el Ing. Roberto Simone y el Autor de este curso, habíamos pensado que un sistema didáctico debería ser capaz de actualizarse y ser lo suficientemente flexible como para contener la problemática del aprendizaje del mundo de los microcontroladores de 8 a 32 Bits con la mayor simplicidad posible. Cuando se diseñó el sistema didáctico EDUKIT08 se tuvo en cuenta ello y se lo dotó de placas de personalización de la familia de MCU a trabajar llamadas Placas PLUG_IN y de placas de expansión de periféricos que hacen de este un sistema flexible y apto para trabajar con MCUs de las familias de 8 a 32 Bits de Freescale Semiconductor. Como ejemplo de ello, el sistema didáctico posee el kit PLUGIN_AW que contiene todo lo necesario para aprender y trabajar con la familia HC9S08 no solo en lenguaje ensamblador, sino también en lenguaje C y entornos integrados de trabajo profesionales como el CodeWarrior de Freescale. La familia HC9S08 constituye una mejora notable en características y desempeño a la popular familia HC908 y con ello esperamos que el lector pueda aprovecharlo para dotar a sus proyectos de mayores prestaciones a costos competitivos en las aplicaciones del mundo de los 8 bits. Temario del Curso Capítulo 1. - Introducción a la Arquitectura del CPU HCS08. Capítulo 2.- Módulos ICG / ICS Internal Clock Generator / Internal Clock Source. Capítulo 3.- Puertos I/O, Keyboard Interrupt Module (KBI). Capítulo 4.- Timer / PWM TPM. Capítulo 5.- ADC10 - A/D Converter Conversor Analógico / Digital. Capítulo 6.- Módulo Serial Asincrónico de Comunicación - SCI Serial Comunication Interface. Capítulo 7.- Módulo Serial Sincrónico de Comunicaciones SPI. Serial Peripheral Interface. Capítulo 8.- Inter Integrated Circuit Interface I2C MMIIC Multi Master I2C. Capítulo 9.- Memoria FLASH. Capítulo 10.- Background Debug Mode (BDM) Modo de Emulación Integrado en el Chip. Capítulo 11.- Sistemas de Baja Tensión y Bajo Consumo. LVLP Systems (Low Voltage, Low Power). Capítulo 12.- Conclusiones Finales.

Capítulo 1. Introducción a la Arquitectura del CPU HCS08. Como se había comentado anteriormente, la familia HC9S08 constituye una notable mejora con respecto a su antecesora, la popular familia HC908, primera familia con tecnología FLASH de Freescale y la que, en cierta forma, ha marcado el camino a seguir para esta nueva familia, también de tecnología FLASH. Cuando se diseñó la familia HC9S08 se tuvo en cuenta que el mundo se movía cada vez más hacia las aplicaciones portátiles, alimentadas por baterías o pilas, y con tamaños más y más reducidos. La familia HC908 significó una revolución tecnológica con respecto a la vieja familia OTP HC705, en cuanto a la mejora gral. de las prestaciones, regrababilidad de la memoria de programa, grabación en circuito y el acceso a una nueva serie de herramientas que permitían trabajar con la Emulación en Tiempo Real, lo que ha hecho de esta familia algo muy popular en el mundo de los 8 Bits. Sin embargo, nunca se consideró al bajo consumo un aspecto importante a tener en cuenta en la HC908. Tener la posibilidad de trabajar con muy bajo consumo cuando así se lo requiera y a su vez poder correr a alta velocidad en los momentos que se necesita capacidad de procesamiento, son características únicas de la familia HC9S08. A continuación nos tomaremos algunas líneas para discutir las metas del CPU HCS08 y su set de instrucciones, así también como las razones de las inclusiones y exclusiones de algunas características. Una de las metas que debían mantenerse era la facilidad de la programación y la compatibilidad de código que es una de las características destacables e importantes mantenida a lo largo del tiempo por los diferentes microcontroladores de Freescale Semiconductor (desde los tiempos de Motorola Semiconductor). La facilidad de programación, se traduce en programas más eficientes, más claros de entender y modificar por otras personas. Compatibilidad de código se traduce en la re utilización de rutinas, programas y código elaborado para otras familias como la HC908 o la HC705 y con ello un ahorro considerable de tiempo y dinero, además de asegurar la confiabilidad de programas ya funcionando con estas familias, que al migrar a la HC9S08, siguen siendo confiables al no producirse grandes cambios en el código de la aplicación.

Otras de las metas fue lograr la máxima eficiencia en los saltos condicionales. La mayoría de los controladores embebidos requieren de una considerable cantidad de decisiones y por lo tanto, saltos asociadas con ellas. De esta forma, el CPU HCS08 está dotado de una gran variedad de instrucciones de saltos condicionados, con distintos modos de direccionamiento que facilitan la programación en lenguaje C y construcciones de saltos muy comunes en este tipo de lenguajes. La eficiencia y la potencia en el manejo de las interrupciones han sido otros de los puntos a tener en cuenta para la familia HC9S08, lo que le permite atender rápidamente las excepciones y continuar con el flujo normal del programa. El soporte de lenguajes de alto nivel como el C han sido tenido en cuenta para esta familia, debido a que cada vez más el diseñador utiliza este tipo de lenguajes. En el CPU HCS08 existen nuevos modos de direccionamiento para instrucciones como Load HX (LDHX), Store HX (STHX) y Compare HX (CPHX), que mejoran la eficiencia del código generado por el compilador. CPU HCS08. El CPU HCS08 posee 5 (cinco) registros que no forman parte del mapa de memoria y están relacionados con las operaciones de dicho CPU. Registros del CPU HCS08.

A simple vista, podemos observar que los registros del CPU HCS08 son idénticos a los disponibles en el CPU08 de la familia HC908, y ello es lógico, ya que al principio de este capítulo se ha mencionado que una de las grandes virtudes de esta familia es mantener la compatibilidad de código con la HC908. El Acumulador A es un registro de 8 bits, que al igual que en las familias HC705 y HC908 es el registro más utilizado en las operaciones aritméticas y lógicas. Esto es así ya que la arquitectura del CPU HCS08 es del tipo Von Neuman al igual que las de los CPU05 y CPU08. Hay también un registro índice de16 Bits vinculado al direccionamiento del mapa de memoria que puede manejar el CPU, un registro puntero de pila (Stack Pointer) de 16 bits, un Contador de Programa (PC) de 16 Bits y un registro de código de condiciones de 8 bits. Registros. Acumulador A (Acc). Para propósitos Generales. Mantiene los operandos y los resultados de las operaciones. Registro Indice (H:X). Registro de 16 Bits de largo, formado por la unión de H:X (H, parte Alta X, parte Baja, compatibilidad con HC705). Puede acceder a un espacio de direccionamiento de 64 Kbytes. Utilizado en el modo de direccionamiento indexado para determinar la dirección efectiva de un operando. Puede servir como un registro de propósitos generales.

En el CPU HCS08, al igual que sucede en el CPU08, el registro H no es salvado en forma automática en el stack (pila) cuando se atiende un pedido de interrupción. Como el CPU05 de la familia HC705 no posee un registro H, entonces ni el CPU08 o el CPU HCS08 guardan en forma automática el contenido del registro H para mantener compatibilidad con los programas hechos para HC705. Por lo que al igual que en el CPU08, el CPU HS08 posee las instrucciones PUSH H y PULL H para guardar y luego rescatar de la pila (stack) el contenido del registro H para mantenerlo intacto. Stack Pointer (SP) (Puntero de Pila). Registro de 16 Bits de largo. Se utiliza para mantener la próxima dirección disponible en la pila. Se puede utilizar como un segundo puntero índice. Muy utilizado en C para el almacenamiento de variables locales. Puede trabajar fuera del espacio de memoria RAM. El funcionamiento del SP (Stack Pointer) es igual al del HC908, y el mismo puede barrer cualquier posición dentro de un mapa de memoria de 64 Kbytes, aunque su función principal es la de apuntar al próximo espacio vacante en la pila cuando se utilizan interrupciones o saltos a subrutinas, otras aplicaciones son la de un segundo puntero índice o bien utilizarlo como almacenamiento de variables locales en los compiladores C. Luego de producirse un Reset, el SP apunta a la posición de memoria $FF y este es decrementado cuando ingresa más información a la pila. Como se vio en la familia HC908, Esto es así para mantener compatibilidad con la familia HC705, si bien el Stack Pointer puede manipularse a voluntad por el programador para apuntar a la última posición de memoria RAM implementada en un MCU determinado de la familia HC908 o HC9S08. Ejemplo: ENDRAM EQU $ 085F.. LDHX # ENDRAM+1 ; SP H:X - $0001 TXS

Program Counter (PC) (Contador de Programa). Contiene la dirección de la próxima instrucción u operando a ser decodificado. Cargado con el contenido de las posiciones $FFFE y $FFFF luego de salir del RESET. Se incrementa en forma automática. El PC es un registro de 16 Bits de largo que contiene la dirección de la próxima instrucción u operando a decodificar y puede acceder a los 64 Kbytes de espacio de memoria. El PC se incrementa en forma automática cuando una instrucción se ejecuta. Cuando se llama a una subrutina o a una interrupción, el Contador de Programa se recarga con la dirección a donde debe saltar contenida en el llamado a subrutina o en el vector de la interrupción. Las instrucciones RTS (Returm From Subroutine) y RTI (Returm From Interrupt) restablecen el contenido del PC (Contador de Programa) a su valor original incrementado en una posición (PC = PC+1). Condition Code Register (CCR) (Registro de Código de Condiciones). El Registro de Código de condiciones tiene 5 bits de estado y un bit de máscara general de interrupciones. Los Bits 5 y 6 están permanentemente forzados en 1. El CCR es idéntico al del HC908 y el I Bit siempre es forzado a 1 cuando se sale del estado de RESET como prevención automática para evitar atender interrupciones cuando el CPU tadavía no está listo para atender las mismas. Al igual que en el CPU08, instrucciones como CLI (Clear I Bit) o RTI (retorno de la interrupción) limpian el I Bit para quitar la máscara general de interrupciones y habilitar a las mismas para futuras interrupciones. Los otros 5 bits del CCR son flags (banderas) de estado y hacen posibles los saltos condicionados y otras operaciones que involucren bits de estados.

Mapa de Memoria. Registros y Puertos I/O mapeados como memorias sin instrucciones especiales. Modo de direccionamiento Directo desde $00 a $FF. Más rápido y eficiente en espacio de código. Toda la FLASH se puede programar o borrar por parte del programa del usuario. Mapa de Memoria Típico de un MCU HC9S08. En el ejemplo de la figura, hay registros de periféricos localizados entre las posiciones $0000 y $0080. Los registros más utilizados del MCU están ubicados en esta posición debido a que por debajo de las 256 posiciones de memoria es más eficiente el acceso, más rápido y se utiliza menos código debido a que se utiliza el modo de direccionamiento Directo, esto se vio en detalles durante el curso de HC908. En el medio del mapa de memoria se puede ver un bloque con el nombre High Page Registers. La razón para poner registros en el medio del mapa de memoria es que existen registros que no tienen un gran uso durante la ejecución de un programa, como por ejemplo registros involucrados con el control de la memoria FLASH o registros de configuración general del MCU, muy importantes pero de acceso una o muy pocas veces durante un programa.

A continuación de la memoria RAM se implementa generalmente la memoria FLASH o ROM de programa. Este espacio está reservado para que el usuario coloque allí el código del programa a ejecutar, y /o utilice parte del mismo como memoria EEPROM para almacenar datos no volátiles gracias a la facilidad que posee la memoria flash para su borrado y grabación con simples comandos. Esto es similar a los HC908, con la diferencia que la grabación / borrado de la memoria Flash de estos se hace por la invocación de subrutinas contenidas en memoria ROM (grabadas de fábrica) durante la ejecución del programa del usuario. En la familia HC9S08, veremos más adelante, existen comandos directos que permiten manipular la flash con mayor flexibilidad que en los HC908. Al terminar la zona de FLASH para el código del usuario, vemos la zona de Vectores que contiene las direcciones de salto de las subrutinas de cada uno de los vectores utilizados por los distintos periféricos implementados en cada uno de los MCUs HC9S08. Continuará...