domingo, 24 de junio de 2012

Como programar un PICAXE

Los chips PICAXE se programan utilizando un lenguaje muy simple y fácil de aprender. Se trata del lenguaje de programación BASIC pero está orientado a los PICAXE

Este lenguaje está diseñado para permitir a los usuarios sin ninguna experiencia en programación formal, desarrollar programas de forma rápida y sencilla

PICAXE BASIC es mucho más sencillo de aprender (y de 'depurar') que los lenguajes de programación tradicionales como el ensamblador o 'C'. El software de programación BASIC es totalmente gratuito y está disponible para Windows, Mac y Linux.

El software Programming Editor también incluye una herramienta muy útil en la pantalla el modo de simulación, donde los programas pueden ser probados antes de descargarlos en el chip.

Se puede programar el chip PICAXE de dos formas:
  • Con un código fuente
  • Con diagramas de flujo
Para programar con código fuente directamente, ahora puedes utilizar el Picaxe Editor que tiene una interfaz más amigable y con un poco más de información. Además esta el Programming Editor o el AXEpad, para programar con diagramas de flujo puedes usar el Picaxe Editor, el Programming Editor o el Logicator for PICAXE. Además existen otros diferentes y útiles programas, que puedes revisar en la sección de software de la página de PICAXE.

Comandos Básicos


Como en todo lenguaje de programación, existen palabras reservadas que tienen una función definida, y una sintaxis predeterminada. Algunos comandos básicos se muestran en la siguiente lista, en la página de PICAXE está la lista completa de comandos básicos y una breve descripción de su función.

Entrada o Salida Digital
  • high    
  • low      
  • sound
  • play
  • if pin
  • count
  • input
  • output
Entrada o Salida Analógica
  • touch
  • readadc
  • readtemp
  • readdac
Tiempos de retardo
  • pause
  • sleep
  • wait
Programa de Control de Flujo
  • goto
  • for
  • next
  • do
  • if
  • else
  • select
  • case
  • exit
Variables
  • symbol
  • let
  • inc
  • dec
  • bcdtoascii
  • bintoascii
  • random

Sintaxis

Como en todos los lenguajes de programación, se debe escribir sin ninguna falta de ortografía, de lo contrario el compilador nos mostrará error y no se podrá descargar el programa al chip. Por otro lado también se debe tener cuidado con los errores lógicos por que a diferencia de los errores de sintaxis, éstos no pueden ser detectados por el compilador y por lo tanto se pueden descargar al chip y no podría hacer bien lo que le indicamos.

La sintaxis definida para cada comando la puedes consultar en los manuales así como información adicional.

Variables

Las variables byte son 14 (o más) y por motivos de memoria ya están definidas, están etiquetadas como sigue: b0, b1, b2,...,b13. Estás variables pueden tomar valores enteros del 0 al 255. Las variables byte no pueden tomar valores negativos o en fracciones. Si se toman valores fuera de este rango entonces el compilador los tomará de la siguiente manera: imagínate una recta numérica que va del 0 al 255 pero que están conectados estos dos extremos, como si fuera un círculo, es decir, después del 255 sigue el 0 y antes del 0 está el 255, por ejemplo si sumamos 254 mas 3 obtendremos el número 1, o si al número 2 le restamos el 3, obtendremos el número 255 y así sucesivamente.

También hay otras variables con un rango más amplio de valores, se llaman variables word, éstas se pueden formar a partir de dos variables byte. El rango de valores es de 0 a 65535 y también toma valores enteros.

Este lenguaje también admite el uso de punteros o apuntadores de memoria, que en pocas palabras son variables que guardan la dirección de memoria de otra variable.

Hay otros tipos de variable que se pueden utilizar para cosas más complejas, claro que las pueden consultar en los manuales.

Comentarios

Los comentarios en un programa son de suma importancia, porque si no le pones comentarios, muy probablemente después de algún tiempo, se revisas tu código no le vas a entender, a pesar de que tú mismo lo escribiste.

