Menu
in

Amicus: Software libre para PIC 18F25K20

Proton es uno de los mejores lenguajes BASIC (considerado de alto nivel) que se encuentra en el mercado. Fácil de usar y muy potente, es una herramienta muy codiciada por los programadores que comienzan a transitar el apasionante mundo de los microcontroladores. Su costo resultaba muy elevado para muchas personas pero ahora, con Amicus IDE, ese problema se resuelve. Desarrollado en forma específica para el PIC 18F25K20, Amicus IDE es la versión libre y gratuita del popular software Proton. En realidad, Amicus es mucho más que un simple software. Es toda una plataforma de desarrollo que te permite comenzar a crear desde el primer día. Toda la potencia de Proton disponible en tu ordenador para trabajar libremente con un PIC muy veloz y robusto como es el 18F25K20. ¿Tienes uno? ¡Comencemos a programar!

Amicus 18 es una creación de la gente de Crownhill que, mediante el uso de un PIC capaz de trabajar a 64Mhz y con la programación elemental que brinda el lenguaje BASIC, intenta plantarse frente a la súper-popular plataforma Arduino y demostrarle que es capaz de superarla en prestaciones y facilidad de uso. Amicus 18 es una placa que combina un poderoso PIC 18F25K20 con un FT232 para facilitar su conectividad USB. El hardware de Amicus 18 es compatible pin a pin con Arduino, y los módulos creados para ambas plataformas pueden ser utilizados e intercambiados entre sí.

Es decir, lo que existe para Arduino funcionará en Amicus 18 y viceversa. Observa en la imagen superior que existe un puente (jumper) que, según la referencia, es un Arduino Compatibility Jumper. El uso apropiado de ese jumper te permitirá utilizar módulos Arduino en esta plataforma Amicus 18. Siguiendo el concepto de “apilar” módulos para lograr combinaciones útiles de hardware, Amicus cuenta con una amplia variedad de posibilidades para aquellos que quieren iniciarse en el mundo de los microcontroladores. Y aquí debemos remarcar lo siguiente: el software de Arduino no es compatible con Amicus 18 (y viceversa) a pesar de que las placas de ampliación y aplicación sí puedan serlo.

Lo más importante del proyecto Amicus se plantea en base a tres pilares fundamentales:

  • Un hardware libre, que puedes modificar y reformar de acuerdo a tus posibilidades. Es decir, no estás obligado a “comprar”. Puedes construir tú mismo el desarrollo necesario que tu aplicación requiera.
  • Un software muy poderoso y gratuito, basado en el popular y exitoso Proton PIC Basic, totalmente liberado en todas sus funciones y sin restricciones de uso, y desarrollado de manera específica para el PIC 18F25K20: el Amicus IDE.
  • Un PIC, el 18F25K20, con características sobresalientes: 11 canales de entradas analógicas, 25 puertos de entrada y salida en total, 4 salidas de PWM, Protocolos SPI, I2C (Master/Slave), EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter), capacidad de 32KB de memoria Flash de programa (16KWord) (igual que el 18F2550) y todas la ventajas y mejoras que ofrecen los PIC de la línea 18F de Microchip.

Con estas tres herramientas podemos avanzar hacia el aprendizaje, sin restricciones de ninguna índole. Y como bien mencionamos antes, no es necesario “comprar” el hardware Amicus para empezar a trabajar. Con un PIC 18F25K20, un cristal de 16Mhz y una pequeña fuente de alimentación podremos comenzar a hacer nuestras primeras experiencias.

Nuestro hardware
Así de sencillo es el circuito “base” que necesitamos para trabajar con este poderoso PIC que, si lo observas en forma detenida, es compatible pin a pin con microcontroladores como el 16F876A, entre otros. La diferencia radica en que estamos ante un PIC de la serie 18F y que la alimentación es de 3,3Volts. En otros aspectos, el hardware no presenta ninguna variante respecto a los montajes tradicionales. En el hardware original podemos ver la inclusión de un circuito integrado FT232 para conectar el PIC a un ordenador a través del puerto USB y una pequeña fuente de alimentación que sirve para adaptar las tensiones dentro de la placa y distribuirlas de acuerdo a las necesidades del hardware. En nuestro caso, si deseamos, podemos utilizar la fuente modular para protoboard que será más que suficiente para suministrar energía al PIC y al sistema inicial. Un detalle importante a destacar del PIC 18F25K20 es que, a pesar de trabajar con una tensión de alimentación de 3,3Volts, sus entradas y salidas son capaces de comunicarse con periféricos que operen a tensiones de niveles TTL (0 – 5Volts).

