Programando la nueva serie Attiny 412 con Arduino Nano y Atmel Studio

programando_atiny_412_feature_image

Buscando una nueva serie de microcontroladores, nos encontramos con esta pequeña pero potente herramienta para realizar tareas sencillas a un valor económico en el mercado.

Attiny 412 Programación mediante updi

La característica mas representativa de estas pequeñas maquinas de procesos es su forma de ser programados, la cual utiliza un protocolo one-wire el cual ha sido adaptado para programar y corregir errores durante las pruebas de programación con UPDI( Unified Program and Debug Interface), donde solo se usan tres cables de conexión. 

materiales

Harfware necesario

Protoboard

Cables para protoboard (puentes)

Cable usb tipo B macho a USB tipo A macho

PC o Laptop

Arduino NANO

Attiny 412 (soldado a una placa SMD)

Capacitor Electrolítico (polarizado 1uF)

Resistencia de 4k7 kilohmios

Led (Cualquier color de baja intensidad)

Resistencia de 330 ohms

Software Necesario

ATMEL STUDIO7.0

ARDUINO IDE

Drivers para ARDUINO genèrico (CH340)

Conexiones

Realizamos las conexiones tal y como nos indica la imagen, cabe recalcar que el capacitor es para evitar que el Arduino Nano hagan un reset cada vez que grabemos un programa y se pierda la comunicación con nuestro Attiny.

programando_atiny_412_diagram

Configuración

Paso 1

Conectaremos nuestro cable usb al Arduino Nano para luego conectarlo al Ordenador, en este paso vamos a verificar mediante la herramienta Administrador de Dispositivos en el panel de control que se asigne un puerto COM al momento de conectarlo, si no es asi debemos instalar el DRIVER para el modulo de comunicación usb CH340.

programando_atiny_412_device_manager

Paso 2

Instalamos el IDE de Arduino en caso de no tenerlo, y lo ejecutamos, en la barra de herramientas superior nos dirigimos a Archivo --> Preferencias --> Gestor de Urls Adicionales de Tarjetas y en la casilla en blanco pegamos el siguiente enlace:  “http://drazzy.com/package_drazzy.com_index.json ” damos clic en ok.

programando_atiny_412_preferences

Paso 3

Procedemos a instalar las librerías para el manejo de Attiny de la nueva serie, nos dirigimos a Herramientas --> Placa: --> Gestor de Tarjetas en la ventana que nos aparece nos ubicamos en la casilla en blanco y escribimos megaTinyCore, nos aparecerá el paquete de librerías en la sección inferior y le damos clic en instalar.

programando_atiny_412_board_manager

Paso 4

Una vez instalado el paquete de librerías megaTiny core vamos a descargarnos el sketch que convertirá nuestro Arduino Nano en un grabador UPDI  del siguiente enlace https://github.com/SpenceKonde/jtag2updi

Debemos descomprimirlo en una carpeta la cual deberá tener el mismo nombre del sketch para que el IDE de Arduino pueda ejecutarla.

programando_atiny_412_open_sketch_arduino

Paso 5

Una vez abierto el sketch vamos directamente a grabarlo en el Arduino Nano verificando en la sección de herramientas, que nuestra placa sea la seleccionada y que este presente en el puerto de comunicación en nuestro caso Arduino Nano.

Placa: Arduino Nano

Procesador: Atmega 328 (old bootloader)

Puerto: COM (N) donde N: numero de puerto asignado automáticamente en el administrador de dispositivos

Damos clic en el icono de la flecha ==> para subir y grabar el sketch.

programando_atiny_412_arduino_config

Paso 6

Por ultimo ahora nuestro entorno ya esta listo para poder trabajar con la librería megaTinyCore cerraremos y abriremos el IDE de Arduino, luego nos dirigimos a herramientas y configuramos el entorno para trabajar con el Attiny412 debe quedar de la siguiente forma.

programando_atiny_412_jtag_burn

Paso 7

Ahora vamos a configurar la consola de salida de datos para obtener el enlace que usaremos para vincularlo con Atmel Studio.

