Você está na página 1de 87

Flowcode permite

comprender intuitivamente
el desarrollo de software
DIGO

para aplicaciones
embebidas, debido a que
el código está escrito
UJO CÓ

utilizando objetos

1
gráficos, en lugar de los
lenguajes de
programación
curso FL

tradicionales como C y
ensamblador. Primer
episodio.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

por día de la invención del primer transistor,

D
dotado con millones de procesos de inteligencia de
ahora se produjo en información por segundo vida, semplificandoci. Detrás
En 1947, la electrónica se ha convertido en parte de estos dispositivos, servidores incansables reales e
parte integral de nuestras vidas, y sería impensable invisibles de nuestros días, que todavía se esconden la
ahora, creen que pueden prescindir de esta pieza mano dell'uo- mo: alguien ha diseñado características,
esencial de la historia de la evolución humana. Una de ellos diseñados por vía electrónica, y se ha desarrollado
las derivaciones más comunes de esta disciplina es sin la lógica. El desarrollo de sistemas embebidos ha
duda representados por el mundo de los dispositivos experimentado su desarrollo en los últimos años, y se
integrados. Cuando hacemos una llamada telefónica, o ha pasado de dispositivos totalmente análogas a los
navegar por Internet usando nuestros teléfonos sistemas de microcontroladores, para hacer el
inteligentes, cuando conducimos nuestro coche, cuando Formance per- en el punto, ser opportunamen- lo
vamos de compras y pagar con nuestra tarjeta de planeado, usando un lenguaje apropiado la
crédito, en cada una de estas circunstancias, varios programación. La programación, el corazón real de
dispositivos electrónicos desarrollo, ha sido

En la electrónica ~ de junio de 2013 127


Fig. 1 logo Matrix
Multimedia.

Durante años, el dominio exclusivo de las pocas y 18 (8 bits),


empresas en el mundo, siendo de hecho inaccesible a • Microchip dsPIC30F, dsPIC33F, dsPI- C33E y
empresas no especializadas y privatizada a que, PIC24 (E, H y F),
debido a los altos costos de los sistemas de • Atmel AVR y la plataforma Arduino,
desarrollo. En las últimas dos décadas, con la llegada • Atmel ARM.
de los primeros controladores basados ​en memorias
flash (reprogramable eléctricamente camente), el El concepto en que se basa Flowcode es el uso de una
coste de desarrollo de sistemas se ha reducido representación gráfica sobre la base de diagramas de flujo (o
drásticamente, por lo que este tipo de tecnología diagrama de flujo, de ahí el nombre Flowcode) para el
accesible incluso a los promotores privados y para el desarrollo de un programa de objetivo incorporado. Este
mundo stico hobbi- . Estoy tan aparecieron los enfoque hace que sea posible reemplazar la actividad mental
primeros entornos de desarrollo y compiladores de basado en imple- palabras clave, típico de los lenguajes de
software a bajo costo (lenguajes basados ​tales como programación tradicionales. Un ejemplo de un fragmento de
C y ensamblador generados ralmente). Dichos código gráfico escrito en Flowcode se informa en Fig. 2.
entornos Sin embargo, han seguido manteniendo
características de complejidad de uso y los idiomas
que se utilizan para requerir, rey esse- utilizados de El entorno de desarrollo, además de generar el
manera efectiva, las bases de programación no es ejecutable para la programación del chip (y
indiferente. posiblemente también la traducción en el código
fuente C), integra un simulador y un ICD ( depurador
en circuito)
para respaldar depuración código directamente sobre el
objetivo. Una de las características más interesantes de
instrumentos se han mantenido, sin embargo, un obstáculo Flowcode es, como veremos en detalle en los próximos
importante para superar a los recién llegados a la episodios, la disponibilidad de una amplia biblioteca de
programación de software. Para superar los problemas de componentes para el uso de los periféricos normal- mente
este tipo está naciendo, en los últimos años, una nueva integrados en los microcontroladores. El uso de los
generación de entornos de desarrollo, que tiene el propósito componentes simplifica considerablemente el acceso a los
de abstraer las dificultades intrínsecas de un lenguaje común dispositivos periféricos, incluso en el caso de dispositivos más Fig. 2
de programación basada en texto, atrás- uso Cendo de Ejemplo de
complejos, tales como
código
formalismos más comunes . Uno de los miembros
Flowcode.
destacados de esta nueva generación de entornos de
desarrollo es Flowcode, producido por Matrix Multimedia,
empresa líder en la producción de sistemas de desarrollo de
hardware / software para microcontroladores.

Flowcode Programación Gráfica


curso FL
El entorno de desarrollo Flowcode, ahora en su quinta
versión, fue creado para superar el problema de la
complejidad de los entornos tradicionales de desarrollo y
permitir el desarrollo de aplicaciones embebidas
complejas, incluso aquellos con un mínimo (o no) el
UJO

conocimiento de los lenguajes de programación .


Flowcode es un IDE completo (Integrated Development
Environment) para microcontroladores de 8, 16 y 32 bits.
CÓDIGO

Los objetivos actuales son compatibles:

• serie 10, 12, 16 Microchip PICmicro

128 De junio de 2013 ~ en Electrónica


DIGO
UJO CÓ
curso FL

La Fig. 3
Matriz de sitio
multimedia para
descargar
Flowcode.

tales como el puerto USB, el puerto éter-neta u otra


comunicación y / o sistemas de control. Una descripción
más detallada de los componentes se hará más adelante,
pero es importante hacer hincapié en que la disponibilidad
de estas bibliotecas permite el desarrollo de aplicaciones,
incluso muy complejas con unos pocos interconexión
sencilla de bloques funcionales.

Instalación y configuración de
Flowcode V5
Como primer argumento illustria- mo sobre cómo instalar
y configurar el IDE. El paquete de instalación Flowcode
se puede descargar desde el sitio web de Matrix ( www.
matrixmultimedia.com) y, como se mencionó
de instalación Flowcode.
anteriormente pre- actualmente soporta varios objetivos,
que corresponden Varias versiones maestras del
software. Como una versión básica del curso fue elegido
la versión para microcontroladores PIC de Microchip
Technology. Después de haber sido vinculado a la página
web de la Matriz, accedemos a la sección de descargas y
descargar la versión de PIC.

Después de la descarga de archivos ejecutar las


FlowcodeV5 - PICMicro.exe y empezamos a instalar el
programa. Las comparaciones Ra mago La instalación,
la primera pantalla se muestra en la Fig. 4. Pulsamos el
botón siguiente para acceder a la siguiente pantalla,
confirmamos para aceptar la licencia y continuar.

Fig. 5 - Aceptación de la licencia. Fig. 4 - ventana inicial

En la electrónica ~ de junio de 2013 129


desarrollo está bien instalado y puede proceder a la
realización de nuestras aplicaciones. Como hardware
SUP- al curso que va a utilizar un sistema modular de
tarjetas de desarrollo, siempre se produce por la matriz,
que se llama E-bloque. El sistema consta de una placa
base a la que se puede conectar a diferentes bloques
expansiones funcionalidad Derne. Cada bloque
proporciona los recursos de hardware necesarios para
las aplicará una interfaz específica, tales como, por
ejemplo, puertos, USB o Ethernet, CAN pantalla gráfica,
interfaces, controladores para motores paso a paso, etc.
Fig. 6 - la entrada de datos de instalación. La junta como una opción de la placa base para el
desarrollo de aplicaciones que se presentarán a lo largo
del tate duración del curso es el EB006. La junta EB006
se suministra con un CD de instalación que se utiliza
para instalar todos los controladores necesarios para
utilizar youself correctivo y sistema de desarrollo.
Insertarlo en el reproductor de CD y posicionar nuestra
niamoci dentro de la carpeta "drivers \ EB-006".
Dependiendo de la arquitectura de nuestro PC elegimos
dpinst_amd64 (64 bits AMD o Intel), dpins_ia64 (Itanium
de 64 bits) o dpins_x86 (32 bits) y se inicia el ejecutable.
Se verá la pantalla La Fig. 8, Se forma in- pulsando el
botón "Avan- que" se iniciará el proceso de instala- ción
del conductor. Vamos adelante y, en el caso de una
notificación de nosotros que Windows no puede verificar
la autenticidad de los conductores, optar por seguir con
el installazio- ella. La operación se ha completado la

Fig. 7 - el código de activación Selección de producto.

Fig. 8 Inicio de
A continuación, entramos en nuestro nombre y el nombre
instalación del
de la organización (en este caso nos hemos referido
controlador de
como "ElettronicaIn"), como se muestra en La Fig. 6, anco- pantalla para
ra y pulse el botón una vez Siguiente. Seleccionamos la E-EB006 bloque.

carpeta de destino y pasar a la siguiente pantalla. En este


punto el mago Le pide confirmación para continuar con la
instalación y comenzará después de recibir la copia del
archivo en el proceso de disco. Después dell'operazio- se
le pedirá que active el producto utilizando una clave de
curso FL
activación, o activar una licencia libre, como podemos ver
en la Fig. 7. La licencia es libre sin restricciones en
términos de tiempo, pero intensamente y vato un conjunto
reducido de all'inter- no hay componentes ambientales.
CÓDIGO UJO

Instalación EB006 Junta de Desarrollo


En este punto nuestro entorno

130 De junio de 2013 ~ en Electrónica


DIGO
UJO CÓ
curso FL

La Fig. 9
Interface
Flowcode.

pantalla que indica que la instalación se ha realizado la gestión del dispositivo. Por último, a través de un
correctamente. Para finalizar la instalación pulse el apropiado mago configuración, es posible establecer la
botón "Finalizar". configuración básica del microcontrolador, tales como
la frecuencia del reloj interno, cualquier protección, la
Conectamos ahora placa de desarrollo EB006 con el configuración de la memoria, etc. La interfaz Flowcode
cable USB (suministrado) a la computadora. El sistema se divide principalmente en bares y paneles, sin ognu-
opera- vo será instalar controladores adicionales y uno de los cuales tiene una tarea específica que ahora
de los dos LED en las luces de mesa, BE landoci vamos a analizar. Si se muestran no todos los bares,
informó que depurador Es activo. puede añadirlos al menú " pantallas "Simplemente
añadiendo una marca de verificación junto al nombre
que los identifica. en Fig. 9 Se muestra la pantalla prin-
Interfaz de Flowcode Flowcode Cipale. En el centro de la mo blindado es
En este punto también nuestro desarrollo de hardware una pestaña (que en nuestro caso se llama " principal "),
está configurado y listo para ser utilizado, a Que llamaremos" área del proyecto "¿Qué va a ser
continuación, pasamos a la descripción de la interfaz implementado en el diagrama de flujo. En la parte
IDE programa- ción. Como ya se ha mencionado en la izquierda de la pantalla en su lugar se presenta la
parte introductoria de este episodio, Flowcode es un barra de iconos, desde el que se puede insertar Asesor
entorno de desarrollo gráfico: esto significa que el esce- que bloquean dentro del programa.
programa no se muestra, como es el caso de los
lenguajes de programación tradicionales, a partir de
un código textual, pero estará compuesto, haciendo
uso únicamente de objetos gráficos. En el caso de la
representación elección Flowcode es el de los Fig. 10
diagramas de flujo (o diagrama de flujo). Los Barras de
herramientas.
elementos básicos del diagrama de flujo deben poner
en práctica las estructuras de control fundamentales
del programa, tales como bloques de decisión, ciclos,
retrasos, múltiples selecciones, las operaciones
lógicas y matemáticas y más.

En la electrónica ~ de junio de 2013 131


Fig. 11
Barre de
los
iconos. La Fig. 12 Opciones del
proyecto.

Muy por encima de la zona del proyecto son la barra de


herramientas (que se muestra en Fig. 10),
la que nos proporciona los comandos básicos para
gestionar el proyecto, generar código, depurar, compilar
y simular nuestro diseño. Entre el área del proyecto y la
barra de herramientas se encuentran los componentes
de la barra que nos permite utilizar, dentro de nuestros
proyectos, componentes complejos, tales como USB,
Ethernet, control de motores sin escobillas, y mucho
más, simplemente colocándolos dentro del panel que
es visible en la parte inferior central de la pantalla del
programa. La barra de iconos, representada en Fig.

Fig.
11 Contiene todos los bloques posibles que se 18F4550, como se muestra en Fig. 12. Ahora para la Descripción del
pueden agregar en el diagrama de flujo. Para colocar ficha " Descripción del proyecto "Y insertamos una proyecto 13

una cerradura de seguridad simplemente arrastre descripción significativa. Desde el punto de la Inserción.

dentro del diagrama: una flecha amarilla nos mostrará funcionalidad del programa no cambia nada si dejamos
el lugar exacto en el que se inserta y el icono del estos campos en blanco pero con el fin de entender
ratón cambia pren- Dendo forma del objeto que mejor lo que lleva a nuestro proyecto, que sería una
queremos insertar en nuestro diagrama de flujo. buena idea para insertar al menos una breve
descripción. En nuestro caso hemos incluido el título y
la descripción del proyecto que se realizará al final de
este episodio: un sencillo programa que parpadea un
curso FL
Vamos a describir en los próximos episodios de los LED. Dentro de la pestaña " Operaciones generales "Visible
otros bares y paneles que no hemos discutido en La Fig. 14, configuramos el proyecto para reflejar la
esta sección. implementación de hardware del sistema. El cuadro " de
la velocidad de reloj PIC "Debe ser ajustado a 48 MHz y
Crear un proyecto la caja" Configurar compo- nente "Usted debe estar
UJO

Para crear un proyecto Flowcode abierta y pulse el seleccionado. Ahora vamos a configurar los ajustes
botón " nuevo proyecto "En la barra de herramientas. específicos del microcontrolador haciendo clic en el
botón
CÓDIGO

Vamos a configurar el proyecto para que pueda


ejemplos operativos veremos más adelante.
Seleccionamos gliendo la familia de
microcontroladores esce- 18 y más tarde

132 De junio de 2013 ~ en Electrónica


La Fig. 14
Ajustes generales nuevo
proyecto.
DIGO
UJO CÓ
curso FL

" configurar el componente "Lo que nos hará accede- Rey


en una pantalla de configuración como la que se
muestra en la Fig. 15. Por razones de tiempo sólo La Fig. 15 especifica la
tendremos que cam- pusimos cada bit como se muestra un bloque. Al igual que antes inse- la operación de configuración
en la figura, sin soffer- podrida en porque de cada reactivación del bloque de la dirección salidas del microcontrolador.

elección, que todavía puede ser la lectura completa ficha microcontrolador, arrastrando dentro dell ' área del proyecto el
técnica específicamente el microcontrolador utilizado. icono de salida, (siente pre- en la barra de iconos) entre los
Después de rellenado correctamente todos los campos bloques de inicio y de fin, que ya están presentes de forma
pulsamos el botón Aceptar para volver a la pantalla predeterminada dentro del diagrama. Al hacer clic en el
guración proyectará de nuevo y pulse OK para iniciar la botón derecho del ratón sobre el bloque que hemos entrado
realización del diagrama de flujo. aparece la ventana emergente de Windows. Elegimos la
opción " propiedad "Y examinar la ventana que se abre, se
muestra por conveniencia de Fig. 16.

Para utilizar esta configuración en los siguientes ejemplos


se ahorra el ascensor está diseñado para, pulsando sobre Ahora podemos establecer cualquier ty proprie-
el botón " Guardar proyecto "Barra de herramientas, con el disponibles para el bloque seleccionamos. El bloque
nombre" ConfigurazioneBase.fcf ". se utiliza para comprobar el estado de nuestras
salidas del microcontrolador. En la lista a scorrimen-
" puerto "Podemos elegir la puerta de la cual
Adición de bloques en el queremos cambiar el valor
Fig.
diagrama de flujo Propiedades de
Una vez que la configuración del hardware se ha bloque 16 de salida.

completado, volvemos a en el ascensor está diseñado para


insertar los bloques del diagrama de flujo. Para insertar un
bloque simplemente arrastrado narlo desde la barra de
herramientas dentro del área del proyecto. Una flecha
amarilla nos mostrará el lugar exacto donde vas a insertar.
Para quitar un bloque sólo tiene que seleccionarlo y pulsar
" borrar ". Al hacer clic en el bloque con el botón derecho del
ratón se puede realizar otras operaciones tales como
cortar, copiar, examinar sus propiedades y más veremos
en episodios posteriores.

Examinemos ahora las propiedades de

En la electrónica ~ de junio de 2013 133


durante la elaboración de un código implementado en
cualquier lenguaje de programación. Vamos a añadir
un retraso de software dentro de nuestro diagrama de
bloques. Para ello seleccionamos el icono de bloqueo
de retardo, esta pre SEM en la barra de iconos, y se
arrastra dentro del diagrama, colocándolo justo debajo
Fig. de salida, mientras que la caja " Variable o valor "Nos del bloque insertado previamente. En este punto se
Propiedades de indican el valor al cual queremos establecer el puerto accede a las propiedades del bloque, haciendo clic en
bloque 17 de
seleccionado. Por lo general, no fijamos el valor de todo el botón derecho del ratón, como lo hicimos
retardo.
el puerto de salida, pero sólo uno o unos pocos bits. anteriormente. Como se puede ver en La Fig. 17, el
Para ello nos encontramos consuelo en el panel " salida ". bloque permite insertar un retraso en la ejecución del
Si mo selezionia- " de un solo bit "Podemos elegir qué bits flujo del programa. Podemos elegir la cantidad de
conjunto, dejando inalterado el valor de los otros pines retardo que se insertará indicando el valor y la unidad
de puerto. La selección de " plena puerto "Y marcando la de medida. El valor que podemos insertar debe ser un
casilla" El uso de la máscara "Se puede seleccionar qué tipo entero, es decir, sin coma, pero todavía puede
es necesario establecer bits. De esta manera es posible entrar en el segundo retrasos menores opera a través
dejar sin cambios los valores del perno de la puerta cuyo de la unidad de medida con una resolución más alta.
bit no está marcado en la máscara. El cuadro de texto " etiqueta
Por ejemplo, para añadir un retardo de 0,5 segundos
ETI "Se le permite editar el texto que se mostrará por valor ponemos justo dentro de la caja " valor de retardo "El
encima de la parte interior del diagrama de bloques. Es número 500, pero como una unidad que indica" milisegundos
muy importante indicar para cada bloque per- etiqueta ". Recordemos que 1 milisegundo equivale a 1.000
descriptiva para, aunque para proyectos muy simples segundos de micro y 1 segundo es igual a 1000
pueden parecer inútil, si queríamos realiz- diagramas milisegundos.
complejos Zare, puede ser muy útil tener etiquetas que,
con unas pocas palabras, se indica lo que pone en
práctica ese bloque en particular. Ellos son el
equivalente de las observaciones escritas en la práctica

Las estructuras de control de flujo


Veamos algunas de las

Fig. Árbol
18 decisión
binaria y la
comparación
del panel de
configuración. curso FL
CÓDIGO UJO

134 De junio de 2013 ~ en Electrónica


Fig.
Estructura 19
Selección
Múltiple.

otros iconos en " icono de la barra ". En Flowcode se


DIGO

pueden utilizar todas las estructuras de control


usuales presentes normalmente en lenguajes de
programación Tion como, a modo de ejemplo, el C.
UJO CÓ

Decisión binaria
A través de la ' icono de decisión puede implementar la
curso FL

funcionalidad de toma de decisiones es binario. El bloque


hace que los pasos de flujo de programa para hacer la
primera o la rama secundaria, en función del valor de la
comparación llevada a cabo dentro del bloque. En la práctica,
si se verifica la condición, el programa continuará la ejecución
de los bloques que se le presenten en la rama identificada por
la etiqueta " uno "De lo contrario ejecutar la otra rama. Para
aquellos que conocen el lenguaje del bloque C es el
equivalente educativo " si ".

Selección múltiple
Mediante el uso de la ' selección del icono es posible poner
La Fig. 20
en práctica la capacidad de selección múltiple. El flujo del
Ciclo
programa se desvía a través de la rama para el que la La estructura por defecto implemente el bloque " hasta " Pero para
"mientras
ecuación comparación satisface el valor indicado en el lograr los otros dos construcciones simplemente modifican sus que"

