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.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *