Microcontroladores

pic16f87Empezamos en el blog con el apasionante (y nuevo para mí) mundo de los microcontroladores.

Al principio sobre todo hablaremos de microcontroladores PIC.

A ver si aprendemos poco a poco

0
Su voto: Niguno

Armado de un programador : Parte 1

Luego de ver en la anterior entrega como es el proceso de grabación de un microcontrolador, nos dimos cuenta de que para realizar dicho proceso necesitamos de una herramienta hardware: "el programador o grabador". El programador nos permite cargarle al dispositivo, ya sea de la familia AVR o PIC, el programa que nosotros desarrollemos en un lenguaje de programación determinado.

¿Qué programador escoger?  

Dentro del mercado existen muchas opciones a la hora de elegir una herramienta  para programar microcontroladores. Tanto Microchip como ATMEL ofrecen sus propias herramientas:

  •  Microchip: PicKit2, ICD2 
  •  ATMEL: ISP - MK2, AVR dragon. 

El problema radica en que las mismas pueden valer desde los U$S 50 hasta los U$S 200, demasiado dinero si solo queremos usarlo para fines educativos.

En la web pueden encontrar  de forma gratuita multitud de dispositivos de programación con un costo de fabricación mínimo. Entre ellos podemos destacar los siguientes por su funcionalidad:

  •  Para microcontroladores PIC: Pickit2 clone, JMD (véase TE - 20 SE). 
  •  Para microcontroladores AVR: USBasp , STK200. 

En el desarrollo de este curso usaremos 2 familias de dispositivos diferentes, por lo que armar 2 programadores aumentaría el costo de desarrollo. Para evitar esto busqué en la web una forma de plasmar en una sola herramienta la capacidad de programar ambos tipos de microcontroladores ; la solución está en usar el programador pickit2 clone. El mismo nos permite programar casi toda la familia de microcontroladores PIC y en conjunto con la aplicación que pueden encontrar en esta página de internet: http://pickit2.isgreat.org/ , también vamos a poder usarlo para grabar dispositivos AVR.

El costo total para el armado del pickit2 clone es de aproximadamente U$S 25. Un precio razonable para una herramienta que nos permite grabar PIC y AVR.

Algunas características que posee este dispositivo son las siguientes:

  •   Conexión mediante el puerto USB.   
  •  Capacidad para alimentar la tarjeta de aplicación en donde se encuentra el dispositivo a programar suministrando una corriente máxima de 500mA. 
  •  Funcionamiento bajo Windows y Linux ( En Linux solo se puede programar PIC's, ya que la aplicación para poder programar AVR's solo funciona en Windows ).  
  •  Mínima cantidad de componentes requeridos para su funcionamiento. 
  • Componentes de fácil adquisición en cualquier comercio de electrónica.
  • Gran soporte en la red, tanto en páginas web como en foros dedicados.
  • Gran velocidad de grabación.
  • Se puede integrar con MPLAB para grabar PIC's y es totalmente compatible con el protocolo stk500 para grabar AVR's, usando la aplicación PK2AVRISP.
  • No se necesitan driver's para la PC, es totalmente plug and play.
  • Recomiendo ampliamente que los componentes que se necesitan para el programador se compren en tiendas online debido a que se consiguen los mejores precios. 

Empezando a diseñar el hardware:

El hardware del programador podemos diseñarlo de 2 formas básicamente:

  • De forma manual: Engorroso, lleva mucho tiempo.
  • Con la ayuda del ordenador: Rápido desarrollo, posibilidad de correjir errores de forma automática, prolijidad en el diseño final.

Yo voy a optar por diseñarlo mediante el ordenador usando un programa de diseño asistido específico para electrónica.

Voy a utilizar el Eagle PCB, este software es uno de los más utilizados en el ambiente semiprofesional debido a su fácil uso y la gran cantidad de librerías de componentes que posee.

No es objeto de este curso el mostrarles como usar el Eagle pero veré de subir un tutorial paso a paso para mostrarles como funciona.

En la próxima entrega les enseñaré como queda el circuito impreso diseñado y también que componentes tienen que comprar para armarlo.


 

0
Su voto: Niguno

Armado de un programador: Parte 2

Luego de haber visto como programaremos nuestros dispositivos nos queda solamente empezar a encarar su construcción. En primera instancia quiero decirles que la construcción del programador se hará paso a paso para ver los detalles del armado.

Como les había dicho anteriormente el PCB ( Placa de circuito impreso), había elejido diseñarlo usando una herramienta de dibujo asistido por ordenador. Para mi gusto particular he usado Eagle PCB,  pero pueden usar cualquier otro que se adapte a sus necesidades.

Luego de algunas horas de diseño pude terminar una versión preliminar del Pickit2 clone que usaremos para nuestras prácticas con microcontroladores.

En la siguiente imágen podemos ver como quedó el PCB.

 

programador usb

Aquí vemos como quedaron distribuidas las pistas del circuito y también la distribución física de los componentes.

Debido a que algunos usuarios a veces tienen problemas con la identificación de algunos componentes claves del circuito , pondré imágenes a modo ilustrativo. Esto les ayudará a la hora de comprar y  no cometer equivocaciones.