caso específico. Donde ninguno de los casos indicados propiedades como se ha visto por los otros bloques en las (Siempre y cuando es cier

satisface la ecuación ción de la selección, el programa secciones anteriores. Vamos a explorar las tres opciones que se
llevará a cabo las instrucciones de la rama de por defecto. ofrecen:

Se pueden hacer selecciones con un máximo de 10 casos Ciclo "Mientras "


diferentes, pero este número es más que suficiente para Mientras la ecuación comparación es verdadera las
darse cuenta de la mayor parte de los posibles instrucciones se ejecutan en el interior del bucle. La
programas. En la práctica, si una de las ramas indicadas comparación es effettua- a la primera entrada en el
como una etiqueta tiene el valor que satisface la ecuación bloque de ciclo y cada vez que se terminan todas las
se ejecuta, de lo contrario se descarta. Sólo una de las instrucciones internas por ciclo. Cuando la comparación
ramas se pueden realizar y cada uno debe tener un valor es falsa instrucciones internas no se ejecutan y el
diferente de la otra selección. Es el equivalente de la programa continúa la ejecución de los pasos después de
construcción " cambiar ... caso "De un programa ciclo. En el caso de que la ecuación de la comparación
implementado en el lenguaje C. Se muestra un ejemplo de resultaría ser falsa en el primer control, el código interno
uso de la estructura de selección múltiple en Fig. 19. para el ciclo no se ejecuta ni una sola vez y el programa
continúa su ejecución ignorar las instrucciones Nute
contenidos dentro de los dos bloques de ciclo. Un
ejemplo de este tipo de ciclo se muestra en la Fig. 20.

Icono de ciclo
L ' icono de bucle Que permite alcanzar tres dife- rentes
controles de flujo:
- Hasta Ciclo "Correr hasta que ..."
- Correr hasta que se ... Al establecer las propiedades del bloque " Te- es el ciclo: "El
- Repetir valor" fecha tope "Al igual que en

En la electrónica ~ de junio de 2013 135


Fig. 21 - Ciclo "Run ... tanto tiempo." La comparación se realiza en el extremo del bloque. Fig. 22 - Ciclo "Repetir".

La Fig. 21, lo hacemos equivalente al bloque escrito en C en la configuración de la celda de la izquierda " Nu meros
con las instrucciones " Mientras que hacer ". En este caso, la ciclos: ". El bloque es fundamental cuan- do necesitamos
instrucción de comparación se realiza al final de cada tener una porción de nuestro diagrama de flujo se lleva a
ejecución de las instrucciones contenidas dentro del bucle. cabo para un número predefinido de veces.
El código interno se ejecuta entonces al menos una vez.

Ejemplo: parpadeamos un LED ...

Ciclo "Repetir" Ahora que sabemos que los principales bloques o


Mediante la selección de las propiedades del bloque a " Número de variaciones respecto del control de conocimientos
ciclos: "Tal y como se ha hecho en Fig. flus-, podemos implementar un simple diagrama que
22, el ciclo se pone a funcionar como un " para ". parpadear un LED. Para este caso tenemos los
Configurado de esta manera las instrucciones internas siguientes componentes:
se ejecutan un número de veces igual al número
indicado - EB006 "multiprogram- PICmicro USB

La Fig. 23

Junta EB006 la
izquierda y la
pestaña E-Blocks
EB004 derecha. curso FL
CÓDIGO UJO

136 De junio de 2013 ~ en Electrónica


Fig. 24 Un método para la eliminación
del microcontrolador PIC.

con uno a 12MHz y mover el saltador de la selección de


DIGO

la fuente de reloj en " OSC "Y el interruptor de selección


de la oscilación a" XTAL ". Un ción gráfica abstracta
dell'imposta- de los diversos puente se informa en Fig.
UJO CÓ

25.
Conectamos ahora la tarjeta EB006 con el EB004 E-
bloques usando el puerto A, como se ilustra en Fig. 26.
curso FL

El hardware está listo y podemos dedicación aplicación


Carci del programa. Abrimos Flowcode y cargar la
configuración de la base de que habíamos guardado
tablero de mer " durante la configuración de nuestro primer proyecto.
- EB004 "LED Board" Pulsamos el botón " proyecto abierto "En la barra de
- PIC18F4550 herramientas y seleccione el archivo" ConfigurazioneBase.fcf
- 12MHz cuarzo ". Para evitar "ensuciar" el archivo, ya que Flowcode
durante algunas operaciones de guardar
La junta EB006 contiene el microcontrolador y el automáticamente el proyecto, guardar el proyecto de
hardware necesario para interactuar con otras tarjetas inmediato con un nuevo nombre. En el menú seleccione
de E-blocks y el PC desde el que se va a programar; " Archivo / Guardar como ... "Y se denota como el nuevo
Se debe estar configurado para ser utilizado en nombre" LampeggioLed.fcf ". Ahora vamos a pensar
nuestro ejemplo. El puente de selección de
alimentación debe ser colocado en el lado izquierdo, a
fin de garantizar que el suministro proviene de USB. El Fig. 25 interruptores de
configuración y puentes
puente de programación también debe estar
pestaña EB006.
configurado como USB, por lo que se puede
programar directamente desde un PC, sin la ayuda de
ICSP consumidor programada de Microchip.
Sustituyendo ahora el microcontrolador que se monta
actualmente en el tablero con el PIC18F4550. Esta
operación es muy delicada, de cinco porque tenemos
que tener mucho cuidado en la eliminación del
microcontrolador sin dañar placa de desarrollo el poder de selección
neggiare. Fig. 24. puente

Puente programador
selección

Prestando atención a la dirección dell'al- el pasador 40 la selección Puente Función del


de la carcasa, inserte el PI C18F4550, asegurándose oscilador pin
de que todos los pasadores van sin doblar, dentro del
casco. Para plegar correctamente las piernas de
PDIP40, podemos ayudar con el plano de nuestra circuito de
mesa de trabajo, apoyando su lado PDIP y confiando oscilación
en el caso hasta que las piernas son paralelas al
borde. En este punto se reemplaza cuarzo

En la electrónica ~ de junio de 2013 137


Fig. 26 la
configuración
completa para el
ejemplo de forma de
realización.

veríamos debido Fe- extensión física


nomeni a NO- ojo stro en el LED
siempre encendido, pero con una
intensidad menor que la que será
máxima. Para evitar este problema
insertamos un bloque de retardo
después de la puesta a uno de la
puerta y otro - idéntico - puesto a
cero después de la cerradura de la
puerta. Hemos establecido el valor
del retardo de 1 segundo tanto para
las operaciones que se deben realizar los bloques insertados. Si usted ha
para asegurarse de que se ve un LED hecho todo correctamente usted debe
parpadeante en los frascos de conseguir una similar a la del
tarjetas. En primer lugar tenemos que diagrama de flujo de Fig. 27.
crear un bucle infinito, el programa se
ejecutará a lo largo de la tem- poco
de actividad y por lo que elegir el
bloque " hasta ". Hemos establecido
para que el bucle siempre se ejecuta Nuestra corriente está ahora en
como se describe en la sección pie listo para ser cargado en la
anterior que es. Entonces, tarjeta. Guarde el chorro de pro
necesitamos algo que nos permite pulsando el botón " proyecto SAVE "En"
que modifiquemos el valor de un pin barra de herramientas "Porque va a
del microcontrolador y el bloque que volver a utilizar más adelante
es correcto para nosotros es el icono como base para otros ejemplos.
de salida. Insertamos los dos bloques Premia- botón mo " compilar y
dentro del bucle y impostiamoli de transferir "Para cargar el programa
modo que la primera septos bit 0 al en el microcontrolador que se
valor 1 y el segundo bit 0 al valor 0. Si presenta en nuestra placa de
curso FL
eseguis- simo el flujo ya que se desarrollo. Esperamos el programa
implementa actualmente, para realizar las operaciones de
carga y una vez que la
observamos que nuestro primer
programa se ejecuta en el tablero
UJO

con LEDs que se encienden y


apagan cada segundo.
CÓDIGO

La Fig. 27
Diagrama de flujo para el
parpadeo del LED conectado g
Un pasador al puerto 0.

138 De junio de 2013 ~ en Electrónica


Continuamos nuestro viaje de
descubrimiento de Flowcode,
el desarrollo gráfico innovador
para microcontroladores
ofrecidos por Matrix
DIGO

Multimedia. Flowcode le
permite desarrollar fácilmente
UJO CÓ

el software para aplicaciones

2
integradas debido a que el
código está escrito utilizando
objetos gráficos, en lugar de
curso FL

los lenguajes de
programación tradicionales
como C y ensamblador.
Segundo episodio.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

ella último episodio del curso abbia- mo

N
LED por medio del módulo de teclado, utilizando sus respectivos
empezó a familiarizarse con el entorno de desarrollo componentes de software.
gráfico Flowcode, desarrollado por Matrix Multime-
dia. Fue presentado en el entorno gráfico, se Las variables en Flowcode
describe en detalle la interfaz, presentado las En el episodio anterior nos zato ser utilizado
estructuras de control y se ha demostrado un primer dispositivos de salida solamente y nunca hicimos uso
ejemplo de programación. En este episodio remo de variables, que son una parte muy importante de la
spieghe- el uso de variables, constantes y describir planificación, ya que nos permiten almacenar datos y
los bloques de entrada y cálculo. Más adelante realizar cálculos. A través del menú principal de
discutiremos dos características muy potentes de Flowcode " Ver-> Explorador de proyectos "Abrimos
Flowcode: macros y componentes. Con el panel adicional donde podemos ver todas las
conocimiento adquirido será lograr el segundo constantes y variables globales disponibles dentro de
proyecto práctico: la gestión del módulo de E-bloque nuestro proyecto, como se muestra en Fig. 1.

En la electrónica ~ Julio / Agosto 2013 113


La Fig. 1
Proyecto de
Flowcode con
el panel
explora
proyecto
visible a la
derecha de la
pantalla.

Añadir variables llegar a una nueva posición de


Para añadir una nueva variable que equilibrio con el ratón en la etiqueta " firme
nāre posicionar el puntero del ratón en "Haga clic en el botón derecho y
la etiqueta de "etiquetas" y haga clic seleccione desde el menú para dina
en el botón derecho para que pueda de diez" Añadir nuevo ". En la ventana
elegir en el desplegable cuadro de de configuración, que se muestra en La
"añadir nuevo" hacia abajo, como se Fig. 4, inserte el nombre de la
muestra en constante, su valor y la breve
descripción. Las constantes ningún
Fig. 2 - Adición de variable. tipo de indicación de silano concreto
Fig. 2.
Al pulsar el botón " Ag venir de porque son tratados como "# definir ".
nuevo "Se abre la creación de una
nueva ventana de variables, como
se muestra en Fig. 3.

Los tipos de datos tati hasta ahora Extracción de variables /


SUP- que van desde lógico numérico, constantes
con o sin un signo, números y Si quisiéramos borrar una variable o
cadenas de punto flotante. Para una constante que es suficiente con
establecer la variable que tiene que seleccionar con el ratón el elemento
introducir el nombre, el valor inicial, deseado desde el panel " explora
una breve descripción y el tipo. Al proyecto "Dentro de la sección" Bali glo- "Y
pulsar el botón "OK" la variable es pulse el botón" borrar ". Al final del
curso FL
ATA crédito y añade a la lista en la proyecto, que podría ser muy útil para
Fig. 3 - creación de ventanillas /
ventana Explorador de proyectos. eliminar todas esas constantes /
configuración variable.
variables resultantes tano incluido en
la lista, pero no se utilizan dentro de
nuestro proyecto. Para ello, basta con
UJO

hacer clic en el botón derecho del


Añadir constante ratón sobre " Variables "O" Estaca co "En
el panel" Explorador de proyectos "Y
CÓDIGO

Cuando se crea un nuevo proyecto


ya contiene dos pre-configurado elegir
constante " falso "Y" falso "Respectivamente
a los valores 0 y 1. Para AG-
Fig. 4 - creación de ventanillas /
configuración constante.

114 Julio / Agosto 2013 ~ en Electrónica


La Fig. 5 bloque de
entrada y la ventana
de configuración
DIGO
UJO CÓ
curso FL

en el menú desplegable la opción " claro la selección que nos puede ayudar a
no utilizada ". elegir qué variables a utilizar, como se
muestra en
bloque de entrada y cálculo Fig. 6. Podemos elegir entre las
El último episodio que examinó el bloque variables locales y globales o entre
de salida y la zona de demora. Por lo los que, si aún no se habían creado,
tanto, somos capaces de imponer el valor podemos crearlos directamente
de un alfiler puerta / salida y esperar un desde la ventana como lo hemos
período predeterminado de tiempo entre hecho anteriormente por el panel " explora
dos operaciones. Aprendemos ahora a proyecto ". Haciendo doble clic en una
utilizar el bloque de entrada y cálculo. variable en esta lista, que puede
Fig. 6 - Ventana de Selección
entrar directamente en el panel de
variable.
configuraciones ción cuadro de texto.
Del mismo modo que las opciones
del panel de configuración de salida
Bloque de entrada "están disponibles de un solo bit "Y
El bloque de entrada es el bloqueo dual del bloque de enmascaramiento. en el ejemplo Fig.
salida que se utilizó en el episodio anterior para controlar 7 el valor Ra variables assume- de
la salida de los pines del microcontrolador. Para insertar PORTA, pero sólo para el 2º y 4º
el bloque, arrastre el " barra de iconos "El icono trozos
correspondiente en el diagrama de flujo. En cuanto a los
Fig. 7 - Ejemplo de enmascarar
otros bloques, mediante la realización de un doble clic
el puerto de entrada.
sobre el icono, es posible abrir la ventana de
configuración, que se muestra en Fig. 5.
ya que sólo los pines 1 y 3 tienen el cheque. Tomemos un
ejemplo. Supongamos que PORTA tiene un valor igual a
9, que en binario es equivalente a 0b00001001. En VA-
riabile " VariabileIngresso "Tendremos el valor 8
Al seleccionar de la lista desplegable " puerto: "Hemos enmascarado con 0b00001010 que tiene como resultado
establecido la puerta ¿hacia dónde queremos hacer la 0b00001001 Y 0b00001010 = 0b00001000, es decir, 8.
lectura y, en el cuadro de texto" variable: ", Insertamos el
nombre de la variable en la que queremos cargar el
valor leído. Pulsando la flecha a la derecha del cuadro
de texto para abrir la ventana bloque de cálculo
Otro bloque fundamental

En la electrónica ~ Julio / Agosto 2013 115


Fig. 8
propiedades de
ventana del bloque
de cálculo.

En el cuadro de texto " cálculos "Se puede insertar en


las filas en las que el nombre se especifica que los
cálculos efectuados, mientras que en el lado derecho
hay un panel de selección de la que podemos sacar los
valores de variables, constantes y funciones que
lo que nos permite realizar cálculos dentro de nuestro Flowcode nos pone a disposición. Los operadores
diagrama de flujo. Para añadir simplemente seleccione lógicos / matemáticos que podemos utilizar están
el icono del cálculo " barra de iconos "All'in- terno y representados en
arrastre el área del proyecto. Al hacer doble clic en el
bloque de entrar en la ventana de configuración, como Tabla 1.
se muestra en Fig. 8. funciones válidas se dan en
Tabla 2.
Para entender mejor el funcionamiento fac- ciamo un
ejemplo sencillo. mo Supponia- que tiene la variable
Tabla 1 - / operadores matemáticos lógicos. " LunghezzaInch "Que contiene el valor de una
(,) paréntesis
longitud representada en pulgadas y con ganas
=, <> Misma, otra

La suma, resta, multiplicación y división


+ , - , * , / MOD
formulario

Fig. 9 Ejemplo de
Menor que, menor que o igual a, mayor que, mayor que o
<, <=,>,> = cálculo para la
es igual
conversión de
> > << Moviéndose hacia la derecha, desplazará hacia la izquierda.
unidades de medida de
~, &, | , ^ NO, Y, O, O-exclusiva, poco a poco pulgadas a
NO, AND, OR, XOR NO, Y, O, O-exclusiva, poco a poco centímetros.

&&, || ,! AND, OR, NOT, lógica

Tabla 2 - Funciones que se pueden utilizar en Flowcode.


convertir en centímetros dentro de la variable " lengthcm
Suma dos números de notación
float = FADD (float, float) ". El fragmento de código necesario para realizar esta
punto flotante
operación se muestra en la mera Fig. 9.
Diferencia entre dos números en la notación
fsub = flotación (float, float)
punto flotante

Multiplicar dos números de notación


float = FMUL (float, float)
punto flotante Macros y componentes de software
Los ejemplos que hemos visto hasta ahora utilizan un
flotar fdiv = (float, float) Divide dos números en notación de coma flotante
número limitado de los que Directivo para implementar la
Espaldas forma de dos números
funcionalidad, pero normalmente no se puede
float = fmod (float, float)
en notación de coma flotante implementar un flujo completo en un solo diagrama. El
bloque de macro está ahí para ayudar en esta tarea. En
isinf bytes = (float) Compruebe si el número de coma flotante es infinito
la práctica, nos permite crear las subpartes diagrama de
Compruebe si el número de coma flotante las diferentes áreas de trabajo y que se puede recuperar
curso FL
isnan bytes = (float)
es un número
fácilmente.
Las pruebas para la igualdad de dos números
float_eq bytes = (float, float)
punto flotante

Comprobar si un número de punto flotante


float_ge bytes = (float, float)
Es mayor que o igual a otro
La creación de una macro
UJO

Comprobar si un número de punto flotante


float_gt bytes = (float, float) Para crear una macro, entrar en el menú " macro "Y
Es más grande que el otro
presiona en" Nueva .. ". La configuración Dow-ganar nos
Comprobar si un número de punto flotante
permite gestionar y configurar todos los aspectos más
CÓDIGO

bytes float_le = (float, float)


Está a menos de o igual a otro
destacados de la macro. Dentro de la caja " Nombre de
Comprobar si un número de punto flotante
float_lt bytes = (float, float)
Es menor que el otro la nueva macro "Insertar el nombre con el que
llamaremos dentro de la macro
Generar un número aleatorio entre
int = random ()
- 32768 y 32767

116 Julio / Agosto 2013 ~ en Electrónica


La Fig. 10

barra de componentes.

nuestro diagrama de flujo y, aunque no es obligatorio, componentes fueron hechas por Matrix Multimedia sean
DIGO

se recomienda encarecidamente que incluya los útiles en el desa- rrollo de proyectos complejos. La
comentarios dentro de la CA-silla " Descripción nuevo biblioteca de componentes se divide según tipolo- ya.
macro "Para facilitar la comprensión de futuro es Podemos encontrar los siguientes grupos principales:
UJO CÓ

funcionalistas que se desarrollan en el interior. Una Municipios, entradas, salidas, sistemas de transmisión de
macro puede comunicar con el programa de dia- que datos, inalámbricas, periféricos, electromecánicos,
instancia haciendo uso de parámetros, valores de Módulos MIAC y Varios. Por ahora, los grupos y los
retorno y variables globales, exactamente como sucede componentes disponibles son las que vamos a mostrar
curso FL

para una función clásica en C. Se utilizan los durante el curso, pero en versiones posteriores de esta
parámetros cuando es necesario para pasar valores de biblioteca que seguramente será más amplia y completa
la diagrama de llamar a la macro. El valor de retorno se de nuevas características.
utiliza cuando se desea volver a la persona que llama
diagrama de la pena mientras que las variables
globales se pueden utilizar en todos los demás casos.
Cuando una macro utiliza las variables globales que La bandeja de componentes
buo- NA conforme a indicar, en la descripción de la La biblioteca de componentes Flowcode está disponible a
macro, el tipo y el nombre de las variables globales de través " bar ts componen- "Se muestra en Fig. 10. Los
una manera tal que, si tuviera que volver macro bloques disponibles están organizados por áreas
reutilizable en otros diagramas, puede volver a crear temáticas con el fin de facilitar a nosotros en la búsqueda.
todas las variables en forma corret - a. Una vez creado, Los componentes se pueden utilizar para ayudar en la
el macro puede ser instanciado en el diagrama de flujo implementación de sistemas, también plexo muy com-, lo
mediante el icono "macro" y mejorar adecuadamente que nos permite pasar por alto la aplicación real de la
ningún parámetro. Durante la explicación del proyecto depilación con cera conductor com-, dejando que se
práctico de este episodio, veremos un ejemplo que nos centren en
ayudará a comprender cómo configurar y utilizar una
macro dentro de un proyecto Flowcode.

Exportar e importar una macro


Por el menú " macro "Cipale tiene en el bar Flowcode
puede exportar una macro para que sea disponi- ble
para otros proyectos. La selección macro se guardará
en "*. FCM "Y se puede importar utilizando el mismo
menú. Este potencial de Flowcode nos permite
básicamente para crear una biblioteca de macro que
podemos mejorar cada vez que creamos una función
que Pen- que puede ser útil y reutilizable en otros
proyectos.

componentes Fig. 11
La capacidad de crear macros es muy importante, tan componentes
importante es la capacidad de utilizar los principales
disponibles en
componentes. la
Flowcode.

En la electrónica ~ Julio / Agosto 2013 117


La Fig. 12
Introducir el
componente
"LED"
utilizando el
"componente de
la barra".

características que queremos implementar. Para ser en el panel en la parte inferior, el componente que
utilizado correctamente, un componente - después de elegimos.
haber sido insertada Ahora es el componente activo dentro de nuestro
- Se debe configurar el uso de su propia interfaz proyecto, pero, para que funcione correctamente, debe
específica. En las siguientes secciones vamos a ver haber conexiones configurado adecuadamente. Haga
algunos ejemplos. clic en el componente con el botón derecho del ratón,
como en Fig. 13. En este punto se abre un menú
Añadir un componente de software desplegable: pulse sobre " conexiones "De tal manera
Para añadir una pieza de software basta con hacer que se abre la configuración de Dow-ganar como se
clic en la barra de Biblioteca (en nuestro caso muestra en Fig. 14.
insertamos un LED, como represen- tantes en Fig.
13) y veremos Podremos configurar las conexiones para conectar

Fig. 13
conexiones
de menú para
el
componente.

curso FL
CÓDIGO UJO

118 Julio / Agosto 2013 ~ en Electrónica


La Fig. 15 Macro
disponible para el
componente de
LED.
DIGO
UJO CÓ

Fig. 14
curso FL

Ejemplo de
nection con-
para el
componente el componente de LED a la clavija 0 de Porta. Ahora el confianza con los primeros componentes de Flowcode. Lo
LED.
componente de software se configura y se puede añadir, que pretendemos es lograr un sistema de control que
en caso necesario, dentro del flujo de nuestro programa. gestiona los datos de entrada desde un teclado con 12
Para ello, basta con introducir el icono " macro oeste teclas (el clásico teclado del teléfono) y utiliza la
com- "Selección desde" barra de iconos "Y arrastrarlo a la información leída para gestionar un grupo de tres LED.
posición correcta dentro de nuestro diagrama. Más Las especificaciones de nuestro sistema son los
DIRECCIÓN que puede utilizar el mismo nente que para siguientes:
llevar a cabo una o más actividades dentro del diagrama
de flujo. Para que funcione correctamente, la cerradura • la presión de la tecla correspondiente del teclado 1 Ac- encender y
de seguridad debe estar configurado. Para ello basta apagar LED1 y fuera de los otros LEDs;
con entrar en él con un doble clic en la ventana " Propiedades:
• la presión de la tecla correspondiente del teclado 2 Ac- encender y
Componente macro "Selezionia- y Mo en el lado apagar el LED2 y apagar los demás LEDs;
izquierdo el componente al que se debe hacer referencia • la presión de la tecla correspondiente del teclado 3 Ac- encender y
el bloque, en nuestro caso LED (0). Ahora vamos a ver apagar el LED3 y apagar los demás LEDs;
en las macros del lado derecho que se puede llamar, • cuando se pulsa la tecla de almohadilla del teclado para
como se muestra en Fig. apagar todos los LED.

Se utilizó LED para la enseñanza de la simplicidad,


pero podríamos tener, con el mismo sistema, relés
de pilotaje, válvulas solenoides u otras cargas
15. En este caso, después de haber elegido el LED, externas.
tenemos dos macros disponibles: una para encender el
LED "Ledón", y que para apagarlo "LEDOff".
Seleccionamos la función deseada y pulse el botón " bueno
"Para completar la configuración. Todos los
componentes también tienen la propiedad adicional,
puede acceder haciendo clic derecho en los
componentes, seleccionando " propiedades extra ". Para
cada compo- nente se abrirá una ventana específica con
diferentes características configurables. En el panel con
respecto al componente LED es posible establecer la
forma, el color y la polaridad, como se muestra en Fig.
17.

Proyecto práctica:
3 gestión de LED a través del teclado
Pasemos ahora a la realización de un proyecto que
nos permitirá poner en práctica algunos de los
conceptos en esta entrega, y que nos ayuda a tomar Fig. 16 - propiedad adicional relacionada
mayores el componente de LED.

En la electrónica ~ Julio / Agosto 2013 119


Fig. 17 - Conexión de E-Blocks para la
realización del proyecto práctico.

Para este proyecto necesitamos los siguientes En este nuevo proyecto vamos a hacer uso del primer
componentes: componente, a continuación, la barra de componentes
insertar un componente en nuestro proyecto " teclado "Tres
- EB006 "Tablero PICmicromultiprogrammer- USB" ( PIC18F4550
y cuarzo 12MHz) componentes" LED ", Que son dispositivos que dovre- mo
- EB004 "LED Board" manejar. Como se explicó anteriormente, para insertar
- EB014 "Keypadboard" un componente debe sele-zionarlo de la bandeja de
componentes. Cuando se selecciona, el componente
Conectamos ahora las tarjetas con el fin de tener los Aparecerá en el panel debajo de la zona del proyecto.
LED del teclado de Porta y PORTB, como se muestra Luego configuramos las conexiones de los
en Fig. 17. componentes, comenzando desde el teclado.
Ahora abra el proyecto vacío que tenido- mo crea Realizamos un clic con el botón derecho del ratón en el
con el nombre " ConfigurazioneBase. FCF "Y teclado apareció componente pannel- sobre él y
guardarlo como" SwitchLed.fcf ". De esta manera, el seleccione la opción " conexiones ". Se verá la pantalla Fig.
microcontrolador ya está configurado para trabajar 18.
con el hardware a nuestra disposición: por lo que
podemos dedicar a la realización del diagrama de
control del sistema. Como se muestra en la figura, conectar las tres
columnas y cuatro filas a puerto B (las tres columnas a
los pines 0, 1 y 2 y los cuatro curso FL
Fig. 18 Fig. 19
Conexiones de Ventana
la ventana com-
componente conexiones
teclado. LED oeste.
CÓDIGO UJO

120 Julio / Agosto 2013 ~ en Electrónica


La Fig. 20
ventana propiedad
componente.

La Fig. 21 Creación
DIGO

de la variable
LetturaKeypad.
UJO CÓ
curso FL

dotándolo de cuatro casos. En este punto se realiza un


doble clic en el bloque " Componente macro "Y examinar
la ventana que se abre, se muestra por conveniencia Fig.
líneas a los pines 4, 5, 6 y 7). Después de hacer la 21.
conexión que confirmamos con la tecla " Hecho ... ". Del Seleccionamos el componente de teclado y la macro GetKeypadNumber
mismo modo que realizar los tres LEDs, respectivamente, que nos permitirá detectar la tecla pulsada. En este punto
conectándolos a la clavija 0, 1 y 2 de la puerta A. En La necesitamos una variable para almacenar el valor, que
Fig. 19 se puede ver las configuraciones de la ración luego se utilizará en la siguiente estructura de selección.
primer LED. En este punto podemos empezar a escribir el Creamos una variable mediante el PUL- santa con el
gramo blockdia-, insertando el clásico ciclo de palas símbolo de flecha en la parte inferior presentes en la
principales, en el que vamos a crear nuestra aplicación. ventana activa, y llamamos LetturaKeypad (como se elige
Una vez que el ciclo se lleva a cabo, también insertar un un tipo de
bloque " Componente macro "Y una estructura" selección "

byte sin signo). Si usted ha hecho todo correctivo de


carga debe tener un resultado como

Fig. 22 Diagrama de bloques parciales


en el proyecto.

En la electrónica ~ Julio / Agosto 2013 121


La Fig. 23
LED0 Macro.

La Fig. 24 LED
Propiedades de
componente.

lo reportado en Fig. 21. la descripción, como se informó en Fig.


Ahora, para la gestión de la estructura 23.
de la selección. selección mo Aso- a los En el macro insertar tres bloques " componente
creados anteriormente variable y valo- macro "Con la que manejamos los
animar los primeros tres casos con VA- componentes LED creados anteriormente.
lori numérico 1, 2 y 3 y el cuarto con el Vamos a llamar a la función para la función
valor 11 (libra). el diagrama de flujo en LEDON LED0 y LE- Doff a los LEDs 1 y 2.
este punto debe ser similar a la Si abbia- mo realizado todo correctamente
mostrada en Fig. 22. obtendrá un diagrama como el que se
muestra en la Fig. 25.

Ya casi hemos terminado: sólo tenemos que manejar


adecuadamente el control de las salidas en cada caso. Fig. 25 Diagrama de Creamos otros dos GHE analogía macro
bloques de
Para evitar hacer demasiado diagrama de bloques para el encendido de los LED 1 y 2 y un criterio de
LED0 macro.
complejidad sabe, usamos macros específicas para el desconexión macro que llamaremos LEDOff. Ahora
control de las salidas. Vamos a empezar desde el caso ponemos cuatro bloques " llamada macro "En las cuatro
correspondiente a la tecla 1, el cual, de acuerdo con ramas de la estructura de la selección y
nuestras especificaciones, debe encender y apagar LED0 apropiadamente llamar a la macro que acaba de crear.
otros. Creamos una macro nuo- va, que llamaremos LED0 Nuestro proyecto está terminado; el diagrama de
hecho, como hemos visto anteriormente en el apartado de bloques general se presenta en La Fig. 26, en este
macro y el inserto punto hay que conectar apropiadamente el E-bloque y
probar lo que se ha logrado.

Fig. 26 Diagrama de
bloques general. curso FL
CÓDIGO UJO

122 Julio / Agosto 2013 ~ en Electrónica


Continuamos nuestro viaje de
DIGO

descubrimiento de Flowcode, el
desarrollo gráfico innovador
UJO CÓ

para microcontroladores
ofrecidos por Matrix Multimedia.

3
En este episodio nos ocupamos
de la aplicación de las
curso FL

interrupciones en Flowcode y
comenzamos a analizar los
componentes. En tercer
episodio.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

elle episodios anteriores que analizan el entorno

N
co más evolucionado que el anterior: un termómetro
de desarrollo en detalle, describiendo la estructura y el con pantalla LCD. Para los proyectos de este episodio
análisis de los elementos básicos que las estructuras de va a cambiar microcontrolador, desde el PIC18F4550
control y estructuras de datos. En este episodio vamos a PIC18F4580. Veremos cómo es simple, así, la
completar el análisis de las estructuras de control, que ejecución del proyecto con Flowcode, los objetivos de
describe la gestión de interrupciones, y continuar con el cambio de configuración sin sufrir proble- mática y
análisis de los componentes (que son uno de los vamos a experimentar con un PIC diferente. Para
principales valores añadidos de Flowcode) que describe ayudar a los lectores en sperimentazio- hemos creado
el componente de ADC y el componente LCD. un archivos de configuraciones básicas ción para el
Posteriormente pasamos a la descripción de la gestión PIC18F4580, tal como lo había hecho anteriormente.
rie memo- no volátil, analizando el componente
EEPROM. Aprovechando el nuevo conocimiento
adquirido se dará cuenta de un proyecto prati-

interrupciones
Como todos los entornos de desarrollo

En la electrónica ~ de septiembre de 2013 129


Fig. 1 de
las propiedades

del bloque de
interrupción.
diferentes interrupciones en temporizadores en entradas
puerto B, al recibir el puerto UART y más. Una vez que
seleccione la fuente de interrupción debe cado también
indicación de su ISR. Flowcode nutos gesti- este aspecto,
proporcionando la capacidad de llamar a una macro
apropiado creado anteriormente. Esto no es diferente a lo
que ocurre con otros sistemas de desarrollo basados ​en
microcontroladores, incluso Flowcode proporciona lenguas clásicas, tales como, por ejemplo, C: en ese caso
manejo de interrupciones. En un sistema embebido el ISR es ge- neralmente una función común escrito en
una interrupción (o interrupción) es una señal lenguaje C, que, sin embargo, tiene la particularidad que
asíncrona con respecto a la ejecución del programa se llamará cuando se genera la interrupción
principal que, procedente de un dispositivo específico, correspondiente. El concepto de interrupción es lo
lo que indica una situación particular que requiere un suficientemente suave como en el campo del desarrollo
manejo diferente en comparación con el resto del embebido, ya que las interrupciones son ampliamente
programa. Una interrupción puede prove- ne de un utilizados en la gestión del hardware y son de una
puerto de comunicación, por un recurso interno, por importancia fundamental, ya que los sistemas
un temporizador, y así sucesivamente. Normalmente, desarrollados se vuelven más complejas. Tratamos de
cuando se genera una interrupción, la gestión del solucionar este concepto con un ejemplo, proponiendo
programa se detiene, la posición actual del contador proyecto práctico visto en el primer episodio con un
de programa y el contexto de ejecución se guardan en manejo de interrupciones. En el primer episodio que
la pila y el programa salta a una ubicación específica, habíamos parpadeo de un LED a 1 Hz, utilizando los
que es una función misma interrupción y la retrasos de software. Ahora vamos a tratar de hacer lo
especificación de la arquitectura del microcontrolador. mismo, pero en lugar de la generación de los ciclos de
En este punto, según el caso, software lagunas de retardo, que intenta crear la
organización empleos temporizada con un recurso de
hardware interno al microcontrolador. Para ello se utiliza
el temporizador 2, que puede generar una rupt inter
cuando su valor corresponde a la de un registro de
comparación. Dimientos de modo que vamos a crear un
nuevo proyecto Flowcode, a partir de la plantilla
configurador razioneBase2, suministrada con el material
relacionado con este episodio, y cambiar el nombre del
proyecto en Interrupt.fcf. En primer lugar, se crea una
macro que utilizará como ISR, nombrando LED. Llevamos
a cabo las medidas necesarias, como hemos visto en el
episodio anterior, y también generar una variable que
llamaremos LEDStatus (leana boo-, valor inicial falso) y
En Flowcode existe un bloque especial, presente en el otro que llamaremos Contador (byte, el valor inicial
interior de la barra de iconos y precisamente llamado
"bloque de interrupción", que sirve para poner en práctica
curso FL
la gestión de interrupciones dentro de un programado pero
Flowcode. Si insertamos este bloque dentro de un
esquema de Flowcode y haga doble clic en el botón
izquierdo del ratón, se puede acceder a las propiedades
de la ventana del bloque, como se muestra en Fig. 1.
CÓDIGO UJO

Desde esta ventana se puede seleccionar la fuente de


interrupción que nos interesa, accediendo al menú de 0). En este punto nos movemos en el diagrama en los
"habilitación de interrupción" desplegable. El análisis de bloques principales, insertamos un bloque de interrupción, y
este menú, veremos que para el PIC18F4580 a su para seguir un bloqueo del ciclo. El ciclo sólo tenemos que
disposición evitar la pro-

130 De septiembre de 2013 ~ en Electrónica


DIGO
UJO CÓ

Fig. 2
curso FL

temporizador

Propiedades de
interrupción 2.

términos del programa y compartir el mismo comienzo,


que luego se pueden considerar cómo nuestra "principal
aplicación", incluso si no hace nada. En este punto el
bloque de interrupción mo configuria-. En el menú
desplegable, en "activo interrupción" TMR2 seleccionar y
haga clic en Propiedades. ventana de mo Otterre- La Fig. 2, lo
que nos permite configurar la interrupción de temporizador
2. Funcionamiento a 12 MHz, incluso intervenen- hacemos
Fig. 3
en varios pre y post-escalador no hay manera de generar
Diagrama de flujo de macro LED.
una interrupción a 1 Hz. mo Configuria- entonces la
interrupción con los valores mostrados en la figura, a fin de
obtener una interrupción a aproximadamente 50 Hz. A cambiado y que D0 ahora el pasador se controla) y verá el
partir de esta base de tiempo simplemente usamos un mismo efecto que se obtiene en el caso de la oscilación
servicio conta- arrancó para generar la frecuencia de 1 Hz generada con los retrasos de software. Tenga en cuenta
que necesitamos para conducir appro - tunamente nuestra que este ejemplo no es puramente educativo. De hecho, si
LED. Completamos la configuración de nuevo a la ventana voles- simo añadir funcionalidad a este programa, no
anterior y seleccionar la macro LED bajo "será llamado habría suficiente para entrar en los bloques respectivos en
macro." Que-soy causas cada poder de tiempo generado el bucle principal, que está actualmente vacía, "olvidando"
por el temporizador 2 se llama nuestra macro. En este la gestión de interrupciones, que no es disturba- ta
punto no hay nada que hacer sino para completar la macro ejecución de la principal (asíncrona en comparación a este
último), mientras que el mismo no puede decirse de la
creada anteriormente. Para ver cómo lo hicimos usamos la Fig.
3. Como puede verse a partir del diagrama de bloques, para versión hecha con retrasos de software.
cada una de la llamada a la macro se incrementa el
contador "Contador". Si el valor es menor que el valor de
tiempo de espera de la constante (que impuesta era igual a
50) no pasa nada, de lo contrario, se va a la gestión real de
los LED. En esta rama del diagrama de flujo es para El componente de ADC
comprobar el valor de la variable LEDStatus, la intención Pasemos ahora al análisis de uno de los com- ponentes
inverten-, de vez en cuando, con respecto a su estado que utilizaremos en el próximo proyecto práctico: el
actual y pilotar el LED en consecuencia. En este punto componente de ADC. Que- am componente le permite
tratar de "flash" el microcontrolador con el diagrama de configurar y administrar fácilmente un canal de entrada
flujo forni- como un ejemplo (en cuenta que la micro es analógica, utilizando el emisor de conversión integrado
en el microcontrolador. El componente de ADC se puede
insertar mediante la selección de la bandeja de
componente, en el epígrafe "entradas". Una vez inseri- a,
en el panel aparecerá un mando totalmente similar a la
que se encuentra en los paneles frontales de
instrumentación de laboratorio. Como hemos visto en

En la electrónica ~ de septiembre de 2013 131


Fig
ventana 4
conexiones.
componente que la configuración básica del componente, como la
ADC.
tensión de referencia (Vref), la velocidad de
conversión y más. En cuanto a las macros que
componen el ADC puede aprovechar, Tabla 1 Se
enumeran los principales nibili Dispo- macro. El
componente también tiene macro más específica, pero
por el momento vamos a considerar como no es
estrictamente necesario.

Fig. 5 la El componente de LCD


propiedad
Analicemos ahora el componente de LCD, lo que nos
adicional del
componente
permitirá añadir una salida visual de nuestros
ADC. proyectos. El componente de LCD le permite
administrar una pantalla de cristal líquido con
controlador Hitachi HD44780 (también conocido como
Hitachi compatible); esto constituye la interfaz estándar
de facto para monocromo LCD al fanumerici con una
interfaz paralela. En particular, el componente utiliza la
configuración en paralelo de 4 bits, a fin de ser capaz
de utilizar un único puerto para el control del
dispositivo (además de los 4 bits de datos son de
apuesta anterior para el componente de LED, incluso el hecho usado 2 señales de control). El componente de
componente ADC tiene "conexiones" y "Propiedades LCD se puede insertar desde la bandeja de
adicionales". Es posi- ble acceder a estos dos menús componentes, selezionan- hacen, bajo el título
haciendo clic en el botón derecho sobre el icono de la "Salidas", el "LCD" componente. Una vez que esta
com- ponente en el panel. Al hacer clic en "conexiones" descrip- ción del panel se colocará dentro de la imagen
aparecerá la ventana La Fig. 4, que permite fijar el pasador de una pantalla de 16x2 alfanumérico. En cuanto a los
de micrcocontrollore para ser utilizado como una entrada otros componentes vistos anteriormente, incluso para
analógica (en el ejemplo AN0). Para acceder a las el componente de LCD que están disponibles las
propiedades "extra", sólo tiene que seleccionar el conexiones habituales "propiedad" y "propiedades
elemento del menú que aparece más y haciendo clic en el adicionales". Si hacemos clic en conexiones de voz, la
botón derecho sobre el icono del panel. La ventana de ventana de Fig.
propiedades del componente adicional ADC se informa en Fig.
5.

Como se puede ver - ajustes de los iconos por 6 que nos permite configurar las conexiones entre la
curso FL
separado - alcu- disponibles pantalla. Desde esta ventana

Tabla 1 - macro principal disponible para el componente ADC.


Nombre de la macro descripción
UJO

LeggiComeByte El valor del canal seleccionado se adquiere, y el resultado se suministra con formato numérico y la resolución de 8 bits.

El valor del canal seleccionado se adquiere, y el resultado se suministra con formato numérico y 10 bits o 12 bits
LeggiComeIntero
CÓDIGO

Resolución (dependiendo del convertidor).

El valor del canal seleccionado se adquiere y el resultado se suministra con un formato de tensión (el valor debe
LeggiComeTensione
ser almacenado en una variable de tipo float).

el valor del canal seleccionado se adquiere y el resultado se proporciona como una cadena de caracteres (el valor debe
LeggiComeStringa
ser almacenados en una matriz de caracteres).

132 De septiembre de 2013 ~ en Electrónica


Puede establecer 6 líneas requeridas para interactuar proyectos de STRI. en Tabla 2 Se indican las macros
DIGO

con el componente microcontrolador. disponibles para la pantalla LCD acompañadas parte


de su descripción.
Si abrimos el "propiedades adicionales" ventana, se
UJO CÓ

muestra en la La Fig. 7, Será la bilis posi- configurar el recuerdos El no volátiles


tamaño de la pantalla (16x1, 16x2, 16x4, 20x4 ...), Como sabemos, diferente PIC tienen en su interior una
además de otras carac- terísticas, pero estos son más cierta cantidad de memoria EEPROM no volátil
útiles para la simulación que cualquier otra cosa. Ahora (borrable eléctrica y programable memoria de sólo
curso FL

vamos a echar un vistazo a Dispo- macro nibili para este lectura); esto puede ser utilizado para el
componente, para entender cómo gestionar eficazmente almacenamiento de datos que no se debe perder
la no- después de un apagado del sistema. Una EEPROM a
bordo puede ser una ventaja grande en el caso de que
sea necesario el desarrollo de un sistema integrado que
tiene requisitos de almacenamiento permanente de
determinados datos, porque en este caso no es
necesario recurrir a la utilización de una I2C memoria
externa o SPI. El PIC18F4580 tiene 256 bytes de
EEPROM a bordo, garantizados para aproximadamente
un millón de ciclos de escritura y con una retención de
más de 40 años.

La Fig. 6
Conexiones
componente
LCD.
El componente de EEPROM
Flowcode tiene un componente especial para la gestión
de la memoria EEPROM in- tríada. Tal componente
puede ser insertado desde la bandeja de componentes,
mediante la selección bajo el título "varios" componente
Fig. 7
"EE- PROM". Una vez insertado el componente verá
propiedad
adicional del aparecer en un panel matriz bidimensional que muestra
componente la ubicación de la memoria y su contenido. Para el
LCD. componente de EEPROM no están presentes en las
conexiones, ya que este componente no está conectado
externamente como el autobús a la gestión de memoria
es interno al chip. En cambio, tiene la opción

Tabla 2 - Principales macros disponibles para el componente de cristal líquido.

Nombre de la macro descripción

casa Inicializar la pantalla.

transparente Eliminar todas las líneas de la pantalla.

VisualizzaASCII Ver el carácter ASCII correspondiente al argumento de bytes.

comando Enviar el comando que se pasa como argumento.

cursor Coloque el cursor en la posición indicada por los dos argumentos x e Y (coordenadas del cursor).

número de pantalla Muestra el número pasado como argumento ya convertidos a ASCII.

VisualizzaStringa Ver la cadena pasada como argumento

CancellaLinea Eliminar la línea pasa como argumento.

Scrivi_RAM Él escribe en los datos del controlador de memoria RAM pasado como argumento.

En la electrónica ~ de septiembre de 2013 133


Fig. 8
propiedad
adicional del
componente
EEPROM. "propiedades extra", todos los cuales pueden ser
accedidos siempre cionado con un clic derecho en el
icono de este componente en el panel. La ventana de
propiedades es visible Fig. 8.

más que cualquier otra persona propiedades están


disponibles en relación con la simulación y es posible
mano de tara conjunto- el tamaño de EEPROM, de lo
contrario el entorno fiscal que maxi- sima en el chip
utilizado. en Tabla 3 muestra macro sponibili di- para el
componente son todos muy simple.

Tabla 3
Nombre de la macro descripción El único cuidado que se utilizará es dejar un intervalo
Lee la posición de memoria especificada con la dirección de para- de al menos 200 microsegundos entre un escrito y Siva
leer metros y devuelve el valor leído en la variable siguientes que, para garantizar el tiempo necesario
regresar.
para la finalización de la operación. Para probar la
Escribe la variable especificada con el parámetro dado dentro de la
escribir ubicación especificada con el parámetro
EEPROM un diagrama de flujo de ensayo que escribe
dirección. en todas las 256 posiciones de memoria se ha
realizado un número creciente de 0 a 256. La fuente
Flowcode EepromTest.fcf está disponible dentro del
material de soporte.

Proyecto práctica: LCD Termómetro


Ahora a la práctica Descripción del jet pro
relacionados con este episodio, cuyo desarrollo va
a poner en práctica los nuevos conocimientos
adquiridos. Lo que pretendemos lograr es un
termómetro digital que utiliza un LM335 y una
pantalla LCD de Hitachi compatibles. Las
especificaciones de nuestro proyecto son:

• lectura del termómetro digital en el canal


analógico AN0,

curso FL
UJO

Fig. 9 Conexión de E-Blocks


CÓDIGO

para la realización del


proyecto práctico.

134 De septiembre de 2013 ~ en Electrónica


Fig. 11
Conexiones del
componente
ADC.
DIGO
UJO CÓ

Fig. LM335 10 de
conexión.
curso FL

• La conversión de los datos de temperatura en grados la obtención de la temperatura de referencia. En este


Celsius, punto se procede a realizzazio- que del circuito en el
• visualización continua de la tempera- tura en la tablero y conectar ghiamo la salida del sensor a la
pantalla. AN0 entrada analógica del microcontrolador, que se
Para la realización del proyecto mo utilizzere- los proporcionan en la tira montada cerca del conector J1
siguientes componentes: en el EB016. Ahora que las conexiones de señal se
- EB006 " PICmicro bordo mer multiprogram- completan, se ha de distribuir también los suministros
USB "(PIC18F4580 y Cuarzo 12MHz) a los diversos E-Block. Para ello tomamos de
referencia y Ali mentación voltaje de la placa base
- EB005 "LCD bordo" (presente en el terminal J10) y llevarlos a los bloques
- EB016 "Placa de pruebas". de terminales de rosca J1 y J3 del EB016 EB005.

Vamos a utilizar el EB016 para la realización del circuito


de adquisición de la temperatura por el LM335. Por
supuesto Matrix tiene algunas tarjetas con sensores de
temperatura, más o menos evolucionadas, pero VO Ahora que el hardware está listo, podemos proceder con
levamo mostrar a los lectores cómo posi- interfaz de bilis el desarrollo de componentes de software. En primer
cualquier tipo de sensor utilizando la placa de prototipos. lugar se preocupe de insertar y conectar correctamente
Ponemos en contacto a las tarjetas de la siguiente todos los elementos que utilizaremos en el proyecto.
manera: Teniendo en cuenta las especificaciones, no debe sin
duda un componente ADC y una esfera de cristal líquido.
• EB016 conectado al puerto A y el puerto B de la No tenemos que memorizar información permanente, y
EB006, en este proyecto que no necesitaremos el componente
• EB005 conectado al puerto C del EB006. EEPROM. Seguimos arrastrando componentes en el
panel. En este punto hacemos las conexiones. El
Las conexiones se ilustran en Fig. 9. componente de ADC debe leer el canal analógico 0
Antes de seguir adelante, hay que darse cuenta el (AN0), y luego llevar a cabo la conexión con dicho canal,
circuito de adquisición de la tempera- tura en la placa tal como se describe esquemáticamente en la Fig. 11.
de prototipos. Para ello nos hemos referido a datashe-
et dell'LM335, que enumera ejemplos de circuitos.
Nuestra elección recayó en el sensor con un circuito
de calibración, cuyo diagrama se muestra en la Fig.
10. Completar las conexiones, nos occupiamo- algunas
propiedades adicionales del convertidor
Este circuito permite obtener una medida más precisa de analógico-digital. Para este proyecto nos propusimos:
la temperatura, ya que utiliza un potenciómetro para
calibrar el sensor. Una vez completado el proyecto, - Tiempo de conversión: 50 ciclos
vamos a ser capaces de realizar la calibración - Tasa de Conversión: Fosc / 16
simplemente actuando sobre el potenciómetro y - Opciones: Vref Vdd
mediante el uso de un termómetro calibrado para
En cuanto a la "Tensión

En la electrónica ~ de septiembre de 2013 135


Fig.
Pantalla LCD 12
Conexiones.

ADC componente de Flowcode nos proporciona la


oportunidad de adquirir la lectura del canal analógico
directamente considerados en tensión, que devuelve
un real. ratteristica CA- Esto es muy conveniente, ya
que será más fácil para realizar la conver- sión de la
temperatura. En virtud de estas consideraciones,
creamos una variable de tipo "punto flotante" y lo
llamamos "Tensión" (como se ilustra en Fig. 13)

La Fig. 13 con el que vamos a almacenar el valor de la tensión


Creación
de lectura en el canal AN0. mo Creia- también es una
la
variable variable más, Chia- "Temperatura" mandola, siempre
"tensión". de tipo "punto flotante", en el que vamos a almacenar
el valor de temperatura correspondiente.

Pasemos ahora a la realización del diagrama de bloques


que se compone de un diagrama de flujo principal y tres
macro:
- La inicialización del sistema,
- La lectura del sensor de temperatura,
- Ver la lectura.

Vref "podemos establecer 4.5V si alimentar el sistema a


través del puerto USB (este es el voltaje típico) o 5V si
alimentamos el exterior con un regulador estabilizado. En
cualquier caso, podemos ajustar después de la medición,
utilizando el circuito de calibración que hemos preparado
previamente. En este punto llegamos a las conexiones de
la pantalla LCD, que está conectado en el puerto C, como
se ilustra en Fig. 12. Recordemos que la interfaz de
pantalla es paralela a 4 bits y utiliza dos señales
adicionales: RS y Activar. Asegúrese de que tenemos las
conexiones configuradas visualización de la ventana
curso FL
como la de La Fig. 12 y tener el puente de la EB005
establecido en "default". No hay propiedades relevantes
adicionales para la pantalla, por lo que en cuanto a la
configuración de los componentes y conexiones que
hemos llegado a la conclusión. Antes de analizar el
UJO

flowcart todavía tenemos la definición de los datos


estructurados ra en la que vamos a trabajar. la
CÓDIGO

La Fig. 14
Inicialización Macro.

136 De septiembre de 2013 ~ en Electrónica


DIGO
UJO CÓ

Fig. 15 Diagrama de flujo de la


macro "LM335 Acquire".
curso FL

Fig. 17 La
conversión de la
Partimos de la inicialización macro, que tiene el meTensione "componente de la ADC, que permite
tensión de datos en
objetivo de inicializar la pantalla y las variables y adquirir un canal analógico que depende directamente el valor de
escribir la primera línea de texto para informar al dada en la tensión (en voltios), asociable a una variable temperatura
usuario. El diagrama de flujo de la inicialización macro de (coma flotante) de tipo flotador. Asociamos el valor correspondiente.

se informa en Fig. 14. de retorno a va- riabile "tensión", que habíamos creado
anteriormente. en La Fig. 16 muestra la ventana de
Como puede verse, el uso de tres bloques "Call propiedades del bloque "Componente Macro de
componente macro", un bloque "Cálculo" y un bloque de llamadas" que realiza la operación. Ahora usted tiene
"retardo". En la secuencia de operaciones realizadas son que convertir los datos leídos a una temperatura dada.
las siguientes: inicialización de la pantalla, puli- nutos, se El LM335 tiene una señal de salida proporcional a la
muestra la cadena "sistema de inicio ...", inicializa las temperatura con un factor de proporcionalidad de 10
variables y genera una mV / Kelvin. Invertimos la fórmula, escalar el valor de
tensión V a 273 mV y restar el fin de obtener la
temperatura en grados Celsius. Para introducir esta
formula en el código se utiliza un bloque de cálculo,
La Fig. 16 como se informa en Fig. 17.
propiedades
de bloque
ventana
"Call
Componente
macro".
Los datos almacenados dentro de la "temperatura"
variable de ya se convierte correctamente en grados
Celsius, y luego simplemente la convierten en la
codificación ASCII para obtener la correcta visualización.
Ahora se ha completado la segunda macro. Pasamos el
último de lograr la macro, el punto de vista macro, que
llamaremos "VisualizzaTemperatura", cuyo diagrama de
flujo se muestra en la Fig. 18.

1 segundo de retardo. Muy simple. Ahora pasamos En este diagrama de flujo que sólo llama a componeti
a la lectura macro del sensor de temperatura, que macro, ya que los datos están listos y lo único que
hemos denominado "AcquisisciLM335", cuyo tenemos que hacer es escribir correctamente en la
diagrama de flujo se muestra en la Fig. 15. pantalla, usando la pantalla LCD suministrado
funciones com- occidentales y cadenas turísticos con-.
Esta macro es el corazón del programa, sin embargo, Por un lado, la limpieza de la pantalla, por lo que no
el poder de Flowcode nos permite reducir a sólo dos hay partes de aprieta escritos con anterioridad.
bloques. La tarea a realizar es la adquisición de los Después de que muestra la cadena "Temperatura", ya
datos de tensión y hacer que la temperatura de que la cadena de encabezado. En este punto, usando
conversión, de modo que se pueden visualizar la función de "Cursor" para desplazarse en la segunda
fácilmente en la pantalla. En primer lugar, se utiliza la línea, que será EE.UU.-
macro "LeggiCo-

En la electrónica ~ de septiembre de 2013 137


Fig. 19 Diagrama de flujo
La Fig. 18 principal ejemplo práctico
Diagrama de flujo de la macro termómetro LCD.
"VisualizzaTemperatura".

ta para mostrar los datos. Aquí podemos utilizar la macro retardo de software se insertó un segundo.
"Número de pantalla" para mostrar en pantalla el valor
imma- almacenado en la "temperatura" variable que, Ahora podemos proceder a la compilación ción y
como hemos visto anteriormente, contiene el valor de la ejecución del programa. Una vez programado el
temperatura en grados CEL Sius. Ahora no hay nada que micro, si hemos realizado todo correctamente, vamos
hacer sino para mostrar el carácter "C" para indicar que a ver el valor de la temperatura leída por el sensor en
la temperatura está en grados Celsius y vuelva a mover la pantalla. Si la lectura es correcta, podemos actuar
el cursor a la base de la posición za: nuestro tercer sobre poten- ziometro el circuito de calibración para
macro ya está listo. Ahora tenemos los tres macro listo ajustarlo.
para su uso, el último que hay que hacer es ponerlos
juntos en el diagrama de flujo principal y empezar a
construir. El diagrama de flujo principal se muestra en la Fig. En este episodio empezamos a familiarizarse con los
19. componentes de Flowcode, realizando un primer
programado, pero de un peso determinado (un dispositivo
curso FL
que tiene una función real), y comin- Ciato para darse
cuenta de cómo, mediante la inserción de los componentes
Como se puede ver que ha sido llamado el primer apropiados y conectar un par de bloques, puede ser
macro "inicialización". Entonces, en un bucle while, se implementado en un corto período de tiempo también
incluyeron las dos llamadas a la macro funciones de una cierta complejidad. En la próxima entrega
UJO

"AcquisisciLM335" y "VisualizzaTempera- tura." La con- Vamos a seguir este camino, examinando en detalle
primera macro adquiere el valor de voltaje del sensor las interfaces de comunicación que nos permiten crear
CÓDIGO

de temperatura y pasa los datos a la segunda, que los sistemas más complejos, interconectados con los
muestra en la pantalla LCD. Para evitar la excesiva dispositivos periféricos de ésteres más inteligente.
efecto de "Actualizar" en la pantalla

138 De septiembre de 2013 ~ en Electrónica


Continuamos nuestro viaje de
DIGO

descubrimiento de Flowcode, el
sistema de desarrollo gráfico
UJO CÓ

para microcontroladores
ofrecidos por Matrix

4
Multimedia, en el que el código
está escrito utilizando objetos
curso FL

gráficos.

Cuarto episodio.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

elle episodios anteriores que tienen ex quejó de

N
No podían interactuar con plataformas externas.
interrupción en el manejo de Flowcode y les enseña a Vamos a discutir ahora los otros componentes clave de
utilizar los componentes ADC, LCD y memoria interna EE un microcontrolador, que son las interfaces de
PROM. En este episodio hablamos de las principales comunicación. Los buses de comunicación están en
interfaces de comunicación en serie a disposición de los constante evolución y hoy en día hay muchos tipos.
microcontroladores de gama baja: la UART (o RS232), la Vamos a dar un pequeño paso atrás y analizar
I²C, SPI y el OneWire. Vamos a concluir con un proyecto brevemente las interfaces de comunicación que se han
práctico en el que vamos a desarrollar un control de un utilizado en las últimas décadas. Con el advenimiento
relé de la batería controlado por puerto serie. de la era digital, el sistema comuni- más ampliamente
utilizado ha sido el de "paralelo", donde los datos se
intercambian en paquetes, por lo general de 8 bits, y
una o más señales que llevan la información de reloj.
Los datos de transporte en paralelo no es
Los dispositivos de comunicación básicas
Los sistemas que hemos cubierto hasta ahora eran capaces de
manejar sólo los sistemas cerrados, es decir,

En la electrónica ~ de octubre de 2013 113


La Fig. 1
Panel SPI.

• SCK / SCLK (Reloj de datos serie) que se


transmite a la señal de reloj.

Los datos transmitidos y recibidos pasan en dos


conexiones diferentes y, por esta razón, se dice que el tipo
de comunicación Full-duplex.
Más dispositivos se pueden conectar al mismo bus de
comunicación, pero, en este caso, sólo uno de ellos es de
tipo "maestro", mientras que todos los demás son de tipo
"esclavo". Para utilizar este sistema para com-
municación no necesitaremos un conocimiento profundo
de la capa física y el protocolo porque Flowcode
proporciona una potente biblioteca de componentes que
nos permite utilizar y gestionar aún más fácil. Dentro de
los componentes en la barra de menú transmisión de
datos nos encontramos con el componente SPI; cuando lo
aconsejable a grandes distancias, en canti- para requerir insertamos en nuestro jet pro a través de un clic en el
muchos cables y -para contrarrestar la degradación de la icono, se nota que aparece en el panel, como una
señal de amplificación para cada uno de ellos; por esta ventana de tres partes. Partiendo desde la parte superior
razón que se inventaron las las comunicaciones serie, en hacia abajo, por lo que podemos examinar los caracteres
la que el valor digital a transmitir se divide en bits enviados, recibidos y los que están en la parte inferior de
individuales, que se transmiten en orden secuencial en el los personajes de la cola, como se muestra en Fig. 1.
mismo canal de transmisión, a continuación, utilizando
sólo dos cables. Podemos dividir los sistemas de
comunicación en dos grandes familias, dependiendo de
la distancia que puede cubrir: los " interior "Permitir la
comunicación entre los sistemas vecinos o de otra
manera que pertenece al mismo sistema, mientras que Ahora que el componente ha sido incluida en el proyecto,
los" entre los sistemas "Conectar aparatos con diferentes debe configurarlo para que pueda comunicarse
tareas por lo general, incluso de muy grandes distancias. correctamente con los periféricos. Los campos de la
Vamos a empezar a hablar de las internas y en particular ventana de propiedades, mostrados en la La Fig. 2, Deben
de SPI, I²C y OneWire. Después vamos a pasar a la ser apreciados por mirar la ficha técnica del componente
descripción de la interfaz RS232 con el que se consigue que desea conectarse directamente fuera de, para que
un proyecto práctico. todo pueda funcionar adecuadamente.

La caja en la que se puede indicar si desea enviar bytes o


caracteres no afecta a la forma en

interfaz periférica serie (SPI) Fig. Con-


curso FL
figuración 2
La interfaz SPI (acrónimo de Interfaz Serie peri pheral)
Panel del bus
es fácil de usar y fiable y, por estas razones, se ha SPI.
convertido en el sistema de comunicación utilizado por
los recuerdos, ADC y DAC externos al
microcontrolador.
UJO

La comunicación a través del puerto SPI requiere tipo


CÓDIGO

de tres enlaces:
• SDO / MOSI (Serial salida de datos) desde la que
se envían los datos;
• SDI / MISO (Serial Data Input) de la que se reciben
los datos;

114 De octubre de 2013 ~ en Electrónica


Tabla 1 - los parámetros de configuración bus SPI.
parámetro descripción
DIGO

Se representa la tasa de transmisión de datos. Debe ser menor que el apoyo de la componente más lento conectado al bus de
comunicación. Tomemos un ejemplo sencillo, si se asume que el componente esclavo soporta una velocidad máxima de 300
kHz comunicación y el microcontrolador
tiene una frecuencia de oscilación igual a 4 MHz.
UJO CÓ

SPI Reloj

La división de la frecuencia máxima de la comunicación para la frecuencia de oscilación del microcontrolador, se obtiene la relación máxima
que puede haber entre las dos magnitudes y elegir el valor más grande, incluyendo
los que están disponibles en el menú desplegable, que es menos el resultado de la posesión.
curso FL

SPI polaridad del reloj Se utiliza para definir el estado de la inactividad de la señal de reloj (inactivo).

SPI Reloj Edge Sirve para seleccionar si los datos se escriben en el flanco ascendente o descendente de la señal de reloj.

Se indica cuando los datos deben tomarse muestras con el fin de realizar una correcta transmisión / recepción de la
bit de muestra SPI
datos de todos los dispositivos conectados. En la práctica, el cambio del punto de muestra dada.

transmisión / recepción de datos en el bus de Si se quiere utilizar la tarjeta EB013, que contiene en
comunicación, pero sólo mostrarlos en el componente su interior una memoria FRAM (reemplazable con una
en el pannel- de Flowcode. memoria EEPROM) y un convertidor digital de ana- /
lógica, tanto de bus SPI. Para utilizar estos
Después de la configuración puede insertar macros componentes también es necesario configurar las
componente administrado desde el menú de iconos, como conexiones externas de los pasadores de apoyo. SER
se hizo para el componente del teclado y el ADC UTILIZADO Zando estos simples macro es entonces
examinado en episodios anteriores. En este caso los polos posi- ble utilizar una EEPROM / FRAM o un DAC de
principales macro disponibles para nosotros son los manera muy simple e intuitiva. Si el componente
enumerados en el Tabla 2. seleccionado no pertenece a esta lista o no

Tiene una macro específica, se muestra en la


Tabla 3, que pueden ser de ayuda en

Tabla 2 - Macro disponibles para el control del bus SPI.


Nombre de la macro descripción

Se utiliza para inicializar el dispositivo de comunicación SPI. Por lo general se coloca


SPI_Init
al inicio del programa y se llama sólo una vez.

SPI_Send_Char Se utiliza para enviar un carácter.

SPI_Get_String Se utiliza para recibir una cadena de caracteres.

SPI_Send_String Se utiliza para enviar una cadena de caracteres.

SPI_Get_Char Se utiliza para recibir un carácter.

Se utiliza para eliminar las inicializaciones de la conexión SPI y puede entonces utilizar el pasador
SPI_Unint
microcontrolador como bits normales del puerto I / O.

Tabla 3 - Macro para componentes específicos adicionales de bus SPI.


Nombre de la macro descripción

Enviar un personaje / byte en el convertidor digital / analógico que va a transformar directamente


DAC_Send_Char
en un valor analógico visible en los terminales externos.

NVM_Send_Char Enviar datos a la memoria EEPROM que se cargará en la celda seleccionada.

NVM_Get_Char Lee el valor almacenado dentro de la célula de memoria especificada.

FramOutput Enviar un valor a la memoria FRAM.

Permite la memoria FRAM / EEPROM. Antes de cada control hacia la memoria, debe
EnableFRAM
de lo contrario serían permiten ignoran todos los comandos.

Desactiva la memoria FRAM / EEPROM para que pueda comunicarse con otros dispositivos
DisableFRAM
conectadas en el mismo bus SPI.

En la electrónica ~ de octubre de 2013 115


Fig. 3
El componente
del panel 2 C
Maestro.

Era compatible, simplemente use el macro genérico una respuesta. Luego se envían, en secuencia, los La Fig. 4 del
componente i
a fin de lograr el protocolo correcto. datos en sí, siempre a partir del bit más significativo.
Propiedades 2 C
Dentro de los componentes de la barra podemos maestro.
seleccionar el controlador del bus I²C e insertarlo
El puerto I²C dentro del panel Flowcode. El panel se parece Fig. 3
Vamos ahora a describir el bus de comunicación I²C,
cuyo protocolo requiere únicamente dos líneas de
comunicación: y nos permite ver las las comunicaciones presentes en el
• SDA (Serial Line Datos) para trasmissio- / bus y ser capaces de interactuar mediante la adición de
recepción de datos I; bytes en la comunicación con el fin de hacer que la
• SCL (Serial Line Reloj) para trasmissio- que el simulación interactiva. Para utilizar el componente, debe
reloj de sincronización. configurarlo como lo hicimos preceden- temiendo el bus
SPI, pero los parámetros que se establecen son diferentes;
En el mismo bus se pueden conectar hasta 112 en el caso del bus I²C, ellos son los que figuran en el Tabla
dispositivos diferentes. A diferencia de SPI, tanto los datos 4.
en la transmisión y recepción en los que viajan en la
misma nection con- física. El bus SPI es de tipo medio-duplexEn lugar macros disponibles se resumen en Tabla
5.
porque sólo un componente a la vez puede transmitir Continuando nuestra ruta que describe ción del bus
datos; Por otra parte, la comunicación sólo puede ser de comunicación, vamos al autobús con el menor
iniciado por el maestro, que-mediana una cadena que número de conexiones posibles: una conexión única
contiene un bit de inicio, la dirección del esclavo con el que para la transmisión / recepción de señal de datos y la
quiere comunicarse y un bit que indica si se requiere sincronización: el bus OneWire. curso FL

Tabla 4 - El componente Configuración de Parámetros 2 C.


parámetro descripción

control de la frecuencia Enableslew Active el control sobre la velocidad de respuesta (velocidad de los frentes) de la señal transmitida en el bus.
UJO

Habilitar SMBus Entradas Habilitar el uso de SMBus en conexión I²C (modo de compatibilidad).

Establecer la frecuencia con la que los datos se transmiten en el bus de comunicación. Debe obligatoriamente, como se ve para el bus SPI,
para ser menor que la velocidad máxima soportada por el componente más lento conectado al bus. valores preconfigurados pueden ser
CÓDIGO

velocidad de transmisión
utilizados (predefinidos), o de los valores personalizados
seleccionado utilizando la barra de desplazamiento.

Seleccione el dispositivo que, puestos a disposición por el microcontrolador, que está implicado en la transmisión de datos. Si hubiera
hardware de IC2 más de una disponible, como se muestra en La Fig. 4, Se pueden insertar dos componentes I²C, cada uno en un canal diferente de
manera que tenga dos bus de comunicación distinta.

116 De octubre de 2013 ~ en Electrónica


DIGO

La Tabla 5 - Macro disponible para la gestión de conexiones I 2 C maestro.


Nombre de la macro descripción
UJO CÓ

Inicializa la comunicación I²C periférica interior. Debe ser llamado una vez más antes
MI2C_Init
realizar otra macro de otro modo no puede transmitir / recibir los bytes.

MI2C_Start Enviar la señal de inicio de la comunicación en el bus I²C.

MI2C_Restart Enviar la señal de comunicación reinicio en el bus I²C.

MI2C_Stop Enviar la señal de alto comunicación en el bus I²C.


curso FL

Se transmite un byte en el bus de comunicación. Devuelve cero si detecta la recepción de una


MI2C_Transmit_Byte
acuse de recibo " reconocer ".

Se recibe un byte desde el bus de comunicación. Se requiere la mejora del parámetro que, si
MI2C_Receive_Byte
lugar para uno, indica que los bytes a recibir es el último.

MI2C_Send_Byte_Transaction Enviar a un dispositivo específico se indica el valor que se debe colocar en la dirección.

MI2C_Receive_Byte_Transaction Se recibe desde un dispositivo específico el valor cargado en el banco de memoria seleccionado.

La puerta OneWire Tabla 6 - tiempos de pulso para la transmisión de


El bus OneWire ha sido realizado por Dallas datos en el bus OneWire.
Semiconductor para permitir las comunicaciones entre reajustar Línea 0 durante al menos 480 ms

dos o más dispositivos a través de un solo cable de valor uno lógico 1 ÷ 15 s línea a 0

interconexión. Como hay un cable dedicado para la lógico valor cero 60 mS Línea 0

transmisión de la señal de sincronización, éste deberá


ser transmitida assie- me los datos.
Para asegurarse de que el paquete de datos ha sido
recibido correctamente / enviado, está presente la 8-bit
Para evitar problemas de cortocircuitos en la línea hay CRC utilizando el control que se transmite como el primer
un pull-up, es decir una resistencia conectada entre la byte. En la ventana de configuración de componentes, se
línea y el Ali-mentación, y todos los dispositivos pueden muestra en la La Fig. 5, sólo podemos elegir si usar o no
imponer un cero en la línea activando el transistor / la comprobación CRC.
conducción puerto MOSFET conectados. El ción
velocidad de comunicación no es muy alta (que se
predetermina a 16 kbps), sin embargo, permite las macros Flowcode disponibles para gestionar este
comunicaciones entre dispositivos de una manera muy puerto se resumen en
simple. Es un bus de tipo maestro / esclavo, donde cada Tabla 7.
dispositivo tiene una dirección única y esto debe ser en Tabla 8 enumera otras macros que pueden ser
utilizado por el maestro para iniciar la comunicación con útiles si voles- si desea utilizar el dispositivo DS1820.
el esclavo. Antes de poder utilizar el componente

La codificación de los símbolos difiere considerablemente de los


casos examinados anteriormente, debido a que están
codificados de acuerdo con lun ~ longitud de impulso, tal como
se muestra en
Tabla 6.
En el caso de la recepción, es decir, durante la
comunicación de datos desde el esclavo al maestro, el
esclavo mantiene la línea con el valor 0 para 60 ms si se
quiere enviar un valor lógico cero, mientras que no hace
nada de si desean enviar el valor lógico de una después de Fig. 5 de las
Propiedades
cada pulso generado por el maestro.
OneWire
componentes.

En la electrónica ~ de octubre de 2013 117


Tabla 7 - Macro disponibles para la gestión de bus OneWire.
Nombre de la macro descripción

Enviar una orden de reinicio y devuelve uno si no hay ningún dispositivo se reinicia o hay
oo_BusReset
dispositivos conectados al bus.

Se devuelve los datos leídos desde el dispositivo identificado por el parámetro pasado a la macro; Los dispositivos camas son
oo_GetPadByte como máximo 9 y el parámetro puede variar de 0 a 8 si un dispositivo se restablece
o no hay dispositivos conectados al bus.

oo_Tx_Byte Se transmite un byte en el bus.

oo_Rx_Byte Él recibe un byte desde el autobús.

Se realiza una exploración de bus para identificar el número de dispositivos. Devuelve 1 si había
oo_ScanBus
problemas durante la exploración.

oo_Get_DeviceCount Devuelve el número de dispositivos detectados en el bus después de un comando de exploración de bus.

oo_ReadDevice Lee el dispositivo identificado por el número en el orden de exploración.

Tabla 8 - Macro para la gestión del componente DS1820 de bus OneWire.


Nombre de la macro descripción

Iniciar la conversión de los datos del dispositivo DS1820. Devuelve uno si se introduce el dispositivo en
DS1820_Start_Conversion
tiempo de espera sin terminar la conversión.

Lee valores desde el dispositivo DS1820. Sólo se puede utilizar si hay una
DS1820_Read_Scratchpad
dispositivo conectado al bus de lo contrario es necesario utilizar el oo_ReadDevice macro.

Lee la temperatura del dispositivo DS1820.


DS1820_Get_Temp
El valor leído está representado en un número entero con una resolución de 0,0625 ° C.

Debe configurar la pierna que se utilizará para bus de comunicación interno, pasamos a describir el
transmitir / recibir datos, como se muestra en Fig. 6. puerto RS-232, que es una de las interfaces en serie
más utilizados y simples.
Un ejemplo sencillo de un diagrama de flujo para
controlar el bus OneWire para la gestión de componente El puerto RS232
DS1820 está refinando gurado en Fig. 7: con el uso de El RS232 es una línea de comunicación asíncrona,
sólo cuatro bloques puede comunicarse con el ya que la autorización temporal no es de salida,
componente olvidando por completo todos los pero nerato ge- independientemente por los dos
problemas relacionados con la capa física y el protocolo dispositivos conectados. La conexión es de tipo
de comunicación. Ahora que hemos analizado tres punto a punto, y luego le permite comunicarse con
ejemplos de uno a sólo dos dispositivos.

Fig. 7 - Ejemplo de flujo de


control para el componente
curso FL
DS1820.
CÓDIGO UJO

Fig. 6 - Configuración de conexiones de bus OneWire.

118 De octubre de 2013 ~ en Electrónica


Tabla 9 - Macro disponibles para la gestión de la conexión RS232.
DIGO

Nombre de la macro descripción

SendRS232Char Enviar una serie de 8 bits dado.


UJO CÓ

SendRS232String Enviar una cadena de caracteres en la serie.

Él recibe un personaje en la serie. La macro acepta como parámetro el valor del tiempo máximo de espera de los datos y si no se
ReceiveRS232Char
recibe dentro del tiempo máximo indicado INVALID_RETURN devuelve el valor (255).

Es similar a ReceiveRS232Char pero lee una cadena de caracteres cuya longitud


ReceiveRS232String
curso FL

Está indicado por el parámetro Longitud.

Cambio de la velocidad de transmisión de datos.


ChangeHWBaud
Acepta un valor numérico entero entre 0 y 7 codificada como en Tabla 10.

Tabla 10 - Valores disponibles para la edición sobre la marcha


Los datos se transmiten de una manera en serie, desde
de su velocidad de conexión.
paquetes de 8-9 bits encerrados entre un bit de inicio y
parámetro velocidad
uno de parada. La duración de cada bit depende de la
0 1200 bps
velocidad de comunicaciones que; de manera que todo
1 2400 bps
funciona correctamente, éste debe ser igual en ambos
2 4800 bps
dispositivos.
3 9600 bps

Flowcode tiene un componente específico de la gestión 4 19200 bps

de la RS2332, cuya macro se resumen en Tabla 9. Para 5 38400 bps

utilizar el componente que necesitamos para 6 57600 bps

configurarlo (como se ha hecho para otros vistos 7 115200 bps


anteriormente) a través de la ventana de configuración
confi-, accesible desde el menú del componente en el
panel hacia abajo; Aquí tenemos los controles para La gestión de una placa de relé a
ajustar la velocidad de comunicación (baud-rate), el través de interfaz RS-232
número de trama de bits, así como la posi- bilidad de Al llevar a cabo este sencillo proyecto omitir los
utilizar las conexiones para control de flujo. pasos básicos que ya hemos explicado en las
apuestas anteriores y nos detenemos más en
nuevos conceptos.

Nosotros no detenerse en los detalles de cada Nuestro sistema tiene las siguientes características.
configuración, ya que nuestro objetivo es dar a todos los
aspectos básicos de la utilización de componentes • Se comunica a través de RS232 bidireccional entre el PC y la
tratados de forma rápida y eficaz; si se quería tarjeta de control del relé.
profundizar en algunas de las características y lidad • Debe ser compatible con los siguientes comandos:
funcional, siempre se puede utilizar la ayuda Flowcode, - " la "Activar relé;
se recomienda que siempre tenga a mano, ya que - " D "Relé Disable;
podría, al principio, sobre todo, garantizar que se - " R "Leer estado del relé.
aprende mucho. • La sintaxis del comando es < XP>, donde x
identifica el código de comando (que puede ser uno de
los tres comandos que se muestran en el punto
Este tipo de conexión es muy simple de usar y permite anterior), mientras p Identifica el relé controlado, y está
las comunicaciones con incluso dispositivos muy representado por un número con codificación ASCII.
complejos, tales como los receptores GPS o Así, por ejemplo, para activar el relé 3 enviar el
visualización de gráficos. Para entender mejor el comando "<A3>", para apagar el puesto relé 2 "<D2>",
potencial, pasamos ahora a realizza- ción de un mientras que para leer el estado del relé 1 enviar el
proyecto simple práctica, lo que nos permitirá comando "<R1>".
gestionar una batería de relé a través del puerto serie
de PC.
• La sintaxis de las respuestas a los comandos es

En la electrónica ~ de octubre de 2013 119


sigue: < XP-v>. En ella, x y p tienen el mismo significado
dado anteriormente, y v es el valor o el resultado del Fig. 8 Asamblea de
módulos necesarios
comando. Si el comando no requiere un valor de
para conducir una
retorno y se ha ejecutado correctamente, v Tendrá batería de relé a través
valor "K", mientras que en el caso no hay errores de la conexión RS232.
tendrán valor "N". Por ejemplo, como una respuesta a
la activación del relé de control 1 con un resultado
positivo, se le <A1-K>, mientras que si el resultado
hubiera sido negativa la respuesta será <A1-N>. En
respuesta a la orden de lectura, v Es 1 o 0 de acuerdo
con el valor leído. Por ejemplo, en el caso de que el
relé 2 está activada y que la lectura le pide, la
respuesta será <R2-1>.

Ahora que hemos establecido las directrices ellos principa-


para implementar nuestro plan, Paso de la identificación de
los componentes necesarios para la construcción, que son:

Fig. 10 - Configuración de la matriz de componente LED.

curso FL
CÓDIGO UJO

Fig. 9 - Configuración del componente RS232.

120 De octubre de 2013 ~ en Electrónica


EB006 se utilizan ya en el último episodio.
DIGO

Flowcode no tiene una matriz Módulo de relé, pero la


operación de un relé, desde el punto de vista del control,
UJO CÓ

es similar a la de un LED, por lo que vamos a utilizar el


componente de matriz de LED para controlar nuestra
batería intermedia. Abrir el proyecto
"ConfigurazioneBase2. FCF "y el inserto, tomándolos de
curso FL

la bandeja de componentes, el componente RS232 y la


matriz de LED. Hemos establecido el RS232 usando el
menú emergente "Propiedades adicionales" con el fin de
tener una velocidad de comunicación ción igual a 9.600
bps, el valor de "tiempo de espera" en milisegundos, y
elegir el puerto UART1 como se indica en Fig. 9.

También configurar el componente de LED

Fig. 11 - programa
de control principal.

- EB006 " iprogrammerboard array siguiendo el mismo procedimiento que se muestra en


PICmicromult USB "(PIC18F4580 y cuarzo la Fig. 10.
12 MHz); Así que elegimos el pasador en los que son gati con-
- EB038 " Placa de relé "; utilizando el menú emergente "conexio- nes" y
- EB015 " Junta RS232 ". assegniamoli al puerto A del pin 0 a 4 pines.

