sábado, 24 de octubre de 2009

RTOS

Tomado del libro "The Art of Designing Embedded Systems" 2ed de "Jack Ganssle"

Estos son mis reglas de oro para la decisión si obtener o no un RTOS

  • Cualquier sistema grande, donde "grande" se define como la pornografía (es decir, "Sé esto cuando lo veo"), se pone bien un RTOS o, en su caso, un sistema operativo convencional como Linux. Grandes sistemas siempre se hacen más grandes, grandes sistemas son inherentemente complejos, y los grandes sistemas manejan muchas diferentes actividades, por lo que se benefician de tener un entorno multitarea.
  • La mayoría de los sistemas pequeños, donde "pequeños" significa que estamos contando centavos, no le pongas un sistema operativo de ningún tipo.
  • Cuando hay vidas en juego si el sistema no es cargado ligeramente hacemos un análisis muy cuidadoso para ver si el multitarea podría crear problemas en el determinismo (ver más abajo). Si el determinismo no se puede garantizar, y si no hay ningún mecanismo de seguridad redundante, evitar un RTOS. Tenga en cuenta, sin embargo, que el traslado de tareas a los llamados de interrupción no resuelve el problema de determinismo. Un mecanismo diferente, como secuencias de disparo por tiempo, es probablemente más adecuado.
  • Si un organismo regulador debe certificar el producto, entonces, utilizar un RTOS sólo si una versión certificable está disponible. Por ejemplo, varios proveedores venden sistemas operativos comerciales certificable a DO-178B Nivel A, pero estos productos no están disponibles para todos los procesadores.
  • Si hay múltiples actividades independientes en marcha, tales como la necesidad de actualizar la pantalla al mismo tiempo que la obtención de datos y escaneo de un teclado, prefiero usar un RTOS.
  • Si un simple loop puede manejar todas las necesidades de la aplicación, y que se prevé la no necesidad futura de agregar mas funcionalidad más allá de lo que el bucle se puede manejar, no tome la RTOS


miércoles, 26 de agosto de 2009

jMegaBoard

En el desarrollo de sistemas embebidos, es de vital importancia tener los objetivos planeados, ademas de eso tener un buen hardware de entrenamiento, es por eso que decidi crear mi propia tarjeta de desarrollo.. claro basado en muchas otras que uno encuentra a cada rato y en mis como necesidades usuario..

jMegaBoard es una tarjeta que intenta reunir los componentes basicos para realizar cualquier prototipo de forma rapida, facil, y economica..., como procesador tiene el ATMEGA32 anque podria cambiarse por cualquiera que tenga la misma posicion en los pines y sea de 40 pines, pose un conecotr DB9 y el hardware necesario para la comunicacion Rs232, el cristal externo de 16MHz, Boton de reset, puerto de programacion compatible con el AVR-Doper, alimentacion externa con regulador LM7805, puertos de entrada y salida al estilo Arduino....

Aqui esta mi version de la board

Los archivos de hardware diseñado en Eagle Version 5.4.0 los puedes descargar de aqui

Hasta la proxima...

martes, 18 de agosto de 2009

Programador USB (AVR-Doper)

