Está en la página 1de 9

Arduino

Lenguaje: Processing/Wiring (basado en JAVA)


Microprocesador: AtMega8
Open-Hardware: de libre acceso
Placas: Serie, USB, Prototipos, stand-alone, Shields
Placa serie: puerto RS232
Placa USB: puerto USB
Arduino UNO:
Microcontrolador: ATmega328
Memoria Flash: 32 Kb
RAM: 2 Kb
EEPROM: 1 Kb
Placa de Prototipos:
Matriz de agujeros para hardware adicional
Es necesaria otra placa para la programacin
Placa Stand-Alone:
Todos los esquemas del Arduino estn disponibles para hacerlo en un protoboard.
Shields:
Placas para montar encima de las placas Arduino para extender sus funcionalidades.
Ejemplos: Xbee (intercomunicador inalmbrico), Motor Shield(controlar motores y encoders),
Ethernet Shield (conectar el Arduino a red Ethernet)
Utilizacin: desarrollo de objetos interactivos autnomos.
Lenguaje:
Setup(): llamado al comienzo del programa para inicializar variables, definir los modos de los
pines, indicar libreras, etc.
Loop(): es un bucle que se repite indefinidamente. Es donde va el programa principal.
Sketch: nombre utilizado para un programa.
Comentarios: una lnea//, multilneas /**/
Algunas funciones:
pinMode(Pin, Modo E/S)

digitalWrite(Pin, Modo H/L)


delay(tiempo(ms))
Variables:
Char: caracteres ASCII, 1 byte, char var=
Byte: 8 bits, valores numricos de 127 a -128, byte numero
Int: tipo entero de datos, 16 bits, rango de -32768 a 32767
Long: tipo dato largo o entero largo, 32 bits, rango de -2.147.483.648 a 2.147.483.647
Boolean: valores true/false, boolean var =
Vector: estructura de datos int Vec[longitud]={}
Int digitalRead(pin): captura el valor del pin digital especificado (1/0)
Int analogRead(pin): captura el valor del pin analgico especificado (0/1024)
analogWrite(pin, valor): asigna un valor analgico al pin especificado, no es necesario declarar
pines analgicos como E/S.
Serial.begin(9600): inicializa el puerto serial a 9600
println: imprime lnea a lnea en el Serial Monitor
if(): comprueba si la condicin contenida () se ha cumplido
if()else: agrupa mltiples comprobaciones
for: realiza el control sobre una secuencia de repeticin. Ej: for (int=1; i<=8, i++) {}
switch case: estructura de control del flujo. Switch (var) {case var: break; }
Arduino Software: IDE (Integrated Development Enviroment), Processing, JAVA
Libreras: proven funcionalidad extra al sketch. Importar libreras primero
EEPROM, Ethernet, Firmata, LiquidCrystal, Servo, SoftwareSerial, Stepper, Wire.

Propeller
El Propeller proporciona flexibilidad y potencia a travs de sus ochos procesadores, llamados Cogs,
que puede realizar simultneamente tareas independientes o cooperativas. Los Cogs comparten de
E/S y otros recursos.
Cada uno de estos ochos procesadores (Cogs) es de 32 bits, con una velocidad de procesos de 20
MIPS usando un pulso de reloj de 80 MHz. Es decir, en un momento en que estn trabajando todos
los Cogs, tenemos una capacidad de proceso de 160 MIPS.
Cada procesador tiene su propia RAM local de 2Kb (512 registros de 32 bits). Tambin existe una
memoria comn, compartida, que se divide en dos secciones: una RAM de 32 Kb y una ROM de 32
Kb.
Especificaciones

La arquitectura del Propeller


La arquitectura del Propeller se basa en:

8 procesadores, denominados Cogs


Recursos propios de cada procesador
Recursos compartidos
Un controlador principal, llamada Hub.

El Hub se encarga de:


1. Mantener la integridad del sistema
2. Asignar el funcionamiento de los Cogs y el reparo de los recursos comunes

3. Controlar que el Cogs pueda tener acceso a los recursos comunes-exclusivos (mutuoexclusivo), tales como RAM/ROM principal, registros de configuracin, etc.
4. Proporcionar el acceso exclusivo a los recursos siguiendo el procedimiento Round
Robin, sin importar cuantos Cogs estn funcionando.
Los recursos compartidos:

Hay dos tipos de recursos compartidos en el Propeller:


1. Comn
2. Mutuo-exclusivo
Los recursos comunes se pueden emplear cualquier momento por cualquier nmero de
Cogs.
Los recursos mutuo-exclusivos se puede alcanzar por cualquier Cog, pero solamente un
Cog a la vez.
Los recursos comunes
son los pines de E/S y el
contador del sistema. El
resto de los recursos
compartidos son mutuoexclusivos por
naturaleza y el acceso a
ellos es controlado por
el Hub.