Enlace a ellos con el fin de tener la tarjeta en el Ahora que todo está listo, podemos dedicarnos a la
EB038 y EB015 puerta En la puerta elaboración del diagrama de flujo. Para OT timizzare el
C, como se muestra en Fig. 8. uso de Flowcode puede Pen- división Sare, el uso de
Las juntas deben ser alimentados con el fin de funcionar macros, todo el programa en tres partes principales:
correctamente, porque a través del conector DB9 pasar sólo
conexiones de datos y la referencia de tierra, por lo tanto, el • = inicialización inicializa todo lo que tiene que ser
uso de los cables de prototipazio- que, conectar todos los pre-establecido antes de que los principales comience el
terminales indicados con "+ V" al correspondiente terminal bucle;
de SChE - como EB006. Vamos posición, por otra parte, los • principales = llama a la inicialización del stema Si-, lee
conectores de datos de parches Re en C y 2 EB038 posición los caracteres recibidos de serie y los agrega en una
de la tarjeta, y en la posición baja de la pestaña EB015. Las sola cadena con el fin de examinarlo mediante un
otras configuraciones de la tarjeta sencillo control de la corrección;

• ControllaComando = realiza el control

En la electrónica ~ de octubre de 2013 121


el control, el comando se restablece a fin de
permitir la recepción de nuevos comandos;

