Uso y Programación del AVR ATMega168 mediante GCC

Estimados, este es mi primer Tema, no soy de los que escriben mucho, pero esta página me ha servido en más de una ocasión, por lo que quisiera devolver el favor.

He estado el último tiempo trabajando en mi proyecto de Título que trata de un sistema de control de luces para espectáculos mediante un computador con un cable cruzado UTP y de forma inalámbrica por Xbee (se puede elegir el enlace). Para ello utilizé como corazón de procesamiento el famoso AVR Atmega168 (Famoso por plataforma Arduino, entre otras) de la compañía ATMEL. Este microcontrolador es de su Familia de uC de 8 bits y tiene varias versiones como el Atmega48, Atmega88, Atmega168, Atmega328, que prácticamente cambia el tamaño de la memoria Flash nada más.

Antes utilizaba el Atmel 89S52 que se encontraba dentro de la arquitectura 8052 para mis proyectos. Nunca me fui a los pic como la mayoría y tampoco quiero discutir cual es mejor o peor. Para mí el mejor es el que se adecúa a las necesidades y las realidades de cada uno, ya que a veces es más fácil encontrar uno que otro, o simplemente uno aprende a utilizar una línea de microcontroladores y con esa se queda porque acomoda y aprender a manejar todos es una pérdida de tiempo (Muchos se parecen y no es difícil cambiarse si uno quisiera, pero el tiempo muchas veces no es lo que sobra).

La cosa es que decidí cambiarme de la arquitectura 8052 a la línea de los AVR (Arquitectura RISC), que sin dudas es tremendamente poderosa.
Para ello mi intención era seguir utilizando el lenguaje C para la programación y mediante el AVRGCC es totalmente posible, a parte que el IDE AVR Studio 4 (Ahora ya está el 5) es muy bueno y lo entregan totalmente gratis!

Tuve que estudiar mucho, sobre todo de la "hoja" de datos (parece una biblia), y de diversos foros, donde por lo general la información está en inglés (a veces encontré en alemán, idioma que también domino, pero en español muy muy poco), para aprender a utilizar este bichito. Esto terminó en una buena cantidad de circuitos y ejemplos de códigos que decidí reunir, explicar y desarrollar para transformar en lo que fue el Proyecto de Licenciatura (Necesario para titularme, entregado junto con el proyecto de Título, pero que nadie pezca) y aprovechar de aportar con ello a la comunidad de electrónicos hispano-parlantes, así no se pierde el esfuerzo en un rincón de la biblioteca de la universidad.

Es el archivo que adjunto (PDF), está bastante completo (Entradas y salidas (I/O), utilización del ADC, del Comparador Analógico, Timers (Temporizadores), Counters(Contadores), USART(con chip FTDI para comunicación con USB y el Computador), memoria EEPROM, Interrupciones, Power Management (Manejo del consumo de energía), bus I2C, bus SPI, Programación ICSP, Watchdog) sin embargo no alcanzé a desarrollar todo por tiempo.
Aún así espero que le sirva a todo interesado en el tema del uso de los AVR ya que en mi opinión son muy buenos y potentes, a aparte de poder reutilizar el código en diversos otros micros de la familia. ATMEL es una muy buena compañía que está tirando para arriba bastante, ahora con sus micros de 32 bits, tienen harta info disponible (en inglés), trabajan mucho con el sector automotriz entre otros, sus hojas de datos están bien hechas y completas (por lo general) y tienen una buena comunidad (AVRFreaks).

En el trabajo se cubre el desarrollo de código con el Lenguaje C, como había mencionado, mediante GCC, y se muestra cómo adjuntar el AVRGCC al AVR Studio 4 y cómo utilizar este entorno de trabajo, cómo cargar los archivos al micro, están los circuitos para los ejemplos y todos los códigos.

Éstos micros también se pueden programas con Assembly (ASM), pero eso yo no lo cubro.

Eso sería, nuevamente espero que le ayude a la mayor cantidad de interesados posibles y agradezco a todos los que han aportado y me han ayudad a mí en mi desarrollo como Ingeniero Electrónico (Que fascinante mundo!).

Respecto a los derechos de autor del documento simplemente no lo utilizen de mala forma, cualquier uso de código/circuito (aunque la mayoría son muy básicos) se agradecería el correspondiente agradecimiento/nombramiento del autor original. Aparte de eso, pueden hacer lo que les parezca con él, ojalá difundirlo a todos los que les dificulta el inglés.
Sin embargo agrego que si quieren avanzar en este mundo es necesario que incluyan el aprender inglés como parte de sus proyectos, ya que ahí es donde se encuentra el 90% de la info.

El Proyecto de Título lo subiré pronto también, ya que muestra cómo comunicarse con el micro mediante una aplicación en el PC (Visual basic 2008 Express, que es gratis) y manejar la potencia de las luces (TRIAC y optotriac) con los deslizadores del computador. La comunicación es mediante RS485 (cableada) y Xbee (inalámbrica).
También se ve cierto desarrollo en torno a programas de modelado (Pro Engineer, Rhino, 3Ds Max) y de diseño (Illustrator, Photoshop) para la carcasa del prototipo y diseño de tarjetas impresas (PCB) mediante el Eagle y sus vistas con Eagle 3D.
Incluye el código del micro y de toda la aplicación (Cómo se realizó el protocolo de comunicación, cambio de enlace, recepción y transmisión de datos en VB2008E, creación de archivos con extensión propia, etc.).
Se viene pronto!

