Test de Compiladores para microcontroladores PIC de gama media

La idea de realizar esta prueba a los compiladores más conocidos para microcontroladores PIC de gama media surgió hace unos meses, en el grupo de facebook Electrónica y Microcontroladores, ante la curiosidad por comprobar si el compilador experimental PicPas era tan eficiente como suponíamos. Entendiéndose como más eficaz, el que consiga un tamaño del ejecutable menor y usar menos memoria RAM del microcontrolador.

Cuanto mayor sea esta eficacia del compilador, más sencillo y económico será el microcontrolador necesario para ejecutar el código generado.

Para poder comparar la eficiencia de los distintos compiladores (comerciales y gratuitos) a los que teníamos acceso, se utilizó un código que podríamos denominar «patrón de medida«, mucho más complejo que el usado para manejar la típica secuencia de encendido y apagado de uno o varios diodos LED que a modo de demostración suelen utilizar todos los compiladores.

El programa (patrón de medida) se debe traducir de la manera más literal posible a cada uno de los lenguajes de programación (C, Pascal, BASIC) y los «dialectos» o particularidades específicas de cada compilador, de manera que no influya en la prueba el tipo de algoritmo más o menos eficaz, o la genialidad del programador para codificarlo en un determinado lenguaje. Por eso se trata de un «programa patrón de medida«, y es el compilador evaluado el que deberá, automáticamente, generar el código ejecutable más optimizado o que menos recursos del microcontrolador requiera.

Sigue leyendo

Aprende ensamblador ARM de manera sencilla y VisUAL

Aprender, o al menos conocer, el lenguaje ensamblaje es muy importante si se desea tener una idea muy clara de cómo funciona realmente cualquier sistema informático o de control electrónico programable. VisUAL es un emulador muy indicado para aprender, de una manera muy práctica y sencilla, el lenguaje ensamblador de CPUs diseñadas con arquitectura ARM.

Además de admitir un gran subconjunto de instrucciones ARM, la CPU se emula a través de una serie de animaciones que ayudan a visualizar el flujo de datos en el microprocesador o microcontrolador emulado, incluyendo animaciones muy útiles para comprender algunas de las instrucciones más difíciles de entender, como los cambios y la manipulación de la pila de datos.

Al estar diseñado específicamente para utilizarse como herramienta de enseñanza en el Imperial College London, su Interface Gráfica de Usuario (GUI) es muy amigable, se destacan claramente todos los errores de sintaxis y se muestran ejemplos de la sintaxis correcta.

GUI probando una simple instrucción ADD con dos números.

Además, cuenta con todo aquello que se puede esperar de un emulador, como la ejecución paso a paso de instrucciones, visualización de datos o registros en diferentes ventanas, establecer puntos de interrupción, etc. Incluso advierte de la ejecución de posibles bucles infinitos.

En resumen, una excelente herramienta si deseas iniciarte en el fantástico mundo de los microcontroladores ARM.

 

Objetivos cumplidos durante este año. Objetivos para el nuevo año 2018

Durante este año 2107 que acaba, creo que aprobé una asignatura que tenía pendiente desde hacía muchos años, más que nada por falta de tiempo, y era la de programar microcontroladores PIC. Le di un buen repaso, y lo cierto es que me resultó muy sencillo hacerlo en ensamblador. Especialmente me gusto aprender a programar en ensamblador funciones básicas con números de 32 o más bits, como sumas, restas, división, multiplicación, funciones trigonométricas, etc. Todo en lenguaje ensamblador, lo que te hace entender el funcionamiento al nivel más bajo de cualquier microprocesador o microcontrolador. Programarlos en lenguajes C, BASIC y Pascal fue muy sencillo, y lo cierto es que, en ese sentido, aunque con sus particularidades, prácticamente todos los micros se programan de manera muy similar, por lo que entendido lo básico, en lenguaje de alto nivel, pasar de programar un micro a otro diferente tiene poco misterio.

Para el año 2018 mi objetivo es, sin abandonar los microcontroladores PIC y AVR, volver a usar núcleos 8051, ahora actualizados y libres de licencia, y empezar a programar los licenciados con arquitectura ARM. En ambos casos, buscando que no sean propiedad de un solo fabricante.