El software
Gracias a que fue diseñado de manera específica para el PIC18F25K20 y para trabajar con un cristal de 16Mhz (llevado a 64Mhz con el uso del PLL), Amicus IDE nos permite ahorrar muchas declaraciones iniciales que, en otros programas, debíamos realizar de manera forzada. Por ejemplo, para encender y apagar un LED en el pin 0 del puerto B bastará con escribir las instrucciones de manera directa. Es decir, ahora puedes escribir HIGH PORTB.0 o tan sólo HIGH RB0 en la primera línea, y el programa funcionará sin problemas. Veamos:

Amicus IDE ya conoce o (cree entender) de antemano las condiciones del hardware. Por lo tanto, no debes declararlas; sólo necesitas decirle lo que debe hacer. Es decir, si tú le indicas que escriba en un display LCD la típica frase “Hola Mundo”, él ya sabrá que tú has conectado el LCD alfanumérico de 2 renglones y 16 caracteres a los pines del puerto B utilizados en la placa Amicus 18. De este modo, no tendrás la necesidad de declarar decenas de líneas de código. Aquí vas directo a la acción. Le dices: “anda, ve y haz esto que te indico”. Amicus IDE sabe el resto y lo prepara por ti. Por eso se le llama “Lenguaje de Alto Nivel”. Por supuesto, si deseas declarar patrones de trabajo diferentes a los que el sistema contempla como predeterminados, puedes hacerlo. Es decir, Amicus sabe que SCL es PORTC.3 y que SDA es PORTC.4. Pero si deseas reasignar estas conexiones hacia otros pines de otros puertos, puedes hacerlo de la misma forma en que lo hacías en Proton. Es decir, el software no nos hace esclavos del hardware. Otro ejemplo de la genialidad que este software presenta es el uso de un display LCD alfanumérico. Por defecto, siempre considerará 2 renglones, 16 caracteres, datos de 4 bits y la utilización del puerto B. Por lo tanto, si respetamos las conexiones (al LCD) que nos muestra el manual de Amicus, la acción de mostrar texto sería tan sencilla como la siguiente:

Dicho en pocas palabras, si utilizamos el hardware por defecto que utiliza la placa Amicus 18, podemos disponer de un compilador extraordinario al que no hay que indicarle nada más que las instrucciones que deseamos que haga. El resto ya lo sabe todo. Realmente si deseas transmitir a algún amigo el interés por los microcontroladores, o si deseas comenzar a practicar y hacer tus primeros pasos sin toneladas de declaraciones e instrucciones, Amicus llegó para hacerte la vida muy fácil. Única aclaración: para descargar e instalar Amicus IDE debes tener instalado MPLAB en tu ordenador.

Un ejemplo sencillo
Ya vimos cómo podemos encender y apagar un LED, cómo escribir texto en un LCD y lo que ahora haremos es combinar todo eso con la detección de un pulsador, el agregado de un sistema anti-rebotes para que no se produzcan errores al efectuar este proceso. Cuando un pulsador “soft-touch” (¡Cómo me gustan los anglicismos!) comienza a deteriorarse, provoca múltiples contactos o contactos que no se realizan. En el peor de los casos, si el software no está bien ajustado en tiempo y forma, un toque breve en el pulsador puede provocar múltiples acciones, mientras que un toque prolongado podría causar un desastre. Esto se agrava si al equipo en cuestión lo utilizan múltiples personas. Por lo tanto, cada vez que sea necesario, debemos utilizar un circuito que detecte la acción de pulsación y espere a ser soltado para continuar con el trabajo.

En nuestro ejemplo, el pulsador se utilizará para enviar a través de la USART del PIC una cadena de caracteres. ¿Te imaginas el desastre que podría suceder si el pulsador no actuase de manera correcta? No enviaría la cadena de caracteres o lo haría repetidas veces de acuerdo al tiempo que se tome el usuario pulsando el botón. Entonces, resumamos el trabajo: tendremos un LED intermitente que encenderá y apagará cada medio segundo y estará conectado al pin 0 de puerto B. Además, incluiremos un LCD que nos mostrará en su primer renglón un texto fijo, mientras que el texto del segundo renglón cambiará de acuerdo a la actividad del LED. Por otro lado, un pulsador (al ser presionado) enviará un mensaje de texto a través de la USART del PIC en cualquier momento cuando se pulse el botón conectado al pin 0 del puerto C.