EL reloj del sistema

El reloj del sistema es el oscilador principal o central para casi todos los componentes del
Propeller
La seal del reloj del sistema se proporciona a partir de una de las tres posibles fuentes:
o El oscilador interno de RC
o El circuito de PLL
o El oscilador de cristal
La fuente se determina en los ajustes del registro CLK, que es seleccionable en tiempo de
ejecucin.
Un oscilador externo puede usar el multiplicador PLL que puede ser de 1x, 2x, 4x, 8x, 16x y
puede ser modificado en tiempo de ejecucin.
El reloj puede ir de 32Khz hasta 80Mhz.

Cogs (procesadores).

El Propeller contiene ocho procesadores, llamados Cogs, numerados del 0 a 7.


Cada Cog contiene los siguientes componentes:
o Un procesador
o RAM local de @Kb configurados como 512 registros
o Dos asistentes de E/S
o 2 PLLs
o Un generador de video
o Registro de salida de E/S
o Registro de direccin de E/S
Pueden ejecutar tareas independientes
Pueden ejecutar instrucciones simultneamente
Pueden tener acceso a los mismos recursos compartidos, como los pines de E/S, la RAM
global, y el contador del sistema
Pueden arrancar y parar en el tiempo de ejecucin

El Hub
Para mantener la integridad del sistema, los recursos mutuo-exclusivos no debe ser accedido por
ms de un Cog a la vez. El Hub mantiene esta integridad controlando el acceso a los recursos
mutuo-exclusivos, dando a cada Cog un turno para acceder a ellos de forma Round Robin desde el
Cog 0 a el Cog 7 y volviendo al Cog 0
EL Hub y el bus que controla, funcionan la mitad de la frecuencia de reloj del sistema. Esto
significa que el Hub da acceso al Cog a los recursos mutuo-exclusivos una vez cada 16 ciclos de
reloj del sistema
Pines de E/S
El Propeller tiene 32 pines de E/S, 28 de los cuales estn destinados para fines de propsito
general. Cuatro pines de E/S (28-31) son de propsito especial durante el arranque y luego estn
disponibles para usos generales
Despus del arranque, cualquier pin de E/S se puede utilizar por cualquier Cog en cualquier
momento puesto que el conjunto de pines de E/S es un recurso comn.
Contador del Sistema (comn)

Es un contador global de 32 bits.


Los Cogs pueden leer el contador del sistema (va su registro CNT) para realizar clculos de
sincronizacin y pueden utilizar el comando de WAITCNT para crear retrasos eficaces
dentro de su proceso.

Registro CLK (comn)

El registro de CLK es el de control de configuracin del reloj del sistema; determina la


fuente y las caractersticas del Reloj del Sistema.
El registro de CLK configura el oscilador RC, el reloj PLL, el oscilador de cristal, y los
circuitos del selector del reloj.
Es configurado en el tiempo de compilacin por la declaracin CLKMODE

Semforos (mutex)

Hay ocho semforos disponibles para facilitar el acceso exclusivo a los recursos definidos
por el usuario entre los mltiples Cogs.
Los semforos son bits globales accedidos a travs del Hub con las siguientes instrucciones:
LOCKNEW, LOCKRET, LOCKSET y LOCKCLR.
Los semforos solo pueden ser accedidos a travs del Hub, slo un Cog a la vez puede
afectarlos

Memoria Principal (mutex)

La memoria principal es un bloque de 64 K bytes que es accesible por todos los Cogs como
recurso mutuo-exclusivo a travs del Hub.
Est formada por 32 KB de RAM y 32 KB de ROM.
Los 32 KB de RAM principal son de propsito general y constituyen el destino de una
aplicacin Propeller, que puede ser descargada de un host o cargada de los 32 KB de
EEPROM externa.
La ROM se utiliza para almacenar la definicin de caracteres, funciones matemticas, el
Boot Loader y el intrprete Spin.

Definicin de caracteres
La primera mitad de la ROM contiene un sistema de 256 definiciones de carcter. Cada definicin
de carcter corresponde a 16 pxeles de ancho y 32 pxeles de alto. Estas definiciones de carcter
se pueden utilizar para las presentaciones de vdeo, LCD grfico, impresin, etc.
El arranque o reset
El proceso de encendido o reset se divide en las siguientes fases:
1. Carga el programa embebido del Boot Loader al Cog 0 y arranca.
2. El Boot loader realiza una o ms de las siguientes tareas en este orden:
a. Detecta la comunicacin de un host, en los pines P30 y P31. Si se detecta conversa con
el host para identificar el chip Propeller y posiblemente para descargar un programa
en RAM global y opcionalmente en la EEPROM externa de 32Kb.

