martes, 30 de diciembre de 2008

Aspectos Generales sobre Microcontroladores

Antes de entrar en materia es necesario ver algo de teoría para tener un contexto del cual partir. En esta ocasión se verá un poco sobre los aspectos generales de los microcontroladores, qué es un microcontrolador, cuáles son las diferencias entre microcontroladores y microprocesadores y cuál es la arquitectura de los microcontroladores.

¿Qué es un Microcontrolador?

Un microcontrolador es un circuito integrado programable que incluye todos los elementos de una computadora funcional. Contiene un procesador (CPU), memoria de datos y de programa (RAM y ROM), periféricos y líneas de entrada/salida (E/S). Se usa para controlar el funcionamiento de una tarea determinada, una vez programado solamente realizará la aplicación programada.

Los microcontroladores tienen una alta integración, al contrario de los microprocesadores que solamente contienen una CPU. Además de los elementos de aritmética y lógica usuales de los microprocesadores de propósito general, los microcontroladores integran también elementos adicionales como memoria RAM para almacenar datos, memoria ROM para almacenar el programa, memoria FLASH para guardar datos de manera permanente, periféricos e interfaces de E/S. En comparación con microprocesadores, los microcontroladores trabajan a velocidades muy bajas, tan bajas como 32KHz. Consumen relativamente poca corriente, del orden de los micro o miliwatts (en modo sleep pueden ser incluso nanowatts), lo que los hace ideales para aplicaciones de bajo consumo.

Hoy en día los microcontroladores son usados en un amplio rango de aplicaciones. Podemos encontrar microcontroladores dentro de un automóvil que se encargan del control del motor, del sistema de frenos o del clima, también en aparatos electrodomésticos como lavadoras, refrigeradores u hornos, en televisores, aparatos musicales. Su uso se extiende además a instrumentos y herramientas industriales, instrumentos electrónicos de medición como osciloscopios y multímetros, computadoras (además del microprocesador gran parte del control de los periféricos de una computadora lo realizan uno o más microcontroladores), teléfonos celulares, juguetes de radiocontrol, entre muchas otras aplicaciones.

Diferencia entre microprocesador y microcontrolador

La diferencia básica entre un microprocesador y un microcontrolador es que el microcontrolador incluye en el mismo circuito integrado todos los elementos necesarios para controlar una aplicación, del mismo modo el tipo de aplicación al que esta destinado el microcontrolador dependerá de las limitaciones de memoria, periféricos y líneas de E/S con las que cuente. Un microprocesador en cambio solamente cuenta con la CPU a la que se conectan la memoria, los periféricos y módulos de E/S que se requieran para la aplicación a la que se vaya a destinar. Un microprocesador, al poder modificar su configuración, no tiene restricción en el tipo de aplicaciones que puede realizar.

Un microprocesador es un sistema abierto ya que con el que puede construirse un sistema con las caracteríticas que se deseen, añadiendole los módulos que sean necesarios. Un microcontrolador en cambio es un sistema cerrado ya que sus prestaciones son limitadas y no se pueden modificar.

Arquitectura de microcontroladores

Las computadoras constan principalmente de dos partes, la Unidad Central de Proceso (CPU) que procesa los datos y la memoria que los guarda. Al hablar de memoria nos referimos a dos parámetros distintos: la memoria de datos y la memoria de programa. La arquitectura Von Neumann es la arquitectura tradicional de computadoras y microprocesadores. En ella el procesador está conectado a una memoria única donde se guardan los datos y las instrucciones del programa.

En esta arquitectura el tamaño de la unidad de datos o instrucciones depende del bus que comunica la memoria con el procesador, de este modo un microprocesador de 8 bits con un bus de 8 bits manejará datos e instrucciones de una o más unidades de 8 bits. Esta arquitectura presenta dos inconvenientes, la limitación de la longitud de las instrucciones por el bus de datos que hace que se tengan que realizar varios accesos a memoria para buscar instrucciones complejas y la limitación de la velocidad de operación a causa del bus único para datos e instrucciones que no permite el acceso simultáneo a unos y otras.

En la arquitectura Harvard instrucciones y datos se almacenan en memorias separadas que se conectan mediante buses independientes al procesador ofreciendo así una solución a la limitación de velocidad que se tiene en la arquitectura Von Neumann ya que permite un acceso simultáneo a las memorias de datos y de programa. Además esta dualidad permite la adecuación del tamaño de palabra y de los buses a los requeridos por las instrucciones y los datos.

--
La próxima semana hablaremos un poco sobre la arquitectura del PIC16F628. Hasta el próximo año!

viernes, 26 de diciembre de 2008

ORG 0x00 goto INICIO

Hoy en día podemos encontrar microcontroladores prácticamente en cualquier aparato que utilicemos: televisores, reproductores de video, cámaras digitales, teléfonos celulares, impresoras, juguetes, entre muchos otros. Incluso los automóviles utilizan uno o varios microcontroladores para controlar el motor o el sistema de frenos. Básicmente se puede decir que cualquier aparato o dispositivo que interactue con el usuario (digamos mediante una pantalla y algún teclado) tiene un microcontrolador dentro.

Los microcontroladores se pueden programar y utilizar en casi cualquier aplicación que se desee, dependiendo de las limitaciones de memoria, periféricos o pines E/S que tenga, pero microcontroladores hay muchos y fabricantes tambien, asi que ahí donde uno quede corto sin duda habrá algún otro que pueda realizar la tarea.

Este blog trata sobre programación de microcontroladores PIC, microcontroladores muy versátiles ampliamente utilizados por profesionales y hobbystas en toda clase de aplicaciones por su facilidad de uso y por la cantidad de información que se puede encontrar en internet sobre ellos (ademas de su precio económico). Esto será algo así como un curso de programación utilizando primero micros de la gama media (familia 16F), en concreto el PIC 16F628A, programando en lenguaje ensamblador (MPASM) para después pasar a la gama alta y tal vez algun día desarrollar alguna aplicacion USB usando un 18F2550.

Tengo experiencia usando estos microcontroladores asi que sabré de que hablaré en cada tema pero eso no me convierte en un iluminado (puedo equivocarme pero trataré de no hacerlo). Los temas que trataré aqui seran temas que domine aunque alguna vez me aventurare en terrenos oscuros y poco conocidos por mi de manera que esto nos servira para aprender un poco a todos.

Espero que este blog se convierta en un punto de referencia para todos aquellos que quieran aprender a programar microcontroladores PIC, aqui iremos paso a paso y con publicaciones regulares (todos los lunes!) así que si quieres aprender no debes dejar de visitar este blog!