Objetivo 1: Probar microcontroladores avanzados basados en núcleos 8051. En su día me consideré un especialista en la programación del 8051 clásico de Intel y los primeros AT de Atmel. Nada más emocionante e inconfesable que participar en la programación de aquellas primeras tarjetas FunCard que decodificaban señales de TV por satélite de canales de pago. Pero ahora que la licencia de uso de los núcleos 8051 es libre y gratuita (cualquier fabricante los puede integrar en sus dispositivos, sintetizarlos en FPGA, modificarlos o mejorarlos sin pagar ningún tipo de licencia a Intel), encuentras núcleos 8051 integrados en sistemas muy complejos y microcontroladores que multiplican por 40 la velocidad de los 8051 originales. Quiero probar qué se puede hacer con ellos, y por qué se siguen usando a nivel profesional aunque no cuenten con el apoyo «publicitario» de otros micros de uso más extendidos actualmente entre el gran público.

Objetivo 2: Empezar con los microcontroladores ARM usando el STM32.

FELIZ y PROSPERO 2018!

 

Resistencias Pull Up y Pull Down en Circuitos Digitales

Las resistencias denominadas Pull up y Pull down, muy empleadas en circuitos electrónicos digitales, no son ningún tipo de resistencia o componente electrónico especial por su construcción, se trata de resistencias comunes que reciben este nombre por su cometido dentro del circuito. Estos nombres son una forma de referirse a ellas de manera corta, a lo que tan aficionado es el mundo técnico y especialmente si se habla en inglés.

¿Qué son las resistencias Pull Up?

Las resistencias Pull-up son utilizadas en circuitos digitales para asegurar en cualquier circunstancia un nivel lógico seguro y definido en una determinada entrada o pin digital. Cabe recordar que en electrónica digital existen tres estados lógicos:

  • Alto (High): Representa la presencia de voltaje eléctrico, también llamado Uno Lógico.
  • Bajo (Low): Representa la ausencia de voltaje eléctrico, también llamado Cero Lógico.
  • Flotante (Floating): Estado de Alta Impedancia (Hi-Z). Desconectado del resto del circuito electrónico.

Sigue leyendo

Arduino Programming Notebook (Edición española) – Brian W. Evans

Añado este libro de distribución gratuita a la modesta Biblioteca de TallerElectronica.com, considerándolo el primer manual de contacto de cualquiera que, sin conocimientos previos, desee iniciarse en el maravilloso mundo de la programación de dispositivos electrónicos usando placas de desarrollo rápido tipo Arduino.

El propósito del autor de este libro fue crear un pequeño manual de consulta rápida sobre los comandos básicos y la sintaxis del lenguaje de programación de Arduino. Para entrar en los contenidos con mayor profundidad se pueden consultar otras páginas web, libros o cursos. Esta decisión hizo que quedaran fuera de su contenido tipos de datos complejos como los arrays o modos avanzados de comunicación serie.

Comenzando con la estructura básica del lenguaje C del que deriva la programación de Arduino, este libro de notas continua con la descripción de los comandos más usuales e ilustra su uso con ejemplos de código.

Arduino_Programing_Notebook_ESDescarga: https://mega.nz/#!n8ImBTAQ!NNX3BgQu

Controlar grandes cargas eléctricas con Arduino

Un modo sencillo de controlar grandes cargas eléctricas con Arduino (o, en general, con cualquier sistema electrónico digital) es mediante el uso de transistores MOSFET.

Veamosló con un ejemplo práctico: Esta sería una forma sencilla de controlar un motor de corriente continua mediante el uso del transistor TIP120, capaz de soportar tensiones de hasta 60 Voltios y corrientes de hasta 5 Amperios.

tip120_dc.png

Del mismo modo, en lugar del motor, se podría haber conectado un relé (relevador) o un contactor de potencia, capaces de controlar cualquier tipo de cargar eléctrica aplicando una pequeña corriente eléctrica a su bobina de activación.

La resistencia de 2.2 KΩ, limita la corriente de la salida digital a algo menos de 2 mA., valor seguro para la placa Arduino, y suficiente para poner en modo conducción el transistor. El diodo (1N4007) conectado entre los bornes del motor, protege al transistor de sobretensiones transitorias producidas durante los cortes bruscos de alimentación eléctrica en cargas inductivas (motores, relés, contactores, y en general, cualquier carga que conste básicamente de un inductor o bobina).