El primer componente que vemos en el circuito impreso es el conector USB tipo B. Muchos me han preguntado si se puede usar otro conector que no sea ese, la respuesta es SI.

En caso de modificar el tipo de conector utilizado , el usuario tendrá que modificar el diseño añadiendo el conector por su cuenta modificando el archivo de diseño del circuito impreso.

En la siguiente imágen les dejo el formato del conector utilizado en este diseño en conjunto con el cable que debemos comprar.

conector USB

Este es el conector usado , hay que pedirlo como conector USB tipo B para circuito impreso.

El cable tiene que ser el siguiente:

cable usb

Este cable hay que pedirlo como una extensión USB con conector tipo B de un lado y conector macho tipo A del otro.

Luego veremos el componente principal de nuestra herramienta, el PIC18F2550. Este microcontrolador se encargará de gestionar las comunicaciones con el host mediante el puerto USB como así también  realizará todas las tareas de grabación / lectura y verificación de los diferentes dispositivos que debamos utilizar.

Este componente es una de las piezas más caras del programador con un valor aproximado en el mercado de U$S 9 la unidad.

En la siguiente fotografía vemos como es la apariencia de dicho componente para no confundirlo con otro. Quizás la imágen no es necesaria, pero para alguien novato en este mundo quizás le ayude a no cometer errores en la compra.

 

pic18f2550

Por último tenemos el conector ICSP/ISP donde irán conectados los diferentes microcontroladores PIC/AVR que utilizaremos en nuestras práticas de programación.

 

conector IDC10

 

Una vez que tengamos todos los componentes que necesitamos procedemos a soldar. Lo ideal es comenzar por los componentes más pequeños como diodos , puentes y resistencias. Luego seguir por los más grandes como integrados y conectores.

Recomiendo que todos los componentes se suelden con un cautín a 250º usando estaño de .75mm de diámetro.  Tanto el cautín como el estaño lo pueden comprar en cualquier tienda de electrónica.

Una vez armado el circuito del programador , procederemos a conectarlo a una PC con puerto USB. Al conectarlo por primera vez aparecerá un cartel indicandonos que se ha conectado un dispositivo HID y luego mostrará que se ha instalado correctamente.

Imágen al conectarlo por primera vez.

 

IMÁGEN 1

Una vez que se han instalado los drivers automáticamente me aparecerá un cartel indicando que el dispositivo está listo para poder usarlo.

 

IMÁGEN 2

Bueno hasta aquí ya tenemos el programador listo para poder usarlo. En la próxima les mostraré como enlazarlo con el software de programación y ya podremos empezar con nuestras prácticas.

En el adjunto les pongo los archivos para que armen el programador como así también la lista de componentes que necesitan comprar.

http://www.mediafire.com/file/goq8o66j4d26yt6/PICKIT2.zip

0
Su voto: Niguno

Armado de un programador: Parte 3

Luego de estudiar como se arma el programador , les voy a mostrar como usar el software de programación para PIC's. Más adelante les enseñaré como enlazarlo al IDE de programación.

A continuación de haber conectado el dispositivo a la PC y que la misma lo haya reconocido, debemos ejecutar el programa de control del mismo. Este software se descarga de forma gratuita desde la página de microchip buscando el link de descarga en este enlace: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805

Una vez instalado el software de programación deberá quedarles una ventana como la que muestro en la imagen.

SOFTWARE DE PROGRAMACIÓN

Como podemos ver tiene varias funciones pero aquí explicaremos sólo las más importantes.

1° PASO: Conectar el dispositivo (en este caso PIC),  a programar en los pines ICSP del grabador. Recordar siempre que puertos de conexión utilizados para este proceso son los siguientes:

  • PIN RB7: PIN DATA O DATOS.
  • PIN RB6: PIN CLOCK O RELOG.
  • PIN MCLR: RESET MASTER / VPP.
  • PIN VCC: ALIMENTACIÓN POSITIVA.
  • PIN GND: MASA DE LA ALIMENTACIÓN.

Estos pines varían según el microcontrolador utilizado. Conectar el PIC y luego el programador a la PC, una vez realizado esto, iniciar el software de grabación.

2° PASO: Cuando  inicie la aplicación, detectará automáticamente el dispositivo conectado y habilitará las funciones de grabación / lectura / borrado, etc.

Cuando hallamos realizado ambos pasos tendremos listo nuestro programador para poder trabajar.

FUNCIONES DEL SOFTWARE DE PROGRAMACIÓN:

  • Abrir archivo .hex.
  • Guardar archivo .hex.
  • Borrar dispositivo .
  • Grabar dispositivo.
  • Leer dispositivo.
  • Chequeo de dispositivo en blanco.

Estas son algunas de las funciones que se encuentran dentro del software que maneja el grabador. Hay que tener en cuenta que esta aplicación solo sirve para grabar microcontroladores PIC, si queremos grabar microcontroladores AVR tendremos que usar otras herramientas software que explicaremos más adelante.

Abrir un archivo hex:

Para poder abrir un archivo de programa .hex, deberemos hacer click en la pestaña file y luego import hex. Allí se abrirá una ventana para que busquemos el archivo que necesitamos grabar al microcontrolador. Una vez que hallamos abierto el archivo , visualizaremos el mismo en la ventana de la aplicación.