• en los demás casos, se añade el carácter a la


cadena de comandos.

todo el flujo en Flowcode está representado en Fig.


11.

La Fig. 12
Macro
Compruebe Comando.

La Fig. 13 Macro de
inicialización.

la corrección de la orden recibida, ejecuta el


comando y envía la respuesta.

principal

El principal contiene la llamada a la inicialización


macro, además de un bucle infinito en el que es una
solicitud de lectura de serie y se analiza el carácter
recibido, entonces, cada vez que un carácter se
recibe de serie, que se analiza. Después de recibir y
analizar Existen tres posibilidades:
curso FL

• el carácter es "<", entonces es restablecer la cadena


que contiene el carácter recibido;
• el personaje es ">", a continuación, la cadena de
UJO

comandos se ha recibido por completo, y luego el


comando es controlado a través de la especificación
CÓDIGO

macro; al final

Tabla 11 - el formato de archivo CSV.

Tiempo de Reproducción [ms] El relé 1 Estado El relé 2 Estado El relé 3 Estado Retransmisión del Estado de 4

122 De octubre de 2013 ~ en Electrónica


DIGO
UJO CÓ
curso FL

Fig. 14 - Sección "Control Manual" sw interfaz. Fig. 15 - Sección "Control Automático" sw interfaz.

Macro "ControllaComando" Fig archivo 16 de


Se da cuenta el control de la orden recibida como muestra.
. cvs.
parámetro, lo ejecuta en caso de que sea a StA- recibido
correctamente y, en todo caso, envía una respuesta en
la línea serie. En la primera parte de la macro que se
han extrapolado de la cadena de caracteres de comando
y el parámetro asociado. Se hace una comprobación en
el valor del parámetro (que en nuestro caso debe estar
entre 1 y

4) y, posteriormente, dependiendo de la naturaleza de la


orden, la operación de encendido, el relé se apaga o se
realiza la lectura. Los estados de los relés se almacenan
en un vector de apoyo global llamada "StatoRele". software de interfaz enshoot es visible en
Después de la ejecución, antes de devolver el control a la Fig. 14. Como se puede ver, se puede seleccionar el puerto
función de llamada, la macro envía la respuesta SER RS-232 (COM1 o COM2), seleccionar la velocidad de
interoperabilidad utilizados por SendRs232String macro. transmisión (el valor predeterminado es 9600), mientras que
El diagrama entero es visible en Fig. 12. hay dos pestañas, "Control Manual" y "Control Automático"
que contiene los comandos específicos para los dos modos.
Para el modo controlado del manual son 4 botones, con los
que es posible comprobar el estado del relé. Dos palabras
Macro "inicializar" más merece la llamada automática sección trasera, que a su La
Se utiliza para inicializar el estado de los relés y el Fig. 15 mostramos una captura de pantalla. En esta sección
apoyo de las variables pro- grama. En este caso la se hace posible automatizar el control de una tarjeta de PC,
única variable que debe ser limpiado es el vector el establecimiento de secuencias de control tiempo- se
con el estado del relé "StatoRele" que sea pincha. Para configurar secuencias automatizadas tividad es
concordante con el estado físico, se debe ajustar a suficiente para generar un archivo .csv con el formato
cero. El diagrama Flowcode se muestra en la Fig. mostrado en Tabla 11.
13.

Interfaz de software Como se puede ver, el primer campo indica el tiempo (en
Para el uso de la placa de relés de nueva creación, ms) a la que se le enviará las instrucciones presentes en 4
se ha desarrollado una interfaz de software especial, campos sucesivos, que representan el estado del relé 4 (0 ó
escrito en Labview 1). Un ejemplo de un archivo .csv se muestra en la Fig. 16.
2010. La interfaz permite tanto el control manual del relé 4,
tanto la ejecución de frecuencias automatizados SE-. Con este modo, es posible ser secuencias impuestas de control
Inmediatamente después del inicio de la interfaz podemos que pueden ES- tardes empleadas para las más variadas
elegir entre dos modos, a través de un botón en la parte necesidades, desde la automatización para la automatización del
inferior, en el panel derecho. una desacreditada hogar, para el control de maquinaria.
g

En la electrónica ~ de octubre de 2013 123


Continuamos nuestro viaje en
un entorno de desarrollo
gráfico para
DIGO

microcontroladores ofrecidos
por Matrix Multimedia. En
este episodio de empezar a
UJO CÓ

trabajar con dispositivos

5
avanzados de comunicación,
empezando por el que ha
curso FL

tenido un gran éxito y


creciente en los últimos 15
años: el bus CAN. Quinto
episodio.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

el último mes hemos ilustrado el uso de las ciudades en comparación con soluciones similares y

la
dispositivos de comunicación básicas, aprender a
puertas de funcionamiento de la comunicación UART,
I²C, SPI y OneWire. En este episodio de la equidad en
reducción de los costos de los componentes. Como se ha hecho
en episodios anteriores, enriquecemos todos con un proyecto
práctico se dará cuenta de un prototipo de sensor de
nuestro trabajo hemos introducido un dispositivo de aparcamiento para vehículos.
comunicaciones mucho más avanzado, que le permite
crear bastante compleja incluso redes y gamente LAR
utiliza hoy en día, las mentes Special- en el sector del Controller Area Network (CAN)
automóvil: que son puerta lando par- CAN (Controller El protocolo CAN nació en los años 80 del siglo
Area Network) , que hoy es el estándar pasado por Robert Bosch GmbH, que tenía la
necesidad de desarrollar un estándar para las
comunicaciones en serie entre diferentes unidades de
de hecho para redes de comunicación de control electrónico de corto alcance, de multidifusión,
automóviles y se está expandiendo a aplicaciones con una alta inmunidad al ruido, bajo costo y alta
industriales y personalizados, gracias a su robustez, fiabilidad. El estándar Im-
la sim- relativa

En la electrónica ~ de noviembre de 2013 127


doblez como un medio de transmisión diferencial de Los marcos pueden ser de cuatro tipos:
línea equilibrada (los dos terminales se denominan • trama de datos, marco que contiene los datos que el nodo
CANH y CANL), exactamente como en el caso de transmite;
RS485. La tasa de bits máxima alcanzable es de 1 • Remote Frame; Se requiere la transmisión de un
Mbit / s, con una extensión máxima de identificador específico;
aproximadamente 100 m de la red. Contenido a la • trama de error; transmitida desde cualquier nodo que
velocidad más baja que es posible cubrir distancias se ha detectado un error;
más grandes (por ejemplo, con 125 kbit / s se llega a • marco de sobrecarga; marco que introduce un retardo entre
500 m). en Tabla 1 Ejemplos de extensión máxima de la trama de datos y / o el marco remoto.
la red de la velocidad de transmisión. La técnica de
transmisión de CAN utiliza un modelo basado en bits
"dominante" y "re-quent", en el que los bits son Los datos de tramas son aquellos a los que la
dominantes 0 transmisión real de datos y puede ser de dos tipos,
dependiendo de la versión estándar puede tener en
cuenta:
los bits lógicos y recesivos son la 1 la lógica. Si, durante
una transmisión, el nodo A envía un bit dominante y, al • formato de trama de base; ID de 11 bits (Version
mismo tiempo, el nodo B envía un bit recesivo, 2.0A);
entonces el bit "gana" dominantes entre los dos. • formato de trama extendida; ID 29 bits (ver- sión
Durante la transmisión, cada nodo que es la 2.0B).
verificación mediante la transmisión del estado del bus
y compara los bits recibidos con el bit transmitido: si El estándar puede dispositivos son formato noscere reco- fotograma
detecta un bit dominante cuando se transmite uno y que puedan necesitar saber (pero todavía debe tollerar-
recesivo, el nodo que ha detectado el error interrumpe lo) formato formato de trama extendida. La base puede
la comunicación. permite 2 11 = 2048 tipos de verso di- mensajes, pero a partir
de Bosch se posso- ningún uso específico sólo 2031. En la
versión extendido
Con esta técnica, si dos nodos de inicio de la
transmisión al mismo tiempo, están contendiendo para puede tener hasta 2 29 = 536 870 912 tipos de mensajes.
el uso exclusivo del bus (arbitraje) la transmisión de El formato de trama extendida, también llamado CAN
sus datos, poco a poco, hasta que uno de ellos no extendida, es ahora el formato más popular en las
detecta un error de transmisión, autoesclu- dendosi diversas aplicaciones que utilizan este estándar. Una
(se dice que el nodo en cuestión pierde el arbitraje) aplicación que utiliza el protocolo CAN pro- necesita
desde el bus. En la teoría de redes de comunicación, por lo menos unos pocos componentes electrónicos
un approc- lo de este tipo se llama CSMA / BA (Carrier adicionales: un controlador y un transceptor; este
Sense Multiple Acceso / bit a bit de Arbitraje). último es el elemento que se encarga de la barbilla
dell'interfaccia- en un nivel físico con el bus. Por tanto,
es responsable de la correcta traducción y adaptación
de los niveles lógicos de las líneas. Se conecta
El protocolo CAN está centralizada en los mensajes, directamente con el controlador. Existen varias
curso FL
que se denominan generalmente también marcos, empresas en el mundo que producen transceptor CAN;
identificados por una ID. Cada nodo ejecuta una o más vamos a utilizar el MCP2551 de Microchip transceptor.
tramas de recepción y / o transmisión, dependiendo de El controlador es el elemento que se encarga de la
la arquitectura de la red. aplicación de la capa de enlace de datos (capa 2 de la
pila OSI);
UJO

Tabla 1 - Datos de tarifa se refiere a la extensión de la red CAN.


CÓDIGO

Datos de tarifa (kbps) extensión máxima (m)

125 500

250 250

500 100

128 De noviembre de 2013 ~ en Electrónica


Fig. 1 - conexiones pueden extendida de la Fig. 2 - Propiedades adicionales del componente CAN extendido.
componente.
DIGO
UJO CÓ
curso FL

traggio, manejo de errores, cies de poli retransmisión, zioniamo el componente de la bandeja de componentes, al
etc. El controlador también tiene una memoria intermedia hacer clic en el elemento CAN extendido. Una vez
de transmisión, recepción y máscaras, que le permiten introducido, en relación con el icono del componente
configurar el conjunto de mensajes para la transmisión y aparecerá en el panel, y en este punto se puede configurar
recepción, lo que reduce la sobrecarga de la CPU del para que se ajuste a las necesidades del proyecto
microcontrolador en los que es facciato inter. Incluso específico.
para los controladores, hay varios fabricantes en el
mundo; en nuestro caso vamos a utilizar el controlador Para analizar la primera ni cosa nection, que en el
MCP2515 de Microchip. caso de este componente se reduce a la clavija de CS
del controlador CAN (que es un esclavo SPI).
Podemos acceder a la conexión haciendo clic en el
botón del icono stro de- del componente y nando
El componente de la CAN en Flowcode seleccionado el "Conexiones". Verá la ventana
Analicemos ahora el componente Flowcode que nos mostrada en Fig. 1.
permite simplificar la gestión de la interfaz CAN en
nuestras aplicaciones. Flowcode CAN tiene dos Por defecto, el pin CS es el pin 6 de la puerta C; si
componentes, uno para la gestión de formato de trama existe la sity nece- de cambio (por ejemplo, en el caso
básica ( llamada simple- mente CAN) y uno para la en que se usa el E-bloque CAN) se puede mantener
gestión de ' formato extendido ( llama extendido CAN) también. Para configurar el componente hacemos clic
por lo que si decidimos desarrollar una aplicación en el botón derecho sobre el icono y seleccionar
puede, en la primera opción de hacerlo será para el "Propiedades adicionales". La ventana de Fig. 2. Desde
tipo de formación a. En la versión actual del medio la primera pestaña de esta ventana FI puede
ambiente, el controlador interno están solamente seleccionar las principales opciones de configuración
soportado por el componente que soporta el formato de bus, tales como velocidad de transmisión, el punto
básico, por lo que si se utiliza el componente extendido de muestreo y otros. Estos parámetros, a su vez
estará ligada a la utilización de un controlador de SPI dependen de las características específicas de la red,
externo. En este episodio Remo occupe- CAN tal como su tamaño, el número de nodos, la carga del
extendido componente, y luego vamos a utilizar el bus, etc. permetto- posteriores ninguna ficha para
controlador MCP2515 en nuestras aplicaciones. configurar los diversos recep- búfer y transmitirlo. En
proyecto práctico, vamos a ver un ejemplo de la
configuración de memoria intermedia.

Para insertar el componente puede no all'inter- nuestro


proyecto Flowcode Seleccionar pantalla

En la electrónica ~ de noviembre de 2013 129


Tabla 2 - Macro disponibles para el componente de la CAN.

Nombre de la macro descripción

init Inicializar el componente CAN.

búfer de envío Enviar el mensaje contenido dentro de la memoria intermedia de transmisión (pasado como parámetro)

CheckRx Compruebe si hay mensajes recibidos en un búfer de recepción en particular (se pasa como parámetro).

ShowLEDs Compruebe los LED de la EB018.

ReadSwitches Se lee el estado del interruptor EB018.

GetRxDataCount Él recibe el número de bytes del mensaje contenido en un tampón dado (se pasa como parámetro).

Extrae un byte dado en este mensaje en una memoria intermedia de recepción especificado. Recibe como parámetro es el buffer que el índice de
GetRxData
byte.

SetTxStdID Cambio de la ID estándar de una memoria intermedia de transmisión en particular (pasado como parámetro).

Editar el ID extendida de un tampón particular de transmisión (pasado como parámetro) como la ID estándar y extendida ID.
SetTxExtID

SetTxExtAsFull Editar el ID extendida de una memoria intermedia de transmisión en particular (pasado como parámetro).

Extrae una bytes especificado de un mensaje dado con ID estándar. todos los tampones se comprueban y el índice de byte se pasa como
GetRxStdID
un parámetro.