Bueno los comentarios se agregan después de una instrucción que agrupa más instrucciones. La forma de poner los comentarios es simplemente escribiendo un apostrofe ( ' ) o un punto y coma ( ; ) y a continuación escribir el comentario, cabe señalar que un sólo apostrofe o punto y coma sirve para un sólo renglón.

Operaciones matemáticas

En el caso de querer realizar operaciones matemáticas, se utilizan las variables word por su amplio rango de valores, recordando que van desde 0 hasta 65535.


Las operaciones matemáticas se lleva a cabo estrictamente de izquierda a derecha. A diferencia de algunos equipos y calculadoras, el PICAXE no da prioridad a la multiplicación o división por encima de la suma o resta. Por ejemplo en la operación 3+4*5 se lleva a cabo primero la suma y después la multiplicación, es decir, 3+4=7 y después 7*5=35.

El microcontrolador no es compatible con fracciones o números negativos. Sin embargo a veces es posible volver a escribir las ecuaciones utilizando números enteros en lugar de fracciones, si se puede, por ejemplo, w2 / 5.7 se puede escribir como w2 * 10 / 57 matemáticamente es igual y además es válido.

Las operaciones matemáticas binarias las aceptan todos los chips, algunas se muestran en la lista siguiente, recordando que las operaciones completas con sus descripciones correspondientes las encuentras en los manuales:

  • suma
  • resta
  • división
  • multiplicación
  • AND
  • OR
  • XOR
  • NAND
  • NOR
Las operaciones matemáticas unarias sólo están disponibles para las series X1 y X2 a excepción de NOT y minus ( - ) que se pueden usar en todos los chips.

Algunas de las operaciones matemáticas unarias son las siguientes:
  • sin
  • cos
  • sqr
  • inv
  • bintobcd
  • bcdtobin
Los comandos unarios deben ser los primeros que se escriben en una línea del programa. Sin embargo pueden ser seguidos por comandos binarios, por ejemplo, sin30 + 5 es válido, pero 5 + sin30 no es válido porque el operador unario no está al incio de la línea del programa.

Diagramas de flujo

Si te es más fácil realizar el diagrama de flujo que escribir el código completo, lo puedes hacer gracias a esta nueva forma de programar. Puedes utilizar varios software, entre ellos estan: Programming Editor, Logicator for PICAXE, Flowol y Yenka PICs.

Al igual que programando con un código fuente, con diagramas de flujo puedes usar los algunos de los comandos más populares, pero no puedes usar operaciones matemáticas, por lo que dependiendo del proyecto, tú sabrás que método de programación te conviene aplicar.

Si quieres cambiar el valor que viene por defecto en los comandos, sólo tienes que seleccionar el comando y en la parte inferior izquierda hay un recuadro donde se puede cambiar el valor manualmente.

Una vez que tengan completo el organigrama, simplemente ejecutas el programa desde PICAXE<Ejecutar o en el icono de "program" hacer clic para descargar el programa al chip.

A continuación te dejo un ejemplo sencillo donde se pueden ver la sintaxis te algunos comandos y para que sirven, escritos en código fuente y en diagrama de flujo para que notes la diferencia. Este programa está escrito para un PICAXE 18M, te recuerdo que este chip está descontinuado pero todos los programas que fueron hechos para los antiguos chips, se pueden ejecutar también en los nuevos chips, siempre y cuando tengan el mismo número de pines.




El ejemplo anterior no realiza una función en especial, sólo es para ejemplificar algunas intrucciones dentro de programación.

5 comentarios:

  1. Estoy trabajando en la programación de una bomba de agua y un sensor de máximo con una placa picaxe 28x1.
    Quiero que si el sensor se queda activado todo el rato (por error) la bomba pare.
    Pero no encuentro ningún comando que lo haga.

    ResponderEliminar
    Respuestas
    1. Hola Segi Fàbrega!
      No estoy seguro si hay un comando que te ayude a detectar ese error pero si no se puede con sortware (comandos) tienes que implementar hardware (circuitos). Se me ocurre un disparador Schmitt o un temporizador que controle el sensor. De todos modos puedes revisar la lista completa de comandos en la página de picaxe, yo sólo escribí algunos comandos pero no todos. http://www.picaxe.com/Getting-Started/PICAXE-Manuals/
      Saludos!!

      Eliminar
  2. el watch dog sirve para evitar que el programa se quede colgado.

    ResponderEliminar
  3. el watch dog sirve para evitar que el programa se quede colgado.

    ResponderEliminar
  4. como seria usando los estats, por ejemplo, If estat=1...

    ResponderEliminar