Para explorar la posibilidad de implementar un rotor automático de antena basado solamente en el controlador PIC 12F675 estuve explorando posibles herramientas.
Por supuesto que se puede hacer en assembler, el MPLAB asm provisto por Microchip es gratuito y muy potente; de hecho todos mis proyectos al presente los he hecho en ese lenguaje.
Pero el controlador de rotor tiene la particularidad de tener algunos requerimientos diferentes a los proyectos anteriores.
Por un lado en el 12F675 hay que implementar un controlador serie por software puesto que el chip no tiene una UART.
En segundo lugar en el programa hay que implementar un procesador de comandos, de estructura simple pero aún asi requiriendo cierta capacidad de manipulación de caracteres. Finalmente se requiere alguna matemática diferente de sumas y restas, en particular la capacidad de multiplicar y dividir enteros de 16 bits para poder manipular las conversiones de acimut a las escalas de lectura de los sensores.
La opción mas lógica es recurrir al compilador C también provisto por Microchip, opción que utilicé en alguna ocasión sin que me termine de convencer; porque no soy un fan de C y porque el código que genera en assembler no me luce demasiado eficiente. Esto último es un defecto propio de "assemblero", siempre uno puede programar mas eficiente en assembler que un compilador.
Había tenido cierta exposición a la excelente gama de compiladores ofrecidos por Mikroelectrónica para una lista bastante apreciable de plataformas embebidas, y entre ella los PIC de Microchip, por lo que decidí explorarlo para este propósito con mas detenimiento. Para cada plataforma se ofrece un compilador BASIC, uno C y uno Pascal. En particular el de Pascal (mikroPascal PRO) para PIC me llamó la atención, mi debilidad por ese lenguaje data de varias décadas y es por lejos el que mas a gusto me siento. Desafortunadamente los buenos compiladores Pascal para la plataforma Windows son escasos y su uso ha decaido en creación de software profesional en favor de lenguajes con otras caracteristicas como Java o C++.
Aun asi, esta implementación me resultó atractiva tanto por la riqueza del IDE (ambiente de desarrollo), la enorme cantidad de librerías de soporte tanto de dispositivos como de algoritmos y el extenso soporte al proceso de debug del software.
Rápidamente estuve en condiciones de comprender las particularidades del ambiente (como configurar el PIC target básicamente), encontrando que tiene una integración muy natural con assembler pudiendose escribir con facilidad largos segmentos de assembler "inline" pero referenciando a las mismas variables y procedimientos utilizados también por Pascal. Se puede, mediante directivas de compilación, tener un gran control de la utilización de memoria y tiene un soporte muy natural para las interrupciones.
Entonces es relativamente facil escribir el código que realmente necesita ser eficiente en assembler al mismo tiempo que el que depende de librerías (matemática, manejo de cadenas, etc) en Pascal pudiendo crear programas bastante complejos en la exigua plataforma de solo 1K de memoria flash del 12F675.
Si bien el compilador cuesta USD 199.-, lo que para este tipo de herramientas no es un disparate, me encontré con el bonus que la versión free tiene la totalidad de las bibliotecas y funciones y la única limitación es que no puede generar código de mas de 1K de longitud; no es un problema ciertamente significativo para la plataforma 12F675 que tiene, justamente, solo 1K de memoria (!!!). Por supuesto que se puede usar para cualquier otro PIC, pero el limite de memoria puede crear problemas en los chips de mayor capacidad.
Respecto al controlador de rotor de antena, sigo trabajando en el y compartiré su diseño cuando logre hacerlo andar, para lo que falta aún algún tiempo.
No hay comentarios:
Publicar un comentario