Grabar dispositivo:

Usando esta función activamos los servicios de programación que posee el microcontrolado usado, al igual que explicabamos en entregas anteriores del tutorial.

Para poder grabar la memoria del programa del dispositivo utilizado hacemos click en el botón: Write. Al principio veremos una barra de progreso que nos irá indicando el porcentaje de memoria grabada, luego de que termina el proceso, nos mostrará si la grabación se ha realizado con exito o si ha habido algún inconveniente o error.

Como podemos ver en la aplicación hay 2 ventanas diferenciadas:

  • Programm memory.
  • EEPROM data.

Estas 2 ventanas muestran la memoria de programa y de datos respectivamente. Si nuestro programa tiene algún dato que guardar en la memoria eeprom , el mismo se visualizará en la ventana correspondiente.

En caso de queramos grabar solo un tipo de memoria habilitaremos o no los casilleros enabled que posee cada ventana , lo que nos permitirá trabajar con los dos tipos de memoria por separado.

Borrar dispositivo:

Esta función borra por completo la memoria de programa y de datos. En caso de que querramos conservar los datos guardados en la memoria EEPROM solo deshabilitaremos la casilla enabled de la memoria de datos.

El botón Erase es el encargado de esta tarea.

Chequeo de dispositivo en blanco:

A través de esta utilidad, podremos comprobar si el proceso de borrado de la memoria del dispositivo se ha realizado correctamente.  En caso de tener algún programa grabado en la memoria de programa, la aplicación nos mostrará un error, debido a que no se cumple la condición de memoria en blanco.

Leer dispositivo:

Lee la memoria de programa y la de datos y vuelca el contenido en los ventanas de visualización. La barra de progreso mostrará el porcentaje de memoria leida y un mensaje nos mostrará si el proceso ha tenido exito o no.

Esta función la brinda el botón read del menú de comando.

Guardar archivo hex:

Una vez leida la memoria de programa asi también como la memoria de datos, el programador tiene la opción de guardar el contenido de dicha lectura. Para esto vamos a file - export hex, allí el  programa guardará los datos leidos en formato hexadecimal.

Con esto ya tenemos listo el hardware y software necesario para poder programar. Ahora nos queda comenzar a diseñar un pequeño entrenador para realizar las prácticas de programación que realizaremos de manera continua en las diferentes lecciones.

0
Su voto: Niguno

Entrenador para PIC y AVR: Parte 1

En esta entrega empezaremos a diseñar un entrenador para las familias de microcontroladores PIC y AVR. Para poder emprender el diseño de la placa de entrenamiento necesitaremos el software Eagle PCB versión 5.10 o superior.

Para el desarrollo de este curso usaremos 2 placas de entrenamiento diferentes para poder utilizar ambas familias de dispositivos. Esto se debe a que los PIC y AVR no comparten la misma distribución de pines dentro de sus dispositivos, por lo tanto diseñar una placa que se adapte a ambas familias de microcontroladores resultaría impráctico.

Dos pautas a tener en cuenta a la hora de diseñar este tipo de circuitos son las siguientes:

  • Funcionalidad.
  • Economía.

Necesitamos que nuestro entrenador nos de las mejores características al mejor precio ya que la premisa de este curso es el hecho de no tener que gastar grandes cantidades de dinero para aprender a programar.

Las especificaciones técnicas de nuestra placa de entrenamiento serían las siguientes:

 

  • Fuente de alimentación filtrada y regulada de 5v con una capacidad de carga de 1A.
  • Microcontrolador con 2Kb de ROM y 128 bytes de RAM.
  • Cristal de cuarzo como fuente de reloj del microcontrolador.
  • Puerto RS232 para comunicaciones seriales.
  • Puerto ICSP - ISP para programación.
  • Puertos del microcontrolador liberados para conectar periféricos externos.
  • Protección contra cortocircuitos e inversión de polaridad en la alimentación.

Fuente de alimentación:

Como fuente de alimentación de nuestro sistema usaremos un transformador de 220v / 110v C.A (Corriente Alterna) a 12v C.C (Corriente continua), con una capacidad de carga de 1.5 a 2A. Este dispositivo pueden adquirirlo en cualquier tienda de electrónica o electricidad a un precio no mayor de U$S 6.

En la fotografía pueden ver el aspecto del mismo.

TRAFO

La tensión que entrega el transformador, no es compatible con las especificaciones del entrenador de 5v / 1A. Por esto necesitaremos un dispositivo externo llamado regulador de voltaje, el mismo entrega una tensión de salida fija regulada a partir de una tensión de entrada variable.

El dispositivo ideal para cumplir esta tarea es el LM7805 de ST semiconductores. Este circuito integrado de 3 pines entrega una tensión de 5v a la salida con una capacidad de carga de 1A, usando solo 2 capacitores como componentes externos asociados.

REGULADOR

Microcontrolador:

El microcontrolador que usaremos en nuestras primeras prácticas de programación tiene que cumplir los requisitos mostrados más arriba de poseer una memoria de programa de 2Kb y una memoria de datos o memoria RAM de 128 bytes.

Para la familia de dispositivos AVR usaremos el ATtiny2313 con un costo de U$S 3. En cuanto a la familia de dispositivos microchip PIC utilizaremos el PIC16F628A  con un costo similar al ATtiny2313.