Extrae un byte dado de un ID de mensaje particular con extendida, visto como una combinación de un identificador de nivel y un ID se
GetRxExtID
comprueban .. Extended todo el tampón y el índice de byte se pasa como un parámetro.

Extrae un byte dado de un ID de mensaje particular con extendida .. son controlados todo el tampón y el índice de byte se pasa
GetRxExtIDAsFull
como un parámetro.

Ahora, como de costumbre, se procede con el análisis • El envío de datos sobre la distancia en cm;
de la macro proporcionada por este componente, que • Auto-diagnóstico de estado de la batería y el estado de E enlace 2

se encuentra en el riepi- logoed Tabla 2. C con el sensor;

• el modo de suspensión puede ser activado a través de men-

saje desde el nodo de visualización.

Bono Proyecto: sensor de aparcamiento


Pasemos ahora a la práctica de los proyectos tiva en Pantalla de nodo:
relación con esta apuesta. Como ya hemos mencionado, • Interfaz con alphanu- pantalla 16x2 rico;
hemos decidido hacer un proyecto práctico un poco 'vo
más impegnati-, sólo para poner de relieve el potencial de • CAN 2.0B interfaz 500 kbaudios;
las desarrollo rápido ofrecido por Flowcode, que permite la • La lectura y la visualización de la información de distancia;
realización de proyectos también bastante complejas en
tiempos ridot- tissimi y un excelente resultado final. En el • La lectura y la visualización de los datos de diagnóstico;
caso específico hay cimentiamo en la realización de un
prototipo de un sensor de aparcamiento de coches, que • Administrar el modo de reposo mediante un botón.
consta de dos nodos: un nodo sensor y un nodo de
pantalla, conectados entre sí a través de un bus CAN. Así
que nos damos cuenta de Flowco- de dos proyectos A pesar de que el ANC es de forma nativa una red
separados, que vamos a utilizar para generar ejecutables peer-to-peer, es posible forzar las relaciones maestro
curso FL
binarios para programar las dos tarjetas. Como de / esclavo, actuando a nivel de aplicación; es lo que
costumbre, se analizaron ziamo proyecto específico, en haremos en este ejemplo, donde los nodos pantalla
este caso agrupados por nodo. actúa como un nodo maestro (puede poner "a
dormir", el nodo sensor esclavo), invian- hacer un
mensaje especial para forzar el estado de sueño, con
UJO

el fin de desactivar el sistema durante el fases de


conducción y carcoma abili- al aparcar. En cuanto a la
CÓDIGO

realización de hardware, en este proyecto vamos a


Nodo sensor: necesitar los siguientes fichas:
• Interfaz con SFR02 sensor ultrasónico, en
I²C bus;
• CAN 2.0B interfaz 500 kbaudios;

130 De noviembre de 2013 ~ en Electrónica


La Fig. 3a
Prototipo del nodo sensor.
DIGO
UJO CÓ

- 2x EB006 " PICmicro bordo mer multiprogram-


USB "(PIC18F4580 y 12MHz cuarzo);
curso FL

- 2x EB018 " CAN bus de la Junta ";


- 1x EB005 "tablero LCD";
- EB016 1x "Prototypeboard".

No tener un e-bloque específico, para interconectar el


SRF02 nos sirven, como ya lo hemos hecho en el
pasado, el EB016, que conectan los puertos A y B.
Posizionia- mo SRF02 en el tablero y conectar los
terminales de alimentación y los de la SDA y la
comunicación del bus SCK. No ser capaz de utilizar el
hardware de la puerta I²C (porque, para interconectar
el MCP2515 utilizar el MSSP en modo SPI), la
conexión emulia- Mo I 2 C en el software, y luego usar
RB0 y RB1, respectivamente SCK y SDA. Además
All'SRF02, el EB016

también hay que colocar un divisor con una relación


de división de tensión 1: 4, con el fin de leer el estado
de ria bacteriológicos, que conectan a la entrada
analógica AN0. Completamos conectando el nodo Fig. 3b Prototipo
del nodo pantalla.
sensor EB018 en el puerto C. Para el nodo de
visualización, conecte el EB018 y EB005 en el puerto
C en el puerto B. Para ambos nodos, el ajuste de la
EB018 puente es el siguiente:

• J4 en A;
• J5 inserta;
• J6 y J7 fuera.

A continuación, vamos a asegurarnos de cerrar en ambas de estas


tarjetas J8 analógico, con el fin de terminar la línea en ambos lados y
conectar los cables de la fuente de alimentación.

En la electrónica ~ de noviembre de 2013 131


Tabla 3a - 0xC40A5 mensaje de características.
identificación 0xC40A5 tipo Periódico

Tx Nodo_Sensore Rx Nodo_Display

período 250 ms

byte 0 byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7

DistHighByte DistLowByte DiagSts no se utiliza no se utiliza no se utiliza no se utiliza no se utiliza

Distancia en cm 0 = No Batería Falla


Falla 1 = 2 = 3 = Mult
I²C falle. fallar

Tabla 3b - 0xC40A4 mensaje de características.


identificación 0xC40A4 tipo para el evento

Tx Nodo_Display Rx Nodo_Sensore

período NA

byte 0 byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7

SystemSts no se utiliza no se utiliza no se utiliza no se utiliza no se utiliza no se utiliza no se utiliza

0 = modo de suspensión 1 =

Modo Despierto

La configuración de hardware de los dos nodos se muestra que las características de los dos puestos. Ahora,
en la La Fig. 3a y Fig. 3b. para la descripción del software Menting imple-, con
la premisa de que, dada la complejidad del
mapa Mensajes proyecto, la descripción de algunas partes no
Antes de pasar a los detalles de software ana- lizziamo fundamentales se omite o se tratará sólo de forma
un punto fundamental de cualquier red basada en el marginal.
protocolo CAN, que es el mapa de mensajes: en un bus
CAN, que es el documento que describe los principales
mensajes que CA- ratteristiche intercambiador no es nodo sensor
diferente los nodos dentro de la red. Este documento De acuerdo con las especificaciones, este nodo debe
indica los tipos de mensajes, sus direcciones, el adquirir los datos relativos a la distancia del sensor
significado de los bytes que las componen, qué nodos ultrasónico, realizar un autodiagnóstico en el nivel de la
de transmisión y cuáles son los de-ates de cada batería y el estado del bus I²C y comunicar esta
mensaje individual. En nuestro caso, tenemos un total información al nodo principal a través de mensaje CAN.
de dos mensajes, uno transmitido desde el nodo rey
sentido- y recibidos desde el nodo de visualización, y
uno que pasa en la dirección opuesta. en Tabla 3a y Tabla
3b son riporta-

curso FL
Tabla 4 - Periodicidad y la descripción de la tarea de
software nodo sensor.

tarea Período [ms} descripción

Gestiona la transmisión del


CanTxTask 250 mensaje CAN del nodo sensor.
UJO

Gestiona la recepción de la lata men- sage


CanRxTask 50
desde el nodo de visualización.
CÓDIGO

Gestiona el diagnóstico del proyecto principal. Fig


DiagTask 50
sistema. 4 en Flowcode.

Gestiona la comunicación con el


SensorRangingTask 10 sensor ultrasónico SRF02.

132 De noviembre de 2013 ~ en Electrónica


Fig. 5 - Configuración de la Timer2 interrupción.

Para configurar la interrupción doble clic dentro del


DIGO

bloque, con el fin de acceder a las ventanas de


configuración, publicado en Fig. 5.
UJO CÓ

En esta ventana seleccionamos la opzio- en


"Habilitar interrupción", y entre la fuente de menú
desplegable seleccionamos el "TMR2". Luego, en
el "llamará a la macro", inserte la macro
curso FL

Fig. 6 - Establecer los registros del temporizador 2.

También se debe manejar un modo de espera a petición


del nodo maestro. Para empezar, vamos a examinar la
impostazio- a la arquitectura sistema de niveles. El
firmware en cuestión tiene varias tareas a realizar de
manera simultánea; así que elegimos servir a un
planificador para manejar las llamadas a las distintas
tareas. mo Decidia- de generar un planificador con una
garrapata a 10 ms y para generar los otros periodicidades a
través de los contadores incrementados en cada garrapata
sistema. en Tabla 4 Muestran la tarea logrado con
descripciones y su periodicidad. Para la generación del
sistema basado-tick (en que se basa el funcionamiento del
planificador), hay mo SERVIA- una interrupción en Temporizador
2. Como ya he mencionado en el segundo episodio de este
curso, para entrar en un bloque de arrastre de interrupción
desde el icono de la barra de un bloque de alarma dentro
de nuestro principal, como se muestra en Fig. 4 ( en el
diagrama de bloques que ya se ha llevado a cabo la
llamada a la función zializzazione ini- para componentes
utilizados).

Fig. 7 - planificador del sistema.

En la electrónica ~ de noviembre de 2013 133


La Tabla 5 - interiores del sensor SRF02 registra el modo de 2
C.
La ubicación de El acceso de El acceso de
escritura
memoria lectura
de sistema basado en garrapata. Recordemos que
0 Revisión del software El comando de registro
algunas tareas están obligados a ir a dormir a petición
Sin usar (lee 0x80)
1 N/A
del nodo maestro, a continuación, en esta condición no
2 Gama alta Byte N/A
debe ser ejecutado. Para llevar a cabo dicha respuesta
3 Byte bajo rango N/A del acelerador ca- creamos una variable global que
4 Autoajuste mínimo - Byte alto N/A llamamos SystemStatus ( se puede suponer dos valores:
5 Autoajuste mínimo - Bit Bajo N/A SYSTEM_ACTIVE y SY STEM_NOT_ACTIVE), que,
junto con la periodicidad, una de las condiciones de
activación de la llamada a la tarea. La tarea co uniforme
MainScheduler (que podemos crear en el momento o que que no está controlada por esta variable es CanRx, se
ya hemos creado en preceden- za). De esta manera, en utiliza para permitir que el despertar del mensaje CAN
cada aparición interrupción llegaremos dirigida a la macro del sistema. La implementación del planificador (sin la
que contiene el programador del sistema. Podemos hacer tarea requiere por el momento) está escrito en el de- Fig.
es configurar el temporizador para que la garrapata de 7.
10ms sistema; con el fin, hacemos clic en "Propiedades
..". Se Abierta ventana de Ra Fig. 6.

Los contadores se incrementan cada ciclo y las condiciones


Para obtener una interrupción cada 10 ms necesitan para de activación de las diferentes tareas (dentro de los
generar una frecuencia de aproximadamente 100 Hz, para bloques de decisión) son:
obtener el que, con un sistema que funciona a 12 MHz, - CanRx → CanRxTaskCounter> =
TASK_CAN_RX_TIMEOUT;
seleccionamos un pre-escalador 16, un postscaler de 8 y un
vuelco de - CanTx → ( CanTxTaskCounter> =
234. Hacemos clic en Aceptar y continúe. Ahora TASK_CAN_TX_TIMEOUT) && (SY stemStatus
= SYSTEM_ACTIVE);
tenemos nuestro sistema configurado garrapata; lo que
queda por hacer es generar el código de programador - Diag → ( DiagTxTaskCounter> =
con el fin de tener los intervalos indicados en TASK_DIAG_TIMEOUT) && (Estado System- =
SYSTEM_ACTIVE);

Tabla 3 (a y b). Para ello, creamos tres variables - SensorRanging → SystemStatus = SY


globales, es decir, CanRxTaskCounter, STEM_ACTIVE.
CanTxTaskCounter y DiagTxTaskCounter,
que vamos a utilizar como contadores para de- Como se puede ver, la tarea CanRx No está ligado a la
terminar la frecuencia de partida tarea variable SystemStatus para garantizar la posibilidad de
activar el sistema a través de mensajes CAN, y la tarea
SensorRanging no tiene un contador para la
Tabla 6 - ordena establecer dell'SRF02.
periodicidad, ya que el período llamado de esta tarea
Comando (Hex) descripción es sólo 10 ms. Analicemos ahora cómo fue Im-
0x50 La ejecución de una medición - el resultado en pulgadas.
plementata la lectura del sensor de ultrasonidos: para
0x51 La ejecución de una van - Resultados en centímetros. interactuar con la parte dispositiva que lo utiliza, el
0x52 SRF02 tiene la actual capacidad de manejo de uso de
curso FL
La ejecución de una medición - el resultado en microsegundos.

0x56 La ejecución de una falsa van - resultado en pulgadas. la interfaz de serie que el I 2 C. En nuestro caso, como
0x57 La ejecución de una falsa van - Resultados en centímetros. una interfaz de comunicación que eligió el I 2 C.
La ejecución de una falsa van - resultado en
0x58
microsegundos.

0x5C ciclos de transmisión de 8 a 40 kHz (ráfaga ultrasónica).


UJO

Tabla 7 - Macros escritas para la gestión dell'SRF02.


CÓDIGO

Nombre de la macro descripción

Sensor_SendCommand Enviar al dispositivo con el comando de la dirección 0x51 0xE0 por escrito.

Sensor_RequestReadResult Enviar el dispositivo 0xE0 frente a la solicitud de lectura de la dirección 2.

Sensor_ReadResult Lee el byte de la dirección 2 (alto rango de bytes) y 3 (rango bajo Byte) y cierra la transacción.

134 De noviembre de 2013 ~ en Electrónica


Fig. 8
Macro SensorRangingStateMachine.
DIGO
UJO CÓ
curso FL

En el caso de la interfaz de tipo I 2 C, el SRF02 se buscado con el resultado de que van en cm);
comporta muy similar a una memoria EEPROM de la 2) el envío del registro de dirección contenida nente el
familia 24xx: el dispositivo se parece a un conjunto resultado en la lectura;
de registros con acceso de lectura o escritura, tal 3) que recibe los dos bytes del registro que
como lo resume Tabla 5. contiene el resultado.

El acceso de escritura al arriendo 0 permite llevar a Para lograr estas tres operaciones se escribieron tres
cabo una de las operaciones de Tabla 6 ( Sólo se macros, publicado en
muestran los comandos principales). Tabla 7.
Estas macros son utilizados por el
En nuestro caso usamos los comandos que van, SensorRangingStateMachine macro, que es llamada
realizando tanto la operación de envío de la ráfaga por el programador principal y proporciona como
ultrasónica que la posterior detección del tiempo de salida para el resto del sistema, la variable global
vuelo de eco y el posterior cálculo de la distancia. En SensorResult información alguna conexión I²C más de
este caso el resultado de que van se almacena en los diagnóstico. en Fig. 8 Se muestra el diagrama de
registros 2 y 3 (alto rango Byte y gama de byte bajo), bloques de Flowcode macro
de la que posteriormente se puede recuperar rato con SensorRangingStateMachine. Este diagrama de flujo
una operación de lectura. Además de la orden, el bus que implementa un estado má- quina que se ejecuta
debe ser enviada a la in- la dirección del dispositivo (el en secuencia y con los tiempos correctos tres macros
valor por defecto en caso de interfaz de E 2 C es 0xE0) y muestran en Tabla 6, con el fin de obtener el resultado
la lectura de bits / escritura. Así, un total de dos bytes de que van. Para ello, los SensorMedics contador
se envían para cada trans- misión. El procedimiento RangingCounter, que se incrementa en cada ciclo
para obtener la información de la distancia es la (recordar que la macro se utiliza se llama
siguiente: directamente desde el planificador principal, así que
tiene un tiempo de 10 ms llamada).

1) el envío de la orden de escritura 0x51 (re-

Fig 9a -. Tab general de la ventana de Fig 9b -. Tampón Tab tx 0 de la ventana de Fig 9C -. Tampón Tab rx 0 de la ventana de
configuración de componentes CAN. configuración de componentes CAN. configuración de componentes CAN.

En la electrónica ~ de noviembre de 2013 135


La Fig. 10
Macro Properties SetTxData
componente CAN.

La primera llamada es la macro Sensor_ sendCommand


(después de 10 ms desde el inicio de la máquina de La Fig. 11 Código gráfico para enviar
estados). El segundo llamado a se produce después de el mensaje CAN.

250 ms (es decir, cuando el contador alcanza el valor de


la TIMING_REQ_READ constante, igual a
una ubicación actualizar cada 500 ms o menos.
25) y llama a la macro Sensor_Re- questReadResult. El
retardo de 250 ms sirve para asegurarse de que el Ahora que entendemos la gestión de sensores de
SRF02 recibe el eco de la explosión ultrasónica enviado ultrasonidos, se analiza cómo los datos a Trans- nodo
al recibir el comando 0x51 y hacer los cálculos maestro leve en el bus CAN se envían. En primer lu
necesarios. En este punto, después de otros 100 ms se dobbia- configurar correctamente el oeste com-, por lo que
lee el contenido de los registros que contienen el acceder a las propiedades adicionales. En la pestaña
resultado, a través de la Sensor_ReadResult macro principal introduzca los ajustes principales, selezionan-
(contador igual a TIMING_READ_RESULT, igual a hacer una velocidad de proa de 500 KB, un punto de
muestra en un 80% y la hierba de San Juan igual a 1.
Pasemos ahora a la pestaña TX Buffer 0, donde, en la
35). Finalmente, después de 150 ms se restablece la otra sección de marco Identificador, seleccione "Frame
máquina de estado (simplemente restableciendo el contador) y el extendido "e insertar el cuadro" completo ID "0xC40A5 la
ciclo comienza de nuevo desde el punto de partida. De esta dirección, como se muestra en el mapa de mensajes.
manera se obtienen Finalmente nos movemos ficha RX Buffer 0 y establecer
un filtro para la recepción, la selección de la verificación
"Mesenia salvia ID 0" e insertando la siguiente
Fig. identificación en su caja "Full ID": 0xC40A4. La
Código 12 gráfica configuración, que se muestra por conveniencia en La Fig.
para la recepción de
9 (a, b y c) Es completo. En este punto podemos insertar
CAN mensaje.
instrumento, dentro de nuestra agenda, el código
curso FL
Flowcode para enviar el mensaje contenido de materias de
distancia y los datos de diagnóstico (ID 0xC40A5). El envío
se compone de dos componentes principales: primero, se
utiliza el SetTxData macro, para rellenar youself correctiva
y la transmisión de mensajes; Este macro toma como
UJO

parámetros el buffer de envío utilizado, el número de bytes


CÓDIGO

136 De noviembre de 2013 ~ en Electrónica


Tabla 8 - Periodicidad y la descripción del software del nodo de la tarea de visualización.

Período [ms] descripción


DIGO

tarea

CanRxTask 500 Se recibe y decodifica el mensaje CAN desde el nodo sensor.

DisplayTask 500 Ver los datos decodificados de tarea CanRxTask.


UJO CÓ

SwitchTask 200 Se lee el estado del botón y envía un mensaje correspondiente al evento CAN para el nodo sensor.

enviar (DLC) y los 8 bytes del men- saje. Los datos a dencia, controla la ejecución de todas las tareas (con la
curso FL

enviar son las siguientes variables globales: excepción de la propia tarea CanRx). El fragmento de
código gráfico que se da cuenta de lo que se ha descrito
- SensorResultHighByte → Byte 0; se informa en Fig. 12.
- SensorResultLowByte → Byte 1;
- SensorDiagStatus → 2 bytes.
Pantalla nodo
Las dos primeras variables se obtienen de La descripción del software del nodo sensor se ha
SensorRangingStateMachine macro, mientras que se completado; pasamos ahora al nodo de visualización,
calcula la variable SensorDiagStatus (y codificado que hereda muchos de los conceptos nodo sensor,
como se indica en el mapa de mensajes) desde el como el programador (que es prácticamente idéntica).
diag- macro sticTask. en La Fig. 10 Muestra las La función de nodo de pantalla es para recibir mensajes
propiedades de la ventana componente llamado periódicos enviados por el nodo sensor y ver su informa-
macro. ción en la pantalla LCD. Además es el nodo que puede
enviar en el sueño o despertar al sistema interno,
Una vez lleno el men- saje transmitir correctamente, mediante la detección de la presión de una tecla en el
para enviar el men- saje simplemente llamar a la EB018. El software del nodo pantalla se compone de
macro búfer de envío y pasar el buffer de tres tareas cipali cipio, que figuran en Tabla 8.
transmisión. en La Fig. 11 Se muestra el fragmento
de código gráfico, tal como aparece después de la
inserción de la macro a las llamadas de
componentes CAN. La filosofía de gestión del sistema es muy similar a lo
que vimos para el nodo anterior. A modo de ejemplo,
En este punto, nuestra aplicación nodo sensor lateral que describe cómo se implementa viamo CanRxTask
está casi completo; Queda para gestionar la entrada la tarea; Esta tarea tiene la tarea de recibir y
/ salida controlada por el modo de espera del decodificar el mensaje con ID 0xC40A5, procedente
mensaje CAN enviado desde el nodo de del nodo SEN- dolor. Por un lado se ha configurado
visualización. Mediante el análisis del mapa de el componente de CAN en una manera similar a lo
mensajes, se ve que el parámetro que determina el que se hizo para el nodo sensor, con la diferencia de
estado del sistema (sueño o despierto) se ha que el ID de mensaje de la transmisión en este caso
impuesto por el byte 0 del mensaje con ID 0xC40A4. es 0xC40A4, mientras que el filtro de recepción se
Por lo tanto, es necesario gestionar una tarea impone en la identificación fue 0xC40A5 . El AV
recibirá dentro de la cual se lee este byte se recepción es de una manera similar a lo que se
actualiza y una variable que se utiliza para identificar observó en el caso anterior; en particular, se llama la
el estado del sistema. Nuestro planificador ya nos CheckRx y tres veces la Ge- tRxData, para adquirir
ofrece un punto de entrada para la recepción de 50 los dos bytes de datos que componen la información
ms; para completar el código, introducción ciamo dos de la distancia y el byte que contiene los diagnósticos
llamadas de componentes de macro, y en particular ciones informales. Por último,
un CheckRx y una GetRxData, tanto en el tampón de
0. El GetRxData el resultado se guarda dentro de la
variable SystemStatus, que,

En la electrónica ~ de noviembre de 2013 137


Fig. 13 código gráfico
que implementa la tarea
CanRxTask.

Flowcode para analizar el proyecto y tratar de


entender cómo funciona. Ahora podemos probar
nuestro sistema, que conecta entre sí los dos nodos
con un par trenzado y alimentar el sistema con una
tensión de aproximadamente 12V.

El nodo pantalla veremos la información sobre la


distancia del sensor ultrasónico recibido del nodo
sensor. en La Fig. 14 se muestra una ruta de acceso
puede intercambio de mensajes entre los dos nodos,
realizado mediante el CAN Analizador de Microchip.

Como se puede ver, el nodo sensor envía el mensaje


en el bus detecta una distancia de unos 317 cm (0-1
bytes iguales a 0x13D) y uno sin diagnóstico de fallos
activo (2 bytes igual a 0x00). Tras la recepción de la
solicitud del sueño (byte 0 de mensaje 0xC40A4 igual
a 0), el sistema detiene la transmisión.

conclusiones
SensorData = ((SensorDataHigh << 8) | SensorDataLow) Para concluir esta entrega, podemos decir que el
enfoque de la CAN con Flowco- de le permite
El diagrama de bloques que implementa como se gestionar diferentes tipos de componentes y
describe anteriormente es riporta- en Fig. 13. periféricos con relati- va simplicidad, además de
generar extremadamente código sea más fácil de
Las tareas de gestión de la visualización y la lectura entender y mantener.
del botón de suspensión no tiene peculiaridades
implementative de alivio y no serán tratados en En los próximos episodios examinaremos otros
detalle en el episodio del que-; le invitamos, como un dispositivos complejos, tales como USB, ZigBee y
ejercicio, puerto Ethernet.
g

curso FL
CÓDIGO UJO

Fig. 14 - sistema CAN durante el seguimiento en funcionamiento hasta la recepción de una solicitud de sueño.

138 De noviembre de 2013 ~ en Electrónica


Continuamos nuestro viaje de
descubrimiento de Flowcode,
DIGO

abordar la gestión de USB y la


realización de un convertidor
USB-RS232 serie, así como un
UJO CÓ

teclado numérico y un

6
analizador lógico, también en
USB. Sexto episodio.
curso FL

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

elle episodios anteriores hemos hablado de la Las computadoras personales y periféricos del bus USB. Se

Navanzada comunicación del bus CAN y aprendieron


a manejar fácil e intuitiva utilizando Flowcode. En
este episodio vamos a hacer lo mismo con el bus
ha sustituido prácticamente todas las demás interfaces
anteriores, tanto en serie y en paralelo, ya que permite
transferir datos a una velocidad muy alta y conectar muchos
USB, explicando cómo la co- municación, cómo dispositivos (teóricamente hasta 127) a un solo puerto, a
podemos convertir un proyecto RS232 a un través de uno o más concentradores pueden estar dispuestos
dispositivo USB en unos pocos pasos simples y en una cascada. Otra característica clave de USB es la
vamos a hacer dos tipos diferentes de dispositivos, o capacidad de poner y quitar dispositivos sin tener que reiniciar
un teclado numérico para el PC y un analizador el ordenador de a bordo, lo que hace que el bus un verdadero
lógico. Plug & Play. Los dispositivos conectados pueden ser
alimentados por encima directamente del bus o, si dano
requieren corrientes más altas que 500 mA (el límite puede
ser suministrado desde un puerto USB; si conectores sus
El puerto USB datos
La interfaz más fácil de usar ta hoy en día para
la comunicación entre

En la electrónica ~ De diciembre de 2013 / enero de 2014 115


• ID: Se identifica si el dispositivo funciona como un
controlador (principal) o periférico (sla- ve); en el tipo A
conector está conectado a GND para asegurarse de que
el dispositivo conectado a la mini puerta / micro debe
operar desde un periférico.

Fig. 1
hay más dispositivos, esta corriente debe dividir),
Estructura de
una
deben tener una pieza de conexión de potencia. 3.0 La norma prevé la duplicación de las conexiones de
paquete datos con el fin de tener dos líneas para la recepción de
transmitido a El estándar USB 1.0 nació en 1996 y permitió una datos a otros tantos dedicada exclusivamente a la
través del bus
velocidad de conexión de 1,5 Mbit / s; versiones transmisión. Los datos se transmiten en un ential
USB.
posteriores ofrecen una mayor velocidad de pseudo-diferen- porque la línea D- tiene como valor
comunicación: por ejemplo, el 1,1 hace que sea posible opuesto de la línea D +, pero esto no es cierto en el caso
llegar a 12 Mbit / s), el 2.0 480 Mbit / s y la más reciente del identificador del paquete plazo.

3.0 permite una velocidad máxima de 4,8 Gbit / s.


Mientras que la primera versión a 2.0 la conexión se ha Nell'USB, la codificación es de tipo NRZ y el valor cero hace
mantenido sin cambios (cuatro contactos) con el 3,0 que que la inversión del juego lo- valor transmitido. La señal de
se introdujo un nuevo conector que tiene los contactos reloj se transmite de manera implícita durante el envío de
bifurcados y de hecho proporciona un canal de datos de datos, por lo tanto, para evitar que el autobús se detiene en el
doble; la conexión sigue siendo compatible con más mismo valor durante demasiado tiempo, después de 6 bits
viejo, como una fila de contactos toca las del enchufe consecutivos con un valor de 1 se transmite a un valor de cero
tradicional. Hay diferentes conectores físicos que bits adicionales. La comunicación física se divide en tres
permiten la conexión al bus USB: partes principales:

A, B, mini y micro. Desde 2011, el conector micro-USB se ha • Comience paquete: Se envía a la secuencia de
convertido en el puerto de comunicaciones serie con todos sincronización 00000001. En el caso de paquetes más
los sistemas móviles, pero con el advenimiento de los grandes de la secuencia de sincronización es de 32 bits;
teléfonos inteligentes ha surgido una necesidad de
desarrollar un protocolo para decidir nection cuando con- • los datos del paquete: La longitud depende del tipo
qué dispositivo se convierte en el maestro y que el esclavo. de conexión, de 1 a 1024 bytes, y el bit primero
La solución al problema se llama USB-On-The-Go y le transmitido es el bit menos significativo;
permite establecer en el momento de la conexión, cuál de los
dos dispositivos es el maestro y el esclavo, que. Esta • Detener paquete: Se transmite una secuencia en la que
disposición se asegura, por ejemplo, que un teléfono no diferencial variabilidad señales OU se mantienen en
inteligente puede ser visto como un dispositivo esclavo el valor lógico bajo para dos ciclos y luego los D + señal
cuando está conectado a un PC o como un maestro en el vuelve al valor lógico alto.
caso está conectado a un dispositivo de almacenamiento
masivo, como un disco duro. Veamos lo que la interconexión
curso FL
relacionada disponibles en un conector micro / mini-USB: en Fig. 1 se muestra un ejemplo de datos en el bus USB
transmi- sión en la cual podemos identificar tres partes
principales en los que se divide, la codificación NRZ y el
marco de parada.
UJO