Sin más, les mando un saludo a todos.

PD: Se me hizo largo el tema!
 

Adjuntos

  • PROY_LIC_- UyP_AVR_GCC-DK.part1.rar
    976.6 KB · Visitas: 133
  • PROY_LIC_- UyP_AVR_GCC-DK.part2.rar
    976.6 KB · Visitas: 99
  • PROY_LIC_- UyP_AVR_GCC-DK.part3.rar
    976.6 KB · Visitas: 92
  • PROY_LIC_- UyP_AVR_GCC-DK.part4.rar
    354.2 KB · Visitas: 90
dakos, Gracias por el aporte esta muy interesante.
Yo también estoy desarrollando mi tesis con un microcontrolador atmega1284p apenas la termine también la comparto por acá.
Te aconsejo que coloques en el documento bajo que términos la compartes, puede ser por medio de una licencia gpl.
 
Última edición:
Gracias a ustedes por los comentarios, un gusto en compartir.
Lo de la licencia lo pensé, pero prefiero dejarlo a criterio del usuario/lector en este caso, esperando por supuesto el buen criterio (me importa más que se comparta y se utilice/circule libremente).
Para el proyecto final le pondré lo que me recomendaste o algo similar que ese es más cototo!
Saludos
 
Por cierto la figura 2 colocas como fuente una pagina mia, pero a mi se me olvido colocar en esa pagina la fuente de la figura, la saque de un libro "PIC Microcontrollers" de Milan Verle.


saludos
 
Te agradezco la figura entonces!, pensé que la habías creado. Pero bueno, el link del link del link, como que se tiende a perder y es difícil descubrir el origen de los archivos.
Por suerte la tenías en tu página y le mandamos los agradecimientos a Milan Verle.
Saludos y suerte con tu página
 
Hola dakos, aún no he visto tu aporte, pero quería hacerte una recomendación, me parece vital que establezcas una licencia para tus documentos, y la que más se adapta a las condiciones que estableces es la Creative Commons, Atribución, No comercial



perdon, me salió incompleto el post... decía que me parece importante que le coloques la licencia Creative Commons --> Atribución, No comercial, Comparta igual. Esto es, tu documento se puede compartir, copiar y transmitir siempre y cuando tu guardes la autoría del mismo, el documento no se puede utilizar con fines comerciales (aunque también puedes cambiar esto), y estableces que se debe compartir de igual forma que como tu lo compartes (aunque nuevamente, esto también lo puedes cambiar). Para más información, mira la página oficial de la licencia, completamente recomendadas para documentos compartidos en la red.

http://creativecommons.org/choose/

En este portal puedes establecer cómo quieres tu licencia. Por otro lado, te dejo unos links de una documentación que he realizado, que también he publicado bajo creative commons, para que tengas un ejemplo:

http://www.naxuscolombia.com/descargas/documentacion/flip/
http://www.naxuscolombia.com/descargas/documentacion/d-usbee/

Mira la segunda página de cada documento.

Aunque logicamente tu decides si pones o no licencia, te recomiendo completamente que lo hagas; he tenido tres situaciones en donde han plagiado mi información y parte de proyectos que he realizado. Te pongo un caso de esos, un video en donde recortaron los créditos de un proyecto de investigación de mi universidad, que utilizaron para presentar en un concurso de Telefónica:


Imagino que notarás cuál es el original... El caso es que te has tomado tiempo para generar una documentación y lo mínimo que puedes esperar es que te den a ti el mérito por haberla realizado, aunque es sólo mi opinión...
 
Última edición:
Gracias Alepusto.
Te encuentro toda la razón y opino igual. En este proyecto no me di el trabajo de poner la licencia como tú dices, porque no tenía mucha información y porque lo hice de forma rápida y sin pensar tanto en eso. Siempre hay gente que se aprovecha y yo lo tenía en cuenta al publicarlo así nomás, pero igual lo hice asumiendo las posibles consecuencias.
No es el trabajo grande de mi proyecto de título aunque es info muy útil. Quiero subir pronto el proyecto que hice para mi titulación y a ese sí le pondré la licencia correspondiente, por lo que te agradezco los links de información.
Espero que este trabajo sirva a muchos, si alguien lo mal utiliza, mala suerte, él lo tendrá en la conciencia (Claro el problema se complica si empiezan a adjudicarse la autoría y me empiezen a decir a mí que lo copié, por eso es mejor respaldarse con la licencia, pero ya no lo hice en este caso, en el futuro lo haré), y bueno, esa era mi intención para copartirlo y por eso no le puse la licencia, igual espero no sea el caso de mal uso.
Saludos y gracias denuevo
 
Atrás
Arriba