Tarjeta de desarrollo AVR [Actualizado]

Buenas a todos.

Hacía ya unos días que no publicaba nada, pero la verdad fue porque no hice nada que valiera la pena publicar (sin contar conque tuve examen 😛 ). El caso es que hace unos días diseñé una tarjeta de desarrollo para microcontroladores AVR, que, en teoría, es universal (bueno, no soporta micros de montaje superficial pero debería soportar los demás).

Como ya he comentado, he empezado a ver programación de AVRs en C, y debo admitir que usar la protoboard para las conecciones no es muy cómodo, así que diseñé esta tarjeta para facilitar un poco el asunto, y como soy flojo decidí hacerla universal, así no tenía que hacer varias para cada micro.

Aquí les dejo un par de imágenes:

DSC07101

DSC07138

Actualización: Jajaja, lo siento. Anoche olvidé explicar que era cada cosa:

DSC071552

  1. Conección del programador. Los 4 pines se conectan al micro. De arriba para abajo son: Sck, Reset, Miso y Mosi.
  2. Reset. Está adaptado para conectarse a cualquier lugar de la tarjeta, o para no conectarse.
  3. Zona principal. Aquí se conecta el micro y se hacen todas las conecciónes, ya sea alimentación de energía, cconecciónes al cristal o entradas/salidas.
  4. Tierra
  5. Voltaje
  6. Alimentación. Decidí usar un conector USB ya que generalmente están regulados a 5V. Tiene un LED que indica que está encendido.
  7. Cristal. Está diseñado para poder cambiar de cristal y de conección al micro.

Las demás fotos las pueden encontrar en mi Flickr.

El esquema y el diseño de pcb (que no usé, pero si diseñé) los pueden encontrar aquí. Siéntanse libres de modificarlos 🙂 .

Saludos.

[Linux] Usar AVRdude sin ser super usuario

Buenas noches.

Estoy comenzando a programar microcontroladores AVR en C, para lo cual necesito usar un programador, a diferencia de Arduino. La verdad llevo un par de días haciendo todos los comandos a mano, y en ese caso usar sudo con avrdude no es un inconveniente, pero quise probar Eclipse, ya que Atmel Estudio no esta disponible para Linux. Desafortunadamente, para acceder a los puertos usb del computador necesito los privilegios de root, razón por la cual siempre me votaba un error. Después de un rato, logré hacerlo funcionar. He aquí como lo hice:

Nota: Estos pasos funcionaron en mi instalacion de Debian 8 (Jessie) con un programador USBasp.

Primero necesitamos saber un par de datos de nuestro programador. Para ver esta información, con el programador conectado ejecutamos:

lsusb

A mí me salió esto:

Bus 001 Device 006: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb

(Yo para saber cual era, ejecuté el comando con el programador conectado y luego sin el programador 😉 )

La información que necesitamos son los números que van después de “ID”, que son 16c0 el “Vendor ID” y 05dc el “Product ID”.

Ahora tenemos que crear un archivo con las reglas de nuestro programador:

sudo nano /lib/udev/rules.d/41-atmega.rules  (Reemplaza nano por el editor que prefieras)

Y luego le ponemos las siguientes líneas:

#Nombre para identificarlo. Este es un comentario
SUBSYSTEM==”usb”, ATTR{product}==”<NOMBRE DEL PROGRAMADOR>”, ATTR{idVendor}==”<VENDOR ID>”, ATTR{idProduct}==”<PRODUCT ID>”, GROUP=”dialout”, MODE=”0666″

No olvides poner la información de tu programador. Por ejemplo, el mío quedó así:

#USBasp
SUBSYSTEM==”usb”, ATTR{product}==”USBasp”, ATTR{idVendor}==”16c0″, ATTR{idProduct}==”05dc”, GROUP=”dialout”, MODE=”0666″

Con esto permitimos a todos los usuarios del grupo “dialout” acceder al programador. Ahora tenemos que meter a nuestro usuario en el grupo dialout:

sudo gpasswd -a <USUARIO> dialout

Y, finalmente, reiniciamos el daemon de udev para que podamos empezar a usarlo:

sudo udevadm trigger

O reiniciamos el equipo.

Fuentes: avr-eclipse micahcarrick

Espero les sea útil. Pienso hacer un pequeño tutorial de programación en AVR con C, por si les interesa 🙂

Saludos.