• VBUS; Se permite alimentar la peri- Feriche El estándar USB proporciona para la clasificación de
entrega de 5V estabilizado y una corriente dispositivos en "clases" con el fin de faci- litate la gestión y la
máxima de 500 mA;
CÓDIGO

identificación de conductor Ne- Cessari; de esta manera los


• GND; es la masa de referencia utilizado para las señales y la dispositivos estándar tales como ratones, teclados y
fuente de alimentación; recuerdos, no requieren la instalación de controladores y por
• D-; dado -; lo tanto están listos para usar.
• D +; dado +;

116 De diciembre de 2013 / enero de 2014 ~ en Electrónica


Vamos ahora a encontrar la manera de dotar a
DIGO

nuestro proyecto con una conexión USB de una


manera muy sencilla y rápida sin tener que volver a
generar el código del microcontrolador.
UJO CÓ

El chip de FT232BL
curso FL

Probablemente el método más fácil de manejar


dispositivos que utilice el puerto serie: esto, tanto por la
sencillez de firmware para ser cargados en el dispositivo
de micro que gobierna, tanto para el software del lado del
PC. El problema es que en la actualidad, son pocos los
ordenadores todavía tienen el DB9 COM y portátiles no
así que veremos desde el punto de vista de una serie Fig. 2 pinout y
tienen desde hace algún tiempo. Por esta razón
Tabla de referencia
que normalmente tratamos con el microcontrolador para
podemos reacciones lizzare el dispositivo de gestión de para el
recibir datos a través de la serie sin tener que hacer
la conexión RS232 y exclusivamente el uso de un componente FTDI
frente a la compleja gestión del bus USB del PC. Esta FT232BL.
componente de cuidar de RS232 a la conversión de
forma de trabajar es muy funcional y se utiliza
protocolos USB. en este
principalmente para la regeneración de los antiguos
proyectos, ya que no requiere la modificación del código
fuente.

Para ello podemos hacer uso de la FT232BL componente


suministrado por FTDI Chip, que se hará cargo de todos
los procedimientos de gestión de protocolo USB. en Fig. 2 Se
muestra en el diagrama y el pin-out. En el siguiente
proyecto práctico escaneamos una paleta en detalle cómo
hacer que el proyecto realizado en la 4ta instalación a
controlar un relé de la batería por lo que es utilizable
incluso en equipos sin un conector DB9.

Fig. 3 Conexiones
proyecto convertido de
serie a USB.

Proyecto de bonificación: convertir


RS232 a USB
Este sencillo ejemplo nos permitirá comprender en
profundidad cómo equipar una conexión pseudo-USB a
un ascensor está diseñado basándose únicamente en
una conexión RS232 sin tener que modificar
radicalmente el código fuente.

En la electrónica ~ De diciembre de 2013 / enero de 2014 117


Fig. 4 - componente RS232 nueva
configuración.

Automáticamente serie virtual actualidad incluso-


conectado al PC.

El componente USB en Flowcode


Flowcode permite utilizar principalmente tres tipos
de configuración para el bus USB:

• de serie; Se le permite administrar el puerto USB como si


se tratara de una conexión en serie normal;

• HID; Permite crear un dispositivo de tipo " Dispositivo


de interfaz humana "Tal como un ratón, teclado,
joystick, etc.;
Los componentes necesarios para la construcción son los
siguientes: • esclavo; Te permite crear un dispositi- vo
• EB006 " USB PICmicromultiprogrammerbo- ard "(PIC18F4580personalizado.
y cuarzo 12MHz);
• EB038 " Placa de relé "; La elección de uno de los tipos mencionados
• EB039 " Junta USB232 ". anteriormente depende de las capacidades que
nuestro dispositivo implementa. El más sencillo e
La junta EB039 EB015 reemplaza el puerto C ( La Fig. intuitivo de usar es el de tipo serie, ya que es visto por
3) y en lugar de la salida de nection DB9 está presente el ordenador como un simple puerto COM, como en el
en el tipo de puerto USB B. caso del chip FTDI dientemente anterior que hemos
utilizado, y los comandos que tenemos disponibles
Los cambios, distintos de los de hardware, son muy desde el punto de vista de microcontrolador son los de
pocos. Vamos a ver cómo implementar nuestro un estándar de comunicación serie más que el envío y
proyecto paso a paso: apertura del proyecto recepción de personajes y GHE strin-. Si desea crear
"RS232.fcf", que habíamos guardado en el final de la un ratón o al menos un dispositivo de entrada estándar
cuarta tata cas-, y modificar la configuración del debe elegir el tipo de HID, para que pueda utilizarlo sin
componente RS232 como se muestra en Fig. 4. tener que instalar ningún controlador adicional,
mientras que en otros casos debemos valernos del
La conexión RS232 debe ser imposta- ta a 9.600 esclavo.
baudios, 8 bits y el control de flujo debe ser manejado
por medio del pasador en el puerto pin RTS y CTS C0
en la puerta C4. Recompensar piliamo el proyecto y
volver a cargar todo en la placa de desarrollo, para ver
los re- sultados. Enchufe el conector USB tipo B con un El componente USB-HID
cable, el conector USB tipo A de su PC, el sistema Está contenida dentro de la bandeja de componentes
operativo detectará el nuevo hardware, en el sub-menú " periféricos "Y permite gestionar un
correspondiente al com- oeste FTDI, que tendremos tipo de dispositivo" Dispositivo de interfaz humana ".
curso FL
que instalar el controlador como se muestra en el Después de componente ritual inse- el interior del
cuadro de "instalar el controlador de la componente panel puede examinar las propiedades del
FTDI". Para esta versión del proyecto se actualiza el componente. Al ser bastante complejo, a diferencia de
software de interfaz presentada en apoyo del cuarto otros componentes más simples, se requiere de tres
episodio, permitir el uso de un puerto COM virtual. La páginas configu- ración. Comenzar a analizar el
UJO

operación se mantiene sin cambios sostanzialmen-, primero, ilustrado en la Fig. 5.


CÓDIGO

El parámetro VID es el llamado "Vendo- rIdentifier" y


es, en la práctica, el identificador único del
proveedor del dispositivo; Se asigna mediante el
pago

118 De diciembre de 2013 / enero de 2014 ~ en Electrónica


Tabla 1
Nombre de macro descripción

Se utiliza para inicializar el controlador USB para comunicarse y activa el servicio periférica merazione explícitamente
RetVal Initialise_HID = ()
enumer-. Devuelve cero si el procedimiento termina sin un error.

Se utiliza para escribir un byte específico en el soporte, que será enviado a través de USB. En entrada
DIGO

SetDataByte (idx, valor) requiere índice de bytes a ser escrito y el valor a escribir. Esta macro no envía los datos físicamente los
almacena en la memoria de transmisión sin salir.

Cuando se llama en el bus USB transmite los datos que se ha cargado en la memoria intermedia de la función SetDataByte.
SendData ()
UJO CÓ

SendDataDirect (String) Enviar los datos contenidos en la cadena pasada como parámetro en el bus USB.

Actualización que se recibió del canal USB. Devolver la longitud de los datos en el búfer.
NumBytes CheckRx = ()
curso FL

Se utiliza para leer un índice denotado byte que se pasa como un parámetro de la memoria intermedia de lectura de los datos recibidos. El
Valor = ReceiveByte (IDX)
primer elemento de datos se identifica índice de cero.

Se utiliza para leer toda la cadena recibida en el bus USB. Requiere que se pasa como parámetro el número
String = ReceiveString (numBytes)
de bytes a leer y cargar la cadena devuelta por la función.

la cuota de socio al consorcio USB. Los que producen en en Fig. 6 ver otras configuraciones específicas para el
grandes cantidades dispositivos USB tienen su VID, dispositivo que tenemos la intención de volver a alizzare. Los
mientras que las pequeñas empresas y los aficionados principales parámetros se establecen mo dobbia-:
pueden uti- lizzare el VID del fabricante de chips, que en
nuestro caso es el de Microchip. Para el uso personal del • La corriente máxima; corriente máxima que el
dispositivo para realizza-, usted no necesita tener un VID dispositivo está habilitado para absorción a través del
válida. El parámetro PID es el identificador del dispositivo rey de tensión de alimentación USB;
de desarrollado. Ante compra dell'ac- de un VID por lo
que puede tener disponibles 65.535 productos diferentes. • Transmitpacketsize; tamaño de chetti PAC transmitidos al
Si quisiéramos vender cantidades pequeñas / medianas ordenador por las disposiciones tivos durante la interrupción
de los dispositivos USB que podríamos pedir al en el bus;
microchip, utilizando una aplicación especial escrita • Transmitpacketperiod; número de
disponible en el sitio www. microchip.com, autorización milisegundos entre dos transmisiones de
para utilizzar- uno. datos;
• Receivepacketsize; tamaño de los paquetes recibidos
por el dispositivo durante el bus de interrupción;

• Receivepacketperiod; número de
En el campo Nombre, y RER Manufactu- podemos milisegundos entre dos recepciones de datos;
introducir el nombre de nuestra aplicación y nuestro
nombre, mientras que indicamos como la versión 1.0. • subclase; Es una subclase de dispositivos USB y
es válido sólo para ratón y
Fig. 5 Fig. 6

En la electrónica ~ De diciembre de 2013 / enero de 2014 119


Fig. 7

EB055 al puerto C, como se muestra en Fig.


8. Con el fin de utilizar el componente sin tener que
comida externamente, tales como teclados USB
normales, basta con conectar el terminal V + de la junta
EB006 al terminal
+ 5 de la junta EB055. De esta manera, el
microcontrolador se alimenta directamente desde el
puerto USB. La conexión se efectúa por medio del cable
amarillo que se muestran en el mismo Fig. 8.

También es necesario, como se ve en los episodios


anteriores, creada con el fin de tener la tarjeta de
frecuencia adecuada para el correcto funcionamiento
del bus USB. Siempre que necesite para gestionar un
bus de frecuencia fija debe ser muy cuidadoso en
teclados (HID); configurar correctamente todos los parámetros; en
• interfaz; Se utiliza para definir la clase de nuestro caso la con- figuración se muestra en la Fig. 9. La
dispositivo. frecuencia de oscilación del PLL es, pues, 96 MHz, pero
los periféricos internos de trabajo a 24 MHz con el fin de
La pestaña " descriptor HID "Visible Fig. 7 apoyar la conexión USB de baja velocidad.
Permite describir en detalle la comunicación y el
significado de cada byte transmitido. La descripción de
los dispositivos estándar es entonces, si VO lessimo
por ejemplo, hacer un mando de juegos, que sólo se Ahora que el hardware está listo, podemos de- dicarci la
ve por su descripción en la Internet y la puso dentro implementación del software trol con-: En primer lugar,
de nuestra ventana. En el modo automático, el tenemos que entender lo que se intercambian datos entre el
dispositivo recién conectado a la computadora, será PC y el teclado para que pueda emular; con el fin, possia- mo
reconocido como tal, sin la necesidad de otras USB ir en el sitio oficial y descargar el archivo "Hut1_12v2.pdf"
configuraciones e instalaciones. Macros Flowcode que y "HID1_11.pdf". Analizarlas, podemos entender lo que se
ponemos a disposición se resumen en Tabla 1. emite y lo que se recibe. en La Fig. 10 se resumen los datos
transmitidos entre el ordenador y el teclado USB. En el mismo
archivo, nos encontramos con la codificación

Gracias a estas funciones simples se puede realizar cualquier


tipo de dispositivo HID pero con el fin de entender mejor el
funcionamiento pro viamo ahora para poner en práctica estos
Fig. 8 la configuración
conceptos, proporcionando un teclado USB. de hardware para la
realización del
teclado numérico.

Bonificación del proyecto:


curso FL
Nos damos cuenta de un teclado numérico USB
El dispositivo que estamos desarrollando será
reconocido automáticamente por el PC al que se
adjunta como un teclado USB normal. Para lograr
esto, necesitamos los siguientes componentes:
UJO

• EB006 " USB PICmicromultiprogrammerbo- ard "(PIC18F4450


CÓDIGO

y cuarzo 12 MHz);
• EB014 "Keypadboard";
• EB055 "interfaceboard USB".

Conectamos la tarjeta al puerto D y EB014

120 De diciembre de 2013 / enero de 2014 ~ en Electrónica


DIGO

Fig. 10 - intercambiado resumen de datos


con teclado USB.
UJO CÓ
curso FL

Fig. 9 - Configuración del microcontrolador para la realización


el teclado numérico.

los caracteres que han de transmitirse porque no siguen escanear el teclado y de transmisión tere periódicamente,
la tabla ASCII estándar. El lori numérico VA- 9 de uno a por medio de la macro de actualización de dispositivos
salen del valor hexadecimal 0x1E mientras cero 0x27 ha HID, la información en la información de tecla pulsada. Si
codificación. En este sencillo ejemplo teremo transmitir no se pulsa ninguna tecla, el dispositivo transmite el valor
sólo un carácter a la vez y por lo tanto no serán posibles 0x00 de lo contrario el botón a su código. Para evitar la
combinaciones de teclas pulsadas simultáneamente. Para sobrecarga del bus de datos no es útil, si la tecla pulsada
lo cual es simplemente única razón por la que el valor del puede ser siempre el mismo, los datos se transmiten sólo
byte 2, dejando a los otros a predefi- valor 0x00 Ned. como resultado de una variación de la prensa y el mínimo
de tiempo retardado hacer clave entre una transmisión y
el otro es 10 ms. Para superar los problemas de
inicialización se añadió un retardo de inicialización igual a
Ahora que tenemos toda la información necesaria se 100 ms.
puede arrastrar en el componente del panel del teclado
y el componente USB-HID. El componente de teclado
requiere una configuración correcta de las conexiones.
En nuestro caso se establecerá como se muestra en Fig. Las variables utilizadas son como sigue:
11. • DatiUSB [8]: es un vector de 8 bytes en los datos de
cuarenta de transmisión tere en el bus se almacenan;
Con respecto a la configuración del componente de HID, es
necesario elegir HID página nel- descriptores de la opción • EsitoInizializzazione: variable de bytes que sirve
ard Keybo- durante la configuración de la pestaña de para almacenar el resultado dell'inizia- ción del
opciones HID como se muestra en Fig. 12. dispositivo USB;
• Teclado: almacena el valor leído del teclado en
La aplicación puede parecer com- pleja, por el hecho de una variable de tipo byte;
que utiliza el bus USB, pero el diagrama de control es • Keypad_precedente: se utiliza para almacenar la
simple y no requiere ni siquiera darse cuenta de las cama estado anterior en el teclado y es de tipo
macros de apoyo. Como un primer paso, es necesario byte.
inicializar los dispositivos HID y posteriormente, por
medio de un bucle sin fin, El flujo del programa se muestra en su totalidad Fig. 13.

En la electrónica ~ De diciembre de 2013 / enero de 2014 121


Instalamos el controlador
componente de la FTDI
Para que funcione correctamente, el PC que conectan el convertidor de
FTDI, debe haber instalado los controladores necesarios. Para ello, "Generar archivo del controlador" botón que está en él se
insertamos el CD que acompaña a la placa EB001 frente a la necesidad utiliza para generar los archivos inf necesarias que prohíbe
de un PC para instalar el controlador y luego se dispuso a querer buscar
que cuando conectamos el AC periférica a un PC para
en su ordenador ( Fig A).; insertar la dirección de la carpeta "\ drivers \
instalar el controlador. Debe volver a generar el conductor
EB-O39" contenida dentro de nuestro CD y continúe presionando el botón
"Siguiente". cada qualvol- ta, en el cuadro de diálogo, modificar los
parámetros de configuración. Las macros disponibles se
enumeran en Tabla 2.

Con estos simples macros puede hacer cualquier tipo


de dispositivo USB que emula una comunicación serie.
Para entender mejor cómo funciona procederemos a
la realización de un simple analizado zatore de
estados lógicos.

Fig. A - indicación de la ruta de búsqueda de controlador USB.

Al final del procedimiento de instalación obtendremos una indicación de


que el conductor se ha actualizado y está listo para su uso como se
muestra en Fig. B.

Fig. 11 - configuración del teclado.

Fig. B - Instalación del controlador completado con éxito.

El componente de serie USB


curso FL
Este tipo de control permite gestionar de una manera
muy sencilla una conexión USB porque se considera que
tanto el lado del PC lado stema Si- incrustado como una
comunicación de tipo serie RS232. El componente está
en la bandeja de componentes en el menú "Device"
UJO

donde habíamos visto a los otros componentes USB


dientemente anteriores. Como podemos ver en el cuadro
CÓDIGO

de diálogo visible La Fig. 14, los parámetros que se


pueden configurar son los mismos que habíamos visto
por HID componente; la

Fig. 12 - Configuración USB-HID.

122 De diciembre de 2013 / enero de 2014 ~ en Electrónica


Proyecto de bonificación: nos damos
DIGO

cuenta de un analizador lógico


Un analizador lógico le permite ver los estados de una
serie de connes- siones con el fin de ser capaz de
UJO CÓ

depurar los sistemas digitales. Es muy útil para leer


nicaciones compañeros de bus paralelo. El material
que necesitamos es la siguiente:
curso FL

• EB006 " USB PICmicromultiprogrammerbo- ard "(PIC18F4550


y 12MHz cuarzo)

• EB055 "interfaceboard USB"


• EB016 "Prototypeboad" En La Fig. 15 Son visibles las
interconexiones entre las juntas de MatrixMultimedia para
la realización del proyecto. La tarjeta EB055 está
conectado al puerto C mientras que el EB016 al puerto A y
B.

Para que funcione correctamente, el microcontrolador debe


se configura como se muestra en la La Fig. 16 de manera
que sea capaz de funcionar a una frecuencia de reloj de 48
MHz.

En la práctica, el sistema integrado lee el valor de la puerta B


y lo envía de una manera en serie. Desde el lado del PC, es
posible realizar un programa de terminal que lee los datos y
Fig. 13 Diagrama
completa para la
realización de un
teclado USB.

impresión de la pantalla de modo que usted puede analizar


fácilmente. Dado que la comuni- cación USB no es "tiempo
real", se añade el llamado "marca de tiempo" a la cadena
enviada en serie también para que pueda saber cuando los
datos eran campeonatos CAM. La secuencia transmitida
será de cinco a: <xxxxxx-yyy> donde xxx representa la
marca de hora mientras que y es el valor de la puerta

B. cada 100ms serán enviados en una comunicación dada y


por lo tanto pueden tener una resolución máxima de 0,1
segundos en el eje temporal. La marca de tiempo está
representado en décimas de segundo, mientras que el valor
del puerto B en decimal. De esta manera, incluso con un
simple terminal es posible interpretar la señal. Por ejemplo,
si quisiéramos transmitir el valor 236 en el momento 1,5
secundaria

En la electrónica ~ De diciembre de 2013 / enero de 2014 123


Fig. 15 - configuración HW para
analizador lógico.

Fig. 14
Ventana de las
propiedades del
para enviar la cadena "<000015-236>. El tiempo máximo es tere que identifica cero, mientras que el secundario
componente USB de 99999.9 segundos (27,7 días) después de lo cual, usted cobramos dentro del valor de retorno el valor convertido
serie. tiene la repetición de la marca de tiempo. a través de la función de longitud $ con alineación a la
derecha como se muestra en Fig. 17.
Generar una cadena de longitud fija, es decir, con la
adición de cero para mantener la longitud fija, es Ahora que nuestra macro está listo podemos continuar
probablemente la parte más difícil del proyecto porque con la programación principal de la misma. Primero
el comando para la conversión de número a cadena insertamos dentro del panel del componente de serie
encaja solamente las cifras signifi- cativas. Por esta USB y configurarlo como en la sección anterior. Cómo
razón, nos damos cuenta de una macro que tendrá la dividir el programa en dos partes principales: la rutina
tarea de convertir un número y llevarlo a una longitud de inicialización del sistema y el bucle principal. En la
fija. La macro se llama "ConvertiInStringaFissa" y inicialización de variables insertamos el
requiere los siguientes parámetros: restablecimiento y la macro "Intitialize_Serial ()" para la
con- nection USB. El bucle principal es pa ocu- lugar
de la secuencia de lectura de Portab, la conversión de
• NumericValue: es el mo valor voglia- convertido; la cama y el valor de marca de tiempo, la generación
de la cadena que se transmite, y finalmente la
• LunghezzaFissa: es la longitud de la cadena de transmisión de los datos en el bus USB. Para asegurar
salida. que las lecturas son

El primer ciclo tiene que ver con el formato de la cadena


mediante la adición de la carac-

Tabla 2 - Las macros están disponibles para la gestión de la conexión USB-serie.


curso FL
Nombre de la macro descripción

Se utiliza para inicializar la comunicación USB al arrancar el servicio de enumeración para que el PC puede identificar
Initialise_Serial () el dispositivo. Devuelve como valor de retorno 0 si bien se lleva a cabo mientras 255 en caso de error.

Send_Byte (Byte) Transmite bytes pasa como un parámetro mediante su inserción en el buffer de escritura.
UJO

Enviar la cadena pasada como parámetro "String". El parámetro "Longitud" debe contener la longitud de caracteres que
Send_String (String, longitud)
se transmite en la cadena.

Ley del tampón de lectura de un byte y lo devuelve como valor de retorno. El "TIMEOUT_MS" ser- parámetro ve para establecer un tiempo de
CÓDIGO

espera máximo, en milisegundos, para la cual la macro debe esperar a la espera de un dado. Se debe establecer en el valor 255 de la espera
Read_Byte (TIMEOUT_MS)
no termina hasta que una figura no está disponi- ble en el búfer de recepción. En caso de que los datos no se recibe dentro del tiempo de
espera, el valor de retorno es 255.

Ley de la memoria intermedia de lectura una secuencia de caracteres cuya longitud está determinada por el parámetro "th Leng-" y lo
devuelve como el valor de retorno de función. En cuanto a la macro Read_Byte parámetro "TIMEOUT_MS" se utiliza para permitir la
Read_String (TIMEOUT_MS, String, longitud)
macro para devolver el control a la función de llamada sin que se haya recibido ningún dato.

124 De diciembre de 2013 / enero de 2014 ~ en Electrónica


DIGO

Fig. 17 - Macro
UJO CÓ

ConvertiInStringaFissa
utilizado dentro
analizador lógico.
curso FL

Fig. 16 - configuración microcontrolador para analizador lógico.

campeonatos gano y transmitidos cada 100 ms debe


introducir un retardo de 100 ms. El bucle principal es,
como siempre, encerrado dentro de un bucle infinito
para impedir que el programa se termina tras el primer
Fig. 18
Diagrama de la vio in- datos. La mayoría de los expertos en la
Analizador realización de sistemas embebidos se sicuramen- que
"Principal" notaron el hecho de que el uso de un retraso de
estados lógicos.
cadenzare una medida para un período tan largo
conduce a una acumulación en el rey de marca de
tiempo dell'erro-. Para superar esta problemática pro-
simplemente seguir utilizando un temporizador. En este
ejemplo hemos sido elegidos no sólo para poder
utilizarlo más para insistir en el uso del bus de
comunicación más que en otros problemas de límites
que, a estas alturas del curso, ya debe ser capaz de
resolver de forma autónoma. en

La Fig. 18 Se muestra el diagrama principal para la


realización analizador de estados lógicos.

Para probar el programa puede uti- lizzare cualquier


terminal a los puertos COM que soporta
comunicaciones serie virtuales.

Bueno, incluso con este episodio concluimos. En la


siguiente vamos a conocer otros componentes
suministrados por Flowcode, incluyendo el ZigBee y
Ethernet. g

En la electrónica ~ De diciembre de 2013 / enero de 2014 125


Continuamos nuestro viaje
de descubrimiento de
DIGO

Flowcode, el innovador
desarrollo del
microcontrolador del gráfico
UJO CÓ

propuesto por Matrix

7
Multimedia. En este episodio
vamos a analizar un
curso FL

dispositivo inalámbrico:
ZigBee. Séptimo episodio.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

elle entregas anteriores con las que tratamos La tecnología basada en ella) libera la especificación

N con una variedad de dispositivos de comunicación,