En las fotografías podemos ver ambos microcontroladores.

Microcontrolador AVR que usaremos.

ATTINY2313

Microcotrolador de Microchip que usaremos.

PIC16F628A

Ambos dispositivos necesitan una fuente de reloj para poder sincronizar todas las operaciones internas de la CPU. Debido a esto usaremos un cristal externo de 4Mhz.

Comunicaciones RS232:

En muchas de nuestras prácticas necesitaremos un monitor para poder correjir errores en nuestros programas, visualizar mensajes, introducir datos al sistema,etc. Para este propósito usaremos el puerto de comunicaciones RS232 ya que es la forma más económica de visualizar datos.

Más adelante veremos el uso de las pantallas LCD, como un método alterno al uso del puerto RS232 para visualizar mensajes.

Como elemento hardware para las comunicaciones usaremos el circuito integrado MAX232 que adapta los niveles de tensión del microcontrolador para poder comunicarse con el puerto serie de la PC.

MAX232

 

Para poder conectar elementos externos a nuestro entrenador usaremos conectores del tipo ICD o Molex. Estos conectores ofrecen muy poca fatiga mecánica , por lo tanto son ideales para las prácticas en donde se conectan y desconectan dispositivos de forma continua.

En la próxima entrega les mostraré el diseño final del circuito y la placa de circuito impreso para que puedan armarlo. A esta altura tendríamos que tener el programador y nuestra placa de entrenamiento listas para poder dar comienzo a nuestras prácticas de programación.
 

0
Su voto: Niguno

Entrenador para PIC y AVR: Parte 2

En la anterior entrega vimos los elementos necesarios para poder construir un entrenador para microcontroladores PIC y AVR. En esta edición vamos a ver la construcción de la placa para microcontroladores AVR.

Las características finales de nuestro entrenador, para dispositivos AVR, son las siguientes:

  • Fuente de alimentación regulada y estabilizada utilizando el circuito integrado LM7805. El mismo nos dará una tensión fija de 5v, con una capacidad de carga de 1,5A Máx. Como componentes externos asociados a este dispositivo, tenemos 2 capacitores de 100uF/25v como elementos de filtrado.
  • Puente de diodos para protección contra inversión de polaridad y como elemento de rectificación, en caso de usar una fuente de alimentación de corriente alterna (C.A).
  • Puerto serie RS232 implementado utilizando el circuito integrado MAX232. Para visualizar las comunicaciones, se han colocado 2 indicadores tipo LED de 3mm, TX (transmisión de datos) y RX (Recepción de datos).
  • Cristal de cuarzo de 4Mhz con capacitores de filtrado de 22pf.
  • Microcontrolador ATtiny2313 - 20PU: 2Kb de ROM y 128 bytes de RAM.
  • Botón de reset del microcontrolador. Este botón cumple con la función de reset en caso de haber un fallo en la ejecución del programa o que el microcontrolador entre en un bucle infinito sin retorno.
  • Puertos libres disponibles en conectores IDC de 10 pines. Para poder añadir componentes anexos al entrenador se usarán cables y adaptadores para la placa experimental como se mostrará más adelante.
  • Conector ICSP para la programación del microcontrolador. Aquí conectaremos nuestro programador, sin necesidad de sacar el dispositivo de su zócalo.

En la imagen podemos ver como están distribuidos los diferentes componentes que integran la placa.

ENTRENADOR AVR

Esta placa de desarrollo contiene todo lo necesario para poder realizar las prácticas de programación del curso que dictaremos.

En total serán aproximadamente 70 a 80 prácticas que se distribuirán a través de las sucesivas entregas del curso.

Todas las pruebas se realizarán utilizando una placa experimental donde conectaremos los componentes asociados al entrenador, como pueden ser:

  • LED's.
  • Pulsadores.
  • Display's LCD.
  • Display's de 7 segmentos.
  • Sensores infrarojos.
  • Memorias EEPROM, etc.

Una imagen de la placa experimental que usaremos es la siguiente.

PLACA EXPERIMENTAL

Todas los programas de ejemplo se realizarán integramente en C de AVR - GCC. Las prácticas vendrán acompañadas con un pequeño video de explicación para que les quede un documento explicativo de cada práctica.

En la próxima entrega les mostraré la placa de desarrollo que utilizaremos para los microcontroladores PIC.

Una vez montados ambos entrenadores, les enseñaré algunas pruebas de funcionamiento para dejar todo listo para comenzar a programar.

 

0
Su voto: Niguno

Introducción Eagle PCB: Parte 1

En entregas anteriores vimos como crear la placa del Pickit2 y próximamente veremos el diseño de las placas de entrenamiento que nos servirán para el desarrollo de nuestros ejemplos y tutoriales de programación.

Todas las placas de desarrollo, incluida la placa del programador están diseñadas en un software de dibujo asistido llamado EaglePCB. Usando este programa podemos crear nuestros circuitos impresos partiendo de un esquemático previamente diseñado, utilizando herramientas de facil uso.

EAGLE PCB