Nos dirigimos a Archivo --> Preferencias --> Mostrar salida detallada y activamos las casillas compilación y subir.

programando_atiny_412_preferences_upload_output

Paso 8

Con todo configurado y comprobado el COM(N) abrimos un sketch vacío y mandamos a Subir dando clic en la flecha ==>. Observamos los mensajes que aparecen en la parte inferior la consola de Arduino. Una vez terminada la compilación y subida de datos vamos a esta consola y  buscamos mediante el scroll la siguiente línea.

C:UsersSanoc01AppDataLocalArduino15packagesarduinotoolsavrdude6.3.0-arduino17binavrdude.exe 
-C"C:UsersSanoc01AppDataLocalArduino15packagesmegaTinyCorehardwaremegaavr1.0.5avrdude.conf -v -pattiny412 -cjtag2updi -PCOM4 -e -Uflash:w:C:UsersSanoc01AppDataLocalTemparduino_build_934816sketch_sep21a.ino.hex:i

Vamos a modificarla de tal manera que nos quede de la siguiente forma, usando un bloc de notas.

programando_atiny_412_code_change

C:UsersSanoc01AppDataLocalArduino15packagesarduinotoolsavrdude6.3.0-arduino17binavrdude.exe

-C"C:UsersSanoc01AppDataLocalArduino15packagesmegaTinyCorehardwaremegaavr1.0.5avrdude.conf" -v -pattiny412 -cjtag2updi -PCOM4 -e -Uflash:w:$(TargetDir)$(TargetName).hex:i

Paso 9

Bien, ahora procederemos a instalar Atmel Studio 7. Usamos esta versión debido a que ya viene con las librerías cargadas para manejar los Atiny412.

Una vez Instalado, ejecutamos el programa y nos dirigimos a Tools --> External Tools y en la ventana que nos aparece vamos a copiar y pegar las dos líneas que resultantes del PASO 8.

En Title colocamos un nombre cualquiera para identificar nuestro programador UPDI en mi caso ATTINY412PROG.

En Command pegamos la primera línea.

En Arguments la segunda línea.

Activamos la casilla use output window y le damos click en OK.

programando_atiny_412_external_tools

Paso 10

Una vez configurado y agregado manualmente nuestro Arduino nano como programador UPDI, procedemos a ejecutar una prueba de programación mediante un diodo led. Como nos indica la siguiente imagen.

Paso 11

En Atmel Studio vamos a crear un nuevo proyecto en File --> New --> Project --> Gcc Executable Project — > OK, En la siguiente ventana que aparece (Device Selection) Buscamos y seleccionamos Attiny412 --> OK.

Una vez creado el proyecto vamos a copiar el siguiente código.

****************************************************************************************************

#ifndef F_CPU
#define F_CPU 1000000UL
#endif

#include 
#include 

int main(void)
{

PORTA.DIRSET = PIN1_bm; //Puerto para el diodo led de salida

    while (1)
    {

        PORTA.OUTSET = PIN1_bm;//led on
        _delay_ms(1000);

        PORTA.OUTCLR = PIN1_bm;//led off
        _delay_ms(1000);

    }

}

******************************************************************************************************

Presionamos la tecla F7 para compilar el proyecto y se generara nuestro archivo .hex.

Paso 12

Bien ahora vamos a grabar nuestro Attiny412, nos dirigimos a Tools --> Damos clic en el nombre de nuestro programador previamente configurado. En mi caso ATTINY412PROG, observaremos en la parte inferior la consola de salida los datos de salida y que se programo exitosamente.

programando_atiny_412_compile_result
programando_atiny_412_compile_result

HAZ LA PRUEBA!

Como podemos observar el proceso de setup es muy fácil debido a que la herramienta que usamos es una modificación desarrollada en base a una solución económica y fiable.

Por otro lado existe mucha información en la pagina oficial de Microchip sobre el uso de los diferentes módulos de este microcontrolador además de su Datasheet u Hoja de datos y configuraciones sobre puertos, Timers o temporizadores, etc.