Luego de no realizar ningun post hace bastante tiempo he vuelto con nuevas ideas y muchas ganas de conocer mas a fondo el mundo de los microcontroladores AVR, es por eso que he decidido construir un nuevo programador que utiliza el puerto USB para la comunicacion, luego de una busqueda por la web encontre el programador "que me enamoro"... Se trata de el "AVR-Doper"( http://www.obdev.at/products/vusb/avrdoper.html )

Este programador utiliza un microcontrolador ATMEGA8 que con ayuda de las librerias V-USB virtualizan un puerto USB, brindandonos la poribilidad de realizar aplicaciones con comunicacion USB con micros que no posean este modulo.

Aunque el proyecto AVR-Doper es una tarjeta de desarrollo, realizando algunos cambios en el hardware: "quitando algunos componentes" puede ser un pequeño programador... en la siguiente pagina han realizado dichos cambios http://rototron.info/default.aspx?Page=USBAVR/USBAVR.aspx

y como es obvio yo tambien he realizado algunos cambios en el hardware en cuanto al diseño de la PCB, los cambios que realizaron fueron minimos, se trato de minimizar el tamaño de la tarjeta y se quitarin las conexiones de la capa Top ya que cabia la posibilidad de realizarlos en la capa Botoom. 

Ademas se añadieron los nombres de los pines del conector en la capa Top

Los archivos de el PCB Modificado lo puedes descargar de aqui....

el firmware lo puedes encontrar el la pagina del AVR-Doper

Hasta la proxima....

domingo, 22 de marzo de 2009

Iniciadnos con WinAVR

WinAVR es una herramienta que nos brinda la posibilidad de realizar desarrollos firmware para microcontroladores AVR, dicha herramienta se basa en el reconocido compilador GCC que es código libre y abierto además cuenta con mucha información que esta disponible en la WEB, aunque la mayoría de ella en se encuentra en ingles, y no creo que sea una barrera para algunas personas pero para algunas otras si, es por eso es que me propuse construir este blog, Bueno vasta de bla bla bla y manos a la obra.

Si quieres descargar WinAVR ve al siguiente link winavr.sourceforge.net/

Al instalar este software se copian a nuestro equipo las librerías para poder trabajar con los microcontroladores AVR, una versión del compilador GCC, y algunas otras herramientas que mas adelante veremos para que las utilizaremos.

Después de instalar estas librerías con su compilador no queda mas que escribir unas cuantas líneas de código y echarlo a rodar, esto es lo que trataré de explicar de aquí en adelante, para esto debemos de contar con el código ya desarrollado para alguno de los microcontroladores AVR.

Si aun no sabes como escribir código en WinAVR te aconsejo que por ahora consigas un pequeño ejemplo básico para que trabajes, aquí uno de ellos AVR_Leds.c, si lo bajas puedes trabajar con el, se trata de un ejemplo básico donde se muestran como configurar y usar las entradas y salidas del Microcontrolador y para ello se implementa un contador accedente/descendente.

Ahora si, lo primero es abrir el programa, para aquellos que les gusta seguir instrucciones vamos a Inicio/Todos Los Programas/WinAVR-20081205.


Ahora cargamos el archivo ejemplo en un nuevo proyecto para eso vamos a el menú file – new – Project le damos un nombre y una ruta donde lo queramos guardar.

Ahora dentro de la pestaña Project - Test_AVR agregamos el archivo AVR_Leds.c que descargamos, este es el que contiene el algoritmo que ejecutara nuestro Microcontrolador y para poder “meterlo” dentro del Microcontrolador antes debemos compilarlo.

Buscamos el archivo que bajamos o en su defecto escribimos con nuestro puño y pulso y ya sabemos el resto “aceptar”, “OK”, etc.

Ahora no queda mas que compilar el proyecto pero antes debemos crear un archivo “Constructor” que será el que le dirá a él compilador que tipo de archivo se compilará y cuales serán las directrices con las que se debe compilar el código, en el se escogerá el tipo de Microcontrolador que utilizaremos, la frecuencia a la cual funcionará nuestro circuito, el formato de salida, el nivel de optimización, y además de podemos escoger el programador a utilizaremos y el puerto donde se conectará, entre otras configuraciones más que veremos muy pronto.

Existe un software que ayuda a generar este archivo de “construcción” y lo encontramos en las herramientas dentro del paquete de instalación de WinAVR, para abrirlo debemos ir a Inicio/Todos Los Programas/WinAVR-20081205/MFile[WinAVR].

Vamos al menú Makefile y en “main file name” ponemos el nombre del archivo principal de nuestro proyecto, en pocas palabras es el que contiene la función “main”, para nuestro caso es el AVR_Leds, cabe aclarar que solo se debe poner el nombre sin la extensión.

Seguimos con “MCU type”, allí escogemos el Microcontrolador que vamos a utilizar puedes elegir el que desees pero debes de tener en cuenta el código que escribiste ya que si utilizas algún modulo y el Microcontrolador que elijas no lo posea puede presentar problemas, para nuestro caso escogemos el ATMEGA32.

En Las demás opciones dejamos las que están por defecto, solo modificaremos el programador, para ello vamos a “programmer” y escogemos el programador que vallamos a utilizar, en mi caso utilizaré el ponyser, y en el Port escogemos el COM1.

No queda mas que guardar nuestro archivo “Constructor” y adicionarlo a nuestro proyecto, vamos al menú File – Save As y lo guardamos en la carpeta donde se encuentran los demás archivos del proyecto.

Lo agregamos a nuestro proyecto de la misma manera que agregamos el archivo AVR_Leds.c quedando la pestaña de la siguiente manera.

Todo esta listo para finalmente compilar el proyecto, entonces vamos al menú Tools - [WinAVR] Make All, y con esto habremos compilado nuestro desarrollo en gcc-AVR, debemos de echar un vistazo en la pestaña Output ya que si ocurre algún problema durante la compilación en este pestaña se muestran todos los resultados obtenidos, para una buena compilación debería aparecer lo siguiente:

-------- end --------

> Process Exit Code: 0

> Time Taken: 00:05

Lo cual quiere decir que nuestro código ha sido compilado con éxito, lo ultimo que queda será simular nuestro código o en su defecto realizar las pruebas del circuito.

Aqui un video, anque le falta audio puede ser de mucha ayuda.




Si lo quieres descargar lo puedes obtener de el siguiente link http://www.4shared.com/file/94567696/c48c8329/InicioWinAVR_avi.html