Regístrate gratis para participar de los foros, o si ya estás registrado haz login.
| comentario del autor | Mar Sep 25, 2007 2:37 am |
|
Microcontroladores PICAXE
Introduccion: Bueno, les dejo un poco de información variada sobre los microcontroladores PICAXE para aquellos que no encuentren nada por ahí... y prometo tratar de actualizarlo de apoco... Indice de este Post: 1_Enlaces a paginas relacionadas con estos microcontroladores -Software - datasheet - etc (click acá) 2_Tutorial On Line de Introducción a los PICAXE (click acá) 3_Ejemplos Varios de Aplicación con estos microcontroladores (click acá) 4_Videos de un Seminario sobre los micros PICAXE (Click acá DescargasPICAXE40.jpg (29.62 KB) PICAXE28.jpg (27.29 KB) PICAXE18_X_A.gif (30.68 KB) PICAXE08.gif (4.19 KB)Ultima edición por torres.electronico el Sab Jun 28, 2008 3:46 pm, editado 8 veces |
|
| comentario del autor | Mar Oct 30, 2007 8:24 pm |
|
1_Enlaces a paginas con informacion varia sobre los microcontroladores PICAXE
"Pagina oficial" (Click acá) "Didactet" - Curso de Microcontrolador Picaxe 28 (Click acá) "Tecno Facil" - Curso de Microcontrolador Picaxe 08-18 (Click acá) "YoReparo" - Curso de Microcontrolador Picaxe 18 1era parte (Click acá) "YoReparo" - Curso de Microcontrolador Picaxe 18 2da parte (Click acá) "Software para programacion de PICAXE": "Link de Descarga gratuita del software de programacion -Crocodile Technology"
(Click acá) "Link de Descarga gratuita del software de programacion -PROGRAMING EDITOR-":
(Click acá) "Link de descarga gratuita del software de programacion -BASIC CHIMP" : (Click acá) "Link de descarga gratuita del software deLogicator for PIC® and PICAXE® micros (version 3)"
(Click acá - "Requerie estar registrado" Ultima edición por torres.electronico el Vie Jun 20, 2008 6:05 am, editado 3 veces |
|
| comentario del autor | Vie Jun 20, 2008 5:12 am |
|
Intro a los microcontroladores PICAXE
La empresa Revolution Education adquiere los pic y les graba un firmware en la memoria libre, de esta forma no necesita un programador especial para ser grabado, se puede programar por puerto serial y con protocolo rs232. Al picaxe se lo puede programar sin sacarlo del circuito, ademas viene en varias versiones de diferentes capacidades. Tambien es posible bajarse un lenguaje parecido al basic para hacer los programas de una manera bastante amigable. El sistema "PICAXE" es un sistema de microcontrolador fácil de programar que utiliza un lenguaje BASIC muy simple, el cual la mayoría de los estudiantes pueden aprender rápidamente. El sistema PICAXE explota las características únicas de la nueva generación de microcontroladores de bajo costo FLASH. Estos microcontroladores pueden ser programados una y otra vez sin la necesidad de un costoso programador PIC. El poder del sistema PICAXE radica en su sencillez. No necesita de ningún programador, borrador o complejo sistema electrónico - el microcontrolador es programado (con un simple programa en BASIC o un diagrama de flujo) mediante una conexión de tres alambres conectada al puerto serie del ordenador. El circuito operacional PICAXE utiliza únicamente tres componentes y puede ser ensamblado fácilmente en un tablero experimental para componentes electrónicos, en una placa corriente o en una placa PCB. EL sistema PICAXE está disponible en dos variedades - 18 pines y 28 pines. El controlador PICAXE-28 provee 22 pines de entrada/salida (8 salidas digitales, 8 entradas digitales y 4 entradas analógicas). El sistema PICAXE-18 provee 8 salidas y 5 entradas. Las características principales del sistema PICAXE son las siguientes: · bajo costo, circuito de fácil construcción · hasta 8 entradas, 8 salidas y 4 canales analógicos · rápida operación de descarga mediante el cable serial · Software "Editor de Programación" gratuito y de fácil uso · lenguaje BASIC simple y fácil de aprender · editor de diagramas de flujo incluido · puede ser programado también mediante el software "Crocodile Technology" · extenso número de manuales gratuitos y foro de apoyo en línea · tablero experimental tutorial y tutoriales incluidos · paquete de control remoto infrarrojo disponible · paquete de servocontrolador disponible ANEXO1: Comandos BASIC PICAXE para programacion: COMENTARIOS Usar comentarios. Aunque sea perfectamente obvio para ti, lo que estás escribiendo, alguien más puede leerlo (o tu mismo más tarde) y puede no tener idea de lo que habías hecho. Aunque los comentarios usan espacio en el archivo fuente, no lo hacen en el PICAXE. Haz que los comentarios te digan algo útil acerca de lo que el programa está haciendo. Un comentario como “poner a 1 el pin 0” simplemente explica la sintaxis del lenguaje, pero no te dice nada acerca de la necesidad de hacerlo. “Encender el LED de alarma” puede ser más útil. Un bloque de comentarios en el comienzo del programa y antes de cada sección de código puede describir que sucederá con más detalle que un simple espacio después de cada línea. No incluyas un bloque de comentarios en lugar de comentarios individuales de línea. Usar ámbos. En el comienzo del programa que hará el programa, autor y fecha. Puede ser útil para listar informaciones de revisión y fechas. Especificar las conexiones de cada pin puede ser útil para recordar para que equipo en especial se programó. Los comentarios comienzan con un apóstrofe (‘) o punto y coma ( Ejemplo: high 0 ‘poner pin0 a nivel alto high0 ;poner pin0 a nivel alto Rem poner pin0 a nivel alto SIMBOLOS Los símbolos nemotécnicos son palabras clave que identifican constantes, variables y direcciones de programa. La asignación del símbolo se realiza poniendo el nombre del símbolo seguido del símbolo igual (=) y posteriormente la variable o constante. Los símbolos pueden ser cualquier palabra que no sea la relativa a un comando. Los símbolos pueden contener carácteres numéricos (e.j.: flash1, flash2, etc.) Pero el primer carácter no puede ser uno numérico (e.j.: 1flash) El uso de símbolos no aumentan la longitud del programa. Las direcciones de programa son asignadas siguiendo el símbolo con dos puntos ( Ejemplos: symbol Led_Rojo = 7 ‘define Led-Rojo como una constante 7 symbol Contador = B0 ‘define Contador como una variable B0 let Contador = 200 ‘precarga de la variable Contador con el valor 200 inicio: ‘define una dirección de programa high Led_Rojo ‘pone a nivel alto “1” la salida 7 pause Contador ‘espera de 0,2 segundos low Led_Rojo ‘pone a nivel bajo “0” la salida 7 pause Counter ‘espera de 0,2 segundos goto inicio ‘salta hasta la dirección indicada en inicio CONSTANTES Las llamadas constantes pueden ser creadas de manera similar a las variables. Puede ser más conveniente usar un nombre de constante en lugar de un número constante. Si el número necesita ser cambiado, únicamente puede ser cambiado en un lugar del programa donde se define la constante. No pueden guardarse datos variables dentro de una constante. Las constantes declaradas pueden ser de cuatro tipos: decimal, hexadecimal, binario y ASCII. Los números decimales se escriben directamente sin ningún prefijo. Los números hexadecimales se preceden del símbolo dólar (&). Los números binarios de preceden del símbolo tanto por ciento (%). Los valores ASCII se colocan tre comilla (“…”). Ejemplos: 100 ‘ número 100 en decimal &64 ‘ número 64 en hexadecimal %01100110 ‘ número binario: 01100110 “A” ‘ letra “A” en código ASCII (65) “Hello” ‘ ”Hello” equivalente a “H”, “e”, “l”, “l”, “o” B1 = B0 ^ $AA ‘ operación XOR entre la variable B0 com AA en hex VARIABLES Tipos según sistema: A continuación se indican las variables que se aplican a cada modelo de programación: · PICAXE es usado al programar módulos PICAXE. · El BASIC y Extended son usados al programar módulos Stamp. · El ensamblador es el utilizado con código de ensamblador. PICAXE El sistema PICAXE da soporte a las siguientes variables: Words: W0, W1, W2, W3, W4, W5, W6 Bytes: DIRS, PINS (solo PICAXE-0 B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13 Bits: PIN0, PIN1, PIN2, PIN3, PIN4, PIN5, PIN6, PIN7 (conjuntamente igual PINS) BIT0, BIT1, BIT2, BIT3, BIT4, BIT4, BIT5, BIT6, BIT7 (conjuntamente igual B0) BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15 (conjuntamente igual B1) In/Out añade los pseudo nombres: INPUT0, INPUT1, etc. puede usarse en lugar de PIN0, PIN1, tec. OUTPUT0, OUTPUT1, etc. puede usarse en lugar de 0, 1, 2, etc. BASIC El modo BASIC da soporte a las siguientes variables: Words: PORT W0, W1, W2, W3, W4, W5, W6 Bytes: DIRS, PINS B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13 Bits: DIR0, DIR1, DIR2, DIR3, DIR4, DIR5, DIR6, DIR7 (conjuntamente igual DIRS) BIT0, BIT1, BIT2, BIT3, BIT4, BIT4, BIT5, BIT6, BIT7 (conjuntamente igual B0) BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15 (conjuntamente igual B1) Nota: B12 y B13 (W6) es usado dentro de las órdenes GOSUB como una pila. Por consiguiente no debería utilizarse como un registro de propósito general. EXTENDED El modo extendido da soporte a todas las variables de BASIC. Además: INPUT0, INPUT1, etc . puede usarse en lugar de pin0, pin1 etcétera. OUTPUT0, OUTPUT1, etc . puede usarse en lugar de 0, 1, 2 etcétera. Nota: B12 y B13 (W6) es usado dentro de las órdenes GOSUB como una pila. Por consiguiente no debería utilizarse como un registro de propósito general. ENSAMBLADOR El modo ensamblador soporta los mismos modelos de variables que el modo extendido. RESUMEN DE COMANDOS (A-0) Sistemas: La siguiente tabla muestra los comandos que se aplican a los siguientes sistemas: · El BASIC y Extended se usan al programar módulos Stamp. · El PIC16F84A se usan al hacer un download directamente en un PIC16F84A PIC16F627 · PICAXE se usa al programar módulos PICAXE
RESUMEN DE COMANDOS (P-Z) Sistemas: La siguiente tabla muestra los comandos que se aplican a los siguientes sistemas: · El BASIC y Extended se usan al programar módulos Stamp. · El PIC16F84A se usan al hacer un download directamente en un PIC16F84A PIC16F627 · PICAXE se usa al programar módulos PICAXE
BACKWARD BACKWARD motor, Hace que el motor conectado a la salida cambie de giro Motor: puede tomar el valor motor A o motor B Nota: salidas 4, 5 (A) y salidas 6, 7 (B) Ejemplo: inicio: forward A ‘motor A en marcha wait 5 ‘espera 5 segundos backward A ‘motor A cambio de giro wait 5 ‘espera 5 segundos halt A ‘motor A parado wait 5 ‘espera 5 segundos goto inicio ‘salto a inicio BRANCH BRANCH offset,(dirección0, dirección1….direcciónN) Causa que el programa salte a una posición diferente, basada en una variable indexada. Es similar al ON…GOTO de otros BASIC. La etiqueta que especifica la dirección, debe estar en la misma página de código que la instrucción BRANCH. - offset: es una variable/constante que especifica que dirección usar (0, 1…n) - direcciones: son etiquetas que especifican donde ir Ejemplo: rest: let infra = 0 ‘resetear la variable infra inicio: if infra > 0 then test goto inicio ‘salta a test si la variable infra es > 0 si no vuelta a inicio test: branch infra, (btn0,btn1,btn2,btn3) goto rest ‘ramifica a rutinas indicadas (btn0..btn3) si no ‘resetea saltando a rest btn0: etc. btn1: etc. btn2: etc. btn3: etc. BUTTON BUTTON Pin, Down, Delay, Rate, Bvar, Action, Etiqueta lee Pin y opcionalmente ejecuta anti-rebote y autoprotección. Pin automáticamente se toma como entrada. Pin debe ser una constante entre 0-15 o una variable que contenga un número entre 0-15 (p.ej. B0) ó un número de pin (p.ej. PORTA,0) - Down: estado del pin cuando se oprime el pulsador (0..1) - Delay: contador de ciclos antes de que comience la auto-repetición (0..255). Si es 0, no se efectua anti-rebote ni auto-repetición. Si es 255 se eliminan rebotes, pero no auto-repitición - Rate: valor de auto-repetición (0..255) - Bvar: variable con tamaño de byte usada internamente para conteo de demoras y repeticiones. Debe ser inicializada a 0 antes de ser usada y no ser usada en cualquier lugar del programa - Action: estado del pulsador al ser actuado - Etiqueta: la ejecución comienza en esta etiqueta si es cierto Action Ejemplo: inicio: button 0,0,200,100,b2,0,cont ‘salta a cont a menos que pin0 = 0 toggle 1 ‘cambia el estado del pin1 cont: COUNT COUNT Pin, Period, Var Cuenta el número de pulsos en un Pin, durante un período Period, y guada el resultado en Var. Pin - Pin: debe ser una constante (0..7) ó una variable que contenga un número de 0 a 15 (p.ej. B0) ó un numero de pin - Period: valor numérico (0..65535) en ms - Variable: variable tipo word, recibe el valor del conteo (0..65535) Chequea el estado de Pin mediante un bucle y cuenta las transiciones de bajo a alto. Con un oscilador de 4 MHz chequea el estado del pin cada 20 μs. Con un oscilador de 20MHz chequea el estado cada 4 μs. De esto, se deduce que la mayor frecuencia de pulsos que puede ser contada es de 25 KHz con un oscilador de 4 MHz y de 125KHz con un oscilador de 20 MHz si la frecuencia tiene un ciclo útil del 50% (los tiempos altos son iguales a los bajos). Ejemplo: inicio: count 1, 500, w1 ‘cuenta los pulsos del pin1 en 5 segundos debug w1 ‘viasualiza los valores goto inicio ‘salta a inicio (bucle) DEBUG DEBUG Var Visualiza la información contenida en la variable Var en la ventana del depurador durante la ejecución. - Var: variable con un valor previamente cargado Ejemplo: inicio: debug b1 ‘visualiza el valor de b1 let b1 = b1+1 ‘incrementa el valor de b1 en una unidad pause 500 ‘espera de 0,5 segundos goto inicio ‘salta a inicio (bucle) EEPROM EEPROM {location},(data,data,…) Guarda constantes en un chip EEPROM. Si se omite el valor opcional Location, la primera declaración se guarda en la dirección 0 de la EEPROM y las subsiguientes en las siguientes direcciones del mismo. Si se indica un valor Location, éste indica la dirección de comienzo para guardar los datos.. - Location: es una constante numérica (0..255) que especifica donde empezar a almacenar los datos en la EEPROM. Si no existe una posición indicada el almacenamiento continúa a partir del último dato introducido. Si inicialmente no se especificó ninguna posición el almacenamiento comienza en la 0. - Data: son constantes (0..255) que se almacenan en la EEPROM. EEPROM solo trabaja con microcontroladores con EEPROM incorporado como el PIC16F84 y PIC16C84 , PICAXE-18A, 28, 28A, 28X. Dado que la EEPROM es una memoria no volátil, los datos permanecerán intactos aún sin alimentación. Los datos se guardan en la EEPROM solo una vez, cuando el microcontrolador es programado, no cada vez que se ejecuta el programa. Se puede usar WRITE para colocar valores en la EEPROM en el momento de la ejecucuión. Ejemplo: EEPROM 5, (10,20,30) ‘guarda 10, 20, 30 a partir de la dirección 5 EEPROM 0, (“Hello Word”) ‘guarda el valor ASCII END End Detiene la ejecución del proceso y entra en modo de bajo consume. Todos los pins de I/O permanecen en el estado en que se encuentran. END trabaja ejecutando una instrucción SLEEP continua dentro de un bucle. Un END, STOP ó GOTO deben ser colocados al final de un programa para evitar pasar del límite de la misma u comience nuevamente. Ejemplo: inicio: let b2 = 15 ‘set b2 con valor 15 pause 2000 ‘espera de 2 segundos gosub flash ‘salta al procedimiento flash let b2 = 5 ‘set b2 con valor 5 pause 2000 ‘espera de 2 segundos gosub flash ‘salta al procedimiento flash end flash: for b0 = 1 to b2 ‘define el bucle con el valor b2 high 1 ‘salida 1 a nivel alto pause 500 ‘espera de 0,5 segundos low 1 ‘salida 1 a nivel bajo pause 500 ‘espera de 0,5 segundos next b0 ‘fin de bucle return ‘retorno a linea siguiente de la llamada FOR...NEXT FOR contador = start TO end {STEP {-} inc} {body} El bucle FOR … NEXT permite a los programas ejecutar un número de declaraciones {body} un número de veces, usando una variable como contador. Debido a su complejidad y versatilidad, es mejor describirla paso a paso. El valor de start se asigna a la variable índice: count, que puede ser una variable de cualquier tipo. Se ejecuta las instrucciones de body. Body es opcional y puede ser omitido (quizás por un bucle de demora). El valor de inc es sumado a (ó restado si se especifica “-“) count. Si no se define un valor steep, se incrementa count en una unidad. Si count no pasó end ó desbordó el tipo de variable, la ejecución vuelve al paso 2. Si el bucle necesita contar más de 255 (count > 255), se debe usar una variable de tamaño Word. Ejemplo: bucle: for b0 = 1 to 20 ‘define el bucle con repetición de 1 a 20 high 1 ‘salida 1 a nivel alto pause 500 ‘espera de 0,5 segundos low 1 ‘salida 1 a nivel bajo pause 500 ‘espera de 0,5 segundos next b0 ‘fin de bucle pause 2000 ‘espera de 2 segundos goto bucle ‘salta a bucle para comienzo de nuevo FORWARD FORWARD motor Arranca motor hacia delante - Motor: puede tomar el valor motor A o motor B Nota: salidas 4, 5 (A) y salidas 6, 7 (B) Ejemplo: inicio: forward A ‘motor A en marcha wait 5 ‘espera 5 segundos backward A ‘motor A cambio de giro wait 5 ‘espera 5 segundos halt A ‘motor A parado wait 5 ‘espera 5 segundos goto inicio ‘salto a inicio GOSUB GOSUB etiqueta Salta a la subrutina indicada en etiqueta, guardando su dirección de regreso en la pila (snack). A diferencia del GOTO, cuando se llega a un RETURN, la ejecución sigue con la declaración siguiente al último GOSUB ejecutado. Se puede usar un número ilimitado de subrutinas en un programa y pueden estar anidadas. En otras palabras, las subrutinas pueden llamar a otra subrutina. Cada anidamiento no debe ser mayor de cuatro niveles. Ejemplo: inicio: let b2 = 15 ‘set b2 con valor 15 pause 2000 ‘espera de 2 segundos gosub flash ‘salta al procedimiento flash let b2 = 5 ‘set b2 con valor 5 pause 2000 ‘espera de 2 segundos gosub flash ‘salta al procedimiento flash end flash: for b0 = 1 to b2 ‘define el bucle con el valor b2 high 1 ‘salida 1 a nivel alto pause 500 ‘espera de 0,5 segundos low 1 ‘salida 1 a nivel bajo pause 500 ‘espera de 0,5 segundos next b0 ‘fin de bucle return ‘retorno a linea siguiente de la llamada GOTO GOTO etiqueta La ejecución del programa continua en la declaración de la etiqueta. Ejemplo: inicio: high 1 ‘salida 1 a nivel alto pause 5000 ‘espera de 5 segundos low 1 ‘salida 1 a nivel bajo pause 5000 ‘espera de 5 segundos goto inicio ‘salta a inicio HALT HALT motor Para el motor indicado Motor: puede tomar el valor motor A o motor B Nota: salidas 4, 5 (A) y salidas 6, 7 (B) Ejemplo: inicio: forward A ‘motor A en marcha wait 5 ‘espera 5 segundos backward A ‘motor A cambio de giro wait 5 ‘espera 5 segundos halt A ‘motor A parado wait 5 ‘espera 5 segundos goto inicio ‘salto a inicio HIGH HIGH pin Pone a nivel alto el pin especificado y lo convierte automáticamente en salida. Pin puede ser una constante, 0 – 7, ó una variable que contenga un número de 0 – 7 (p. ej. B0) ó un número de pin (p. ej. PORTA.0) Ejemplo: bucle: high 1 ‘pone salida 1 a nivel alto pause 5000 ‘espera de 5 segundos low 1 ‘pone la salida 1 a nivel bajo pause 5000 ‘espera de 5 segundos goto bucle ‘salta a comienzo de bucle repetitivo i2cslave I2CSLAVE esclavo, velocidad, dirección El comando i2cslave se utiliza para configurar los pines del PICAXE y definir el tipo de i2c. Si se utiliza únicamente un dispositivo i2c, entonces generalmente solo se necesita una orden i2cslave dentro del programa. Esclavo: es la dirección del esclavo i2c. Velocidad: marca la velocidad de transmisión. I2cfast: 400KHz o I2cslow: 100KHz. Dirección: es el i2cbyte o i2sword que indica la dirección a partir de la cual se guardará la información. Después de que se utilice el comando i2cslave, se pueden utilizar los comandos readi2c y writei2c para acceder al dispositivo i2c. Se pueden utilizar para leer y grabar datos de una EEPROM serie usando un interface i2c de 2 hilos, como la 24LC01B ó similar. Esto permite guardar datos en una memoria externa no volátil, para que sean mantenidos aún sin conexión de alimentación. Tambie´n se utilizan para poder comunicarse con otros dispositivoscon interface i2c, como sensores de temperatura y convertidores A/D. Dirección esclavo La dirección del esclavo cambia para dispositivos diferentes del i2c. Para las EEPROM del tipo 24LCxx la dirección es %1010xxxx. Velocidad La velocidad del bus i2c se selecciona a través de los comandos i2cfast para velocidad de 400KHz y i2cslow para 100 KHz. Dirección control Los 7 bits superiores del byte de control contienen el código de control junto con la selección del chip e información adicional de dirección, dependiendo de cada dispositivo. El bit inferior es una bandera interna que indica si es un comando de lectura ó escritura y no se debe usar. Por ejemplo, cuando comunicamos con un 24LC01B, el código de control es %1010 y no se usa la selección de chip, por lo que el byte de control será %10100000 ó $A0. Algunos formatos de control se pueden ver en la siguiente tabla:
El tamaño de dirección enviado (byte o Word) viene determinado por el tamaño de la variable usada. Si se usa una variable con tamaño byte se envía una dirección de 8 bits. Si se envía una variable de tamaño Word, se envía una dirección de 16 bits. Asegurarse de utilizar una variable apropiada al dispositivo a comunicar.
if…then if…and…then if…or…then IF variable ?? valor {AND/OR variable ?? valor …} THEN etiqueta Estructura de comparación condicional con salto a una dirección determinada (etiqueta) en caso de que se cumpla. ??: condicional =, <>, >=, <=, >, < Variable: valor de la comparación Valor: variable constante Etiqueta: dirección del salto en caso de cumplir el condicional Efectúa una o más comparaciones. Cada término variable puede relacionar un valor con una constante ú otra variable e incluye uno de los operadores listados anteriormente. IF…THEN evalúa la comparación en términos de CIERTO o FALSO. Si lo considera cierto, se ejecuta la operación posterior al THEN. Si lo considera falso, no se ejecuta la operación posterior al THEN. Las comparaciones que dan 0 se consideran falso. Cualquier otro valor es cierto. Ejemplo: inicio: if pin0 = 1 then flash ‘salta a flash si el valor del pin0 es un 1 goto inicio ‘sino salta a inicio flash: high 1 ‘pone a valor alto la salida 1 pause 5000 ‘espera de 5 segundos low 1 ‘pone a valor bajo la salida 1 goto inicio ‘salto a inicio INFRAIN Espera hasta que una señal de infrarrojos sea recibida. Este comando se utiliza para esperar una señal infrarrojo nueva procedente del transmisor de infrarrojos (utiliza el protocolo de Sony). El programa se detiene hasta que reciba la señal infrarroja. El valor de la orden recibida se almacena en la variable predefinida “infra”. Ejemplo: Inicio: infrain ‘espera una nueva señal infrarroja if infra = 1 then swon1 ‘si el valor de infra es 1 salta a swon1 if infra = 2 then swon2 ‘si el valor de infra es 1 salta a swon2 if infra = 3 then swon3 ‘si el valor de infra es 1 salta a swon3 if infra = 4 then swoff1 ‘si el valor de infra es 1 salta a swoff1 if infra = 5 then swoff2 ‘si el valor de infra es 1 salta a swoff2 if infra = 6 then swoff3 ‘si el valor de infra es 1 salta a swoff3 goto inicio swon1: high 1 goto inicio swon2: high 2 goto inicio swon3: high 3 goto inicio swoff1: low1 goto inicio swoff2: low2 goto inicio swoff3: low3 goto inicio INPUT Convierte el Pin especificado en una entrada. Pin debe ser una constante entre 0–7, o una variable que contenga un número 0-7 (p. ej.: B0) o el nombre de un pin (p. ej.: PORTA.0) Ejemplo: inicio: input 1 ‘configura el pin1 como entrada reverse 1 ‘configura el pin 1 como salida reverse 1 ‘configura el pin1 como entrada output1 ‘configura el pin1 como salida LCD ({#}dato,{#}dato…) LCD clear LCD line1 LCD line2 Comando para controlar el módulo LCD con salida serie conectado al pin 7. Clear: borra la pantalla LCD. Line1 :posiciona el cursor en la linea 1 para comenzar la escritura de dato. Line2: posiciona el cursor en la linea 2 para comenzar la escritura de dato. Dato: variable/constante (0-255) que se envían a la salida. Este seudo comando realmente analiza gramaticalmente comandos serout. Equivale en BASIC a serout 7, T2400, (datos). Muestra ítems en un LCD con controlador Hitachi 44780 o equivalente. Estos LCD, usualmente, tienen un cabezal de 14 o 16 pines simples o duales en un extremo. Si el signo (#) está colocado antes de un item, la representación ASCII para cada digito es enviada al LCD. Un programa debe esperar, por lo menos, medio segundo antes de enviar el primer comando a un LCD. Puede tomar bastante tiempo a un LCD arrancar. Los comandos son enviados al LCD, enviando un $FE seguido por el comando. Algunos comandos útiles se muestran en la siguiente tabla:
Ejemplo: inicio: LCD (“hola”) ‘escribe en el LCD la palabra “hola” LCD line2 ‘posiciona cursor en la linea 2 LCD (“ amigo”) ‘escribe en el LCD la palabra “amigo” pause 2000 ‘espera 2 segundos LCD clear ‘borra contenido LCD pause 500 ‘espera de 0,5 segundos goto inicio ‘salta a inicio LET {LET} variable = {-}valor ?? valor … Asigna un valor a una variable. El valor puede ser una constante, otra variable o el resultado de una expresión. La palabra clave LET, por sí misma, es opcional. ?? puede ser: + ;add - ;subtract * ;multiply (returns low word of result) * * ;multiply (returns high word result) / ;divide (returns quotient) // ;divide (returns remainder) MAX ;make less than or equal to MIN ;make greater than or equal to & ;and | ;or (typed as SHIFT + \ on UK ^ k;xeoyrb o a r d ()t yped as SHIFT + 6 on UK &/ ;and not (nand) |/ ;or not (nor) ^/ ;xor not (xnor) Ejemplo: inicio: let b0 = b0 + 1 ‘incrementa b0 en una unidad sound 7, (b0,50) ‘emite sonido if b0 > 50 then reset ‘si la variable es superior a 50 salta a reset goto inicio ‘sino a inicio reset: let b0 = b0 max 10 ‘resetea b0 con un valor 10 y 10 es el máximo valor goto inicio LOOKDOWN LOOKDOWN target,(valor0,valor1…valorN),variable La declaración LOOKDOWN busca en una lista de 8 bits los valores (value0…valueN) que coincidan con un valor target. Si se encuentra, el índice de la constante es almacenado en variable así, si el valor es el primero de la lista, variable = 0. Si es el segundo, variable = 1 y así sucesivamente. Si no se encuentra, no se toma ninguna acción y variable permanece sin cambios. Ejemplo: serin 1,N2400,b0 ‘obtiene un carácter hex de pin1 en ‘forma serie lookdown bo,(“0123456789ABCDEF”),b1 ‘convierte el character hex en b0 a un ‘valor decimal b1 serout 0,N2400,[#b1] ‘envía un valor decimal al pin0 de ‘forma serie Otro ejemplo: reset: let infra = 0 ‘resetea la variable infra inicio: if infra > 0 then test ‘salta a reset si se detecta una nueva señal goto inicio ‘sino salta a inicio test: lookdown infra, (“1234”),b0 ‘mete el carácter ASCII 1 a 4 en b0 LOOKUP LOOKUP offset,(dato0,dato1…datoN),variable LOOKUP puede ser usado para obtener valores de una tabla de constantes de 8 bits. Si offset es cero, variable toma el valor del primer dato (dato0). Si es 1, variable toma el valor del segundo dato (dato1) y así sucesivamente. Si offset es mayor ó igual que el número de entradas en la lista de constantes, no se toma ninguna acción y variable permanece sin cambios. Ejemplo: for b0 = 0 to 5 ‘cuenta hasta 5 lookup b0,(“hola”),b1 ‘obtiene el carácter b0 de la serie y lo deja en b1 serout 0,N2400,[b1] ‘envía el carácter b1 al pin0 de forma serie Otro ejemplo: inicio: let b0 = 0 b0 + 1 ‘incrementa b0 en una unidad lookup b0,(“1234”),b1 ‘mete el carácter ASCII 1 a 4 en b1 if b0 < 4 then inicio ‘si b0 es menor que 4 salta a inicio end ‘sino fin de programa LOW LOW pin Coloca el pin especificado en valor bajo y automáticamente lo convierte en salida. Pin puede ser una variable/constante de 0-7. Ejemplo: inicio: high 1 ‘pone el pin 1 a nivel alto pause 5000 ‘espera de 5 segundos low 1 ‘pone el pin 1 a nivel bajo pause 5000 ‘espera de 5 segundos goto inicio ‘salta a inicio del bucle NAP NAP periodo Coloca al microcontrolador en modo de bajo consumo por períodos de tiempo reducidos. Durante este NAP, se reduce al mínimo el consumo de energía. Los períodos indicados son solo aproximados, porque el tiempo se deriva del Watchdog Timer que está controlado por R/C y puede variar de chip a chip y también con la temperatura. Como NAP usa el Watchdog Timer es independiente de la frecuencia del oscilador. Periodo: constante entre 0-7. El número de períodos está limitado a 7 y el tiempo correspondiente a cada período sigue la formula: (2periodo)x 18 ms
Ejemplo: inicio: high 1 ‘pone salida pin1 a nivel alto nap 4 ‘estado de bajo consumo durante: (24)x18ms = 288 ms low 1 ‘pone salida 1 a nivel bajo nap 7 ‘estado de bajo consumo durante: (27)x18ms = 2304 ms goto inicio ‘salta a inicio OUTPUT OUTPUT pin Convierte el Pin especificado en una salida. Pin debe ser una constante entre 0–7, o una variable que contenga un número 0-7 (p. ej.: B0) o el nombre de un pin (p. ej.: PORTA.0) Ejemplo: inicio: input 1 ‘configura el pin1 como entrada reverse 1 ‘configura el pin 1 como salida reverse 1 ‘configura el pin1 como entrada output1 ‘configura el pin1 como salida PAUSE PAUSE periodo Detiene el programa por periodo milisegundos. Periodo tiene 16 bits, por lo que los retardos pueden ser hasta 65635 milisegundos (un poco más de un minuto). No coloca al microcontrolador en modo de bajo consumo como las otras funciones de retardo (NAP y SLEEP). Inclusive, consume mayor consumo, pero es más exacto. Tiene la misma precisión que el clock. Ejemplo: inicio: high 1 ‘pone el pin 1 a nivel alto pause 5000 ‘espera de 5 segundos low 1 ‘pone el pin 1 a nivel bajo pause 5000 ‘espera de 5 segundos goto inicio ‘salta a inicio del bucle PEEK PEEK direccion,variable Lee el registro del microcontrolador en la dirección y guarda la lectura en variable. Direccion: variable/constante que especifica la dirección del registro. Valores válidos entre 0-255. Variable: variable donde se guarda el dato del registro. Esto permite el uso de registros no definidos por b0-b13. Es necesario tener precauciones en el uso de este comando. Para programadores inexpertos se recomienda el uso de los registros localizados entre $50 a $7F, que son registros de uso general. Los registros indicados entre las direcciones $00 a $1F y $80 a $9F, son de función especial, que determinan como funciona el microcontrolador. Evitar el uso de estos registros a no ser que se sepa bien lo que se hace. Las direcciones $20 a $7F y $A0 a $BF apuntan a registros de propósito general reservados para para el intérprete de instrucciones PICAXE. El uso de esos registros puede dar resultados inesperados y podría causar la no interpretación de instrucciones. Utilizar los registros apuntados por las direcciones que van desde $50 a $7F (registros de propósito general) y de $C0 a $FF en el caso de PICAXE-28x. Ejemplo: peek 80,b1 ‘carga el contenido del registro apuntado por la dirección 80 en ‘la variable b1 peek, PORTA,b0 ‘toma el estado actual de PORTA y lo coloca en b0 POKE POKE direccion,variable Guarda el valor de variable en el registro del microcontrolador indicado en dirección. Direccion: variable/constante que especifica la dirección del registro. Valores válidos entre 0-255. Variable: variable que contiene el dato a cargar en el registro especificado. Lo indicado en el comando peek es válido para el comando poke, en cuanto a las precauciones a tomar en su uso. Ejemplo: poke 80,b1 ‘guarda el valor de b1 en el registro 80 poke $85,0 ‘guarda 0 en el registro 85 en hexadecinal (set todo ‘PORTA como salidas) Se puede acceder directamente a registros y bits sin necesidad de utilizar PEEK y POKE. Se recomienda usar el acceso directo y no los comandos mencionados. TRISA = 0 ‘set todo PORTA como salidas PORTA.0 = 1 ‘set a nível alto el bit 0 de PORTA PULSIN PULSIN pin,state,variable Mire el ancho del pulso en pin. Si state es cero se mide el ancho de un pulso bajo. Si state es uno, se mide el ancho de un pulso alto. El ancho medido se coloca en variable. Si el flanco del pulso no llega, ó el ancho del pulso es demasiado grande para ser medido, variable = 0. Si se usa uma variable de 8 bits, solo se usan los bits menos significativos de la medición de 16 bits. Pin: variable/constante (0-7) que especifica em pin I/O que se usará. State: variable/constante (0 o 1). Configura el tipo de pulso a medir en unidades de 10μs (para um cristal de 4MHz). Variable: variable (1-65536) que contiene el dato a cargar en el registro especificado. Si el intervalo de espera ocurre (.65536s), entonces el resultado será 0. La resolución de PULSIN depende de la frecuencia del oscilador. Si se usa un oscilador de 4 MHz, el ancho de pulso se obtiene en incrementos de 10μs. Si se usa un oscilador de 20 MHz, el ancho de pulso tendrá una resolución de 2μs. Definir un valor de OSC no tiene efectos sobre PULSIN. La resolución siempre cambia con la velocidad del oscilador en uso. Ejemplo: pulsin 3,1,b1 ‘guarda la longitud del pulso introducido en el pin 1 en la variable b1 PULSOUT PULSOUT pin,periodo Genera un pulso en pin, con un periodo especificado. El pulso se genera activando dos veces el pin, por lo que la polaridad del pulso depende del estado inicial del pin. Pin: variable/constante (0-7) que especifica em pin I/O que se usará. Período: variable/constante que especifica el período (0-65535)em unidades de 10μs (para um cristal de 4MHz). La resolución de PULSOUT depende de la frecuencia del oscilador. Si se usa un oscilador de 4 MHz, el período del pulso generado estará en incrementos de 10μs. Si se usa un oscilador de 20 MHz, período tendra una duración de 2μs. Definir un valor de OSC no tiene efectos sobre PULSOT. La resolución siempre cambia con la velocidad del oscilador en uso. Ejemplo: inicio: pulsout 4,150 ‘envía un pulso por el pin 4 de 1,5 ms de duración pause 20 ‘pausa de 20 ms goto inicio ‘salta a inicio y repite formando un bucle PWM PWM pin,duty,cicle Envía un tren de pulsos modulados en ancho por el pin indicado. Cada ciclo de PWM está compuesto de 256 pasos. El ciclo útil duty para cada ciclo varía de 0 (0%) a 255 (100%). El ciclo PWM es repetido cycle veces. Pin: variable/constante (0-7) que especifica em pin I/O que se usará. Duty: variable/constante (0-255)especificando el ciclo útil que puede varíar de 0 (0%) a 255 (100%). Cycle: variable/constante (0-255) que especifica el número de ciclos que se repetirá.Cada ciclo tiene un período de 5 ms (con un cristal de 4MHz). Cycle depende de la frecuencia del oscilador. Con un oscilador de 4 MHz, cada cycle será de aproximadamente 5 ms de largo. Con un oscilador de 20 MHz la duración del ciclo será de 1 ms aproximadamente. Definir un valor de OSC no tiene efecto sobre PWM. El tiempo de cycle siempre cambia con la velocidad del oscilador en uso. Pin se convierte en salida justo antes de la generación del pulso y vuelve a ser entrada, cuando cesa. La salida de PWM en un pin tiene mucho ruido, y no tiene forma de onda cuadrada. Es necesario usar algún tipo de filtro para convertirla en algo útil. Un circuito R/C puede usarse como un simple convertidor A/D. Ejemplo: inicio: pwm 4,127,20 ‘envía 20 pulsos por el pin 4 con un ciclo útil del 50% pause 20 ‘pausa de 20 ms goto inicio ‘salta a inicio PWMOUT PWMOUT pin,period,duty cycles Genera una salida contínua de pwm usando el módulo interno del pwm del microcontrolador. Esta orden es diferente de otras ordenes semejantes de BASIC, el pwmout funciona contínuamente hasta que otra orden de pwmot sea indicada. Por ello puede usarse, por ejemplo, para controlar la velocidad de un motor. Para deterner la orden pwmout, enviar otra orden con un period = 0. Pin: variable/constante (0-7) que especifica em pin I/O que se usará (siempre 3 con 18X, 2 com 08M y 1 o 2 com el 28X/40X. Period: variable/constante (0-255)especificando el período del pulso. Duty: variable/constante (0-1023)especificando el ciclo de trabajo the la señal pwm.
El pwm duty cycle = (duty) x resonador speed Notar que el valor de period y el valor de duty siguen la ecuación indicada anteriormente. Si desea una relación de 50:50 mientras se incrementa el período, entonces debe aumentar el valor del ciclo de trabajo apropiadamente. Un cambio de la velocidad del oscilador cambiará la fórmula. La frecuencia del pwm = 1/(period pwm). Como el comando utiliza el módulo interno del pwm del microcontrolador, hay ciertas restricciones para su uso: 1. El comando solo funciona con ciertos pines de los microcontroladores: · 28X/40X (1 y 2) · 18X (3) · 08M (2) 2. Duty cycles es un valor de 10 bits (0 a 1023). 3. El comando servo no se puede usar al mismo tiempo que el comando pwmout dado que utilizan la misma señal de reloj. 4. Pwmout deja de funcionar durante las ordenes de , nap, sleep o end. Ejemplo: inicio: pwmot 2,150,100 ‘set pwm pause 1000 ‘pausa de 1s. goto inicio ‘salta a inicio RANDOM RANDOM variable Efectúa una iteración pseudos-aleatoria en variable. Variable: variable de 16 bits donde se almacena el número aleatorio. El algoritmo pseudoaleatorio usado tiene un paso de 65535 (el único número que no produce es el cero). Ejemplo: inicio: random b1 ‘carga en la variable b1 un valor aleatorio let pins = b1 ‘pone el valor aleatorio en la salida pins pause 100 ‘espera de 0,1 s goto inicio ‘salta a inicio READADC READADC canal,variable El contenido del convertidor A/D (8 bits de resolución) indicado por canal es almacenado en variable. Canal:variable/constante que especifica el canal (0-3) Variable: variable donde se almacena el byte leido. Ejemplo: inicio: readadc 1,b1 ‘lee el valor y lo almacena en b1 if b1 > 50 then flash ‘salta a flash si b1 > 50 goto inicio ‘sino salta a inicio flash: high 1 ‘pone a nivel alto el pin 1 pause 5000 ‘espera de 5 segundos low 1 ‘pone a nivel bajo la salida 1 goto inicio ‘salto a inicio readadc10 READADC canal,wordvariable El contenido del convertidor A/D (10 bits de resolución) indicado por canal es almacenado en variable. Canal:variable/constante que especifica el canal (0-3) Wordvariable: variable tipo Word donde se almacena los bytes leidos. Ejemplo: inicio: readadc 1,w1 ‘lee el valor y lo almacena en w1 if w1 > 50 then flash ‘salta a flash si b1 > 50 goto inicio ‘sino salta a inicio flash: high 1 ‘pone a nivel alto el pin 1 pause 5000 ‘espera de 5 segundos low 1 ‘pone a nivel bajo la salida 1 goto inicio ‘salto a inicio readi2c READI2C location,(variable,…) Lee el i2c indicado en location y lo almacena en variable(s). location: variable/constante que especifica la dirección mediante un byte del tipo Word la dirección del i2c. Variable(s): donde se almacenan los byte(s) del dato leído. Este comando se usa para leer los datos de byte de un dispositivo i2c. Location define la dirección de inicio de la lectura de datos, aunque se logra también leer más de un byte secuencialmente (si el dispositivo i2c da soporte a lecturas secuenciales). Location debe ser un byte que defina al 12cslave. Un comando del 12cslave tiene que haberse ejecutado con anterioridad de la ejecución del readi2c. Si el hardware del i2c no fue configurado de forma correcta o el byte de localización no es el adecuado el valor almacenado en la variable será 255 ($FF) indicándonos un error. Ejemplo: ‘Un ejemplo de cómo usar el time clock DS1307 ‘los datos son enviados/recibidos en código BCD ‘coloca la dirección del esclavo del DS1307 12cslave %11010000, i2cslow, i2cbyte ‘lectura de la hora y fecha y presenta en el depurador inicio: readi2c 0, (b0,b1,b2,b3,b4,b5,b6,b7) debug b1 pause 2000 goto inicio READ READ location,variable Lee la EEPROM incorporada en la dirección location, y guarda el resultado en variable. location: variable/constante que especifica la dirección mediante un byte (0-255). Variable: donde se almacena el byte leído. Al usar los módulos Stamp, la forma de almacenar los datos es desde la posición 0 hacia arriba mientras que el almacenamiento de programa se construye hacia abajo desde la posición 255. Al usar el PICAXE-08 y 18el almacenamiento de datos se construye hacia arriba desde la posición 0y el almacenamiento de programa es hacia abajo desde la posición 127. Ejemplo: inicio: for b0 = 0 to 63 ‘inicio el bucle read b0,b1 ‘lee el dato de la memoria en la posición de bo y ‘almacena su valor en b1 serout 7,T2400,(b1) ‘transmite el valor del dato de b1 al LCD utilizando ‘transmisión serie next b0 READMEM READMEM location,variable Lee la memoria de programa FLASH en la posición location y lo vuelca en variable. Provee un espacio adicional de 256 bytes de almacenamiento para este comando en los dispositivos PIC 16F87x (incluyendo a PICAXE-28, 28ª). Este comando no está presente en el PICAXE-28X como el módulo del i2c puede servir para EEPROMs externas mayores. location: variable/constante que especifica la dirección mediante un byte (0-255). Variable: donde se almacena el byte leído. Ejemplo: inicio: for b0 = 0 to 255 ‘inicio el bucle read b0,b1 ‘lee el dato de la memoria en la posición de bo y ‘almacena su valor en b1 serout 7,T2400,(b1) ‘transmite el valor del dato de b1 al LCD utilizando ‘transmisión serie next b0 readtemp/readtemp12 READTEMP pin,variable READTEMP pin,wordvariable Lee la temperatura de un DS18B20, sensor digital de temperatura, conectado en pin y almacena su lectura en variable. Pin: es el pin de entrada del PICAXE que tiene conectado el sensor. Variable: donde se almacena el byte leído. READTEMP: la resolución de la lectura es de enteros de grado, y el sensor funciona de -55 ºC hasta +125 ºC. El bit 7 indicará si los valores de temperatura son positivos (0) o negativos (1). READTEMP12: (para programadores avanzados). La temperatura viene expresada con una resolución de 0,125 ºC y necesita 12 bits para su representación digital. El usuario debe interpretar los datos a través de cálculo matemático. Ver el dataste del DS18B20 (www.dalsemi.com) para más información en relación con Data Temperatura. Ejemplo: inicio: readtemp 1,b1 ‘lee el valor del sensor en pin 1 y lo almacena en b1 if b1 > 127 then neg ‘chequeo si el valor medido es negativo serout, 7, T2400, (#b1) ‘transmite el valor al LCD en formato serie goto inicio ‘salta a inicio neg: let b1 = b1 – 128 ‘ajuste del valor negativo en b1 serout 7,T2400, (“-“) ‘transmite el símbolo negativo serout 7,T2400, (#b1) ‘transmite el valor al LCD en formato serie goto inicio
READOWCLK Lectura de la hora indicada por un reloj de precisión DS2415 conectado en la entrada especificada por pin. Pin: es el pin de entrada (0-7) del PICAXE que tiene conectado el sensor. Este comando no esta disponible en el PICAXE-28X pero puede usarse un DS1307, reloj de precisión en tiempo real por i2c. El DS2415 es un reloj en tiempo real de precisión que opera con una única línea. La información está contenida en 4 bytes (32 bits) y es muy preciso debido al uso de un cristal de cu¡arzo como clock del C.I. El registro de 32 bits puede aportar la información de 132 años en segundos. El dispositivo puede estar alimentado de forma independiente con 3 V. de forma que pueda trabajar aún cuando el controlador principal con el PICAXE esté parado. Si se utiliza ésta opción se debe utilizar la orden RESETOWCLK para activar el reloj de nuevo y de esta forma arrancar el reloj en tiempo real. El comando READOWCLK lee los 32 bits del reloj y guarda el contenido de los 32 bits en la variable b10 (LBS) a b13 (MBS), también conocidas como w6 y w7. Usando variables tipo byte: o El valor b10 es el número de segundos o El valor b11 es el número x 256 segundos o El valor b12 es el número x 65536 segundos o El valor b13 es el número x 16777216 segundos Usando variables tipo Word: o El valor en w6 es el número de segundos o El valor en w7 es el número x 65536 segundos Ejemplo: inicio: resetowclk 2 ‘reset el reloj en pin 2 bucle: readowclk 2 ‘lectura del reloj en pin de entrada 2 debug b1 ‘visualiza el tiempo en depurador pause 10000 ‘espera de 10 segundos goto bucle ‘repetición de lectura y presentación RESETOWCLK Resetea el reloj DS2415, es decir pone a cero su contador. Pin: es el pin de entrada (0-7) del PICAXE que tiene conectado el sensor Este comando pone a cero el tiempo en un chip reloj tipo DS2415 que está conectado a un pin de salida del PICAXE. También activa el cristal del reloj. Debe usarse al comienzo de cada conteo. El método de conexionado del reloj de precisión con el PICAXE se muestra a continuación:
READOWSN Lectura serie de cualquier dispositivo Dallas 1-wire, conectado en el pin de entrada especificado por pin. Pin: es el pin de entrada (0-7) del PICAXE que tiene conectado el sensor. Este comando lee el valor de cualquier dispositivo Dallas de un Terminal i/o de comunicación (1-wire) que esté conectado al PICAXE en una de sus pines (especificado por pin), por ejemplo, sensor digital de temperatura: DS18B20, reloj de precisión: DS2415, iButton: DS1990A (http://www.esicomsa.com/product_1.html). Al usar un dispositivo iButton cuyo número serie está grabado en el chip que contiene la envoltura del iButton y ejecutar el comando readowsn se realizará la lectura del número seie y guardará el código indicador de la familia en b6, el número de serie en b7..b12 y la suma de verificación en b13.
Nunca deberá utilizar los registros b6 a b13 para otros propósitos durante la ejecución del comando readowsn. Ejemplo: inicio: let b6 = 0 ‘reset el registro, con valor cero ‘bucle para leer el código hasta que b6 no sea ‘igual a 0 bucle: readowsn 2 ‘lectura serie del número en el pin de entrada 2 if b6 = 0 then bucle ‘repite lectura hasta que b6 no sea 0 ‘hace una comprobación simple de seguridad. ‘Lo normal es que b12 no contenga ‘nunca el valor FF, Si el valor FF existe quiere ‘decir que la lectura del dispositivo ‘ya fue efectuada o a ocurrido un cortocircuito If b12 = $FF then inicio ‘si el valor b12 es FF salta a inicio ‘todo esta correcto así que continúa debug b1 ‘presenta el número en el depurador pause 1000 ‘espera de 1 segundo goto inicio ‘comienzo de programa RETURN Vuelve desde una subrutina. Retoma la ejecución en la declaración que sigue al GOSUB que llamó la subrutina. Ejemplo: inicio: let b2 = 15 ‘asigna a la variable b2 el valor 15 pause 2000 ‘espera de 2 segundos gosub flash ‘llamada a subrutina flash let b2 = 5 ‘asigna a la variable b2 el valor 5 pause 2000 ‘espera de 2 segundos gosub flash ‘llamada a subrutina flash end flash: for b0 = 1 to b2 ‘define el bucle para el tiempo de b2 high 1 ‘pone la salida 1 a nivel alto pause 500 ‘espera 0,5 segundos low 1 ‘pone la salida 1 a nivel bajo pause 500 ‘espera 0,5 segundos next b0 ‘fin del bucle return ‘vuelve a línea siguiente de llamada REVERSE Si pin es entrada, lo convierte en salida. Si es salida, lo convierte en entrada. Pin: es el pin de entrada (0-7) del PICAXE. Ejemplo: inicio: input 1 ‘configura pin1 como entrada reverse 1 ‘configura pin 1 como salida reverse 1 ‘configura pin 1 como entrada output 1 ‘configura pin 1 como salida serin SERIN pin,baudmode,(qualifier,qualifier…) SERIN pin,baudmode,(qualifier,qualifier…),{#}variable,{#}variable… SERIN pin,baudmode ,{#}variable,{#}variable… Recibe uno o más conjunto de datos en pin, en formato Standard asíncrono, usando 8 bit de datos, sin paridad y un bit stop (8N1). Pin automáticamente se convierte en entrada. Pin: es un pin de entrada del PICAXE (0-7). Baudmode: es una variable/constante (0-7) que especifica el modo en el que se transferirá el/los dato/s Qualifiers: son variables/constants opcionales (0-255). La lista de datos a recibir puede estar precedida por uno o más quqlifiers encerrados entre corchetes. SERIN debe recibir estos bytes en un orden exacto, antes de recibir los datos. Si algún byte recibido no concuerda con el byte siguiente de la secuencia de calificación, el proceso de calificación comienza nuevamente (p.e. el próximo byte recibido es comparado con el primer byte de la lista de calificación). Variable/s: son variables/constantes opcionales (0-255). SERIN comienza a guardar datos en la variable asociada. Si el nombre de variable es único, el valor del carácter ASCII recibido es guardado en la variable. Si la variable es precedida por el signo #, SERIN convierte un valor decimal en ASCII y guarda el resultado en esa variable. 4800 y 9600 están sólo disponibles en el PICAXE-28X. El microcontrolador puede no llegar a seguir datagramas complicados a esa velocidad – se recomienda un máximo de 2400 para un reloj de 4 MHz. Ejemplo: inicio: for b0 = 0 to 63 ‘comienzo bucle serin 6,T2400,b1 ‘recibe serie de datos write b0,b1 ‘guarda valor en b1 next b0 ‘siguiente ciclo serout SEROUT pin,baudmode,({#}data, {#}data …) Envía uno o más conjunto de datos en pin, en formato Standard asíncrono, usando 8 bit de datos, sin paridad y un bit stop (8N1). Pin automáticamente se convierte en salida. Pin: es un pin de salida del PICAXE (0-7). Baudmode: es una variable/constante (0-7) que especifica el modo en el que se transferirá el/los dato/s Variable/s: son variables/constantes opcionales (0-255). Contienen el byte/s que se enviará por el pin de salida. Si la variable es precedida por el signo #, SEROUT convierte un valor decimal en ASCII y guarda el resultado en esa variable. Se puede enviar cadenas de texto, precedidas por “”(“Hola”). Ejemplo: inicio: for b0 = 0 to 63 ‘comienzo bucle read b0,b1 ‘leer valor y cargar en b1 serout 7,T2400,(b1) ‘transmite valor de b1 next b0 ‘siguiente ciclo sertxd SERTXD ({#}data, {#}data …) Envía uno o más conjunto de datos en pin de programación, en formato Standard asíncrono, usando 8 bit de datos, sin paridad y un bit stop (8N1) a 4800 baudios.. Variable/s: son variables/constantes opcionales (0-255). Contienen el byte/s que se enviará por el pin de salida. Si la variable es precedida por el signo #, SERTXD convierte un valor decimal en ASCII y guarda el resultado en esa variable. Se puede enviar cadenas de texto, precedidas por “”(“Hola”). Ejemplo: inicio: for b0 = 0 to 63 ‘comienzo bucle read b0,b1 ‘leer valor y cargar en b1 sertxd (b1) ‘transmite valor de b1 next b0 ‘siguiente ciclo SERVO Envía un pulso por el pin indicado para el control de un dispositivo de radio control tipo servo. Pin: es un pin de salida del PICAXE (0-7). Pulse: es una variable/constante (75-225) que especifica la posición del servo. Este comando pone el pin a nivel alto durante un tiempo (x0.01 ms) cada 20ms indicado por pulse. Generalmente el servo de RC requiere un pulso (0.75 a 2.25ms de duración) cada 20ms. Por consiguiente el comando servo 1,75 moverá el servo a la posición de 0 grados, con el comando servo1,225 se posicionará en el extremo opuesto 180 º. Con el comando servo 1,150 colocará el servo en la posición central. El comando servo no se puede usar al mismo tiempo que pwmout dado que comparten un contador común. No usar un valor de pulso menor de 75 o mayor de 255, dado que esto puede causar que el servo funcione incorrectamente. Debido a las tolerancias en la fabricación de los servos todos los valores son aproximados y requieren un ajuste fino por experimentación. Ejemplo: inicio: servo 4,75 ‘mueve el servo a la posición inicial 0 grados pause 2000 ‘espera 2 segundos servo 4,150 ‘mueve el servo a la posición central pause 2000 ‘espera 2 segundos servo 4,225 ‘mueve el servo a la posición final 180 grados pause 2000 ‘espera 2 segundos goto inicio ‘salta a inicio y repite ciclo setint SETINT input,mask Interrupción en función de ciertas condiciones de entrada. Input: es una variable/constante (0-7) que especifica las condiciones de entrada. Mask: es una variable/constante (75-225) que especifica la máscara. Este comando causa la interrupción del código en ejecución cuando se activa un pin, previamente configurado, de interrupción. La interrupción es el método más rápido de atender a una petición de paro del microcontrolador en función de condiciones determinadas. Es el único tipo de interrupción disponible en el sistema PICAXE. El pin de interrupción se comprueba entre la ejecución de cada linea de código del programa y inclusive durante cualquier orden de pausa. Si la condición particular de entrada es cierta, un gosub para la subrutina de interrupción se ejecuta inmediatamente. Cuando remata la ejecución de la subrutina de interrupción, el programa continúa en la línea siguiente desde donde se produjo la llamada a la interrupción del programa principal. La condición de entrada de interrupción es cualquier patrón de “0” y “1” en el “Terminal de entrada de interrupción”, enmascarado por el byte mask (máscara). Por consiguiente cualquier bit enmascarado por un “0” en la mascara será ignorado. Ejemplos: Para interrumpir con entrada input1 a nivel alto Setint %00000010, % 00000010 Para interrumpir con entrada input1 a nivel bajo Setint %00000000, % 00000010 Para interrumpir con entrada input0 a nivel alto, input1 a nivel alto e input2 a nivel bajo Setint %00000011, % 00000111 Solo un patrón de entrada es admitido en cualquier momento. Para desactivar la interrupción ejecutar una orden SETINT con el valor 0 como byte de máscara. Notas: 1) Cada programa que usa la orden setint debe tener la correspondiente subrutina de interrupción (termina con el correspondiente retorno al programa principal con return) al final del programa principal. 2) Cuando ocurre una interrupción esta será atendida inmediatamente quedando inhabilitada cualquier interrupción del programa principal. Si se desease ejecutar nuevamente una interrupción , esta deberá programarse dentro de la subrutina de interrupción en ejecución. Queda claro que después de ser atendida una interrupción y ejecutar la subrutina asociada quedan habilitadas las peticiones de interrupción del programa principal. 3) Si la condición de interrupción no es atendida dentro de la subrutina, una segunda llamada de interrupción puede ocurrir inmediatamente. 4) Después de ser ejecutado el código de la subrutina de interrupción, la ejecución del programa continúa en la siguiente línea del programa principal. Si la interrupción se produce durante la ejecución de un comando pause, después de la ejecución de la subrutina de interrupción y retorno al programa principal ignorará el tiempo que restaba de la ejecución del comando pause y continuará en la línea siguiente. Ejemplo: setint %10000000,%10000000 ‘activa interrupción cuando el pin7 esta a nivel alto principal: low 1 ‘conmuta la salida 1 a nivel bajo pause 2000 ‘espera 2 segundos goto principal ‘repite bucle principal interrupt: high 1 ‘conmuta la salida 1 a nivel alto if pin7 = 1 then interrupt ‘salta a la subrutina interrupt hasta que se ‘cumpla la condición indicada pause 2000 ‘espera 2 segundos setint %10000000,%10000000 ‘reactiva la interrupción return ‘termina la subrutina de interrupción ‘y retorna al programa principal En el ejemplo, la salida 1, conectada a un LED estará apagado y se pondrá a nivel alto durante 2 segundos cuando se active la interrupción (pin 7 a nivel alto), reactivando de nuevo la interrupción. A continuación se muestra una variación del anterior ejemplo: principal: low 1 ‘conmuta la salida 1 a nivel bajo pause 2000 ‘espera 2 segundos if pin7 = 1 then sw_on goto principal ‘repite bucle principal sw_on: high 1 ‘conmuta la salida 1 a nivel alto if pin7 = 1 then sw_on ‘salta a la subrutina sw_on hasta que se ‘cumpla la condición indicada pause 2000 ‘espera 2 segundos return ‘termina la subrutina de interrupción ‘y retorna al programa principal setfreq SETFRQ freq Establece la frecuencia interna del reloj para el microprocesador PICAXE-18X para 4 MHz (por defecto) o 8 MHz. freqt: es un keyword m4 o m8 Ejemplo: setfreq m8 ‘frecuencia interna a 8 MHz El cambio no ocurre hasta que el interruptor de arranque se active de nuevo, y el valor es almacenado en memoria interna siendo, ahora, el cambio permanente. sleep SLEEP seconds Coloca al microcontrolador en modo de bajo consumo (duerme) por un periodo de tiempo indicado en seconds segundos. Los retardos pueden ser de hasta 65535 segundos (aprox. 18 horas). seconds: variable/constante que especifica la duración del sleep (0-65535) SLEEP usa el WatchDog Timer, por lo que es independientemente de la frecuencia del oscilador utilizado. La resolución es de aproximadamente 2,3 s y la exactitud de aproximadamente un 99,9%, aunque puede variar de acuerdo al dispositivo y la temperatura.. El consumo se reduce en una relación 1/100. Ejemplo: inicio: high 1 ‘salida 1 a nivel alto sleep 10 ‘duerme durante 23 segundos aproximadamente low 1 ‘salida 1 a nivel bajo sleep 100 ‘duerme 230 segundos aproximadamente goto inicio ‘repite programa indefinidamente symbol SYMBOL symbolname = value Asigna un symbolname (símbolo identificativo) con un valor value que lo identifica con más claridad en la elaboración e interpretación del código del programa. Symbolname: es una cadena de texto que debe comenzar con un carácter literal después se puede utilizar los caracteres numéricos (0..9) Value: es una variable que dan valor al nuevo símbolo Ejemplo: symbol LED_ROJO = 7 ‘define una constante symbol symbol CONTADOR = B0 ‘define una constante symbol let CONTADOR = 200 ‘precarga CONTADOR con el valor 200 inicio: high LED_ROJO ‘salida 7 a nivel alto pause CONTADOR ‘pausa de 0,2 segundos low LED_ROJO ‘salida 7 a nivel bajo pause CONTADOR ‘pausa de 0,2 seguundos goto inicio ‘repite programa indefinidamente sound SOUND pin,(note,duration,note duration…) Genera un tono y/o ruido blanco en el pin especificado. Pin se configura automáticamente como salida. Pin: es una variable/constante (0-7) que especifica el pin i/o a utilizar. Note(s): es una variable o constante (0-255) que especifica la frecuencia del sonido a emitido. o Note 0: silencio o Note (1-127): tonos o Note (128-255): ruido blanco Duration: es una variable/contante (0-255) que determina la duración de la nota, en incrementos de 12 ms. Los tonos y el ruido blanco están en una escala ascendente (p.e. 1 y 128 son las frecuencias menores, 129 y 266 las mayores). Note 1 es aproximadamente 78,74 Hz y note 127 es aproximadamente 10000Hz. SOUND entrega como salida ondas cuadradas con nivel TTL. Gracias a las características del micro PIC, se puede manejar un altavoz a través de un condensador. El valor del condensador debe ser determinado en función de las frecuencias a usar y la carga del altavoz. Ultima edición por torres.electronico el Vie Jun 20, 2008 6:12 am, editado 1 vez |
|
| comentario del autor | Vie Jun 20, 2008 6:10 am |
|
Ejemplos varios de Programacion y Aplicacion :
Generalmente, deseamos darle una mejor vista y mayor funcionabilidad a nuestros proyectos electronicos, es por eso que adjunto este diagrama electronico con las instrucciones basicas para mover una pantalla LCD con el sistema PICAXE instrucciones a subir en el PICAXE: Para marcar un mensaje con la siguiene frase: HOLA BUEN DIA se debera introducir el siguiente codigo de instrucciones en el microcontrolador PICAXE: Para desplegar un mensaje de dos lineas como sigue : serout 1,T2400,(255) pause 50 serout 1,T2400,(254,"1","1"," HOLA") serout 1,T2400,(254,"2","1","BUEN DIA") Se utilizó serout 1 ya que se utilizó el pin 1 de salida del PICAXE, pero puede ser cualquier pin de salida --------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------- LES ADJUNTO EL PROGRAMA A SUBIR A UN MICROCONTROLADOR picaxe28 PARA LA CREACION DE UN CONTROLADOR DE VELOCIDAD CON VISUALIAZCION DE ESTADO EN PANTALLA DE LCD ' ********** *********** ********* ' Cuando se inicialice el sistema se va a mandar el mensaje de forma SCROLLING '************* Control de Velocidad Digital Sincronizado************* ' pin1 = Reset del PICAXE 28X ' pin11 = Pin RA3 del teclado salida del Driver PIC16F84 ' Pin12 = Pin RA2 del teclado salida del Driver PIC16F84 ' Pin13 = Pin RA1 del teclado salida del Driver PIC16F84 ' Pin14 = Pin RA0 del teclado salida del Driver PIC16F84 ' Pin15 = Entrada del Sensor de Efecto Hall ' Pin16 = Salida de velocidad MIN ' Pin16 = Pin ENABLE para el acceso al teclado ' Pin17 = Salida de velocidad MAX ' pin21 = RB0 TXD para la comunicacion RS232. ' pin22 = RB1 Salida para el aumento de la Carga ' pin23 = RB2 Control del LCD pin 4 ' pin24 = RB3 Control del LCD pin 6 ' pin25 = RB4 ** ' pin26 = RB5 ***Pines de control del LCD manipulacion en 4 'bits multiplexados ' pin27 = RB6 ** ' pin28 = RB7 * Symbol comando=b8 ' # # Symbol contador=b9 ' # # Symbol contador2=b10 '##### CONTADORES PARA EL SCROLLING Symbol contador3=b11 ' # Symbol contador4=b12 ' # EEPROM 0,("LABVIEW EXE") EEPROM 11,("CONTROL DE VELOCIDAD DIGITAL SINCRONIZADO ") Start: gosub init ‘ Inicializacion del LCD let comando = 1 ' Se manda el comando limpia al LCD gosub command ' Se manda a limpiar el LCD let comando = $C2 ' Se posiciona en el segundo Renglon gosub command ' se manda al LCD el comando main: for contador=0 to 10 read contador,w0 ' Se imprime gosub valor ' LABVIEW EXE next contador ' Segundo Renglon ' LCD let comando = 128 gosub Command Scrolling: for contador=11 to 26 read contador,w0 gosub valor next contador wait 2 for contador=11 to 50 comando=128 gosub command pause 50 contador3=contador+1 contador4=contador3+16 for contador2=contador3 to contador4 read contador2,w0 gosub valor comando=13 gosub command next contador2 next contador '******************************************************************** '******************************************************************** '************* SUBRUTINAS DE CONTROL STANDAR ************************ '******************************************************************** '******************************************************************** init: let pins = 0 ' Se limpian todas las salidas let b4 = 0 ' Se limpia la variable pause 200 ' Se espera 200ms let pins = 48 ‘ Se operara con 8 bits pulsout 3,1 ‘ Se manda habilitar SE pause 10 ‘ Se espera 10 ms pulsout 3,1 ‘ Se coloca el dato pulsout 3,1 ‘ Se coloca el dato de nueva cuenta let pins = 32 ‘ Se colocaran 4 bits de operacion pulsout 3,1 ‘ Se coloca el dato. pulsout 3,1 ‘ Se coloca el dato. let pins = 128 ‘ Se colocaran 2 lineas de operacion pulsout 3,1 ‘ Se imprime el dato SE. let b1 = 14 ‘ El cursor se manda a encender gosub command ‘ Se manda la instruccion al LCD return Valor: let pins = w0 & 240 ' Se coloca en los pines el nibble 1 high 2 ‘ Se pone en alto RS pulsout 3,1 ‘ Pulso para habilitar la entrada del dato let b0 = w0 * 16 ‘ Poner en bajo el nibble 2 se coloca en b2. let pins = b0 & 240 ‘ Se manda el nibble high 2 ‘ Se pone en alto RS pulsout 3,1 ‘ Pulso para habilitar la entrada del return ‘ dato.y se imprimio Command: let pins = comando & 240 ‘ Se manda el nibble del comando nibble 1. pulsout 3,1 ‘ Se habilita la entrada del dato let b0 = comando * 16 ‘ Se coloca el nibble 2 en b2 . let pins = b0 & 240 ‘ Se manda el nibble 2 pulsout 3,1 ‘ Se imprime el dato al pulsar RS high 2 ‘ Se coloca en modo de valor return '******************************************************************** 'Code Instruction '1 Clear display and move to the start of the first line '2 Move the cursor and display ‘window’ to the start of the first line '4 Set ‘right to left printing’ mode '5 Set ‘scroll printing to the left’ mode '6 Set ‘left to right printing’ mode '7 Set ‘scroll printing to the right’ mode '10 Turn visual LCD screen off '12 Hide cursor '13 Make cursor flash '14 Turn visual LCD screen (and cursor) on '16 Move cursor left one position '20 Move cursor right one position '24 Scroll display ‘window’ left one position '28 Scroll display ‘window’ right one position '128 Move cursor to the start of the first line '192 Move cursor to the start of the second line NOTA: El SCROLLING QUE SE DISEÑO ES PARA QUE UNICAMENTE SE DESPLIEGUE Y SE EJECUTE EN EL PRIMER RENGLON DEL LCD DE 16X2 CARACTERES , SI SE DESEA QUE SE BARRA LOS 2 RENGLONES , NO ES NECESARIO ESA PROGRAMACIÓN, CON UNA SIMPLE COMANDO ENVIADO ANTES DE EJECUTAR LA IMPRESIÓN Y DESPUES PARA PARAR EL SCROLLING SE EJECUTAN LOS 2 RENGLONES . EL COMANDO ES EL 24 O 28 PARA IZQUIERDA A DERECHA ..... OTRA ACLARASION ESTA PROGRAMACIÓN SE HIZO PARA EL CONTROL EN MODO DE 4 BITS EN TOTAL SON 6 BITS DEL LCD EMPLEADOS ... 2 DE CONTROL Y 4 DE DATOS. ------------------------------------------------------------------------------------------------------------------------------------------------------ La siguiente rutina, es para el uso en una pequeña maquina envasadora casera...Esta rutina, no contiene las ordenes de dosificacion, solo contiene la orden de actuar las mordazas neumaticas que sellan las bolsas, las seguridades correspondientes de la maquina, y un visualizador de temperatura en mordazas... en su momento no lo pense, pero podriamos sumarle un par de lineas mas y obtener asi un pirometro tambien...en fin, espero que les sirva symbol mordaza = 7 symbol sensor = 6 main: gosub seguridad gosub temp_analog gosub accion_uno gosub accion_dos gosub and_uno gosub and_dos goto main end seguridad: if pin1 =1 and pin2 =1 then resultado_uno return accion_uno: high mordaza goto main accion_dos: high sensor goto main temp_analog: Readadc 2,b1 if b1>150 then show9 if b1 > 130 then show8 if b1 > 110 then show7 if b1 > 90 then show6 if b1 > 70 then show5 if b1 > 50 then show4 if b1 > 30 then show3 if b1 > 20 then show2 if b1 > 10 then show1 if b1 > 0 then show0 show0: let pins = %00111111 goto temp_analog show1: let pins = %00000110 goto temp_analog show2: let pins = %01011011 goto temp_analog show3: let pins = %01001111 goto temp_analog show4: let pins = %01100110 goto temp_analog show5: let pins = %01101101 goto temp_analog show6: let pins = %01111101 goto temp_analog show7: let pins = %00000111 goto temp_analog show8: let pins = %01111111 goto temp_analog show9: let pins = %01101111 goto temp_analog return resultado_uno: b2 = 1 goto main and_uno: if b2 = 1 and pin0 = 1 then accion_uno goto main and_dos: if b2 = 1 and pin6 = 1 then accion_dos goto main diagrama electromecanico de la envasadora
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Visiten la pagina de Chris Fenton que desarrollo el hardware de una computadora portátil con PICAXE y sumado a eso diseño y programo el sistema operativo... (click acá) -Ver la rutina del PICAXE (click acá) -Ver Esquematico del Hardware de su mini Laptor (click acá)
----------------------------------------------------------------------------------------------------------------- Symbol Semaforo1Ambar = 1 Symbol Semaforo1Verde = 3 Symbol Semaforo2Rojo = 6 Symbol Semaforo2Ambar = 5 Symbol Semaforo2Verde = 4 Inicio: High Semaforo1Rojo High Semaforo2Rojo 'Alto en via 1, Alto en via 2 Pause 1000 'Tiempo Alto en dos vias High Semaforo1Verde Low Semaforo1Rojo 'Pasando via 1, Alto en via 2 Pause 5000 'Tiempo de paso en via 1, Alto en via 2 Low Semaforo1Verde High Semaforo1Ambar 'Preventiva en via 1, Alto en via 2 Pause 2000 'Tiempo preventiva via1, Alto en via 2 High Semaforo1Rojo Low Semaforo1Ambar 'Alto en via 1,Alto en via 2 Pause 1000 'Tiempo alto en dos vias Low Semaforo2Rojo High Semaforo2Verde 'Alto en via 1, Pasando via 2 Pause 5000 'Tiempo de paso en via 2 Low Semaforo2Verde High Semaforo2Ambar 'Alto en via1,Preventiva en via 2 Pause 2000 'Alto en via 1,Tiempo preventiva via 2 High Semaforo2Rojo Low Semaforo2Ambar 'Alto en via 1, Alto en via 2 Goto Inicio -------------------------------------------------------------------------------------------------------------------------- symbol x = b0 symbol rpins = b1 symbol rec_ain0 = b2 symbol rec_ain1 = b3 symbol rec_ain2 = b4 symbol rec_ain3 = b5 symbol addr = b6 symbol dato = b7 symbol dig = b8 rx_tx: init: let pins = %11110000 if pin2 = 1 then encender3 if pin1 = 1 then encender2 if pin0 = 1 then encender1 gosub maine gosub main goto rx_tx maine: high 7 gosub digital serout 7, T1200,($AA, $AA, $AA, $AA, $00, $00, $99, 1, x) pause 50 serout 7, T1200,(2, dig) pause 50 serout 7, T1200,($66, $66) pause 50 pause 1000 return digital: let dig = 0 if pin0 = 0 then ADD2 let dig = dig + 1 ADD2: if pin1 = 0 then ADD4 let dig = dig + 2 ADD4: if pin2 = 0 then ADD8 let dig = dig + 4 ADD8: if pin6 = 0 then ADD16 let dig = dig + 8 ADD16: return main: serin 0, T1200, ($99), addr, dato repeat1: if addr = $66 then finish1 gosub alloc serin 0, T1200, addr, dato goto repeat1 finish1: let addr = 0 return alloc: if addr = 1 then VAR if addr = 2 then DIGIT if addr = 3 then A1 if addr = 4 then A2 if addr = 5 then A3 if addr = 6 then A4 return VAR: let x = dato goto main DIGIT: let rpins = dato goto main A1: let rec_ain0 = dato goto main A2: let rec_ain1 = dato goto main A3: let rec_ain2 = dato goto main A4: let rec_ain3 = dato goto main encender3: high 3 pause 1000 return encender2: high 2 pause 1000 return encender1: high 1 pause 1000 gosub maine
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Este proyecto realizado por el sr. Hugo Abalos, lo realizo para tener un entrenador que nos permita hacer practicas y experimentos de una forma rápida y sencilla con los Microcontroladores Picaxe. El diseño del circuito del entrenador y programador de Microcontroladores Picaxe se basa en el Manual de uso que anteriormente hemos sitado en varios cursos (ver al principio del post donde mencionamos los cursos), y el software Programming Editor de la pagina www.Picaxe.co.uk. Esta formado por un conjunto de circuitos, independientes entre si. Cada modulo tiene listas las conexiones a la fuente de alimentación y a los diferentes elementos que lo componen, tiene unos terminales de conexión, donde, utilizando cable telefónico, se pueden llevar las señales de control de un bloque a otro. Así que según el circuito que se desea probar, se hace la configuración necesaria. La fuente de alimentación es muy simple. La tensión que viene del transformador se rectifica, se filtra y mediante el IC 7805 obtenemos los +5V (Vcc), que es la alimentación que usan los dispositivos a programar. El LED Verde indica que el programador está alimentado. Las resistencias sirven para acoplar las señales del puerto serial a la señal del Microcontrolador. Las señales del puerto serial (DB25) utilizadas son 2, 3, y 7, que permiten interconectar el circuito con la PC. El pin 2 (Serial in) es el encargado de llevar los datos desde la PC hacia el Microcontrolador que se está programando. El pin 3 (Serial out) permite a la PC leer los datos enviados por el Microcontrolador desde el programador. En tanto el pin 7 (Gnd) es la masa. El microcontrolador Picaxe posee dentro de él un pequeño programa (firmware) para que su uso y programación sea mucho más fácil. Por medio de este programa interno, los Picaxe pueden programarse en BASIC y hasta en DIAGRAMA DE FLUJO, no precisan cargador externo y se los puede programar sin ser quitados del circuito donde están funcionando. El microcontrolador Picaxe almacena sus programas en su memoria FLASH (no volátil). No es posible leer el código de un programa grabado en el microcontroladador Picaxe, por lo tanto si desea guardar el código de un programa para ser utilizado posteriormente deberá guardar en el ordenador el código del programa antes de grabarlo en el Picaxe. Cuando desee reprogramar el Picaxe, grabe un nuevo programa en el microcontrolador, esta acción borra el viejo programa almacenado en la memoria y almacena el nuevo programa en la memoria. La memoria sólo permite el almacenamiento de un programa a la vez.
PICAXE: En este bloque hay un zócalo independiente para cada tamaño de Microntrolador Picaxe, un pulsador (P1), para resetearlo, y tiene unos conectores que sirven para extender los pines del microcontrolador, de esta forma, las señales de entrada y salida se pueden llevar hasta los otros bloques del circuito. La conexión de la fuente de alimentación, el circuito de reset y el cable de programación, que se conecta a la PC donde se escribe el programa ya se encuentran instalados. El Jumper Pin 7, es usado unicamente por el microcontrolador Picaxe-08. Se lo coloca en la posición Grab, para grabar el programa en el microcontrolador, y en la posición Out, para probar el programa. DISPLAYS: EL sistema dispone de dos displays (D1,D2) de ánodo común, conectados sobre el mismo bus de datos y con los ánodos manejados de forma independiente. Se emplea el decodificador SN74LS47 para la conversión de datos que entrega el microcontrolador (A, B, C, D). La habilitación del display correspondiente se hace conectando un nivel lógico bajo en la base del transistor que maneja el ánodo de dicho display. DIODOS LED: Este bloque tiene cuatro diodos LED (L1, L2, L3, L4). Para encenderlos se necesita un nivel lógico alto en su respectivo acceso. SALIDA CON RELE: Este bloque usa un relé para manejar cargas de potencia desde el microcontrolador. Para activarlo, se pone un nivel lógico alto en el pin R. PULSADORES: Este bloque consta de dos interruptores pulsadores normalmente abiertos (P1, P2), conectados a masa con resistencias de 10K. En los pines de conexión se tiene normalmente un nivel lógico bajo, pero cuando se oprimen los botones se obtiene un nivel lógico alto. DIPSWITCH: Este circuito tiene cuatro interruptores (S1, S2, S3, S4), los cuales se conectan a masa con resistencias de 10K. De esta forma en los pines de conexión del dipswitch se tiene un nivel lógico bajo si el interruptor esta abierto, pero cuando el interruptor se cierra, se obtiene un nivel lógico alto. TECLADO MATRICIAL: Este circuito tiene un teclado con una matriz de 3x4, con los caracteres desde 0 a 9, *, y #. Las columnas (C1, C2, C3) del teclado tienen conectadas unas resistencias de 2K7, que sirven para fijar un nivel lógico alto cuando no se esta oprimiendo niguna tecla. BUZZER: En este bloque se instalo un buzzer, porque el sistema Picaxe puede crear automáticamente sonidos de diferentes frecuencias utilizando el comando sound. DISPOSITIVO DE SALIDA: Este bloque provee siete salidas (+5 Vcc o +12 Vcc) con una buena capacidad de corriente. Para amplificar la corriente que entrega el microcontrolador se utiliza el circuito integrado ULN2003 como driver de los transistores de salida. La habilitación del transistor de salida correspondiente se hace conectando un nivel lógico alto en los pines de conexión (S1, S2, S3, S4, S5, S6, S7). El transistor de salida conmuta a masa, por lo tanto la carga hay que colocarla entre las salidas (1,2,3,4,5,6,7), y la alimentación +5 Vcc, o +12 Vcc.
----------------------------------------------------------------------------------------------------------------------------------------------------- "CIRCUITO BASE PARA LA IMPLEMENTACION DE UN PICAXE"
"CIRCUITO BASICO PARA LECTURA DE ENTRADAS DIGITALES"
"CIRCUITO BASICO DE SALIDAS TODO O NADA"
"CONEXIONES PARA PROGRAMAR UN MICROCONTROLADOR PICAXE"
|
|
| comentario del autor | Sab Jun 28, 2008 3:42 pm |
|
|
|