En este tutorial enseñaré las funciones básicas del programa para que el usuario sea capaz de empezar a trabajar en un proyecto concreto. Algunas características destacables de este programa son las siguientes:

  • Total compatibilidad con Windows y Linux.
  • Resolución 1/10.000 mm (rejilla de trabajo).
  • Facil edición de librerías de componentes.
  • Función de auto - ruteo con control de errores.
  • Soporte completo SMD (Montaje superficial).
  • Hasta 99 hojas por esquema.
  • Estratejias de diseño basandose en los costos de fabricación.

Personalización del Eagle:

El software Eagle permite personalizar ciertos aspectos del programa, tales como la configuración de menús, teclas de función o colores de pantalla. Muchos de estos aspectos se pueden realizar desde el menú Options en el panel de control o en un editor de ventanas.

El interfaz de usuario se puede personalizar mediante un clic en options/User interface en el menú del panel de control. Este tutorial da por supuesto que se utilizarán las configuraciones por defecto, más adelante se explicarán como hacer modificaciones en caso de ser necesario.

Interfaz de usuario de Eagle:

Eagle se ha diseñado de tal modo que cualquier acción se realiza mediante un comando. Normalmente el usuario selecciona los comandos de la barra de herramientas que se encuentra a la izquierda de la ventana de trabajo, haciendo clic's sobre los iconos. Pero existe otra opción, que es introducir los comandos mediante texto en la barra superior de la ventana de trabajo.

Ventana de trabajo:

VENTANA DE TRABAJO

En esta imagen tenemos la ventana de trabajo del editor de PCB. Como podemos apreciar de arriba hacia abajo, tenemos la barra de menú, barra de herramientas activas, barra dinámica de parámetros y coordenada de pantalla con línea de comando. A la izquierda encontramos la barra de herramientas de comando.

En la próxima imagen vemos la ventana de trabajo del editor de esquemas que tiene la misma distribución que la ventana del editor de PCB.

EDITOR DE ESQUEMAS


Comandos:

Como vimos anteriormente, los comandos del editor de esquemas / PCB, se pueden seleccionar introduciéndolos por teclado o seleccionándolos con el ratón mediante clic's en los iconos o en las opciones del menú.

Podemos ver entonces, como ejemplo , las formas para introducir el comando info.

  • Clic en el ícono comando info
  • Escribir info en la línea de comandos y pulsar la tecla intro.
  • Pulsar la tecla de función asociada al comando info.
  • Seleccionar la opción del menú => edit / info.

En el desarrollo de este tutorial usaremos el modo de hacer clic en el ícono del comando usado, debido a una cuestión de comodidad. El usuario puede usar el modo de trabajo que le resulte más ameno.

 EaglePCB permite trabajar usando un editor de proyectos (Usado en proyectos complejos principalmente). Al proyecto se le pueden agregar los diferentes esquemáticos y placas de circuito impreso que el mismo contenga. Así como también se pueden crear esquemáticos y circuitos impresos por separado en proyectos más simples.

PANTALLA PRINCIPAL

En la próxima entrega seguiremos trabajando en la descripción y funcionamiento de este exelente programa.

 

0
Su voto: Niguno

Introducción a los Microcontroladores

Introducción a los Microcontroladores:

Un microcontrolador es un chip o circuito integrado que contiene todos los elementos de una CPU ( Procesador, RAM, ROM, E/S). Estos dispositivos nacieron a finales de la década del 70' para brindar una solución a los caros y complejos sistemas basados en lógica discreta. 

Cotidianamente vemos cientos de aplicaciones donde se usan los microcontroladores tales como los hornos eléctricos digitales, los automóviles, los PLC en la industria, etc. 

En este curso aprenderemos a usar 2 familias o marcas de dispositivos: los PIC de la empresa MICROCHIP y los AVR de la empresa ATMEL, ambos muy utilizados dentro del ámbito del aficionado y también dentro de la industria.

Estas 2 familias de dispositivos son del tipo RISC ( conjunto de instrucciones reducido ). Esto quiere decir que su conjunto de instrucciones es muy reducido en el orden de 30 a 200 instrucciones que se ejecutarán, salvo alguna de ellas, en el orden de 1 ciclo de máquina.  

En las siguientes fotografías podemos ver 2 dispositivos: Un PIC16F877A de Microchip y un ATmega328P de ATMEL respectivamente.

PIC16F877

ATmega328p

Estructura básica de un microcontrolador:

En la imagen podemos ver los componentes básicos de cualquier microcontrolador. Los componentes que componen cada dispositivo suelen variar según el fabricante y la arquitectura que posea.

Arquitectura del dispositivo

Arquitectura de un Microcontrolador:

Básicamente existen 2 tipos de arquitecturas:

 

 

  • Von Neumann
  • Hardvard

 

Arquitectura Von Neumann:

la unidad de proceso o CPU está conectada a una memoria única que contiene las instrucciones del programa y los datos.  La longitud de las instrucciones está limitada por la unidad de longitud de los datos, por lo tanto el microprocesador debe hacer varios accesos a la memoria para buscar instrucciones complejas.

La velocidad de operación está limitada por el efecto cuello de botella que significa un único bus para datos e instrucciones, lo que impide superponer ambos tiempos de acceso.

Arquitectura Hardvard:

