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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.


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.