Hola foreros!! Volvamos a la época jurásica. Ha venido un dinosaurio!!
** **Introducción** **
¿Qué pasa si necesitamos un microcontrolador especial para un proyecto que no lo tiene la plataforma Arduino? ¿Y qué pasa si tenemos un microcontrolador antiquísimo y queremos usarlo para algún proyecto de baja importancia o simplemente porque sus características son compatibles con nuestro proyecto por muy antiguo que sea el microcontrolador? Pues que en un principio, "no podemos", pero solo en un principio, porque veremos más adelante que sí se puede, y lo bueno de Arduino es que nos permite hacerlo.
Este tutorial tiene como origen no la necesidad de programarlo, sino la necesidad generada por la curiosidad de programarlo hoy, al encontrar en casa una tarjeta de desarrollo compuesta por una EEPROM 24LC256 y un microcontrolador (µC) AT90S8515 de Atmel, al que cariñosamente llamaremos "dinosaurio". Tras hacer consultas en el foro logré programarlo con éxito habiéndome tropezado varias veces (como nos pasa siempre :D) y tras hacer varias pruebas para hacerlo funcionar de manera "estable", me veo en la "obligación" de compartir los éxitos conseguidos para que a otra persona le pueda servir de guía programar el dinosaurio u otro similar. Además, se suma a la motivación el hecho de que, aunque no todo el mundo lo pregunta, sí hay un número "importante" de entradas en Google sobre gente que pregunta cómo programar este bicho, e incluso algunos dicen que es directamente imposible. Ya veremos que esa gente no tiene razón.
A día de hoy, programar un µC antiguo puede suponer un problema, debido a que requiere software antiguo, programadores antiguos y lo que es peor: puertos antiguos como el puerto serie o paralelo. A esto se suma la posibilidad de que dichos programas no funcionen en los sistemas operativos actuales y que solo estén para Windows. Arduino facilita esta tarea ya que es un programa actual y todo funciona por USB sin problemas. Hoy, programar un µC de arquitectura AVR, por muy antiguo que sea, es posible en máquinas modernas multiplataforma.
Este tutorial se divide en varias partes:
-Objetivo del tutorial
-Características del dinosaurio
-Descripción de patas
-Qué puede hacer y qué no
-Configuración de hardware
-Configuración de software
** **Objetivo del tutorial** **
El objetivo principal de este tutorial es el de conectar el dinosaurio al ordenador para poder cargarle un programa y que éste funcione. No es un objetivo de este tutorial cómo exprimir todas las características del dinosaurio cuando existen µC mejores y más modernos. Sin embargo, sí daremos un paseo por algunas de sus características.
El dinosaurio es un µC muy antiguo. No merece la pena invertir dinero en uno de estos. Sí puede merecer la pena si ya posees alguno y antes de tenerlo guardado en un cajón acumulando polvo, pues queda la opción de usarlo en algún proyecto poco exigente.
Si has venido hasta aquí buscando información sobre cómo programar otro µC que no es éste pero es Atmel y de arquitectura AVR, no te vayas porque puedes encontrar información que te resulte muy interesante.
** **Resumen de características** **
El dinosaurio, aunque es antiguo, tiene algunas características que pueden resultar interesantes, sobre todo para proyectos de bastantes patas. Algunas características principales:
-AT90S8515-4: Funciona entre 2,7 y 6v a 4Mhz
-AT90S8515-8: Funciona entre 4 y 6v a 8Mhz
-32 E/S digitales
-Las salidas digitales dan ~2,2v, lo que posibilita conectar LEDs directos a la salida
-No tiene entradas analógicas
-8K de memoria
-512 bytes de SRAM
-512 bytes de EEPROM
-Un reloj de 8bit
-Un reloj de 16bit
-Comparador analógico
-Tiene conexiones SPI
-Tiene puerto serie
-No tiene I2C
-Dos interrupciones
Hoja de especificaciones del AT90S8515
** **Descripción de patas** **
Una imagen vale más que mil palabras.
Los números entre paréntesis hacen referencia al número de puerto usado en el IDE de Arduino. Por ejemplo, digitalRead (14) hace referencia a la pata 7 puerto PB6 y digitalRead (29) hace referencia a la pata 34 puerto PA5.
** **Qué puede hacer y qué no** **
El Arduino UNO puede hacer "prácticamente" todo lo disponible, si nos ceñimos a sus características. No le podemos pedir una salida PWM por el pin 13, pero a su hermano mayor, el Leonardo, sí. El dinosaurio, al ser un µC con bastantes años encima, puede hacer una serie de cosas pero no otras, al menos, en el entorno Arduino.
Funciones probadas que funcionan:
-pinMode como INPUT, OUTPUT y como INPUT_PULLUP, sí, funciona la resistencia interna en todas sus patas
-digitalWrite
-digitalRead
-delay
-attachInterrupt
-millis
-IF ELSE
-FOR
-byte, long y unsigned long entre otras
-LED_BUILTIN que tiene un valor de 13
-Interrupciones con LOW, RISING, FALLING y CHANGE
-Otras funciones estándares
-Funciones Ensamblador como DDR, PIN y PORT
analogWrite funciona también, pero el resultado es un 1 o un 0 en la salida asignada.
Funciones probadas que no funcionan:
-Serial; pese a tener puerto serie, el compilador genera error como si Serial no estuviese declarado para este µC
No se han probado todas las funciones disponibles, pero entiendo que funciona la gran mayoría de ellas.
** Continúa en el siguiente mensaje por límite de caracteres **
s8515.zip (3.19 KB)