En este tipo de arquitectura, la memoria de datos está separa de la memoria de programa por lo que están conectadas a la CPU mediante buses separados totalmente independientes que pueden ser de distinto ancho. Debido a esto el tamaño de las instrucciones no está relacionado con el de datos y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa. Así se logra mayor velocidad y una menor longitud del programa.

Otras de las características es que el tiempo de acceso a las instrucciones puede superponerse con el de datos, logrando una mayor velocidad de operación.

Tanto los microcontroladores de la firma microchip como los microcontroladores de la firma ATMEL son de arquitectura Hardvard.

Características principales de los PIC:  

 

  • Reducido número de instrucciones.
  • 1 solo acumulador W de uso implícito. 
  • Todas las posiciones de la RAM funcionan como registros de origen y/o de destino de operaciones matemáticas y otras funciones.
  • Una pila de hardware para almacenar instrucciones de regreso de funciones.
  • El espacio de datos está relacionado con el CPU, puertos, y los registros de los periféricos.
  • Las instrucciones se ejecutan en 1 ciclo de máquina ( 4 ciclos de reloj ).

 

Características principales de los AVR:  

 

  • Ejecución eficiente de código C compilado.
  • registros X,Y,Z para el manejo de punteros.
  • Núcleo multiacumulador.
  • Todas las instrucciones salvo algunas instrucciones de salto ocupan 1 ciclo de máquina que equivale a 1 o 2 ciclos de reloj.
  • Herramientas de desarrollo gratuitas bajo GNU.
  • Permite la programación IN - CIRCUIT.
Ya hemos visto las principales características que definen a los microcontroladores PIC y AVR. En la próxima veremos que herramientas necesitamos para trabajar con los mismos.

 

0
Su voto: Niguno

Introducción a los microcontroladores: Parte 2

En el anterior apartado vimos que era un microcontrolador sus características principales además de un chequeo rápido a su arquitectura.

A lo largo de este curso veremos como programar los diferentes dispositivos para que cumplan con una tarea determinada por el usuario, por lo tanto necesitamos de un lenguaje en el que desarrollaremos nuestros programas. Ya sea para PIC o AVR existen multitud de compiladores tanto de pago como de libre distribución.

Para este fin hemos elejido el lenguaje C debido a que posee grandes ventajas entre las cuales podemos destacar:

  • Gran portabilidad entre diferentes compiladores con muy pocos cambios en el código fuente.
  • Ofrece una gran flexibilidad a la hora de programar, debido a que el usuario puede tomar un estilo único, basandose en las estructuras propias del lenguaje.
  • Acceso a la memoria de bajo nivel mediante el uso de punteros.
  • Permite crear estructuras con tipos de datos definidos por el usuario.
  • Gran cantidad de ejemplos e información en la web.

Muchas de las herramientas aprovechadas para desarrollar aplicaciones usando microcontroladores podemos ubicarlas haciendo una rápida búsqueda en la web. Para facilitar la tarea de dicha búsqueda al lector, enumeramos las más utilizadas a continuación...

Herramientas software necesarias:

Tanto para los microcontroladores PIC como para AVR existen multitud de herramientas que podemos usar ya sea de pago o de libre distribución. Para el desarrollo de nuestro curso necesitaremos esencialmente 3:

  • Compilador de C.
  • IDE de desarrollo.
  • Depurador / Simulador.
  • Programador / Grabador.

Compiladores de C:

Como habíamos mencionado previamente los dispositivos de la familia AVR fueron creados con la idea de ejecutar código C compilado de manera eficiente.

GCC COMPILER

AVRGCC es en la actualidad uno de los mejores compiladores de C de distribución gratuita que podemos encontrar; posee todas las características del C standar (véase ANSI C).

Para el caso de los microcontroladores PIC, existen muchos compiladores, pero el más usado por el público aficionado es el C de la firma CCS ; la desventaja con este software es que es de pago. Podríamos haber elejido cualquier otro compilador de los muchos que hay pero es el que mejor relación ( cantidad de dispositivos soportados / precio / funcionalidad ) posee.

CCS COMPILER

IDE de desarrollo:

Tanto para los dispositivos de la familia ATMEL y MICROCHIP existen múltiples plataformas de desarrollo.

Para ATMEL tenemos AVR - Studio 4.

AVR STUDIO

Este software puede o no, actuar en conjunto con AVRGCC, permitiendo al usuario ordenar sus proyectos, y además de ello dar posibilidad de corregir, simular y grabar en el microcontrolador el programa desarrollado.

Una desventaja menor que presenta este sistema es la integración de lenguaje ensamblador embebido en código C; operación que en WINAVR ( AVRGCC ) se facilita declarando los programas o trozos de código escritos en el ensamblador cómo funciones externas anexadas al código principal.

Para la familia de microcontroladores PIC existe el MPLAB. Esta plataforma de programación al igual que AVR Studio, nos ofrece la posibilidad de tener ordenado nuestros proyectos, como así también simular, corregir errores y grabar en el dispositivo el programa que se está desarrollando.

MPLAB

Herramientas hardware necesarias:

Como asi también escribimos nuestros programas, los compiladores generan un código ejecutable de manera análoga a un ejecutable en Windows o Linux. El mismo, tiene una extensión ".hex" ( véase formato ".hex" ).