b. Si no se detect ninguna comunicacin, el Boot Loader busca la EEPROM externa 32Kb


en los pines P28 y P29. Si se detecta una EEPROM, se carga los 32KBen el RAM global
del Propeller.
c. Si no se detect ninguna EEPROM, el Boot Loader se para, se detiene el Cog 0, el chip
del Propeller entra en modo de parada, y todos los pines de E/S se fijan como
entradas.
3. Si los pasos 2a y 2b son capaces de cargar un programa a la RAM global, y el host no ha
mandado un comando de suspensin., el Cog 0 se re arranca con el intrprete Spin y el
cdigo del usuario se ejecuta desde la RAM global.
Entorno de desarrollo
Software Propeller
El software del Propeller consta de:

Un archivo ejecutable
Unos archivos de ayuda on-line
Archivos de la biblioteca Propeller

Cada archivo de la biblioteca es un objeto independiente, disponible para utilizar en los proyectos
Propeller, con cdigo fuente y documentacin incorporada. Son realmente archivos de texto, que
pueden ser corregidos en cualquier editor de texto.
Documentacin
Es posible escribir la documentacin de usuario para un objeto dentro del archivo fuente del objeto.
Esto significa que habr menos archivos para mantener
Para permitir este proceso, sean creados dos tipos de comentarios en la fuente:
1. Los comentarios cdigo
2. Comentario de documento
El lenguaje Spin
El Propeller puede ser programado en asembler o en un lenguaje propio llamado Spin.
Bloques de cdigo

CON: declaracin de constantes


VAR: declaracin de variables
OBJ: declaracin de referencias de objetos
PUB: declaracin de mtodos pblicos
PRI: declaracin de mtodos privados
DAT: declaracin de datos

Control de Cog

COGID: obtener el ld de Cog actual


COGNEW: iniciar el siguiente Cog disponible
COGINIT: iniciar o reiniciar un Cog por su ld
COGSTOP: detener un Cog por su ld
REBOOT: resetear el chip Propeller

Control de proceso

LOCKNEW: comprobar un nuevo semforo


LOCKRET: devolver semforo
LOCKCLR: pone un semforo a eros por ld
LOCKSET: fijar un semforo por ld
WAITCNT: espera a que el contador del sistema alcance el valor
WAITPEQ: esperar a que el pin se iguale a un valor
WAITPNE: espera que el pin no se igual a un valor
WAITVID: espera a la sincronizacin de video y repartir el siguiente grupo color/pixel

Control de flujo

IF, ELSEIF, ELSE


CASE, OTHER
REPEAT FROM TO STEP UNTIL WHILE
NEXT: salta el resto del bloque REPEAT y va a la siguiente iteracin del bucle
QUIT sale del bucle REPEAT.
RETURN sale de PUB/PRI con estado normal y opcionalmente con un valor de retorno
ABORT sale de PUB/PRI con estado de abort y opcionalmente con un valor de retorno

Operaciones sobre pines

Dira[pin] configura un pin como entrada o salida


o Dira[1]:=1 configura como salida
o Dira[2]:=0 configura como entrada
Outa[pin] configura el pin como alto o bajo
o Outa[4]:=1 coloca el P4 como alto
o Outa[4]:=0 coloca como bajo
Ina[pin] lee un pin

Retrasos de tiempo
Los tres constructores de bloques bsicos para un evento de tiempo en Spin son:

Cnt un registro que cuenta los ciclos de reloj

Clkfreq un comando que regresa la frecuencia del reloj en hz


Waitcnt un comando de espera a que el registro cnt tenga cierto valor
o waitcnt (clkfreq + cnt) ' espera por 1 s
o waitcnt(clkfreq/1000 + cnt) ' espera 1 ms

Definicin del reloj de un sistema


El reloj del sistema se define en el bloque CON de la siguiente manera:
CON
o
o

_xinfreq = 5_000_000
_clkmode = xtal1 + pll16x

Comando Repeat
Existen diferentes formas de modificar el ciclo repeat para contar hasta cierto valor y parar.

repeat 20 ' Repite el ciclo 20 veces


repeat until valor == 20 ' Repite hasta que valor es igual a 20
repeat while valor < 20 ' Repite mientras que valor es menor que 20
repeat valor from 0 a 18 step 2 asigna a valor los valores de 0 a 18 de dos en dos

También podría gustarte