Esta última oración no es un dato menor. El envío ocurrirá al pulsar el botón en cualquier momento sin tener que esperar a que el LED apague o encienda. Por último, no importa que al botón lo accione cualquier niño travieso: el sistema sólo permitirá un único envío de datos por cada vez que el botón se active por flanco descendente. La rutina para lograr un funcionamiento adecuado es muy sencilla: cuando el micro detecta que el botón ha sido pulsado, se dirige hacia la rutina “anti-rebote”. Una vez ahí ya habrá enviado la trama de datos a través de la USART. En ese momento observará y evaluará la situación eléctrica del pulsador. Si aún permanece presionado (estado bajo), entrará en un lazo hasta detectar que ha sido soltado. Es decir, la tensión en el pin 0 del puerto C deja de ser cero y pasa a un estado lógico alto gracias a R4. Es muy simple y efectivo.

En el circuito podemos ver las conexiones a las tensiones de 3,3Volts y de 5Volts que extraeremos de la fuente modular para protoboard (que resultó ser muy cómoda, eficaz y atractiva para algunos lectores). Y llevaremos la salida desde la USART del PIC hasta la placa que construimos con el MAX232 dedicada a la entrenadora NeoTeo. Algunos capacitores de desacoplo de 100nF, 10nF y 1nF, sumados a pequeños capacitores electrolíticos, componen el resto del montaje sobre el protoboard. El cristal NO puede dejar de ser de 16Mhz para obtener los tiempos adecuados de demoras (DELAY) y, por supuesto, una correcta comunicación serial de datos. En nuestros ensayos llegamos a comunicar, como puedes ver en el video, a 9600 bps. Un pulsador de RESET, un conector ICSP para programar el PIC, y listo. ¡Nuestro sistema Amicus está preparado para su primera prueba!

A partir de aquí todo es creación, imaginación, inspiración y transpiración. Con un software libre y un hardware que puede ser adaptado a las necesidades de cada usuario, tenemos en nuestras manos las herramientas para realizar cualquier trabajo, desde el simple LED Blinker hasta el control del LHC. Lo que sea.

Conclusiones
Crownhill ha dado un paso muy importante en la competencia con Arduino. Utilizando un PIC con mayor cantidad de entradas y salidas, la misma velocidad de proceso (Arduino tuvo que apelar al AVR ATmega328 para no perder esta carrera) y un software libre basado en el popular lenguaje BASIC, la apuesta es muy fuerte y tentadora. Si a esto le agregamos que los módulos (accesorios) existentes de Arduino son compatibles en su mayoría con Amicus 18, la propuesta aparenta ser más interesante aún. Por supuesto, el precio de venta al público de ambas plataformas es el mismo: 25 Euros. La competencia se abre ahora en muchos frentes, con la disponibilidad de muestras gratis de los microcontroladores, con los precios de los módulos adicionales, con la facilidad para usar los programas de aplicación, con los ejemplos disponibles en la Web para adaptar nuestros proyectos y hasta con la posibilidad de NO depender de un hardware duro e imposible de adaptar. Amicus 18 no aparece en el mercado como una copia de Arduino. Es otra cosa. Es un sistema de desarrollo donde las ataduras al hardware desaparecen y el usuario puede hacer y deshacer a discreción.

Quizás no haya vencedores ni vencidos en esta “batalla” y todos ganemos en creatividad, experiencia y aprendizaje al aprovechar múltiples sistemas de desarrollo. Pero seguramente tú ya tendrás un favorito en tu mente para futuras aplicaciones, ¿verdad? Cuéntanos, tu opinión nos interesa para futuras entregas. Y lo último por agregar: ¿Has visto el tamaño del código del ejemplo que te hemos mostrado, es decir,  la cantidad de líneas necesarias para lograr el funcionamiento del sistema? ¿Aceptarías el desafío de realizarlo en cualquier otro lenguaje de programación utilizando una menor cantidad de texto escrito? ¿Leíste bien? No hablemos del tamaño final del HEX obtenido luego de compilar el programa; eso no interesa cuando estamos dando nuestros primeros pasos. Por ejemplo, cuando estamos aprendiendo a hablar, mamá sabe que estamos llamándola a ella y se muestra orgullosa aunque digamos porquerías como “babá, madagascar o mamá-me-mima”. Ella sabe que dijimos mamá. Luego, ya habrá tiempo para crecer y recibirse de locutor profesional. Aquí sucede algo similar. Primero hablemos de la cantidad de texto que debes escribir para lograr un resultado exitoso, y luego hablaremos de optimización de código, capacidad de memoria y tamaño del HEX. Tú quieres ver y sentir la acción. Anda, ve por ella, tráela e invítanos a conocer tus listados de programa. ¡Hasta hemos inaugurado un foro para que te luzcas con tus creaciones, trabajos e ideas! ¡Te esperamos!

Escrito por Mario

Leave a Reply