Para poder insertar el programa escrito en el dispositivo necesitamos de una herramienta externa que permita enlazar la memoria de dicho dispositivo con un software de grabación, vulgarmente llamado "quemador".

En el mercado coexisten muchas herramientas que cumplen con esta función, pero las más utilizadas por desarrolladores aficionados y profesionales ( debido a las características que poseen ) son las siguientes:

  • PICKIT 2 ( empresa MICROCHIP ).
  • AVR-ISPMK 2 ( empresa ATMEL ).

A modo ilustrativo, les brindo la fotografía de ambas herramientas...

PICKIT 2:

PICKIT 2

Este programador creado por la empresa MICROCHIP, en conjunto con la plataforma MPLAB nos será útil para programar los microcontroladores PIC. En la red existen muchos clones del mismo, por lo que para ahorrar costos más adelante mostraré cómo fabricar uno.

A TENER EN CUENTA: una investigación que realicé recientemente muestra que esta herramienta sirve para grabar microcontroladores PIC y AVR, sin efectuar ninguna modificación en el Hardware y Firmware del programador. Solo con una pequeña aplicación podemos añadir esta funcionalidad, la misma será desarrollada posteriormente.

AVR-ISPMK 2:

AVR-ISPMK 2

Este dispositivo producido por la empresa ATMEL en conjunto con la suite AVR Studio será utilizado para grabar los microcontroladores AVR. Al igual que con el PICKIT 2 existen muchos clónicos en la red, por lo tanto posteriormente también les enseñaré cómo fabricar uno...

Para la próxima profundizaremos en el uso de las herramientas antes explicadas. Espero que les haya servido.

0
Su voto: Niguno

Introducción a los microcontroladores: Parte 3

Anteriormente vimos las herramientas que hacían falta para poder desarrollar aplicaciones con microcontroladores PIC y AVR. En este apartado veremos como se programan ambos tipos de dispositivos.

Programación de microcontroladores PIC:

Los microcontroladores PIC se graban mediante un sistema llamado ICSP (In circuit serial programming), por el cual se puede grabar la memoria de programa, la memoria de datos y la palabra de configuración.

Al utilizar este sistema obtenemos 3 ventajas principalmente:

  • Reducimos el tiempo de desarrollo, ya que no hay que sacar el dispositivo de la placa base donde se encuentre, solo hay que conectar el programador a su zócalo ICSP.
  • Reducimos la fatiga mecánica de los pines microcontrolador al no tener que cambiarlo de lugar para ser programado.
  • Podemos correjir errores y probar programas directamente en la tarjeta de aplicación.

Modo grabación:

Para realizar la grabación, el PIC debe estar en modo grabación. Existen varias maneras de entrar en este modo, que dependen del PIC usado. Una manera consiste en introducir una tensión de 12 voltios por el pin MCLR. (El otro método es el denominado de bajo voltaje o LVP). Usando este método hay que introducir 5 voltios por la pata RB3/PGM según sea PIC16F o PIC18F (Véase manual de programación de cada familia de dispositivos).

En la siguiente imágen se muestra un ejemplo de un circuito para hacer que el PIC entre en modo programación. Cada vez que se suelte el botón de reset podemos acceder a los servicios de grabación. En cuanto el botón sea pulsado el dispositivo entrará en modo reset iniciando todos sus registros internos.

 

modo programación

Arquitectura:

Un vez en modo programación, se tiene acceso a una serie de servicios  a través del protocolo ICSP. Este protocolo se describe en dos niveles o  capas:

  • Capa física .
  • Capa de comandos.

En el nivel físico se especifica cómo se transmiten los bits (temporizaciones, tiempos de sincronismo, etc) y en el de comandos qué tramas hay que enviar para tener acceso a los diferentes servicios.

Nivel físico:

Para realizar la comunicación se utiliza un protocolo serie síncrono. Son necesarios dos hilos, del puerto B:

  • Pin de datos (DATA O PGD) RB7 (PIC16F/18F). Este pin es bidireccional.
  • Pin de reloj (CKL O PGC) RB6 (PIC16F/18F).

En la imágen vemos los pines utilizados en un PIC16F.

nivel fisico

Los detalles de funcionamiento son los siguientes:

  • Primero se envían los bits menos significativos.

  • Los datos se toman en el flanco de bajada del reloj.

  • El periodo mínimo del reloj es de 200ns para una frecuencia de 5Mhz.

  • El tiempo de setup (tiempo que deben estar los datos antes de que llegue el flanco de bajada) y el tiempo de hold (el que deben estar después de producirse el flanco de bajada) son de 100ns.

Los comandos que se envían al PIC son de 6 bits y los datos de 14 bits en caso de usar microcontroladores de la línea 16F y 16 bits en caso de usar dispositivos de la línea 18F. Los datos son bidireccionales, se pueden enviar al PIC o leerlos desde él. En la transmisión de los datos hay que colocar un bit de start y un bit de stop, que tienen el valor 0. En total se necesitan 16 flancos de bajada para el envío de los datos, y 6 flancos de bajada para los comandos. Para los PIC de la línea 18F se usan 18 flancos de bajada.

  • Envío de comandos: 6 flancos de bajada (6 bits).

  • Envío de datos: 16 flancos de bajada. (14 bits + 1 bit start + 1 bit stop).  Para PIC18F (16 bits + 1 bit start + 1 bit stop).

  • Los datos son bidireccionales: se pueden enviar al PIC o recibirlos de él.

  • El tiempo mínimo entre el envío de un comando y la lectura o escritura de un dato, debe ser de 1 microsegundo.