Un ejemplo sencillo de programa para controlar esta carga con la placa Arduino sería:

int TIP120Pin = 9;
void setup()
{
    pinMode(TIP120Pin, OUTPUT);      // Configura puerto como salida.
}

void loop()
{
    digitalWrite(TIP120Pin, HIGH);   // Activa salida.
    delay (5000);                    // Espera durante 5 segundos.
    digitalWrite(TIP120Pin, LOW);    // Deactiva salida.
    delay (5000);                    // Espera durante 5 segundos.
}

En el ejemplo práctico que estamos usando, el motor está controlado por una salida digital del tipo PWM, por lo que además contamos con la posibilidad de variar su velocidad de rotación de un modo tan sencillo como este:

int TIP120Pin = 9;
void setup()
{
    pinMode(TIP120Pin, OUTPUT);      // Configura puerto como salida.
}

void loop()
{
    analogWrite(TIP120Pin, 255);     // Ponemos el motor al 100%
    delay (5000);                    // Espera durante 5 segundos.
    analogWrite(TIP120Pin, 175);     // Reducimos la velociadad del motor.
    delay (5000);                    // Espera durante 5 segundos.
    analogWrite(TIP120Pin, 0);       // Paramos el motor.
    delay (5000);                    // Espera durante 5 segundos.
}

Guía de uso del Algoritmo de Control PID en Arduino

El algoritmo PID (Proporcional Integral Derivativo), es un elemento ampliamente utilizado en Sistemas Autómaticos de Control, cobrando especial importancia en las funciones de realimentación para la corrección de errores o desviación entre el valor medido y el deseado. Además, su uso y correcto ajuste, da lugar a que la respuesta del sistema sea mucho más suave y rápida ante fluctuaciones originadas por los cambios en las condiciones externas que modifican el valor a controlar.

En la siguiente guía se explica su uso práctico utilizando la placa electrónica de desarrollo Arduino.

Guia-de-uso-PID-para-Arduino-OpenLibra-350x459Descarga: https://mega.nz/#!SlpTQL7Q

Aprende a programar microcontroladores en Lenguaje C / C++

La evolución de la electrónica con microcontroladores está haciendo de ellos auténticas computadoras integradas en las que ya no es completamente necesario programar en lenguaje ensamblador para conseguir unos resultados óptimos.

Aunque podemos encontrar distintas soluciones para programar microcontroladores en lenguajes de alto nivel como Pascal, Basic, Prolog, Ada, etc., con el que se pueden programar la inmensa mayoría de microcontroladores es con el lenguaje C, que en algunas ocasiones se ha personalizado para añadir características de manejo de Objetos propios de C++. Un claro ejemplo es la implementación del lenguaje C de las placas Arduino con microcontroladores AVR.

Por lo tanto, hoy en día si deseas programar de manera efectiva y rápida cualquier microcontrolador independientemente de su fabricante o lenguaje ensamblador propio, se hace imprescindible conocer el lenguaje de programación C en general, y más tarde sus particularidades a la hora de programar un determinado microcontrolador, o las particularidades de la herramienta (compilador) con la que programas en lenguaje C ese microcontrolador.

Para iniciarse en la programación C de microcontroladores recomiendo los siguiente libros, completamente gratuitos y de difusión libre. El primero sienta las bases para conocer el lenguaje C estándar. El ANSI C aplicable a cualquier compilador de lenguaje C independiente del sistema en el que vaya a correr el programa. Desde un microcontrolador de 8 bit, hasta una supercomputadora de IBM, las reglas y normas de programación son las mismas y los programas escritos en ANSI C compatibles a nivel de software.

Y el segundo, también de aplicación general, pero un poco más específico para el uso de microcontroladores, ya que trata el manejo de variables a nivel de bits y el uso de macros.

AprendaICEl conocimiento y uso de los conceptos tratados en estos dos libros te abrirá las puertas a la programación básica de cualquier microcontrolador, con prácticamente independencia de su modelo y fabricante.

Sigue leyendo

Introducción básica al uso de microcontroladores

En los siguientes dos videos Edwin Espinosa nos introduce de manera breve y muy clara en el mundo de los microcontroladores y en el uso de una de las familias más extendidas, los PIC (Peripheral Interface Controller) del fabricante Microchip Technology Inc.