Curso de Microcontrolares Familia HC9S08 Artículo

Anuncio
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
Capítulo 3.
Entrega Nº 5
Puertos I/O, Keyboard Interrupt Module (KBI).
En la familia HC9S08 se han implementado módulos de Puertos I/O y KBI (Keyboard
Interrupt) muy similares a los de la familia HC908, pero con agregados muy
interesantes en cuanto al control del bajo consumo, control de la emisión de
radiación electromagnética (EMI), y configuración de resistencias de Pull – Up /
Pull – Down, que hacen a esta familia muy flexible para distintas aplicaciones de bajo
consumo.
En este capítulo se verán con cierta profundidad las características de los módulos de
puertos I/O y KBI, se explicarán algunas cuestiones comunes que surgen cuando se
empieza a utilizar la familia HC9S08 y se darán “trucos” para aprovechar las
características de bajo consumo que posee la familia. También se verán técnicas para
reducir los errores producidos cuando se utiliza el conversor A/D que comparte líneas
I/O del MCU.
Características de los Puertos I/O en la familia HC9S08.
Configuración Típica de un Puerto I/O en la flia. HC9S08.
Destacados:
•
•
•
Los resistores de Pull – Ups son programables en forma individual en cada pin.
Se puede controlar por soft el “slew rate” (pendiente) de la señal de salida de
cada pin.
Corriente de manejo del pin configurable por soft.
En la figura superior, se puede observar la configuración típica de un puerto I/O en la
familia HC9S08. Como se puede ver, existen 4 transistores MosFET por cada pin I/O, 2
controlan los estados “alto” (1) y “bajo” (0), y los otros 2 restantes activan los resistores
de Pull – Up y Pull – Down respectivamente. Cada pin I/O del MCU está protegido
contra sobre – excursiones de tensión por medio de diodos rápidos en polarización
inversa.
Los resistores de Pull – Up / Pull - Down pueden ser activados en cualquier momento
por medio de registros especialmente asignados para ello.
En la realidad, los transistores MosFET que controlan los estados de alto y bajo, no son
simples transistores, sino múltiples transistores configurados para poder controlar la
corriente final del pin I/O. De esta forma, por medio del software se puede configurar la
corriente final que puede manejar un pin I/O y la pendiente (slew rate) del mismo.
Controlar el Slew Rate de un puerto es muy útil cuando el diseñador necesita que la
aplicación con MCUs genere la menor cantidad de emisiones electromagnéticas (EMI)
con los otros elementos involucrados en el sistema.
En el circuito de salida, pueden observarse resistores de limitación de corriente de
pequeño valor (cada resistor del circuito es en realidad una pequeña fuente de corriente
implementada en una estructura CMOS que oficia en la práctica como un resistor), que
son muy efectivos para limitar los picos de corriente presentes en los puertos I/O en
distintas circunstancias.
Registros asociados con los puertos I/O.
5 registros están asociados con cada puerto I/O. Estos registros están divididos en 2
grupos. El primer grupo, denominada “I/O Paralelo”, incluye los registros Port Data
Register (PTxD) y el Port Data Direction Register (PTxDD). El registro de Datos
(PTxD) se usa para leer el valor de una entrada (Input) o escribir un valor si el puerto
es configurado como salida (Output). El registro de Dirección de Datos, configura las
distintas líneas del puerto como entradas o salidas. Al igual que en la familia HC908,
estos dos registros son accedidos en forma muy frecuente y por ello están ubicados en
la página de acceso directo del mapa de memoria de la familia HC9S08, lo que hace
muy eficiente el código utilizado para acceder a los mismos.
El segundo grupo de registros comprenden a los que “controlan al pin”. En cualquiera
de las aplicaciones donde el pin es utilizado como un puerto I/O o está siendo
controlado como por algún otro módulo, los registros que controlan al pin gobiernan el
funcionamiento del mismo.
Los registros de control del pin incluyen:
•
•
•
Pull – Up Enable Register (habilita resistores de Pull – Up pin a pin del puerto por
medio de cada bit del registro asociado al puerto).
Slew Enable Register (habilita / deshabilita el control de pendiente del puerto pin a
pin por medio de cada bit del registro asociado al puerto).
Drive Strength Register (habilita / deshabilita el manejo de alta / baja corriente del
puerto pin a pin por medio de cada bit del registro asociado al puerto).
Después del reset, los registros de Pull – Up, Slew Rate y Drive Strength, quedan
configurados a sus valores por defecto, esto significa que los resistores de Pull –
Up, y el control de pendiente están deshabilitados, mientras que el manejo de
corriente es configurado a baja corriente.
Como puede observarse en la siguiente figura, los registros de control del pin están
ubicados en la página alta de memoria RAM de los MCUs de la familia HC9S08 y
a ellos se accede con instrucciones de direccionamiento extendido, ya que son
utilizados no tan frecuentemente como el anterior grupo.
Los 5 Registros Asociados con cada Puerto I/O.
Multiplexado de Funciones.
Es común en los MCUs de pocos pines físicos, por ejemplo 8, 16, 20 pines, compartir
funciones en un mismo pin físico. Esto se lo denomina “Multiplexado de Funciones”
y se busca que un mismo pin comparta funciones que, en general, no se molesten unas
con otras.
Por ejemplo, en el diagrama en bloques de la figura, se ha elegido el pin “PTA0” o
Puerto A0, este comparte además las siguientes funciones KBIP0 (Keyboard Interrupt
Pin 0), TPMCH0 (Timer Channel 0), ADP0 (A/D Pin 0) y finalmente ACMP+
(Analog Comparator Plus input Signal). En total, estas 5 funciones comparten el
mismo pin físico del MCU, para ello, existen circuitos asociados que permiten activar
y desactivar cada una de las funciones en forma individual. Si una o más
habilitaciones han sido activadas para un mismo pin, tendrá validez solo la de
mayor prioridad de las funciones activadas. La prioridad se establece desde el
rótulo de la función que figura en la extrema derecha de cada pin del MCU
elegido. En nuestro ejemplo, la función ACMP+ tiene la mayor prioridad y PTA0
tiene la menor prioridad. Este sistema de prioridades se establece para evitar posibles
daños en los puertos cuando más de una función es activada en forma simultanea por
medio del programa del usuario.
Este sistema de prioridades funciona en forma similar al de la familia HC908 y
también incluye el mismo sistema de prioridades para periféricos de comunicación
serial como el SPI, SCI, o I2C. En estos periféricos, pueden producirse habilitaciones
parciales (SCI) o totales (SPI, I2C) de las líneas que comparten con los puertos I/O.
Por ejemplo, se puede utilizar solo el pin de RX (RXD) del módulo SCI para recibir
datos seriales desde el exterior y liberar el uso del pin TXD de dicho módulo para ser
usado por otra de las funciones que comparten dicho pin, sin necesidad de “inmovilizar”
todos las líneas compartidas por dicho periférico.
Al igual que en la familia HC908, se sugiere al lector, consultar con los manuales
técnicos del MCU elegido en cuanto a las distintas configuraciones, y recomendaciones
impartidas para cada función implementada en cada uno de los pines físicos del MCU.
Esquema de “Multiplexado” de un puerto I/O de un MCU flia. HC9S08.
Características Especiales en los Puerto I/O de la Familia HC9S08.
Slew Rate & Drive Strength.
Como se ha mencionado en párrafos anteriores, las características de los puertos I/O de
la familia HC9S08 son muy similares a las de la familia HC908 con la diferencia de
algunas características especiales agregadas que permiten el control de la pendiente de
la señal de salida y la corriente de manejo de un puerto I/O. Estas nuevas
funcionalidades son muy útiles cuando la aplicación debe cumplir con normas de
control ambiental o interferir lo menos posible con el resto del sistema, ya que tienden a
mantener en niveles bajos las emisiones electromagnéticas (EMI) que generan los
cambios de estado en los puertos I/O del MCU.
Slew Rate.
El control de la pendiente (Slew Rate) es muy importante para la disminución de
armónicos generados por la “pendiente abrupta” de un señal (cambio de “0” a “1” o a la
inversa) de salida de un puerto I/O. En las siguientes ilustraciones se puede observar las
diferentes formas de onda de las señales de un puerto I/O con y sin control de la
pendiente.
Con una carga de 50 pF en un puerto I/O vemos que la pendiente de la señal de
salida del mismo es 10 veces más lenta cuando tiene activado el control de pendiente
(3 nS vs 30 nS).
En esta figura se pueden ver dos señales de salida de distintos puertos I/O. La línea
PTA0 ha sido configurada sin control de pendiente, mientras que la línea PTA1 ha
sido configurada con control de pendiente. Ambas líneas tienen idénticas cargas de 1K
ohms y la señal cambia en forma simultánea en ambas.
Se puede observar que la línea PTA0 presenta un “sobre impulso” o “overshoot”
muy pronunciado y una pendiente muy abrupta, estas dos características son las
responsables principales de la generación de armónicos electromagnéticos (EMI)
cuando el la placa de circuito impreso (PCB) existen pistas largas o deficiente desacople
en las líneas de alimentación. La baja emisión de armónicos hace a nuestro sistema más
estable ante condiciones de ruidos eléctricos, tanto internos como externos.
Drive Strength.
La posibilidad de controlar la corriente de manejo de un puerto I/O, es un factor
muy importante cuando se quiere controlar las emisiones electromagnéticas (EMI)
o bien se requiere mejorar la capacidad de manejo de corriente de un puerto en
determinadas circunstancias.
En las siguientes ilustraciones se puede observar las diferentes formas de onda de las
señales de un puerto I/O con baja y alta corriente.
En la ilustración, se puede ver como cuando se incrementa la corriente máxima de
manejo del puerto I/O, si bien se mejora la tensión correspondiente al cero lógico (“0”)
(VoL), también se observa un excesivo sobre – impulso producto del refuerzo del
manejo de corriente.
Mientras que si se combinan ambas acciones (refuerzo del manejo de corriente y control
de la pendiente de la señal del puerto I/O) se puede observar en la próxima figura que se
conserva la mejora de la tensión máxima del cero lógico VoL, sin que por ello se note
un sobre – impulso que pueda generar EMI en la aplicación.
Por lo que se concluye que el control de pendiente es fundamental para disminuir la
generación de EMI y además contribuye a disminuir el consumo general del sistema.
Cuidados a tener con los pines no conectados de un MCU.
Tanto los dispositivos de la familia HC908 como de la familia HC9S08 están basados
en tecnología CMOS de última generación, que permite altas prestaciones en tamaño de
pastilla (Die) muy pequeños. Sin embargo, la tecnología CMOS tiene como una de sus
características presentar alta impedancia de entrada cuando un puerto I/O es
configurado como entrada (Input). Esta particularidad hace que se deba tener especial
cuidado con los Puertos I/O no utilizados o cualquier otra entrada del MCU que no se
esté utilizando, ya que constituyen verdaderas fuentes de ingreso de ruido eléctrico al
microcontrolador y además se genera actividad en dichas líneas que provocan consumos
y drenajes de corrientes que se ven reflejadas en la corriente IDD del MCU durante el
estado de STOP.
Este mismo efecto también se manifiesta en los MCUs que no tienen implementados los
puertos I/O en forma física hacia el exterior, pero si están implementados en el silicio
(no hay conexión con pin externo alguno).
Para evitar o disminuir estos efectos, se sugieren las siguientes recomendaciones:
•
•
•
•
Todo Puerto I/O de propósitos generales que no sea utilizado o conectado a alguna
parte del sistema (pin sin conexión) debe configurarse como “Input” con el resistor
de Pull – Up activado, o como salida (Output) a “0” o a “1” lógico según necesidad.
De igual forma se debe proceder con los puertos I/O no implementados en forma
física en el MCU.
Tratar que las entradas no conectadas estén lejos de las líneas del MCU con mucha
actividad (SPI, SCI, I2C, ICAP, PWM, etc.).
Las líneas de alta corriente del MCU deben estar tan cerca como sea posible de
VDD o VSS según corresponda.
Continuará.......
Nota de Redacción: El lector puede descargar este capítulo y capítulos anteriores del
curso desde la sección “Artículos” (Curso_HC9S08) en el sitio web de EduDevices
(www.edudevices.com.ar )
Documentos relacionados
Descargar