Nivel de comandos:

En este nivel se encuentran los diferentes comandos del servicio de grabación , existen variedad comandos diferentes según la familia de dispositivos que se esté usando. Estos comandos son usados para grabar un dato en la memoria de programa, leer un dato de la memoria de datos, entrar en el modo de programación.

Estos comandos están descriptos en la hoja de datos de cada dispositivo por lo cuál el lector puede buscarlos por su cuenta entrando a la página de microchip y buscando la guía de programación de cada familia.

 

Programación de microcontroladores AVR:

Los microcontroladores AVR se graban mediante un sistema similar al que se usa para los microcontroladores PIC llamado ISP (In system programming), por el cual se puede grabar la memoria de programa, la memoria de datos y la palabra de configuración.

Las ventajas de usar este sistema son las mismas que se presentan al usar el ICSP de los PIC.

Modo grabación:

 A diferencia de los microcontroladores PIC, los dispositivos de la familia AVR se diferencian por no necesitar alto voltaje para el proceso de grabación sino que usan el mismo voltaje de alimentación para todas sus operaciones.

Para entrar en modo de programación lo hacen mediante comandos específicos según sea la familia de dispositivos usada.

Arquitectura:

La arquitectura usada es la misma que para los microcontroladores PIC basada en 2 capas, una física y otra de comandos.

Nivel físico:

Para realizar la comunicación se usa el protocolo SPI, que simplifica el protocolo de grabación. El mismo consiste en una comunicación serial Full - Duplex (transmite y recibe datos a la misma vez) , obteniendo una mayor velocidad a la hora de comunicarse con el dispositivo.

En total este sistema usa 4 cables para poder entablar la comunicación mediante SPI.

  • MISO: Entrada - Master y Salida - esclavo (Señal de datos SPI).
  • MOSI: Salida - Master y Entrada - esclavo (Señal de datos SPI).
  • SCK: Señal de reloj.
  • RST: Pin de reset del microcontrolador.

En la imágen vemos la distribución de pines utilizados para la comunicación de un microcontrolador de la familia AVR:

ISP

Una breve descripción de funcionamiento es la siguiente:

  • El dispositivo entra en modo programación solo luego de un ciclo de reset.
  • Los primeros comandos son enviados luego de un periodo de 20ms.
  • Los comandos tienen un formato de 4 bytes a diferencia de los PIC que los comandos tienen una longitud de 6 bytes.
  • El primer comando enviado es el comando de "habilitar modo programación"
  • Se identifica el dispositivo mediante los comandos apropiados.
  • Se comienzan los ciclos de lectura/escritura de la memoria de programa, memoria de datos y fusibles.

Este reseña sobre el funcionamiento es básica y solo sirve para que el lector tenga una reseña sobre su funcionamiento. En caso de querer profundizar más sobre el tema hay que descargar la guía del protocolo ISP de la página de ATMEL.

Nivel de comandos:

Estos comandos están descriptos en la hoja de datos de cada dispositivo por lo cuál el lector puede buscarlos por su cuenta entrando a la página de ATMEL y buscando la guía de programación de cada familia.

A nosotros no nos interesará los comandos de cada familia ya que es trabajo del programador (hardware), ejecutarlos.

 

Hasta ahora hemos visto lo básico para poder entender el proceso de grabación de ambas familias de dispositivos. En la próxima entrega empezaremos a estudiar la construcción de un grabador para trabajar con las 2 familias de dispositivos descriptos.

0
Su voto: Niguno

Manual básico de Winpic800

Meta nos presenta un manual básico de Winpic800 para principiantes.

Con este manual podréis realizar pruebas paso a paso con el grabador TE20x o similares.

De manera muy simple,el winpic800 se usa para enviarle el software al PIC. Se puede descargar en Winpic800

microcontroladores winpic800

El manual podéis visualizarlo desde la web de meta o descargarlo como archivo adjunto en este post.

Y aunque aún está en construcción os dejo la web del autor, que seguro que nos dará mucho de sí.

Un par de buenos tutoriales sobre programación PIC usando el Winpic800 son:

0
Su voto: Niguno

Enlaces sobre Microcontroladores

Recopilamos web interesantes sobre los microcontroladores.

  • Foros TodoPic. Impresionante foro sobre Microcontroladores PIC y todo lo qu se puede lograr en domótica, telefonía etc.
  • uControl. Excelente wiki dedicado a la electrónica y a los microcontroladores. Con gran cantidad de proyectos y de artículos.
0
Su voto: Niguno

Lanzada la revista MicroControl

Se ha lanzado el número uno de MicroControl una nueva revista gratuita de electrónica.

revista gratis electronica

En este primer número entre otras cosas hablan sobre como crear placas decircuitos impresos para nuestro proyectos.

Un buen recurso gratis. Esperamos que sigan en esta línea.

Descargala directamente Revista Micro Control

0
Su voto: Niguno