tenían una cosa en común, que es ser cualquiera de
los dispositivos de comunicación por cable.
1.0. Como fue el caso en el pasado para la realización
de una definición de otras normas, el trabajo en el
estándar ZigBee se ha dividido en dos. Al 802.15.4
Analicemos ahora el despliegue Flowcode de un grupo de trabajo IEEE (parte del grupo de trabajo
dispositivo inalámbrico, es decir, interfacciamo IEEE 802.15) se le ha asignado la tarea de definir las
nuestro microcontrolador con un dispositivo ZigBee. especificaciones de la capa física y estándar MAC,
mientras que el ZigBee Alliance fue ricata Inca-para
llegar a la definición de alta especificación nivel (nivel
de red y aplicación). La relación entre 802.15.4 y
El protocolo de ZigBee ZigBee es la misma que existe entre 802,11 y WiFi y
El protocolo ZigBee nació oficialmente 14 de entre 802.15.1 y OTH Blueto-. por lo que no hay que
diciembre de 2004 el día de la ZigBee Alliance (un confundir
consorcio de empresas que se ocupan del desarrollo y
la barbilla dell'aggiorna- de las normas y la promoción

En la electrónica ~ de febrero de 2014 129


Tabla 1 - Comparando las tecnologías inalámbricas más populares.

ZigBee 802.15.4 ™ 802.15.1 Bluetooth ™ 802.11b Wi-Fi ™ GPRS / 1XRTT GSM / CDMA

Enfoque de aplicaciones Monitoreo y Control reemplazo del cable Web, vídeo, correo electrónico WAN, de voz, de datos

de recursos del sistema 4 KB-32 KB 250KB + 1 MB + 16 MB +

Duración de la batería (días) 100-1000 + 1-7 1-5 1-7

Para los nodos de red 255 / 65K + 7 30 1000

Ancho de banda (kbps) 20-250 720 11.000 64-128

Rango (metros) 1-75 + 1-10 + 1-100 1.000 +

Fiable, de bajo consumo,


Atributos clave Costo, la conveniencia Velocidad, Flexibilidad Reach, Calidad
coste efectivo

especificaciones de la norma IEEE 802.15.4 con el Los dispositivos que forman parte de un ZigBee PAN se
estándar ZigBee: con el primero se refiere a un denominan nodos; los nodos no son todos iguales, pero
conjunto de especificaciones de bajo nivel en que se el estándar ZigBee hay tres tipos:
basa el segundo para la definición de una norma más
compleja. En las especificaciones indicadas por el • coordinador; es el nodo central de la red y es
estándar ZigBee se basan constructores para la responsable de las funciones más importantes,
realización del silicio. Que a su vez compra los chips tales como la creación de la misma red, la
de los fabricantes, que los incorpora en un sistema adjudicación de las direcciones, la elección de la
más complejo, lo que añade otra capa a la capa de Cana- RF y más; puede existir en más uno para la
aplicación, la última característica de la propia red y puede actuar como un puente entre diferentes
aplicación. Como ya se ha mencionado en la redes (que también se llama Gateway);
introducción con el protocolo ZigBee es un protocolo
inalámbrico caracterizado por un bajo consumo de
energía, ción simplicidad nell'implementa- del código • Router; actúa como un dios intermedio router,
(generalmente referido programa consumo ria memo- pasar datos hacia y desde otros dispositivos;
como aproximado para la realización de un nodo) y un
alto número de nodos de costo-tuenti la red; la • Extremo del dispositivo; Incluye una funcionalidad
velocidad de comuni- cación es relativamente bajo. suficiente para hablar con su nodo padre
(coordinador o un router), no puede transferir
datos desde otros dispositivos.
Fig. 1
Logotipo de la
ZigBee
Alliance. la Tabla 1 En él se compara estándar ZigBee con algunas de
las más extendidas tecnologías inalámbricas existentes. La
velocidad de datos típico indicado en la radio Cana- es de
250 kbps, mientras que la tasa de datos de interfaz puede
tener valores que van desde 1.200 a 115.200; Este medidor
para- no siempre se encuentra en las hojas de datos de los
dispositivos, como el ZigBee no se ha estudiado
específicamente para el inter- cambio de grandes
cantidades de datos, como podría ser en cambio para la
Fig. 2 - Comparación entre tecnologías conexión Wi-Fi. El caudal depende de la con- péutico
curso FL
inalámbrico en función de flujo
dispositivo, desde la antena y la potencia radiada en la
transmisión y datos de velocidad.
transmisión: Los valores típicos se encuentran entre
decenas y cientos de metros. en Fig. 2 es un gráfico que
compara diferentes tecnologías inalámbricas dependiendo
de la gama de transmisión y velocidad de datos (en Mbps).
UJO

Como puede verse Bluetooth y ZigBee ocupan áreas muy


cercanas en el gráfico, pero mientras que el primero
CÓDIGO

130 De febrero de 2014 ~ en Electrónica


una memoria ROM dedicado y no se pueden
DIGO

cambiar.
En cambio, el corto es un código de identificación de 16
bits (2 bytes) que permite la atención identificado
UJO CÓ

unívocamente una unidad de dispositivo en una red


ZigBee. Se memoriza en un área de memoria protegida,
pero reescribible, por lo que puede cambiar, como
resultado, por ejemplo, la asociación del dispositivo con
curso FL

otra red. El corto direccionable zi son asignados por el


Coordinador en el momento de la creación de la red. En
Fig. 3 - Ejemplo de cuanto a las bandas de radio uti- lizadas, el estándar
malla ZigBee. utiliza las frecuencias asignadas en la banda ISM
(Industrial, Scientific, Medical), que varían en función del
país. En particular, se puede hacer uso de frecuencias de
favorece la velocidad de transmisión, el segundo radio de 433 MHz y 868 MHz en Europa y 315 MHz y 915
sacrificio en la función de una mayor capacidad de MHz en los EE.UU.. También se puede hacer uso de la
transmisión. Además, ZigBee presenta una banda de radio a 2,4 GHz, prácticamente todo el mundo.
característica interesante santo que lo diferencia de En esta frecuencia están disponibles con 16 canales y por
Bluetooth y otros protocolos inalámbricos, y permite que lo tanto, menos de casos especiales, este es tardes EE-
se amplíe su rango útil a valores mucho más altos en la opción más frecuente de los constructores. Las
comparación con el tamaño de un solo dispositivo. De características intrínsecas de los estándares ZigBee
hecho, el estándar permite poner en co- municación dos hacen de esta una opción ideal para un gran número de
nodos cualquiera, incluso si no se coloca en enlace de aplicaciones. Se extiende de la automatización de
radio directa, es suficiente que entre los dos nodos en edificios para el control industrial, los periféricos de PC
cuestión hay al menos una ruta formada por los nodos inalámbricas (tales como teclados y ratones) a la
intermedios, que en este caso no fungo- por routers. seguridad inalámbrica aplica- ciones. Un segmento
Esta respuesta del acelerador caracte- interesante se importante es, sin duda compuesto por el
refiere generalmente como

Mesh Networking, que repre- resentación un gráfico se


muestra en la Fig. 3.
La gestión de redes Mesh es una prerrogativa del protocolo,
que se implementa mediante la adopción de los algoritmos
más recientes rutina- ting, además de un sistema eficiente
de la versión direccionamiento de los dispositivos, que
utiliza dos direcciones, se refirió como una dirección MAC y
una llamada corto. El MAC es un código de 64 bits de
identificación (8 bytes), único para cada dispositivo
fabricado en el mundo. Fig. 4
Aplicaciones
típicas del
Protocolo
Este código se almacena en el interior
Zigbee.

Tabla 2 - las aplicaciones de protocolo ZigBee.


alcance posibles aplicaciones

termorregulación HVAC, control de temperatura, control de humedad

monitoreo ambiental Tierra, calidad del aire, calidad del agua.

la automatización industrial Acelerómetros, vibración, presión, desplazamientos

Monitoreo estructural túneles de monitoreo, supervisión de puentes, presas de vigilancia, el seguimiento a los edificios importancia histórica o artística

La domótica Sistemas de seguridad y control

En la electrónica ~ de febrero de 2014 131


dos modos de operación, modo transparente
(normalmente llamado el modo AT) y el modo de API.
En modalida- ty todo lo transparente que se envía en el
Fig. 5 - Form módulo de serie es retransmitida por el canal de radio
XBee Serie 2.
y, posteriormente, se retransmite de salida en el puerto
serie del módulo de recepción. El módem de radio se
realización de redes que generalmente se hace suma a la fuente y el destino para eliminar todas las
referencia como la mente WSN (Wireless Sen sor de cabeceras necesarias para la comunicación, por lo que
red), es decir, las redes de sensores inalámbricas a el modo se define como "transparente". No es bilis
medida para el control de aplicaciones de diversos posi- para intervenir en la cabecera, que contiene
tipos. la Fig. 4 DEL- ilustra algunas aplicaciones típicas información como la dirección que destinazio- campo
del protocolo. la Tabla 2 enumera brevemente algunas de datos de longitud, suma de comprobación, etc. En el
de las aplicaciones más comunes de cuello proto. Entre modo API, sin embargo, la gestión de paquetes es
otros dispositivos ZigBee presentará al mundo han mucho más complicado.
adquirido una reputación (sobre todo en el mundo co
hobbisti-) los dispositivos XBee, producidas por Digi /
Maxstream. Es una familia de módem de radio con
interfaz en serie, cuyo modelo figura en el Fig. 5. Tales
disposivi fueron elegidos también de trix Ma- como
módulo de hardware ZigBee para dispositivos y-bloque.

El hardware es muy simple, y consiste en un pequeño


PCB, en cuyo interior se coloca toda la electrónica
necesaria para el funcionamiento, incluyendo la antena Fig. 6 - Posibles opciones para la antena de módulos Xbee.

que puede ser de chip, alambre o con conector


RPSMA. la Fig. 6 Ilustra las diversas opciones bili En la hoja de datos se definen una serie de tramas que
lidades para la antena de módulos Xbee. La interfaz pueden ser utilizados, dividida por la función, y se
con el exterior se confía a dos archivos 10 pines en el caracteriza por un número diferente de bytes, código de
paso 2 mm. La interfaz de comunicación es una serie identificación y más.
UART estándar, SE- 1200 bps lezionabile con
velocidad de transmisión a 115200 bps, SIC El mínimo El componente de ZigBee en Flowcode
de conexión necesarios para el funcionamiento de los Analicemos ahora el componente zig abeja integrado
módulos consiste en las dos líneas de la serie, TX y en Flowcode. El componente es en el grupo de
RX y dos líneas de alimentación. habrá componentes inalámbricos dentro de la bandeja de
componentes. Para añadir a nuestro proyecto sólo
tiene que arrastrar en el panel, curso FL

Tabla 3 - Características módulos estándar y PR.


especificación Xbee XBee PRO

Cubierta / Cocina Urbana 30 m 100 m


UJO

Rango aire libre 100 m 1500 m

Transmitir potencia de salida 1 mW (0 dBm) 100 mW (20 dBm)

velocidad de datos de RF 250 kbps 250 kbps


CÓDIGO

Interfaz de Velocidad de datos 1200-115200 bps 1200-115200 bps

Sensibilidad del receptor - 92 dBm - 100 dBm

Tensión de alimentación 2.8 a 3.4 V 2.8 a 3.4 V

transmitir actual 45 mA 270 mA

Recibe actual 50 mA 55 mA

132 De febrero de 2014 ~ en Electrónica


Fig. 7 - propiedades adicionales.

¿Cuántas veces hemos hecho en dencia anterior.


DIGO

Después de colocar el componente podemos


examinar la propiedad adicional, haga clic en el botón
derecho. La ventana de las propiedades adicionales
UJO CÓ

del componente se puede encontrar en Fig. 7. Como se


puede ver se puede elegir el tipo de componente que
desea aplicar (coordinador, router, Nodo final),
establece el PAN ID (entradas al azar y le establecidos
curso FL

por el usuario), establecer el número máximo de


saltos, canales incluidas dentro del procedimiento etc.
exploración. En cuanto a los otros componentes, APIs
están disponibles que facilitan su uso, informó en
sintéticamente
la configuración en el futuro. Como ya se ha hecho por
otros proyectos prati-
Allí, examinamos las especificaciones de diseño se indican a
Tabla 4. continuación.
• El control de cada nodo a través de la dirección
Bonificación del proyecto: ASCII en dos dígitos.
nodo inalámbrico para el control del relé • Activación / desactivación de los 4 relés.
Pasemos ahora a la práctica de los proyectos • Gestión de las siguientes opciones:
relacionados con este episodio. Esta vez se propone - permitiendo la operación / desactivación de
llevar a una malla zig- abeja que consta de nodos LED;
capaces de lare controlada una batería 4 relé. Cada - habilitar / deshabilitar el comando Eco;
nodo será identificado dentro de la malla a través de
una dirección constituida por dos dígitos Meriche nú- - e indicador LED de período de selección.
ASCII codificado. Será posible modificar la dirección de • Almacenar opciones sistémicas, sino a la
nodo a través del canal inalámbrico y también será memoria EEPROM.
posible intervenir en algunas de funcionamiento de
parámetros. Los diversos parámetros serán controles Nuestro proyecto prevé la UTILIZAR zo una
almacenados dentro de la EEPROM del dispositivo, de aplicación a nivel de protocolo que se basa en el
modo que puedan ser recuperados incluso en el caso protocolo ZigBee. La definición de protocolo de capa
en que el nodo está privado de la fuente ción de aplicación es como sigue.
Alimentarius, para que no se necesita restaurar
• La cadena de comandos enviados desde el
maestro es una cadena ASCII de 7 caracteres.

Tabla 4 - Macro componente Flowcode ZigBee.


Nombre de la macro descripción

Inicializar el módulo XBee y tratar de ejecutar la instalación de la red (coordinador) o llevar a cabo la unión de un eseistente red (router o
Init_Network
dispositivo final).

Restart_Network Re-inicializar la red ZigBee.

Scan_Network Realizar un análisis para localizar una red asociada.

Connect_To_Address Conectar el módulo a una dirección específica en la red.

Connect_To_Coordinator Iniciar sesión en el coordinador.

Connect_To_All Conecte a todos los nodos (difusión)

Establece el modo de suspensión del nodo (sólo aplicable a dispositivo final). Toma como entrada dos parámetros, el modo de suspensión (1 = Hibernate, 2 = Doze, 4 =
Node_Configure_Sleep
Sleep cíclico, 5 = cíclica Doze) y el tiempo de espera en ms.

Node_Wake Despertar a los nodos secundarios del modo de suspensión.

Get_Signal_Level Leer el nivel de señal de radio

SEND_CHAR Enviar un byte en el canal de radio.

Receive_Char Devolver el carácter recibido por el canal de radio.

En la electrónica ~ de febrero de 2014 133


• La cadena de comandos se divide en dos tivamente, para activar / desactivar el relé (por
secciones, una sección de identificación y una ejemplo, para habilitar el relé 1 en el nodo 15 se
sección de control, separados por el carácter utilice la cadena S15- R1a);
ASCII "-".
• La sección de identificación se utiliza para tratar el - subfunción "I", que se utiliza para volver a imposta-
nodo que desea lare controlada. Se compone de 3 una nueva dirección de nodo. En esta subfunción,
caracteres ASCII: un primer carácter S (Slave), la letra "I" es seguido por dos caracteres numéricos
seguido de dos caracteres ASCII numéricos de "0" de "0" a "9", que constituyen el nuevo par de
a "9". Así que para identificar el nodo 01, enviará la valores para la dirección de nodo (por ejemplo.
cadena "S01". Para cambiar la dirección de nodo 0 en 35 se
utilizará la cadena S00-I35);
• La sección de control se divide en tres
sub-funciones:
- subfunción "R", que se utiliza para el control directo - sub "C", que se utiliza para ser impuesta
de los relés. En esta subfunción la letra "R" es configuración del sistema. Las opciones de
seguido por un carácter numérico ASCII de 1 a 4, configuración disponibles en la actualidad permiten
que se utiliza para identificar el relé y por los activar / desactivar los LED de trabajo y
caracteres "a" y "d" que se utiliza, respectiva- seleccionar el tiempo de flash y activar / desactivar
el eco. A continuación se muestra la lista de
e-bloque necesario para la realización de un nodo
esclavo:

• EB006 1x "PICmicro bordo multiprogram- mer USB"


( PIC18F4580 y cuarzo a 12 MHz);

• 1x EB051 "tablero de ZigBee" (configuraciones que


Fig. 8 Conexión Router / Nodo final);
E-Block para el
• 1x EB030 "Tarjeta relé";
proyecto práctico.
• EB004 1x "pizarra electrónica".

En cuanto el nodo tor Coordi-, podemos utilizar una de


las muchas tablero de interfaz para los nodos Xbee,
tales como el "explorador Xbee USB", distribuido por
Futura Electronics. En cuanto a conexiones, que
conectará el EB051 C en la puerta (con el fin de poder
utilizar el puerto USART hardware para

curso FL
CÓDIGO UJO

134 De febrero de 2014 ~ en Electrónica


La Tabla 5 - Periodicidad y la descripción de la tarea software del nodo ZigBee esclavo.
tarea Período [ms] descripción

RxTask 1 (activo), 1000 (resto) Se recibe y decodifica datos sobre el canal inalámbrico.

RelayTask 500 Implementa el estado del relé establecido por el control inalámbrico.
DIGO

EepromTask 100 parámetros de actualización de la memoria no volátil.

LedTask configurable Gestiona el funcionamiento del LED.


UJO CÓ

hablar con el módulo Xbee), y EB030 en la puerta D. - TSK_EepromTaskCounter;


Finalmente conectar el EB004 en el puerto A. - TSK_LedTaskCounter;
- TSK_RxTaskCounter.
No hay que olvidar que tanto el EB030 EB051
curso FL

también requieren que el poder de la mente de Al no ser capaz de analizar todas las tareas
enlace. en Fig. 8 Muestran las conexiones de plementati Im- como un único episodio no sería
hardware de los distintos E-bloque. suficiente, nos centramos

Implementación de software
En este punto podemos comenzar a examinar los
detalles de implementación del software del nodo
esclavo. Según que espe- CIFIC proporcionado, el
nodo esclavo debe ser capaz de gestionar el relé 4,
para proporcionar una gestión de memoria no volátil,
administrar el "trabajo" LED (LED que indica que el
nodo está conectado a la red y operativo ) y, por
supuesto, manejar la aplicación de protocolo que se
ha descrito anteriormente. La arquitectura utilizada
para el tazione nodo imple- implica el uso de un
programador a 1 ms, y un total de 4 tareas, informado
por la totalidad en mesa

5, junto con su periodicidad. La implementación del


planificador del sistema es similar a la observada en el
episodio 5, con la diferencia de que se que- vez que
haya establecido una interrupción en el segundo
temporizador con un periodo de 1 ms, con el fin de tener
la granularidad requerida. Tenga en cuenta la diferencia
en el momento de la tarea RxTask. Esta es la tarea más
delicada de todo el sistema, y ​que ocupa más recursos.
Por lo tanto, se decidió reducir el intervalo entre las
llamadas cuando no hay datos en tránsito a través del
canal inalámbrico y aumentar al máximo la recepción
durante la fase activa. Vamos a analizar en SE- Güito el
mecanismo de software tato imple- para lograr este
comportamiento. La implementación del planificador
principal se muestra en Fig. 9.

Como se puede ver, las llamadas a las distintas tareas están


marcadas por el estado de cuatro variables:

- TSK_RelayTaskCounter; Fig. 9 - planificador del sistema.

En la electrónica ~ de febrero de 2014 135


Fig. 10 - Grupo RxTask.

sólo en la tarea más importante. Tomemos por ejemplo la


tarea RxTask, que lleva a cabo una de las tareas más
importantes del sis- tema, es decir, la decodificación del
paquete de datos enviado por el Coordinador.

Como esta tarea resulta ser bastante pesada para la


CPU durante la ejecución, incluso sin los paquetes
entrantes, se decidió darle una periodicidad diferente en
el caso de recibir datos o no. En esencia, en caso de
ausencia de actividades de RF, la tarea se ejecuta una
vez por segundo, mientras que si no hay actividad en el
canal de radio, el tiempo de ejecución pasa a 1 ms, a fin
de decodificar inmediatamente el paquete y los
interruptores al estado de espera de nuevo (con la
consiguiente sobrecarga mínima CPU). Este tipo de
comportamiento se ha dado cuenta de la barbilla la
gestión de un indicador global denominado
"IncomingPacket", que puede tener dos valores:
NEW_INCO- MING_PACKET y NO_INCOMING_PA-
cket. Normalmente el valor es COMING_PACKET
NO_IN-, pero en caso de inicio de un procedimiento de
recepción, el grupo de trabajo para el valor RxTask
NEW_INCO- MING_PACKET hasta el final de la
recepción. Si vamos a comprobar la condición llamada
en el programador de tareas RxTask, nos daremos
cuenta de que es verdad: (TSK_RxTaskCounter> =
TASK_RX_TI- MEOUT) || (IncomingPacket = new_
INCOMING_PACKET)

Es decir, si el valor es diferente de IncomingPacket


NEW_INCOMING_PACKET (situación de espera), la
tarea es done.The con su periodicidad clásica (TASK_
RX_TIMEOUT), de lo contrario, va a una rápida
ejecución en cada llamada del mismo programador
(es decir, una vez a ms).
PAQUETE. Contextualmente activa un temporizador
curso FL
(PacketCheckTime), que permanece activo durante toda la
El diagrama de bloques de los bloques de tareas RxTask se duración de la transmisión. El propósito del temporizador es
muestra en la Fig. 10. Como puede verse a partir del diagrama evitar que los paquetes de registros que bloquean la tarea en
de bloques, si hay un byte en la recepción en el canal, que se espera de una parte del paquete. Después de 200 ms es
adquiere mediante el uso de la Receive_Char macro (), puesto RESET ta todo y comienza de nuevo. Por último, la integridad
UJO

a disposición por el componente de ZigBee. Después de recibir cuando el paquete se recibe de forma gratuita restablece los
los bytes de un tampón de servicio, se mueve a la memoria contadores y banderas, y se llama la función de decodificación
CÓDIGO

intermedia de recepción (y aumenta el índice de aso- Ciato a la (RxDecodeFn).


memoria intermedia) y establece el indicador a Incomin- valor
gPacket NEW_INCOMING_
El RxDecodeFn es una función (no es una tarea, a
continuación, su ejecución no es

136 De febrero de 2014 ~ en Electrónica


pero tiggered evento periódico) que tiene el único Function_Parameter2 = RxBuffer [.DEC_ PAR_2]
DIGO

propósito de decodificar el paquete recibido


correctamente y establecer el valor de las variables
globales para otras tareas tienen a su vez sus La primera comprobación se lleva a cabo en la primera
UJO CÓ

funciones de forma adecuada. El diagrama de bloques parte del paquete, la que contiene la dirección del nodo. El
de RxDe- codeFn se informa en Fig. 11. effettua- de controlar es la siguiente:

Brevemente describir la tación imple-. En la práctica,


curso FL

la primera operación realizada es la asignación de (NodeType = NODE_TYPE_SLAVE) &&


los distintos bytes del paquete a las variables (Packet_IDMajor = EEP_Id_NodeMajor) &&
específicas, a fin de facilitar la fase siguiente al (Packet_IDMinor = EEP_Id_NodeMi- nor)

Entonces se comprueba si el nodo es un esclavo ( "S")


y que el ID coincide con los valores cargados desde la
memoria EEPROM.

Fig. 11 - Diagrama de bloques de la función RxDecodeFn.

siva. Específicamente, un bloque de cálculo que Si la prueba tiene éxito, gue prose-, de lo contrario el
realiza las siguientes asignaciones se utiliza: paquete se descarta. Después de haber realizado esta
comprobación preliminar se pasa a la decodificación
educa- ción verdadera del paquete. Antes de hacer
NodeType = RxBuffer [.DEC_NODE_TYPE] = esto, puede controlar si una Eco está activado (=
Packet_IDMajor RxBuffer [.DEC_ID_ MAJ] EEP_Conf_EcoEnabled ECO_ENABLED?) Y, si es así,
transmite el eco del paquete recibido. Posteriormente,
Packet_IDMinor = RxBuffer [.DEC_ID_ MIN] un bloque de selección múltiple decodificar el campo
de datos Efectos- vo del paquete, ajustando
Function_MainFunction = RxBuffer [.DEC_ adecuadamente las variables globales utilizado por
MAIN_FUNCT]
Function_Parameter1 = RxBuffer [.DEC_ PAR_1]

En la electrónica ~ de febrero de 2014 137


Fig. 12 - Diagrama de bloques de tarea RelayTask.

Fig. 13 - Diagrama de bloques de tarea EepromTask.

otra tarea para la ejecución de acciones para actualizar, utilizando una variable global. Así, por
específicas. ejemplo, para actualizar el eco relativa permitiendo
En particular, la sección relativa a la con- trol del relé, parámetro de configuración, los relativos conjuntos de
una vez comprobado que el byte bloque de cálculo:
Function_MainFunction se corresponde con el valor
ASCII "R", lleva a cabo las siguientes tareas:
EEP_Conf_EcoEnabled = Function_Parame- ter2 curso FL
RelayNumber = Function_Parameter1 EepUpdateRequest = UPDATE_EEP_RE- QUEST
RelayStatus = Function_Parameter2

Esta información se utilizará entonces Zate de tarea EEP_Conf_EcoEnabled contiene el valor del
RelayTask para el control efectivo de los relés. Una parámetro, mientras que la bandera EepUpdate-
UJO

palabra aparte Me- Rita la gestión de los parámetros Solicitar señales a EepromTask tarea que hay una
de almacenamiento en la EEPROM (este respecto, actualización de los parámetros en la memoria para
por ejemplo, todas las opciones de con- figuración).
CÓDIGO

ser ejecutados. Consideremos ahora la tarea de con-


Esto es manejado por la tarea de re-lativo, pero, aun trol del relé, que será fácil de entender, ahora que se
así, para saber si los parámetros almacenados ha examinado la lógica de la comunicación entre las
tareas. la

138 De febrero de 2014 ~ en Electrónica


Fig. 14 - Ejemplo de comunicación.

diagrama RelayTask de los bloques de tarea se


DIGO

muestra en Fig. 12. Esta tarea se ejecuta en 500 ms y


no hace más que controlar el estado de las dos
variables globales por reles Número y RelayStatus.
UJO CÓ

La primera dice que los relés de control, mientras que


la SE- Conda indica su estado. Como hemos
examinado anteriormente, estas variables son fijadas
por RxTask tarea, y en particular por RxDecodeFn.
curso FL

Una vez que haya determinado el relé a ser


monitoreados y su estado es adecuadamente actúa
sobre la puerta D a través de los bloques de usci- ta.
Veamos ahora cómo se gestiona la memoria no Ling, si el procedimiento es activo. De esta manera, se
volátil, elemento fundamental en el funcionamiento reduce al mínimo indispensable la carga de trabajo de
del sistema, ya que contiene la dirección del nodo y repaso en la fase de los datos de la EEPROM, el
también los parámetros de configuración. Hay varias precio de un mayor tiempo total para llevar a cabo toda
maneras de manejar ria una EEPROM memo- en un la operación. La puesta en imple- es muy simple: en un
diseño integrado, y la elección del modo nunca es primer momento los controles de trabajo para ver si
una cuestión trivial. En este proyecto se decidió había una solicitud de actualización de memoria no
utilizar un tipo de espejo de la gestión. Es decir, los volátil (EepUpdateRequest = UPDA-
datos almacenados en la memoria EEPROM se TE_EEP_REQUEST?). En caso afirmativo, se inicia el
copian en las ubicaciones apropiadas de memoria de procedimiento y los datos se guardan en la secuencia,
RAM en el inicio del sistema (espejo de la EEPROM). uno por ciclo. La secuencia se llevó a cabo haciendo
Si durante la vida operativa del sistema, uno de estos uso de un bloque de selección múltiple y una variable
cambios de parámetros, un procedimiento que global (EepromUpdateSe- cuencia). Al final de la
actualiza na EEPROM se inicia (el espejo se copia en secuencia también se restablece la EepUpdateRequest
la memoria EEPROM). De esta manera, el siguiente bandera (EepUpdateRequest = UPDATE_EEP_
reinicio de su carga los datos actualizados. A COMPLETE). Con este análisis se analizaron la tarea
continuación, el bloque de memoria EEPROM dentro más importante. Ahora podemos probar nuestro
de este proyecto consta de dos partes bien sistema, utilizando cualquier programa de terminal para
diferenciadas. Una función de inicialización, que copia comunicarse con el coordinador. Para ejecutar
el contenido de la EEPROM dentro del bili variación nuestras pruebas se utilizó el software X-CTU
"espejo", y una tarea de tiempo de ejecución que es proporcionada por Digi XBee módem de radio para la
responsable de la actualización, cuando Ne- configuración. en La Fig. 14 es posible ver un disparo
Cessario. La función de inicialización no es pantalla- de comunicación en la que se había activado
particularmente compleja, por lo que omite. previamente el eco (función se activan y luego
Examinemos vez la tarea, Fig. 13. Como hemos desactivado en secuencia de los cuatro relés). En este
explicado antes, la tarea de la tarea es actualizar los séptimo episodio Ana- lizzato en detalle el componente
datos en la EEPROM copian- DOVI el contenido de de ZigBee, así como la presentación de un proyecto
su variabilidad ellos "espejo". Para evitar sobrecargar práctico de cierta complejidad, lo que nos permitió fijar
la CPU los datos no se copian todos juntos, pero fue algunos conceptos importantes se observan en
construido una copia za secuencial de un ciclo episodios anteriores. En el siguiente y último episodio
determinado de schedu- vamos a analizar (y mo provere- con unas prácticas de
proyectos) componentes TCP / IP y el servidor Web.

En la electrónica ~ de febrero de 2014 139


Para terminar nuestro viaje
para descubrir Flowcode, el
innovador entorno de
DIGO

desarrollo gráfico para


microcontroladores que le
permite escribir código
UJO CÓ

usando objetos gráficos. En

8
este octavo y último
episodio vamos a explicar
cómo conectar a Ethernet
curso FL

sistemas embebidos usando


el protocolo TCP / IP.

curso de programación

Flowcode
Francesco y Daniele Ficili Defilippi

ella último episodio que introdujo el dispositivo lanzar un servidor web incorporado que puede enviar datos

N
inalámbrico que permite la comunicación de acuerdo
con el estándar ZigBee, y se ilustra su aplicación en
Flowcode. Ahora, a la conclusión del curso, vamos a
en tiempo real en la red.

Desarrollo de aplicaciones de Internet con


discutir cómo implementar sistemas embebidos Flowcode
enlaces con- Ethernet a la red, capaz de manejar La gestión de sistemas integrados conectados a la red
protocolos complejos tales como TCP / IP. Este Ethernet es muy complejo e implica un profundo
problema se abre la puerta a la gestión e conocimiento de muchos protocolos de comunicación
implementación de sistemas de automatización del pro, pero Flowcode nos proporciona los componentes
hogar que hoy en día tienden a estar más conectados nece- sario para resolver este problema de una forma
a la red global de la World Wide Web. Comenzaremos sencilla e intuitiva. Utilizando el protocolo TCP
nuestra ruta parlan- hacer el protocolo TCP / IP y, al componentes / IP, UDP y WebServer pueden lograr
final de la apuesta a lograr en unos simples prácticamente cualquier aplicación ción que incluye una
red de comunicaciones Ethernet sin forzarnos a
approfondir-

En la electrónica ~ de marzo de 2014 129


que todas las cuestiones. Los componentes de la
biblioteca nos permiten manejar el W5100 integrado,
gracias al cual se puede conectar directamente a la red
Ethernet. Como punto de partida empezamos a examinar
el cuello proto TCP / IP.
Fig. 1
Subdivisión en la
capa del
El protocolo TCP / IP
protocolo TCP /
TCP / IP es un acrónimo de " Transmisión Con- trol Protocolo /
IP.
Internet Protocol "; su protocolo contiene todas las especificaciones
necesarias para comunicarse adecuadamente a través de Internet.
Se divide en dichas capas "Capa" ( Fig. 1). Cada una de la capa Dado que la dirección IP se puede cambiar
depende de lo que se encuentra a continuación y sólo puede dinámicamente, debe basarse en algo fijo e inmutable
comunicarse con los vecinos; cada uno tiene una tarea diferenciada que pueda identificar a un sistema de red conectada.
usted y paquetes, durante el tránsito hacia las capas inferiores, son Por esta razón, se utiliza la dirección MAC: es única
cada vez más sulati incap- y, a la inversa, ya que esa fecha se pulen para cada tarjeta puede conectarse a la red y por lo
por los datos de encapsulación ya no es necesaria. Este tipo de ture tanto se fija en la fase de producción de la tarjeta y se
arquitec- permite ser capaz de transferir en un dato de "seguro" asigna automáticamente al final de la línea. Volviendo
entre un ordenador y otro. Las ofertas de protocolo IP con la al nivel superior, podemos encontrar una capa
recepción / transmisión correcta de los datos; en la actualidad hay adicional de abstracción: el llamado "puertos de
dos versiones de IP: IPv4 e IPv6. La principal diferencia entre los comunicación". Cada puerto se utiliza para un tipo
dos es el número de bytes utilizados para codificar de manera uni- particular de protocolo, pero también es posible usar de
voco las direcciones de red. El protocolo TCP en su lugar se cargó una manera diferente; el más conocido y más
con la reordenación de paquetes y la reconstrucción de los datos comúnmente utilizado es la 80, que se utiliza para la
originales sin pérdida de datos. Cada equipo está identificado por comunicación http, pero hay otros como 20:21 para FTP,
una dirección IP que tifica idéntica forma única dentro de la Internet. 53 para el DNS y muchos más.
La asignación de esta dirección puede ser de tipo dinámico o
estático; por lo general podemos decidir si asignar a uno de un tipo
u otro, ya que, de ser conectado a un ISP (Internet Service
Provider), la dirección real visto por la red será el ISP y no el elegido
por nosotros. Cuando queremos llegar a un ordenador conectado a Con estos fundamentos, podemos ahora que
Internet a través de un navegador, escribimos un nombre, por ejem- trataremos de examinar el componente que Flowcode
pío la dirección real visto por la red será el ISP y no el elegido por pone a disposición para gestionar TCP / IP, UDP, y
nosotros. Cuando queremos llegar a un ordenador conectado a MAC.
Internet a través de un navegador, escribimos un nombre, por ejem-
pío la dirección real visto por la red será el ISP y no el elegido por El componente de TCP / IP en Flowcode
nosotros. Cuando queremos llegar a un ordenador conectado a En la bandeja de componentes en el menú
Internet a través de un navegador, escribimos un nombre, por ejem- "Pe-riferiche" nos encontramos con el componente
pío www.futuranet.it, y esto, por el servicio de DNS, se transformará TCP / IP que nos permite gestionar TCP / IP, UDP, y
en la dirección IP correspondiente para el uso con el protocolo TCP / MAC. Para utilizarlo es suficiente para añadir en el
curso FL
IP. Por tanto, este proceso permite el uso de los nombres que son panel y posteriormente proceder a la configuración. en Fig.
más fáciles de recordar que a una secuencia de 4 o 6 números de 2 Se muestra el único 'configuración de la página de
tres dígitos. prisión de propiedades de componente. En primer
lugar tenemos que elegir qué versión de la junta
EB023 tenemos disponible; Localizar fácilmente esta
UJO

indicación en el tablero que AC- quistato (si estamos


construyendo una tarjeta personalizada, deducimos
CÓDIGO

de la lizzato uti- componente). Ahora debe introducir la


infor- mación sobre la conexión de red.

130 De marzo de 2014 ~ en Electrónica


Tabla 1 - macro se puede utilizar con el componente TCP / IP

Nombre de macro descripción

inicializar Restablece e inicializa el dispositivo Ethernet.

Al llamar a esta macro, se crea un socket capaz de recibir datos transmitidos por la red Ethernet. Mediante el establecimiento de un valor del parámetro:
DIGO

- El modo promiscuo para leer todo el tráfico que circula por la red sin tener en cuenta la dirección MAC;
Create_MAC_Socket
- El modo de difusión que sea capaz de leer los paquetes de difusión;
- modo de error para también recibir paquetes que contienen errores.
El valor de retorno, si es diferente de cero, indica que la operación de configuración era final exitoso.
UJO CÓ

La macro crea un socket para la transmisión y recepción de datos utilizando el protocolo UDP. Es necesario
indicar los parámetros:
- Channel, es decir, el canal elegido para la comunicación (de 0 a 3); es posible utilizar simultáneamente los canales de configuraciones gurado de una manera diferente a
Create_UDP_Socket
partir de un máximo de cuatro;
- la dirección de la divide en src_port_hi y puerto de origen src_port_lo. El valor de retorno, si es diferente de cero, indica que
curso FL

la operación de configuración era final exitoso.

Crear un socket para la recepción y transmisión de datos a través del protocolo IP.
Create_IP_Socket Es necesario indicar el canal seleccionado (canal), y el protocolo que pretendemos realizar mediante el conjunto de la ni dos inter- a los parámetros de macro. El valor de
retorno, si es diferente de cero, indica que la operación de configuración era final exitoso.

Create_TCP_Socket Crear un tipo de socket TCP. Necesidades de las mismas configuraciones que se utilizan con el Create_UDP_Socket macro.

Se utiliza con sockets IP y UDP, y se utiliza para establecer la dirección IP y el puerto al que desea transmitir datos. Se toma como parámetros el canal, la
Set_Destination dirección IP y el puerto de destino. Para las conexiones basadas en IP que no es necesario indicar la puerta.

Esta macro se utiliza para cambiar, durante la ejecución, la dirección IP del dispositivo; No es necesario si desea conservar la dirección IP introducida
Set_My_IP
en la ventana de Configuración de componentes.

La macro devuelve el estado actual de la toma de corriente. Los valores posibles son diecinueve, pero los principales son:
- 0 (SOCK_CLOSED) = el socket está cerrado (se transmiten o reciben datos ni);
GetSocketStatus - 6 (SOCK_ESTABLISHED) = el zócalo esté listo y la comunicación es activo en el modo pasivo;
- 7 (SOCK_CLOSE_WAIT) = el socket está en la fase de cierre;
- 14 (SOCK_INIT) = el socket está en la fase de inicialización.

TCP_Listen Establece el canal elegido (indicado como un parámetro) en modo pasivo de manera que pueda estar listo para recibir datos.

Establece el canal elegido (indicado como un parámetro) en el modo activo de manera que pueda estar listo para transmitir datos en el canal de
comunicación. Se necesita como parámetros el valor del canal, la dirección IP y el puerto de destino. Si el valor devuelto es distinto de cero significa
tcp_connect
que la comunicación se ha establecido con éxito y que luego se puede transmitir datos.

TCP_Close Se cierra la conexión TCP a través de una operación activa y el puerto de socket a la espera de la terminación.

Iniciar la transmisión de datos en el canal especificado por los parámetros, pero para que funcione correctamente requiere macro posterior (Tx_sendbyte,
Tx_sendmymac, Tx_sendmymac y Tx_end). La secuencia correcta comienza con un comando de Tx_start, continúa con secuencias Tx_sendbyte, Tx_sendmymac,
Tx_start
Tx_sendmymac en el orden elegido (que puede también ser sólo ta utilizza- uno de los tres macro) y termina con Tx_end para realizar el envío de datos en el canal
la comunicación.

(Continuación)

Dependiendo del tipo de red que configurar la dirección mundo; la mejor manera de hacerlo es tomar la
IP, la cual debe ser de co estadístico tipo y la máscara dirección de un no utilizado actualmente tarjeta de red,
de subred. La dirección de la pasarela se debe por lo que está seguro de que su IP no está activo. Un
establecer el mismo que el "enrutador" o el módem al paso adicional es la configuración de las conexiones;
que intenta AC cede a Internet, al menos si queremos con el fin de funcionar correctamente, debe configurar
enviar paquetes fuera de la LAN; si esta dirección los pines en los cuarenta que se asignan al pin de
estaba mal, sareb- no sea posible comunicarse con los interrupción y el PCB Esta configuración puede variar
ordenadores no conectados directamente a la intranet. dependiendo de cómo se conecta la tarjeta a nuestra
La configuración de la dirección MAC (dirección de plataforma o cómo realiz- ziamo el PCB en el caso de
hardware) es la parte más delicada: este valor debe ser proyectos personalizada . Examinemos ahora la macro
único en toda la Internet. Para realizar las pruebas Flowcode que pone a disposición para manejar este tipo
dentro de la LAN pueden fijar a cualquier valor: de comunicaciones a través de Ethernet. en
simplemente que difiere de la de todas las demás
tarjetas de red inalámbrica y Ethernet lo pasan por alto.

Tabla 1 Se describen en la principal. Estas macros


permiten administrar en una red simple de
comunicaciones bidireccionales a través del conector
Ethernet en diferentes niveles: MAC, UDP y TCP / IP. El
componente de TCP / IP es el que nos permite gestionar
la principal Protocolo-

En la electrónica ~ de marzo de 2014 131


Tabla 1 - Macro utilizado con el componente TCP / IP (continuación)

Nombre de macro descripción

Enviar los datos a la memoria intermedia de transmisión para el canal específico. Además del canal se debe indicar el parámetro dado. Como cuestión también puede ser
Tx_sendbyte
cadenas usadas.

Tx_sendmymac Enviar en el buffer de transmisión, el canal seleccionado, la dirección MAC actual de la tarjeta.

Tx_sendmyip Enviar en el buffer de transmisión, el canal seleccionado, la dirección IP establecida en la ventana de configuración del adaptador.

Tx_end Es la macro que le permite enviar datos físicamente en la línea de comunicación.

Compruebe si hay datos disponibles en el canal de recepción de amortiguamiento. El valor de retorno, si es diferente de cero, lo que indica que hay datos
Rx_data_available disponibles. Esta macro se utiliza para inicializar la memoria intermedia para recibir datos si que ya era. En la práctica restablece el índice con la que el tampón
se escanea con el Rx_data_size macro.

Rx_data_size Macro se utiliza para saber cuántos bytes están disponibles en el buffer de recepción.

Macro utiliza para leer el encabezado de los datos recibidos.


Se toma como parámetros de entrada del canal de comunicación y el índice IDX de bytes que desea leer. Dependiendo del tipo de comunicación utilizado en un
canal seleccionado puede tener la siguiente información.
- modo UDP
● Idx 0-1: Tamaño del paquete (MSB idx = 0);
● Idx 2-5: Dirección IP de origen (MSB idx = 2);
● Idx 6-7: dirección de puerto (MSB idx = 7).
- modo IP
● tamaño Header = 6;
Rx_readheader
● Idx 0-1: Tamaño del paquete (MSB idx = 0);
● Idx 2-5: Dirección IP de origen (MSB idx = 2).
- modo MAC
● tamaño Header = 3;
● Idx 0-1: Tamaño del paquete (MSB idx = 0);
● Idx 2: Estado de paquetes recibidos:
■ Bit 7 = 1 indica que la dirección MAC de destino de la tarjeta es equivalente;
■ Bit 5 = 1 indica que la dirección es transmitido tipo;
■ Bit 4 = 1 indica que el paquete contiene errores.

Rx_readbyte Lee un byte desde el canal elegido búfer de recepción que se devuelve como un valor de retorno.

Rx_skipbytes Que le permite "saltar" de los datos de la memoria intermedia de recepción.

Rx_match2bytes
Ley 2/4/6 byte del buffer de recepción y los compara con los indicados en los parámetros con los que se le llama. Restitui- SCE un valor diferente de cero si
Rx_match4bytes
los valores coinciden.
Rx_match6bytes

Ley 6 bytes desde el buffer de recepción y compararlos con la dirección MAC con la que la tarjeta ha sido configurado. Se devuelve un valor distinto de cero si
Rx_match_mymac
los valores coinciden.

Lee 4 bytes desde el buffer de recepción y los compara con la dirección IP con la que la tarjeta ha sido configurado. Se devuelve un valor distinto de cero si los
Rx_match_myip
valores coinciden.

les de comunicación Ethernet, sino para crear un El servidor web de componente


servidor web para forma aún más sencilla que La forma más inmediata para comunicarse con los
tenemos un componente específico; este sistemas remotos, incluso miles de kilómetros de
componente, siempre sujeto a ciertas restricciones, distancia, es el uso de páginas web sencillas, ya que
permite a los desarrolladores implementar el servidor sólo requiere que ambos sistemas están conectados
Web aún más sencilla e intuitiva. a Internet. Todo el sistema es muy barato y es muy
intuitivo de usar. Realiz- Zare un servidor Web en un
equipo es AB- suficiencia simple, pero en una
plataforma embebida con potencia de cálculo limitada
se vuelve mucho más compleja. Por estas razones,
curso FL
Flowcode viene en nuestra ayuda al proporcionar un
componente específico que encontramos en la
bandeja de componentes en el menú "Dispositivos",
como Servidor web.
CÓDIGO UJO

En episodios anteriores hemos visto cómo los


dispositivos o sistemas muy complicados, que se
pueden realizar de una manera muy sencilla gracias al
uso de programados, pero; por lo que en este caso.
Fig. 2 - Propiedad ver el componente TCP / IP. cómo

132 De marzo de 2014 ~ en Electrónica


Tabla 2 - Macro utilizable con el WebServer componente
Nombre de macro descripción

Restablece e inicializa el dispositivo Ethernet. Esta macro debe llamarse antes de cualquier otro macros para cualquier gestión de servidor Web.
inicializar
DIGO

La macro crea un socket para recibir y transmitir datos al servidor Web. Es necesario
indicar los parámetros:
- Canalizar el canal elegido para la comunicación (de 0 a 3); es posible utilizar simultáneamente los canales configurados de una manera diferente a partir de un
CreateServerSocket
máximo de cuatro;
UJO CÓ

- la dirección del puerto desde el que transmitir y recibir los datos divididos en src_port_hi y src_port_lo. El valor de retorno, si
es diferente de cero, indica que la operación de configuración era final exitoso.

CheckSocketActivity Toma como entrada el canal en el que desea realizar el control de la actividad.
Que periódicamente se debe invocar el fin de permitir la gestión de las solicitudes entrantes.
curso FL

nos vemos en La Fig. 3, la ventana de la con- figuración de forma remota. El código debe ser compatible con el
componente es sencilla e intuitiva va: tenga en cuenta que es estándar HTML, pero esto no impide que introduzca
exactamente idéntico al componente TCP / IP y por lo tanto comandos JavaScript u otro len- ya interpretado por el
pueden ser configurados de la misma manera. Esto se debe navegador remoto. La característica clave del
al hecho de que el componente de servidor Web componente servidor web es la posibilidad, oferta, para
incluir en el valor mico Dyna fuente HTML de algunas
variables; de esta manera es las variables deseadas
(como máximo cuatro) se pueden monitorizar de forma
remota. Con el fin de BA ver, dentro del código HTML, el
nombre de la variable, incluyendo el inserendo-%. Los
nombres de variables son, por tanto, B001 utilizable,
B002, B003 y B004. Hay algunas limitaciones en el tipo
de las variables seleccionadas porque no pueden ser de
tipo cadena o punto flotante. En el ejemplo práctico
vamos a utilizar este simple estratagema con el propósito
de Reac- lizzare una unidad de control para controlar la
temperatura.

Fig. 3 - Webserver Propiedades de componente.

Proyecto práctica: Unidad para la


monitorización de la temperatura a través del
servidor Web
El servidor Web integrado que se harán nos permitirá
controlar de forma remota, trans leve una conexión a
Internet, los últimos cuatro temperaturas medidas por
nuestro sistema.

Para poner en práctica el proyecto necesitamos los


siguientes componentes:
- EB006 " Junta PICmicromultiprogrammer- USB "(PIC18F4685
y cuarzo 19,6608 MHz);
Fig. 4 - Webserver Propiedades de componente
para la descripción de las páginas HTML.
- EB023 "tablero de Internet";
No es nada más que un gerente preconfigurado de páginas - EB016 "Placa de pruebas";
web basadas en TCP / IP. Las diferencias residen en la - del sensor de temperatura LM35.
pestaña de configuración siguiente, se muestra en la Fig. 4.
Ponemos en contacto a las tarjetas como se muestra en Fig.
En la parte superior tenemos que introducir el nombre de las 5 posicionamiento EB023 la tarjeta C en la puerta y la
páginas, mientras que en el espacio central tiene que editar el tarjeta será prototipazio- EB016 en los puertos A y B. Nos
código que tenemos la intención de mostrar en la página alimentar el sensor, como se indica en la segunda
requerida para

En la electrónica ~ de marzo de 2014 133


listado 1

<! DOCTYPE html>


<html>
<HEAD> <title> servidor web Ejemplo </ title> <script language = JavaScript tipo

= "text / javascript"> temperatura var = new Array (); Temperaturas [0] =%

Boo1% - 128; Temperaturas [1] =% BOO2% - 128; Temperatura [2] =% BOO3% -

128; Temperatura [3] =% BOO4% - 128; función de temperatura (x) {

si (x / 20 <= 1) temperaturas de retorno [0]; else if (x / 20 <= 2)


temperaturas de retorno [1]; else if (x / 20 <= 3) la temperatura de
retorno [2]; temperaturas de retorno else [3]; }

Fig. 5 la conexión
función funGraph (ctx, ejes, func, color, espesor) {var xx, yy, dx = 1, x0 = axes.x0, y0 de las tarjetas para
= axes.y0, escala = axes.scale; var Imáx = Math.round ((ctx.canvas.width-x0) / dx); lograr la unidad de
var = Imin axes.doNegativeX? Math.round (-x0 / dx): 0; ctx.beginPath (); supervisión de
ctx.lineWidth = espesor; ctx.strokeStyle = color; for (var i = Imin; i <= Imax; i ++) temperatura.
{xx = dx * i;

yy = escaleras * FUNC (xx / escaleras);


si (i == Imin) ctx.moveTo (x0 + xx, yy-y0); otro
ctx.lineTo (x0 + xx, yy-y0);
} ctx.stroke (); }

// Dibuja los ejes


función showAxes (ctx, ejes) {
var = x0 axes.x0, w = ctx.canvas.width; escala = axes.scale; var = y0 axes.y0, h =
ctx.canvas.height; var = xmin axes.doNegativeX? 0: x0; var hline = 0;
ctx.beginPath ();

ctx.strokeStyle = "rgb (128,128,128)"; ctx.moveTo (xmin, y0); ctx.lineTo (w,


y0); // X eje ctx.moveTo (x0,0);
ctx.lineTo (x0, h); // eje Y

ctx.stroke (); ctx.beginPath Fig. 6 - Configuración del componente.


(); ctx.lineWidth = 1;

ctx.strokeStyle = "rgb (128,128,128)"; for (var i = -20; i <= Tabla 3 - Configuración del componente de datos WebServer
50; i = i + 10) {
yy = i * escaleras;
GatewayAddress 192.168.0.10
ctx.moveTo (xmin-5, y0-yy); ctx.lineTo (w, y0-yy); ctx.font = "15px
Georgia"; Máscara de subred 255.255.255.0
ctx.strokeText (i + "° C", xmin-50, y0-yy + 5); Dirección IP 192.168.0.5
curso FL
HardwareAddress 0: 8: 220: 0: 0: 0
(Continuación)
número máximo de páginas web 1

apuesta para la realización del metro dedicar a escribir el diagrama de control. Insertamos a
termo-LCD, y conectar la salida al puerto de un continuación, en la barra de los miembros del
número de PIN 2 con el fin de estimular el canal componente de servidor web y el ADC componente
UJO

analógico del microcontrolador An2. configurado para que se lea la entrada An2 conectado al
dolor de SEN- de temperatura LM35. Ahora vamos a
CÓDIGO

Configuramos el proyecto a fin de mantener OT- una configurar el servidor web de componente: se indican los
frecuencia del PIC igual a 19.660.800 reloj Hz, ajuste siguientes valores dentro de los parámetros ( Tabla 3).
de los parámetros como se muestra en Fig. 6.

Ahora que el hardware está listo podemos El código HTML que se muestra en

134 De marzo de 2014 ~ en Electrónica


Listado 1 (continuación)

} ctx.stroke (); ctx.beginPath


DIGO

(); ctx.lineWidth = 3;

ctx.strokeStyle = "rgb (80,80,80)"; yy = 0;


UJO CÓ

ctx.moveTo (xmin, y0-yy); ctx.lineTo (w, y0-yy); ctx.stroke (); }

sorteo function () {
curso FL

lienzo var = document.getElementById ( "lienzo"); si (== || lienzo


canvas.getContext nula!) return; // Establecer el var lona ejes = {}, ctx =
canvas.getContext ( "2D"); axes.x0 = 50;

//.5 + 0,5 * canvas.width; // pixeles x0 de izquierda a x = 0


axes.y0 = 12/16 * canvas.height; //.5 + 0,5 * canvas.height; // pixeles y0 de arriba a y = 0
axes.scale = 7; // 7 píxeles de x = 0 a x = 1
axes.doNegativeX = false showAxes

(ctx, ejes);
funGraph (ctx, ejes, Temp, "rgb (66,44,255)", 4); }

función de borrado (ctx) {


ctx.fillStyle = "rgb (255,255,255)"; ctx.fillRect (0, 0,

500, 500); } </ Script> </ HEAD>

<Body onload = "draw ()"> <script>


</ script> <p> <center>

<Font face = "Verdana" size = "+ 2">


Temperaturas medido <br>
<Id = lienzo "lienzo" width = "600" height = "400"> </ canvas> <br> <font face = "Verdana" size =
"- 2"> servidor Web de <br> <a href = " http://www.eletronicain.it/">ElettronicaIN </a> </ font> </
center> <p> </ body> </ html>

página debe ser mostrado en la pestaña página Web 1 con - ContatoreTimer Tipo Grande + inicializa a -1 para
el título index.htm. El texto de código html que nos forzar la lectura de la temperatura de ignición del
permite ver las últimas cuatro temperaturas y gráfica sistema.
plottarne está contenida en Listado 1; poter- para el uso
simplemente añadimos (utilizando copiar / pegar) dentro - ADC_Temp de tipo float con el fin de leer el
de la ventana de configuración de página. Puesto que voltaje del sensor LM35.
tenemos que jugar dos tarea principal, podemos dividir
el programa en dos el flujo principal. La primera, en su - Temperatura_1 / Temperatura_4 número entero
mayor parte La Fig. 8, inicializará el sistema y para almacenar temperaturas.
compruebe las demandas de la toma de corriente que
está conectado al servidor web, mientras que la - B001 / B004 número entero para su visualización en
segunda macro en la página HTML de los valores de temperatura.

También se utilizaron dos constantes globales para la


La Fig. 7, Llamado por el temporizador, que se conversión de los valores de tiempo de pulso
encargará de la lectura periódica de la temperatura temporizador:
SEN- dolor y la actualización de la gama de - I MPULSI_OGNI_SECONDO 75 se aplica debido a la
temperaturas de pantalla remota. Las variables interrupción timer0 frecuencia está preajustado a 75 Hz
(este valor es debido al hecho de que el prescaler de
utilizadas son quel- describen a continuación.

En la electrónica ~ de marzo de 2014 135


Tuito, con algunas limitaciones, se proporciona por
ejemplo por www.dyndns.it. En ese momento,
configurar el módem municar a com- correctamente
con uno de estos ser- ver, elegir el acrónimo por el
que se identificará nuestro sistema embebido y eso
es todo: lo hicimos accesible desde cualquier parte
del mundo, datos suministrados por nuestra junta
incrustado.

MPLAB utilizar para integrar el código


generado por Flowcode
Utilizar Flowcode para lograr chorros pro- clientes
potenciales cada vez más complejos a un aumento en
la dificultad de la depuración de código generado
sobre todo si hay bloques dentro del código C. El De-
clásico cabrón Flowcode nos permite controlar las
variables y los estados de Si- stema pero no es
posible, en modo alguno,

Fig. 7 - Macro para


lectura de
temperatura cada
cuatro horas.

temporizador se fija en 256 y el oscilador se calcula


con- trabajar a 19.660.800 Hz;
- SECONDI_OGNI_ORA 3600 y es la constante
que le permite sabes segundos cuan- existen por
cada hora.

Para hacer una prueba sencilla, podemos conectar el


curso FL
sistema a través del cable Ethernet al router con el
que con- nettiamo red y el navegador de su
ordenador y escriba la dirección del servidor Web,
que en este caso es 192.168.0.5. La página
resultante se muestra en la Fig. 9.
UJO

Permitiendo el acceso web desde fuera de nuestro


servidor de red local es más complicado porque
CÓDIGO

implica obtener una IP fija o que se una Dispo-


sición un módem capaz de utilizar los servicios de Fig. 8 - el flujo
DNS dinámico. Un servicio gratuito de principal del
programa.

136 De marzo de 2014 ~ en Electrónica


el lenguaje HTML
El lenguaje HTML, siglas de H yper T ext M arkup
L anguage, es el lenguaje básico en el que se hacen las páginas web. Se
basa en el uso de etiquetas que le permiten dar formato al texto, según sea
DIGO

necesario. No puede ser considerado como un lenguaje de programación


no se puede definir porque algunas variables y ciclos de control, pero sólo
un lenguaje de formato de texto. Para superar esta limitación, sin embargo,
UJO CÓ

puede ser insertado en la página de contenido externo, como imágenes,


vídeo u otros scripts en lenguajes de programación como JavaScript. Las
etiquetas se incluyen entre paréntesis angulares y cada vez que una
etiqueta se abrió entonces también deben ser cerrados mediante la
inserción antes de que el nombre de la barra. Por ejemplo, para insertar el
curso FL

"texto con formato" texto en negrita, escribimos:

La Fig. 9 - página enviada por el servidor Web.

pantalla microcontrolador registra directamente. Para


estas operaciones, que pueden ser compleja para un
principiante, pero que son esenciales para un usuario
experimentado, podemos hacer uso de MPLAB y
BoostC compilador C. Ambos se descargan de la
versión gratuita de Internet, respectivamente, en www.
microchip.com y www.sourceboost.com.

Para integrar los dos sistemas tienen que prestar


mucha atención a los pasos por los que está instalado
el compilador: primero debe instalar, si no está ya
presente, MPLAB IDE, por lo que el sitio web
compilador BoostC, siguiendo el procedimiento pro. En
el paso donde se muestra la imagen en La Fig. 11 debe
seleccionar la carpeta donde se ha instalado MPLAB
IDE y haga clic en el botón "Integrar"; sólo de esta Fig. 10 páginas
enviado por el
manera será la libertad de elegir si el compilador
servidor Web.
BoostC desde el IDE. Después de la instalación, es
necesario abrir MPLAB IDE y establecer, en el menú
<B> Texto con estilo </ b>

La estructura básica de un archivo HTML se representa en


La Figura 10. A partir de la cabecera del archivo, usted tiene una
Proyecto-> Configurar ubicaciones de herramientas Idioma, cados
descripción del documento, alguna información de servicio y el cuerpo
correctiva en la información del compilador, como se muestra en La del documento en el que se pueden formatear todo el contenido de la
Fig. 12 y Fig. 13. página.
También establece otras direcciones para el "Compilador
Figura 10 - Estructura básica de un archivo HTML
BoostC para PIC18" para poder hacer uso también del
Para ver algunos ejemplos de código HTML, siempre y cuando abrimos
microcontrolador de la familia 18. En este caso, el Asesor
una página web y, si el navegador es Firefox, haga clic en el botón derecho
debe esce- boostc_pic18.exe. Mediante el uso de la versión en el área del centro y seleccione "Ver código fuente" del menú.
gratuita de BoostC puede compilaciones Lare únicos
proyectos que no superen los límites de memoria RAM y
ROM, mientras que la versión PRO, disponible desde el
fabricante, no hay restricciones de ningún tipo. Tomemos Proyecto-> Asistente de proyectos para crear un nuevo
como ejemplo el esquema que hemos logrado en el proyecto; elegir el microcontrolador que habíamos elegido
episodio 4 para el accionamiento del relé a través de en Flowcode (el PI C18F4580), nos propusimos como el
RS232. IDE MPLAB mo Apria- y desde el menú seleccione compilador BoostC para la foto de la familia 18 y agregar el
la archivo generado por Rs232.c Flowcode.

En la electrónica ~ de marzo de 2014 137


Para completar el proyecto dob- todavía biamo añadir las
bibliotecas que utilizamos dentro de Flowcode: el
propósito de regular entrar en la carpeta de compilación,
que en nuestro caso se encuentra en "C: \ Archivos de
programa \ SourceBoost", abrimos la carpeta Lib y
seleccione el archivo. lib que son nece- sario para este
proyecto. En este caso

float.pic18.lib y libc.pic18.lib, pero en los proyectos


más complejos pueden ser sarios sari a que apoyen
a todas las funciones requeridas por el código. Con
el Drag & Drop proyecto llevarlos a MPLAB nell'albe-
ro, como se muestra en Fig. 14.

Fig. 11 - Carpeta de visualización Microchip MPLAB.


Con la combinación de teclas CTRL + F10,
empezamos a recopilar y si hemos hecho todos los
pasos correctamente el resultado será positivo.

Fig. 12 - Configuración ejecutable Fig. 14 - Configuración del proyecto de depuración.


compilador BoostC para PIC16.
Ahora que el código se compila sólo tenemos que
elegir el depurador desde el menú "depurador",
programa de la vo dispositi- y realizar pruebas en
MPLAB como si tuviéramos código escrito a mano.
Si los errores o perfecciones envasados ​es
aconsejable llevar a cabo las correcciones
necesarias se encuentran en Flowcode, y no
curso FL
directamente sobre el código, por lo que, para una
generación posterior de código, para corregir
automáticamente los errores y no debe ser cuidado
retocadas a mano el código . Este sencillo dispositivo
nos permite utilizar todo el potencial de Flowcode
UJO

incluso en proyectos muy complejos, aunque tenían


disponible para la solución de problemas, una
CÓDIGO

completa y detallada como MPLAB.

Fig. 13 - Configuración ejecutable


g
Liker BoostC para PIC16.

138 De marzo de 2014 ~ en Electrónica

Você também pode gostar