Vistas de página en total

sábado, 30 de junio de 2018

MICROCONTROLADORES PIC



Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip, Su primer antecesor fue creado en 1975 el PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument. El nombre verdadero de este microcontrolador es PICmicro, Peripheral Interface Controller (controlador de interfaz periférico), conocido bajo el nombre PIC. Este chip denominado PIC1650 fue diseñado para propósitos completamente diferentes. Diez años más tarde, al añadir una memoria EEPROM, este circuito se convirtió en un verdadero microcontrolador PIC.

Los detalles más importantes que atraen a los profesionales de la microelectrónica y microinformática y las razones de la excelente acogida que tienen los PIC son los siguientes:

  • Sencillez de manejo: Tienen un juego de instrucciones reducido; 33 gama baja, 35 en la gama media, 75 gama alta.
  •  Buena información, fácil de conseguir y económica.
  •  Precio: Su coste es comparativamente inferior al de sus competidores.
  •  Poseen una elevada velocidad de funcionamiento. Buen promedio de parámetros: velocidad, consumo, tamaño, alimentación, código compacto, etc.
  •  Herramientas de desarrollo fáciles y baratas. Muchas herramientas software se pueden recoger libremente a través de Internet desde Microchip (http://www.microchip.com).
  • Existe una gran variedad de herramientas hardware que permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC.
  •  Diseño rápido.
  • La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicación.
  •  Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo.
  • Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes. La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el más conveniente para su proyecto.
  •  Herramientas de soporte potentes y económicas. La empresa Microchip y otras que utilizan los PIC ponen a disposición de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, Ensambladores, Compiladores C, Intérpretes y Compiladores BASIC, etc.
  •  La arquitectura Harvard y la técnica de segmentación son los principales recursos en los que se apoya el elevado rendimiento que caracteriza estos dispositivos programables, mejorando dos características esenciales:
1.    Velocidad de ejecución.
2.    Eficiencia en la compactación del código.
  • ·       Líneas de E/S de alta corriente. Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida de hasta 25 mA, capaz de excitar directamente ciertos periféricos como led o microrelés tipo REED.



PIC MICROCONTROLLERS


  The PICs are a family of RISC microcontrollers manufactured by Microchip. Its first predecessor was created in 1975 the PIC1650, originally developed by the General Instrument microelectronics division. The real name of this microcontroller is PICmicro, Peripheral Interface Controller (peripheral interface controller), known under the name PIC. This chip called PIC1650 was designed for completely different purposes. Ten years later, by adding an EEPROM, this circuit became a true PIC microcontroller.


    The most important details that attract professionals in microelectronics and microinformatics and the reasons for the excellent reception of PICs are the following:


  • Simplicity of management: They have a reduced set of instructions; 33 low-end, 35 in the mid-range, 75 high-end.
  •  Good information, easy to get and economical.
  •  Price: Its cost is comparatively lower than its competitors.
  •  They have a high speed of operation. Good average of parameters: speed, consumption, size, power, compact code, etc.
  •  Easy and inexpensive development tools. Many software tools can be freely collected through the Internet from Microchip (http://www.microchip.com).
  • There is a wide variety of hardware tools that allow recording, debugging, deleting and checking the behavior of PICs.
  •  Fast design
  • The wide variety of PIC models allows you to choose the one that best meets the requirements of the application.
  •  One of the reasons for the success of the PICs is based on their use. When you learn to manage one of them, knowing its architecture and its repertoire of instructions, it is very easy to use another model.
  • Diversity of microcontroller models with different features and resources. The wide variety of models of PIC microcontrollers allows the user to select the most suitable for their project.
  •  Powerful and economic support tools. The company Microchip and others that use the PICs make available to users numerous tools to develop hardware and software. Programmers, software simulators, real-time emulators, assemblers, C-compilers, BASIC interpreters and compilers, etc. are very abundant.
  •  The Harvard architecture and the segmentation technique are the main resources on which the high performance that characterizes these programmable devices is based, improving two essential characteristics:
                 1. Speed ​​of execution.
                 2. Efficiency in the compaction of the code.

  • · High current I / O lines. The I / O lines of the PICs can provide or absorb an output current of up to 25 mA, capable of directly exciting certain peripherals such as led or micro relays type REED.

GAMAS DE PIC

Una de las labores más importantes del ingeniero de diseño es la elección del microcontrolador que mejor satisfaga las necesidades del proyecto con el mínimo presupuesto. Para resolver aplicaciones sencillas se precisan pocos recursos, en cambio, las aplicaciones grandes requieren numerosos y potentes. Siguiendo esta filosofía Microchip construye diversos modelos de microcontroladores orientados a cubrir, de forma óptima, las necesidades de cada proyecto. Así, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros complejos y más costosos para las de mucha envergadura.

Microchip dispone de cuatro familias de microcontroladores de 8 bits para adaptarse a las necesidades de la mayoría de los clientes potenciales. En la mayor parte de la bibliografía encontrará tan solo tres familias de microcontroladores, con lo que habrán despreciado la llamada gama enana, que es en realidad una subfamilia formada por componentes pertenecientes a las otras gamas. En nuestro caso hemos preferido comentarla dado que los PIC enanos son muy apreciados en las aplicaciones de control de personal, en sistemas de seguridad y en dispositivos de bajo consumo que gestionan receptores y transmisores de señales. Su pequeño tamaño los hace ideales en muchos proyectos donde esta cualidad es fundamental.

LA GAMA ENANA: PIC12CXXX DE 8 PINES CON INSTRUCCIONES DE 12 /14 BIT

Su principal característica es su reducido tamaño, al disponer todos sus componentes de 8 pines. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones, respectivamente. En la Figura se muestra el diagrama de conexionado de uno de estos PIC.


Figura Diagrama de conexiones de los PIC12CXXX de la gama enana.

Aunque los PIC enanos sólo tienen 8 pines, pueden destinar hasta 6 como líneas de E/S para los periféricos porque disponen de un oscilador interno R-C.

Los modelos 12C5xx pertenecen a la gama baja, siendo el tamaño de las instrucciones de 12 bits; mientras que los 12C6xx son de la gama media y sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos.

GAMA BAJA O BÁSICA: PIC16C5X CON INSTRUCCIONES DE 12 BITS


Figura 2 Diagrama de pines de los PIC de la gama baja que responden a la nomenclatura PIC16C54/56.

Se trata de una serie de PIC de recursos limitados, pero con una de las mejores relaciones coste/prestaciones. Sus versiones están encapsuladas con 18 y 28 pines y pueden alimentarse a partir de una tensión de 2,5 V, lo que les hace ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33 instrucciones cuyo formato consta de 12 bits. No admiten ningún tipo de interrupción y la Pila sólo dispone de dos niveles.

Para terminar el comentario sobre los componentes de la gama baja conviene nombrar dos restricciones importantes:
  • ·         La pila sólo dispone de dos niveles lo que supone no poder encadenar más de dos subrutinas.
  • ·         Los microcontroladores de la gama baja no admiten interrupciones.

GAMA MEDIA. PIC16FXXX CON INSTRUCCIONES DE 14 BITS





Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde 18 pines hasta 68, cubriendo varias opciones que integran abundantes periféricos. Dentro de esta gama se halla el «fabuloso PIC16X84» y sus variantes.

El 16F877 y 16F84A son uno de los modelos más representativos de la gama media. En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las aplicaciones de los microcontroladores de 8 bits. También dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento de subrutinas. En la Tabla 2.3 se presentan las principales características de los modelos de esta familia.

Encuadrado en la gama media también se halla la versión PIC14C000, que soporta el diseño de controladores inteligentes para cargadores de baterías, pilas pequeñas, fuentes de alimentación ininterrumpibles y cualquier sistema de adquisición y procesamiento de señales que requiera gestión de la energía de alimentación. Los PIC 14C000 admiten cualquier tecnología de las baterías como Li-Ion, NiMH, ect, Ph y Zinc. El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede trabajar asíncronamente y que puede incrementarse, aunque el microcontrolador se halle en el modo de reposo (“sleep”), posibilitando la implementación de un reloj en tiempo real. Las líneas de E/S presentan una carga “pull-up” activada por software.

GAMA ALTA: PIC17CXXX, PIC18FXXXX CON

INSTRUCCIONES DE 16 BITS



Se alcanzan hasta las 75 instrucciones de 16 bits (wide instructions o ancho de instrucción) en el repertorio y sus modelos (algunos de la serie 17CXXXX) disponen de un sistema de gestión de interrupciones vectorizadas (cada interrupción tiene una dirección única) y priorizadas (low or high priority) muy potente. También incluyen variados controladores de periféricos, puerto USB 2.0 de alta y baja velocidad, puertas de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza más de 32 KByte en la memoria de instrucciones y hasta 2048 bytes en la memoria de datos.

Quizás la característica más destacable de los componentes de esta gama (17CXXX) es su arquitectura abierta, que consiste en la posibilidad de ampliación del microcontrolador con elementos externos. Para este fin, los pines pueden ofrecer al exterior las líneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de periféricos. Esta facultad obliga a estos componentes a tener un elevado número de pines comprendido entre 40 y 44. Esta filosofía de construcción del sistema es la que se empleaba en los microprocesadores y no suele ser una práctica habitual cuando se emplean microcontroladores.

COMPARACION ENTRE GAMA ALTA (18FXXXX) Y LAS OTRAS GAMAS DE MICROCHIP (16XXXX, 14XXXX, 12XXXX)


Un PIC 18F452 dispone hasta de 32K bytes = 16KWord de memoria de programa y considerando que cada instrucción o renglón de programa consume 2 bytes (16 bit) entonces el número real de líneas que se puede programar en un PIC 18FXXXX es 16384 (la familia 16F87X sólo tiene 8164). 

La memoria RAM es de máximo 2048 bytes (la familia 16F87X sólo tiene 368), es decir, puedo declarar un total de 2048 variables de 8 bit ó 1024 variables de 16 bit las cuales se encuentran distribuidas en bancos de 256 variables cada uno. La memoria EEPROM de dato es de 256 bytes. Por otra parte cabe destacar que posee 31 niveles de pila (level stack) versus 8 niveles de pila de la familia gama media 16F87X. Recordemos que los niveles de pila aluden al número de subrutinas o llamados (CALL) anidados que se pueden realizar en la programación sin regresar (RETURN). Otra ventaja trascendental de la familia gama alta 18FXXXX sobre la gama media 16FXXX alude a la memoria de programa lineal direccionable hasta 32K de la familia 18FXXXX, lo cual elimina el gran inconveniente relacionado con la engorrosa paginación que se debe hacer con la familia gama media después de las 2048 primeras líneas de programa debido a que las instrucciones GOTO, CALL, RETURN no funcionan si la etiqueta o subrutina invocada no está en la misma página de memoria. 

La familia 18FXXXX tiene la opción de activar “Prioridad de Interrupciones” alta o baja (High priority or Low Priority), lo cual es útil en ciertas aplicaciones. Los μC 18FXXXX con la opción PLL (Phase Locked Loop) activa puede multiplicar la frecuencia del cristal por 4, en efecto, con un cristal de 10MHz y el PLL activo puede operar a 40MHz, lo cual implica 10MIPs (millones de instrucciones por segundo) versus los 20MHz máximo (5MIPs) de la gama media. La gama alta también puede multiplicar un byte por un byte con una instrucción simple (MULWF) y soporta compilación en lenguaje C.

VENTAJAS DE GAMA ALTA Vs GAMA MEDIA

·         Un PIC 18FXXXX dispone de hasta 32K bytes = 16KWord de memoria de programa y considerando que cada instrucción o renglón de programa consume 2 bytes (16 bit) entonces el número máximo y real de líneas que puedo programar en un PIC 18FXXXX es 16384 instrucciones (la familia 16F87X sólo soporta 8164 instrucciones de 14 bits).

·         La memoria RAM máxima es de 2048 bytes para la familia 18FXXXX y 1536 para la familia 18FXX2 (la familia 16F87X sólo tiene 368), es decir, puedo declarar un total de 2048 variables de 8 bit ó 1024 variables de 16 bit (tipo word) las cuales se encuentran distribuidas en bancos de 256 variables cada uno.

·         La memoria EEPROM de dato es de 256 bytes, igual a la gama media 16F87X.

·         31 niveles de pila (level stack) versus 8 niveles de pila de la familia gama media 16F87X y 2 niveles de la gama baja. Los niveles de pila aluden al número de subrutinas o llamados (CALL) anidados que se pueden realizar en la programación sin regresar (RETURN).

·         La memoria de programa lineal direccionable hasta 32K: la familia 18FXXXX elimina el gran inconveniente relacionado con la paginación que se debe hacer con la familia gama media después de las 2048 primeras líneas de programa debido a que las instrucciones GOTO, CALL, RETURN no funcionan si la etiqueta o subrutina invocada no está en la misma página de memoria.

·         La familia 18F tiene la opción de activar “Prioridad de Interrupciones” (léase praióriri interrupshions) alta o baja (High priority or Low Priority), lo cual es útil en ciertas aplicaciones.

·         Los μC 18F con la opción PLL (Phase Locked Loop) activa puede multiplicar la frecuencia del cristal por 4, en efecto, con un cristal de 12MHz y el PLL activo puede operar a 48MHz, lo cual implica 12MIPs (millones de instrucciones por segundo) versus los 20MHz máximo (5MIPs) de la gama media. La máxima frecuencia de operación es de 48MHz para la familia 18FXXXX y 40 MHz para la familia 18FXX2.

·         La gama alta puede multiplicar un byte por un byte con una instrucción simple (MULWF)

·         La gama alta soporta compilación en lenguaje C de Microchip

·         Pese a las obvias ventajas de la gama alta 18F sobre la gama media la diferencia de precios no es muy significativa, alrededor de un 20 %.

·         La familia 18F amplió el set de instrucciones a 75, vs 35 de la gama media.

·         La familia 18F mediante el registro BSR brinda la opción de prescindir del confuso concepto (para algunos programadores) de bancos de memoria para configurar o manipular los registros de propósito general (GPR) o registros de función especial (FSR), tiene memoria de dato lineal direccionable hasta 1536 byte.

·         La familia PIC18F2455/2550/4455/4550 posee Módulo USB 2.0 low speed (1.5Mbps) y full speed (12Mbps) interno para comunicación con PC a alta velocidad.

·         La familia PIC18F2455/2550/4455/4550 posee oscilador interno programable de 31KHz a 8MHz.

·         La familia PIC18F2455/2550/4455/4550 posee WDT con período extendido y programable de 41mS a 131 seg.

·         La familia 18FXXXX tiene en su interior un módulo conversor A/D de hasta 13 canales, la familia 18FXX2 sólo tiene 8 canales, igual que la familia 16F87X.



domingo, 17 de junio de 2018

RECURSOS ESPECIALES DE LOS MICROCONTROLADORES


Figura recursos especiales de microcontroladores (Imagen tomada de http://oswagar.galeon.com)

Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el coste, el hardware y el software.

SPECIAL RESOURCES OF MICROCONTROLLERS

Each manufacturer offers numerous versions of a basic microcontroller architecture. In some it extends the capacities of the memories, in others it incorporates new resources, in others it reduces the benefits to the minimum for very simple applications, etc. The designer's job is to find the minimum model that meets all the requirements of his application. In this way, you will minimize the cost, hardware and software.



LOS PRINCIPALES RECURSOS ESPECÍFICOS QUE INCORPORAN LOS MICROCONTROLADORES SON

TEMPORIZADORES O TIMERS: Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores). Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de los pines del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos.

PERRO GUARDIÁN “WATCHDOG TIMER” WDT: Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin el control de un supervisor y de forma continua las 24 horas del día. El Perro guardián consiste en un temporizador (2 ms hasta 131 seg dependiendo del PIC) que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema. Se debe diseñar el programa que controla la tarea de forma que refresque o inicialice al Perro guardián antes de que provoque el reset. Si falla el programa o se bloquea, no se refrescará al Perro guardián y, al completar su temporización, provocará el reset.

ESTADO DE REPOSO O BAJO CONSUMO SLEEP, STAND BY O POWER SAVING: Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada a que se produzca algún acontecimiento externo que le active de nuevo en funcionamiento (interrupción). Para ahorrar energía, (factor clave en los aparatos portátiles), los microcontroladores disponen de una instrucción especial (SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj u oscilador principal y se “congelan” sus circuitos asociados, quedando sumido en un profundo “sueño” el microcontrolador. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. En este estado el uC consume menos de 200nA y sólo despertará (wake up) mediante una interrupción externa. El modo sleep es muy necesario en aplicaciones que se alimentarán a partir de baterías.

PROTECCIÓN ANTE FALLO DE ALIMENTACIÓN O “BROWN OUT RESET” BOR Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a un voltaje mínimo (“brown out”). Mientras el voltaje de alimentación sea inferior al de brown out el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. Útil Para aplicaciones que funcionarán con baterías, cuando la batería esté baja de carga el PIC no funcionará por protección.

RESET DE ENCENDIDO (“POWER ON RESET”) POR: Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la alimentación.

TEMPORIZACION DE ENCENDIDO (“POWER UP TIMER”) PWRT: Es una opción para que el μC espere un tiempo (aproximadamente 75mS) antes de empezar a ejecutar instrucciones después de alimentar el PIC. Es útil para evitar funcionamientos erráticos del μC por ruido o rebotes al conectar la alimentación.

CÓDIGO DE PROTECCIÓN (CODE PROTECT) CP: Cuando se procede a realizar la grabación del programa mediante el hardware cargador (loadder code), el PIC puede protegerse para evitar su lectura. También disponen los PIC de posiciones reservadas para registrar números de serie, códigos de identificación, prueba, etc.

INTERRUPCION MEDIANTE PINES EXTERNOS: Los pines de interrupción externa constituye uno de los aspectos más importantes en un microcontrolador pues ofrece la posibilidad de interactuar de una manera óptima con periféricos externos de entrada tales como: teclados de computadora, receptores IR, RF, USB, teclados, pulsadores, etc. Los pines de interrupción externa más comunes son RB0, RB1, RB2, RB4, RB5, RB6, RB7 para gama alta.

PRIORIDAD DE INTERRUPCIONES: PRIORITY INTERRUPTIONS (LÉASE PRAIÓRIRI INTERROPSHIONS): La gama alta permite programar prioridad LOW OR HIGH a cada interrupción dependiendo de la importancia y urgencia en el circuito y/o aplicación.

INTERRUPCIONES VECTORIZADAS: Algunos μC poseen una dirección única (vector de interrupción independiente) para cada evento de interrupción, esto optimiza el tiempo en detección y facilita el manejo de cada interrupción. Los μC microchip no disponen de esta opción, sin embargo, algunos μC motorola si permiten dicha función.

PULL UP / PULL DOWN INTERNO Los μC PIC tiene Pull UP interno en el puerto B (B0 a B7), no disponen de pull down. La resistencia interna de Pull UP es alrededor de 3KΩ.  El puerto B del PIC es el único que tiene la opción de Pull UP interno, es decir, por software se puede garantizar que el PIC interpretará como 1 lógico todos los pines del puerto B configurados como entrada y que estén al aire (input float). Esto es práctico cuando se debe conectar pulsadores o teclados matriciales a un μC y no se desea comprar resistores externos de PULL UP. Los microcontroladores son fabricados con tecnología CMOS (Complementary Metal Oxide Semiconductor) lo cual implica que tienen alta impedancia de entrada (sus entradas requieren muy baja corriente, en el orden de μA), si una entrada se deja al aire (input float) el μC lo interpretará como ruido (debido al ruido electromagnético EMI presente en el ambiente o efecto antena y se puede inducir una tensión fantasma en los pines de entrada que estén flotando). 

Pull UP EXTERNO: es una resistencia externa que se conecta de una entrada del microcontrolador hacia +VCC. Un PULL DOWN es lo mismo pero conectada hacia tierra. La función de estas resistencias (del orden 1KΩ a 100KΩ) es garantizarle un estado a los pines al aire o input float (léase input flout) del PIC configurados como entrada.

CAPACIDAD DE CORRIENTE: MODO SINK (IOL), MODO SOURCE (IOH): Para la gama media y alta de microchip, la corriente máxima de salida en modo sink (sumidero) o “cero lógico” es de 25 mA y la corriente máxima de salida en modo source (fuente) o “uno lógico” es de 25 mA. Este aspecto es de singular importancia pues indica la potencia que puede transmitir el PIC a los periféricos de salida tales como Relés, Led, Motores, etc.

EL ABANICO DE ENTRADA Y SALIDA (Fan In / Fan Out) de un Circuito integrado está relacionado con las impedancias de entrada y salida del mismo. Las corrientes en un PIC alimentado a 5V son:

IOL = 25mA (modo sink o sumidero léase sink) corriente de salida en 0 lógico
IOH = 25mA (modo source o fuente leáse soors) corriente de salida en 1 lógico
IIL = 1μA (Corriente de entrada en cero lógico)
IIH = 1μA (Corriente de entrada en uno lógico)

Considerando que un led (diodo emisor de luz) requiere para encender una tensión de 2V mínimo y una corriente entre 5 a 50 mA, se puede afirmar que un PIC puede encender directamente hasta 5 led por un solo terminal. Obviamente si la carga requiere más corriente (un relé convencional exige 30mA aproximadamente) se debe conectar un buffer (impulsador de corriente) o un transistor en emisor o colector común.

Por ser un dispositivo construido con tecnología CMOS (Complementary Metal Oxide semiconductor) los PIC presentan una alta impedancia de entrada, esto implica que la corriente de entrada por cada pin está en el orden de los microamperios, es decir, se puede aplicar a un μC la salida directa de cualquier sensor sin necesidad de una etapa previa de acondicionamiento de corriente (amplificador seguidor de voltaje o buffer amplificador de corriente).

CONVERSOR A/D (CAD): Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde los pines del circuito integrado. La familia 16F87X y 18FXX2 disponen de un conversor A/D de 8 canales a 10 bit de resolución y la familia 18FXXXX disponen de un conversor A/D de 13 canales a 10 bit de resolución.

CONVERSOR D/A (DAC): Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente señal analógica que saca al exterior por una de los pines de la cápsula. No todos los μC traen esta opción en su interior. Los PIC’s gama enana, baja, media y alta no disponen de esta opción.

COMPARADOR ANALÓGICO: Algunos modelos de microcontroladores (16F62X) disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de los pines de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.

PUERTAS DE ENTRADA/SALIDA E/S DIGITALES: Todos los microcontroladores destinan algunas de sus pines a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertas. Las líneas digitales de las Puertas pueden configurarse como Entrada o como Salida cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración.

PUERTAS DE COMUNICACIÓN USART, I2C, PARALELO, SPI, USB: Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan:

·         UART (UNIVERSAL ASYNCRONOUS RECEPTION TRANSMISION).

·         USART (UNIVERSAL SYNCRONOUS ASYNCRONOUS RECEPTION TRANSMISION).

·         PARALLEL PORT: Puerto paralelo esclavo para poder conectarse con los buses de otros microprocesadores.

·         USB (Universal Serial Bus), que es un moderno bus serie para los PC de ala velocidad.
·         Bus I2C (INTERFAZ DE CIRCUITOS INTEGRADOS), que es un interfaz serie de dos hilos desarrollado por Philips.

·         CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O.

·         SPI: Interfaz de Periféricos Serial

·         MSSP: Master Synchronous Serial Port

PROGRAMMIN (ICSP) VIA TWO PINS: Reprogramación in Circuit, es decir, no es necesario retirar el PIC del circuito, pues los datos se cargan a la memoria de programa mediante el puerto serial UART RS232 Tx y Rx.

DEPURACIÓN DEL PROGRAMA IN CIRCUIT: IN-CIRCUIT DEBUG (ICD) VIA TWO PINS: La gama alta permite realizar (mediante un hardware específico) una depuración (debugger= delete bug = eliminar cucarachas o bichos) de un código fuente. Esta depuración se realiza con la PC conectada en tiempo real, el programa se irá ejecutando línea por línea en el editor (MPLAB SIMULATOR) y en el circuito hardware mediante el puerto serial RS232 del PIC y del PC.

HARDWARE MULTIPLICADOR CON UNA INSTRUCCION: 8 X 8 SINGLE-CYCLE HARDWARE MULTIPLIER: La gama alta incluye una instrucción (MULLW) para multiplicar 1 byte x 1 byte y ofrece la respuesta en 2 bytes.

MODULOS CAPTURA COMPARACION PWM CCP: Captura una trama de datos serial y luego la compara con registros internos, útil en aplicaciones de sensores ultrasónicos. El módulo PWM (PULSE WIDE MODULATION) son circuitos que proporcionan en su salida pulsos de ciclo útil (tiempo en ‘1’ lógico) variable y periodo constante, que se ofrecen al exterior a través de los pines del encapsulado. Suelen emplearse para el control de velocidad de motores de DC y Servomotores.

LEVEL STACK (NIVELES DE PILA): La pila (Stack) es una zona de memoria RAM independiente de la memoria de datos y de la memoria de programa del μC. Su estructura es del tipo LIFO (Last In First Out) por lo que el último dato que se guarda es el primero que sale. La pila se carga con cada instrucción CALL o con la generación de una interrupción, se descarga con cada instrucción RETURN o RETFIE. Cuando el diseñador realiza más de 31 llamados de subrutina (CALL léase coll) sin regresar (sin uso del RETURN léase ruitorn) el puntero de pila (STACK POINTER) se desborda y se presenta el fenómeno denominado OVERFLOW STACK (desbordamiento de pila léase overflou ssteak), lo cual es un error de programación pues el puntero de programa (Pointer Program) salta a un lugar inesperado. Lo deseable en un μC es que disponga de una gran memoria de pila independiente de la memoria de datos.

MEMORIA EEPROM DE DATO: Es una memoria relativamente pequeña (64 a 256 bytes) en la cual se pueden guardar los datos del programador y no se pierden incluso al desconectar la alimentación del circuito.

LOW VOLTAGE DETECT (LVD): Detecta si un voltaje aplicado al uC es menor de un nivel programado. Es útil para detectar si la batería de alimentación está agotada.

SELECCIÓN DE OSCILADOR: Dependiendo de la frecuencia natural del cristal, se debe seleccionar el modo de oscilación y los condensadores de estabilización. En gama alta 18FXX2 si se desea una frecuencia superior a 25MHz, se debe activar el modo PLL (phase locked loop) multiplicador de frecuencia del cristal por 4. Por ejemplo, para trabajar a 40MHz (frecuencia máxima de la familia 18FXX2) lo correcto es conectar un cristal de 10MHz con condensadores de 27pF y activar el circuito PLL del μC. La frecuencia máxima de la familia 16F87X es 20MHz y la frecuencia máxima de la familia 18FXXXX es 48MHz. La familia 18FXXXX tiene la opción de trabajar con un oscilador interno configurable desde 31KHz hasta 8MHz.

      El oscilador de la familia 18FXXXX se puede configurar de las siguientes maneras:

1.    XT: CRYSTAL/RESONATOR
2.    XTPLL: CRYSTAL/RESONATOR WITH PLL ENABLED
3.    HS: HIGH-SPEED CRYSTAL/RESONATOR
4.    HSPLL HIGH-SPEED CRYSTAL/RESONATOR WITH PLL ENABLED
5.    EC EXTERNAL CLOCK WITH FOSC/4 OUTPUT
6.    ECIO EXTERNAL CLOCK WITH I/O ON RA6
7.    ECPLL EXTERNAL CLOCK WITH PLL ENABLED AND FOSC/4 OUTPUT ON RA6
8.    ECPIO EXTERNAL CLOCK WITH PLL ENABLED, I/O ON RA6
9.    INTHS INTERNAL OSC USED AS MICROCONTROLLER CK SOURCE, HS OSC USED AS USB CK SOURCE
10. INTXT INTERNAL OSC USED AS MICROCONTROLLER CLOCK SOURCE, XT OSC USED AS USB CK SOURCE
11. INTIO INTERNAL OSC USED AS MICRO CK SOURCE, EC OSC USED AS USB CK SOURCE, DIGITAL I/O ON RA6
12. INTCKO INT OSC USED AS MICRO CK SOURCE, EC OSC USED AS USB CK SOURCE, FOSC/4 OUTPUT ON RA6



lunes, 11 de junio de 2018

RECURSOS COMUNES A TODOS LOS MICROCONTROLADORES


Figura Recursos microcontroladores (imagen tomada de aprendiendoarduino.wordpress.com)

Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y sus características básicas son muy parecidas. Todos deben disponer de los bloques esenciales Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador de reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta enfatizar los recursos más idóneos para las aplicaciones a las que se destinan preferentemente. En este apartado se hace un recorrido de todos los recursos que se hallan en todos los microcontroladores describiendo las diversas alternativas y opciones que pueden encontrarse según el modelo seleccionado.

ARQUITECTURA BÁSICA, Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de von Neumann, en el momento presente se impone la arquitectura Harvard. La arquitectura de von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control). La arquitectura Harvard dispone de dos memorias independientes una, que contiene sólo instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias.

RESOURCES COMMON TO ALL MICROCONTROLLERS

Since all the microcontrollers are integrated in a chip, their fundamental structure and basic characteristics are very similar. All must have the essential blocks Processor, data and instruction memory, I / O lines, clock oscillator and peripheral controller modules. However, each manufacturer tries to emphasize the most suitable resources for the applications to which they are destined preferably. In this section a tour of all the resources found in all the microcontrollers is made, describing the different alternatives and options that can be found according to the selected model.

BASIC ARCHITECTURE, Although initially all microcontrollers adopted the classic architecture of von Neumann, at the present time the Harvard architecture is imposed. The architecture of von Neumann is characterized by having a single main memory where data and instructions are stored interchangeably. This memory is accessed through a unique bus system (addresses, data and control). The Harvard architecture has two independent memories, one that contains only instructions and another, only data. Both have their respective access bus systems and it is possible to perform access operations (read or write) simultaneously in both memories.


La arquitectura Harvard dispone de dos memorias independientes para datos y para instrucciones, permitiendo accesos simultáneos

 EL PROCESADOR O CPU Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como software. Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado.

MEMORIA En los microcontroladores la memoria de instrucciones o programa y la memoria de datos RAM está integrada en el propio chip. Una parte debe ser no volátil, tipo PROM ó EEPROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos. Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales:

1.    No existen sistemas de almacenamiento masivo como disco duro o disquetes.
2.    Como el microcontrolador sólo se destina a una tarea en la memoria de programa, sólo hay que almacenar un único programa de trabajo (no es multitarea como windows, linux u otro sistema operativo).

RAM ESTATICA La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia del mismo en la RAM pues se ejecuta directamente desde la EEPROM de programa. Los usuarios de computadores personales están habituados a manejar Megabytes Y GigaBytes de memoria, pero, los diseñadores con microcontroladores trabajan con capacidades de memoria de programa EEPROM comprendidas entre 512 bytes y 32 k bytes y de RAM comprendidas entre 20 y 1536 bytes aproximadamente.

 TIPOS DE MEMORIA DE PROGRAMA EN LOS MICROCONTROLADORES Según el tipo de memoria de programa que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de memoria de programa no volátil que se pueden encontrar en los microcontroladores del mercado.

ROM CON MÁSCARA: Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. El elevado coste del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades.

OTP: El microcontrolador contiene una memoria no volátil de sólo lectura “programable una sola vez” por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger el código contenido.

UV-EPROM: Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material plástico.

EEPROM: Se trata de memorias de sólo lectura, programables y borrables eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un PC. Es muy cómoda y rápida la operación de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan “grabadores en circuito” que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramación continua. Son muy idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta. Por ejemplo, el PIC 16C84.

EEPROM FLASH: son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados “In Circuit”, es decir, sin tener que retirar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria incorporado al control del motor de un automóvil permite que pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc. La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto. Entre los Microcontroladores de este tipo se puede mencionar el 16F84, 16F628, 18F452.

Aparte de que las memorias EPROM "Flash" tienen una entrada de escritura, mientras están funcionando se comportan como las EPROM normales. La única diferencia se encuentra en cómo se cargan y se borran los datos en la memoria. Mientras que durante el proceso de programación de las memorias EPROM convencionales se necesita una tensión bien definida durante cierto intervalo de tiempo, y para borrar el componente hay que exponerlo a luz ultravioleta, en las E.Flash ambos procesos están controlados y se llevan a cabo internamente. Para tal efecto la memoria recibe una secuencia de comandos predefinida (borrar, programar) que incluye algunas precauciones especiales (determinadas por el fabricante) destinadas a evitar que se borre cualquier dato por error.

El comando se transfiere a la memoria EPROM "Flash" mediante una serie de operaciones de escritura, como se indica en la tabla 1. Los dos primeros comandos "Lectura/Reset" preparan la memoria para operaciones de lectura. El comando "Autoselección" permite leer el código del fabricante y el tipo de dispositivo. El comando "Byte" carga el programa dentro de la memoria EPROM, mientras que "Borrar Chip" actúa durante el proceso de borrado, que no dura más de un minuto. Desde el punto de vista lógico podemos afirmar que la memoria EPROM "Flash" está dividida en sectores que se pueden borrar individualmente con la ayuda del comando "Borrar Sector".

Las memorias EPROM "Flash" disponen de otro mecanismo, basado en la división en sectores, que las protege de acciones de escritura o lectura no deseadas. Cuando un sector está protegido de esta forma no se puede realizar una operación de lectura o sobre escritura con una tensión de 5V. Este hecho es muy importante y se debe tener siempre presente cuando se utilicen estos dispositivos. Solamente se puede eliminar esta protección con la ayuda de un programador especial.

Durante el proceso de programación o borrado se puede leer, mediante un comando de acceso en "lectura", el estado de la memoria EPROM "Flash" en la misma posición que el byte de programado o borrado. Mientras se borra un sector se puede leer cualquier dirección que pertenezca al sector.

Durante la secuencia de programación, el bit de orden superior (DQ7) del byte que se está leyendo toma el valor negado del bit que se esté programando, mientras que DQ5 se mantiene a 0. Cuando el ciclo de programación termina correctamente se deshace esta inversión y los bits 5 y 7 toman los valores planeados.

Como durante una secuencia de borrado parece que todas las posiciones de la memoria están programadas con el valor FFH, el bit 7 permanece invariablemente a cero durante este proceso. Cuando alguno de los dos procesos excede cierto límite de tiempo, que está determinado internamente, se produce un "error de temporización", entonces el bit 5 toma el valor 1 mientras que el bit 7 se mantiene invertido. La función que implementa el bit 6 está condicionada por el requisito de compatibilidad. El bit 3 se utiliza cuando se borran simultáneamente varios sectores. Sin embargo, el emulador descrito no tiene estas características.

PUERTOS DE ENTRADA / SALIDA (Input / Output) La principal utilidad de los pines que posee la cápsula que contiene un microcontrolador es soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control. Se conocen como puerto A, B, C, D, E.

RELOJ PRINCIPAL Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones, pero también implica un incremento del consumo de energía. Algunos μC (18F2550, por ejemplo) disponen de oscilador interno programable desde 31KHz hasta 8 MHz, es decir, no se requiere comprar cristal, la desventaja es que no suelen ser tan preciso como un cristal externo.