Publicado el

Trinket Adafruit ATtiny85. Pequeño y Poderoso.

trinket adafruit ATtiny85

 ¿Qué es un Trinket?

Trinket Adafruit ATtiny85 podrá parecer pequeño, pero no hay que subestimarlo ya que es un práctico microcontrolador que se fabricó en base a un pequeño chip con una gran capacidad, el Atmel ATtiny85.

TR1

El ATtiny85 es un pequeño circuito integrado que tiene 8K de memoria flash y 5 pines de Entrada y Salida, incluyendo entradas analógicas y salidas PWM. Se le ha diseñado un bootloader USB para poder conectarlo en cualquier ordenador y programarlo al igual que un las tarjetas Arduino.
Se hicieron algunas modificaciones en el IDE de Arduino para que funcione como un Arduino Mini. A pesar de que se puede programar utilizando el IDE de Arduino , el Trinket no es 100% compatible con Arduino.
Trinket no tiene una conexión de puerto serie (monitor serie en puerto com) para hacer debug como en Arduino, así que no podrás enviar y recibir datos vía USB. Hay dos versiones del Trinket, uno que trabaja a 3V y otro a 5V. ambos funcionan de la misma manera, pero tienen diferentes voltajes para operar.
TR2
Aquí tienes algunas características del Trinket Adafruit ATtiny85.

  • ATtiny85 on-board, 8K de memoria flash, 512 bytes de SRAM, 512 bytes de la EEPROM.
  • Oscilador interno que funciona a 8 MHz, pero puede ser duplicado en software para 16MHz.
  • Programador USB con un indicador LED, así puedes programarlo con AVRdude (con una simple modificación de configuración) y/o el IDE de Arduino
  • Conector Mini USB o Micro USB para poder cargar sketches y/o usando puertos USB, puedes utilizar cualquier cable para cuando quieras reprogramar tu Trinket.
  • 5.25K bytes disponibles para su uso (2.750K tomados para el bootloader).
  • Disponible en 3V y 5V.
  • 3,3 V o 5,0 V. Cuenta con un regulador de potencia con capacidad de salida de 150 mA. Hasta 16V DE ENTRADA, con protección contra polaridad inversa, térmica y límite de corriente de protección. Con alimentación vía USB o entrada externa (como una batería).
  • Botón de reinicio para entrar en modo bootloader o reiniciar el programa.Sin necesidad de desconectar y volver a conectar el USB cada vez que quieras restablecer o actualizar.
  • 2 Pines GPIO compartidos con la interfaz USB.
  • Los 3 pines de E/S (independientes) tienen una entrada analógica y 2 salidas PWM.
  • Los 2 pines de E/S compartidos tienen 2 entradas analógicas y una salida de PWM.
  • I2C, SPI compatibles con módulos y sensores.

tr4

Trinket Adafruit ATtiny85. Iniciamos con el Tour.

PUBLICIDAD TUTORIALES - MAKER 16
[nextpage title=»Revisón de tarjeta.»]

Tour por el Trinket Adafruit ATtiny85.

Te mostraremos una guía para saber más sobre el poderoso Trinket.pr5

  • Conector USB mini-B – para alimentación y/o USB bootloading. Algunos ATtiny85 utilizan un PCB que se desliza dentro de un puerto USB para reducir costos.
  • LED verde – Sabrás que tu Trinket está encendido cuando el LED encienda.
  • #1 LED rojo – Este tiene doble función. 1.- Está conectado con una resistencia en serie para el pin digital #1 (pines GPIO). 2.- Cuando el Trinket esté en modo bootloader este led parpadea continuamente y al cargarle un programa se apagará.
  • Entrada + de la batería ( BAT) – Este pin puede tener hasta 16V DC de entrada, y tiene protección de polaridad inversa y protecciones térmicas. Su circuito hace que se utilice la batería o alimentación USB de forma segura.
  • Salida USB +  – También puedes obtener 5V de alimentación desde tu USB en caso de que necesites 500mA o más de corriente desde tu PC o una Power BANK.
  • Placa – Es donde está montado todo el Trinket puedes conectarla fácilmente y tiene un montón de espacio para trabajar y conectar en él , cuatro orificios de montaje hacen que sea fácil fijar (puedes utilizar tornillos de 2mm) a una placa o protoboard, dependiendo de como te acomodes con tu Trinket.
  • GPIO – 5 pines GPIO, a 3V o 5V,  observa la siguiente sección para conocer a fondo los pines del Trinket.
  • 3 o 5V de salida – un regulador incorporado proporciona 3,3 V o 5V con salida para alimentación de LED, sensores, motores pequeños, etc.
  • Reset – un botón de reinicio, iniciará el bootloader cuando se pulse y el Trinket esté conectado a un ordenador. Si no está conectado a un ordenador, el Trinket es muy inteligente como para ir directamente al programa.
  • Pin de Reset externo – Destacamos éste pin para que puedas restablecer y crear un reset externo.

[nextpage title=»Pinout del Trinket.»]

Los pines del Trinket.

Ambas versiones de Trinket tienen exactamente las mismas dimensiones para la ubicación de los orificios.
pr6
El Trinket anterior (Mini USB) tiene las mismas dimensiones que los Trinket de 3 V y 5 V.
pr2
Son casi idénticos pero existen ligeras diferencias en las conexiones: uno tiene una salida de 3V en la parte inferior derecha, el otro tiene una de salida de 5V.tr4
tr5
Estos son los pines del ATtiny85.
tr6

Pines de Poder

Comenzaremos con los pines superiores BAT+ y USB+ y GND:
TRPODER
BAT +: Es la entrada positiva de la batería. Si quieres encender el Trinket de una batería, adaptador de corriente, un panel solar o cualquier otro tipo de fuente de alimentación, conecta en éste pin positivo. Si tienes un Trinket de  3V, es necesario al menos 3,5V entrada para conseguir una buena salida de 3,3V pasa lo mismo con el de 5V. Esta entrada está protegida contra polaridad inversa.
USB : Si quieres utilizar el puerto USB con 5V de alimentación para algo, como una batería, o si necesitas más de 150mA de corriente (este pin puede suministrar 500mA desde puertos USB) o para detectar cuando el Trinket está conectado, este pin tendrá 5V de alimentación en él, y sólo si, su conexión es a través del conector mini-B.
GND: Es el pin a tierra común. Este pin lo puedes utilizar para cualquier conexión a tierra.

Pines GPIO (General Purpose Input/Output, Entradas/Salidas de Propósito General)

TRGPIO

Las terminales de salida o de entrada (consulta la hoja de datos de la referencia anterior para el núcleo ATtiny85), estos pueden utilizarse como entradas y salidas digitales, para leds, botones e interruptores etc. Pueden proporcionar hasta 20mA de corriente. No debes conectar un motor u otro componente de alta potencia directamente a los pines. En su lugar, utiliza un transistor para alimentar el encendido/apagado de motor DC.
En un Trinket de 3V, el nivel de salida de 3,3 V son GPIO, y no debe ser utilizado con 5V. En un Trinket de 5V, el GPIO, el nivel de salida es de 5V y se puede utilizar con entradas de 3V, pero puede dañar los dispositivos electrónicos que son 3V de entrada.
GPIO #1 – Está conectado a PB1 en el ATtiny85. Este pin puede ser utilizado como una salida PWM, y también se utiliza para la salida de datos de SPI. Este pin está conectado con LED incorporado (como el pin 13 en un Arduino).
GPIO #2 – Está conectado a PB2 del ATtiny85. Este pin puede ser utilizado como una entrada analógica (conocido como Analog A1 en Arduino), y se utiliza también para I2C y SPI reloj.
Las 2 entradas USB se utilizan también para la programación. Esto significa que cuando el Trinket está conectado a un ordenador y en modo bootloader o en la mitad de la carga de un nuevo programa, se utiliza para enviar datos a/desde el ordenador.  Es posible compartir estos pines si eres cuidadoso. El mejor uso de estos pines es como salidas como los LED, o entradas como botones, solo asegurate de no presionar los botones mientras esté conectado al puerto USB. Si no quieres conservar estos pines te recomendamos no utilizarlos a menos de que estés seguro que los necesitas, ya que es posible que tengas que desconectar algo para reprogramar el Trinket.
GPIO #3 – Está conectado a PB3 del ATtiny85. Este pin se utiliza para la programación de USB, pero también se conoce como una entrada analógica (Analog A3). Este pin tiene una resistencia de 1.5K pull-up a 3,3V incorporada en el Trinket de USB por lo que pueden ser difíciles de usar para entrada analógica o digital.
GPIO #4 – Está conectado a PB4 del ATtiny85. Este pin se utiliza para la programación de USB,pero también puede ser utilizado como un PWM salida analógica y una entrada analógica conocida como Analog A2 nota la numeración de los pines analógicos: Pin 2 es analógico 1, el pin 3 es analógico 3, el pin 4 es analógico 2.

Reset y regulador de salida

Rst (pin de reset) –Está directamente conectado al ATtiny85 y también al botón de restablecimiento que se encuentra justo al lado. El pin de Reset se usa para iniciar el bootloader y restablecer en caso de que quieras volver a arrancarlo. También es posible utilizar este pin para re-programar el bootloader o quitar completamente el bootloader si tienes un programador como un AVR Dragon, MKii o USBtinyISP.
El botón de Reset – (Reinicio) no puede ser usado como un GPIO, pero creemos que es mucho más útil como un botón de reinicio.
El regulador de salida – Hay una tarjeta mini regulador de potencia que llevará hasta 16V CC desde el BAT+ o conexión USB y regula a una constante de 3,3 V o 5,0 V DC para su seguro uso con sensores y Leds. Si necesitas más corriente, es posible que quieras conectar directamente desde el pin USB positivo, que suministra 5V 500mA desde un ordenador.
[nextpage title=»Bootloader USB.»]

Cómo funciona el Bootloader USB del Trinket.

tr7

El bootloader es un pequeño software dentro del Trinket que ayuda a cargar su propio código en el espacio restante. Uno de los desafíos del Trinket ha sido instalarle un bootloader USB.

Existen bootloader USB que puede trabajar sobre la ATtiny85 pero utilizan otras compañías USB VID/PID.Así que en su lugar, se creó un cargador de arranque USB que combina un V-USB con el USBtinyISP. Este se asemeja un bootloader USBtinyISP y funciona con pocos ajustes.

[nextpage title=»Instalación de Drivers.»]
Controladores Trinket USB para Windows (Drivers).
Si estás utilizando Windows, asegúrate de ir a la página de instalación de controladores de Windows para instalar los apropiados para tu Trinket. Para Mac, OSX o Linux no es necesario instalar controladores.

Notas especiales para el uso Trinket con Linux.
No es compatible con el sistema operativo Linux. Sin embargo, puedes intentar lo siguiente (funciona para algunos equipos Linux). Siempre puedes ejecutar avrdude o IDE Arduino como root, asegúrate de que dispones los permisos adecuados.
clic :https://learn.adafruit.com/usbtinyisp/avrdude#for-linux

Cómo iniciar el bootloader.

tr6
Antes de intentar cargar el código en el Trinket debes estar en el modo Bootloader y el LED rojo debe de estar parpadeando. Una vez que el LED rojo se detiene, debes pulsar el botón RESET para volver a entrar en modo bootloader.
No mantengas pulsado el botón de reinicio, asegúrate  de pulsar y soltar.

Instalación del controlador en Windows

Antes de conectar tu Trinket, tendrás que instalar un controlador.
Haz clic a continuación para descargar el controlador (Driver).
Ejecuta y guarda el instalador.
tr9
Después tendrás que hacer clic a través de la licencia.
tr10
Selecciona los controladores que quieras instalar.
tr11
De forma predeterminada, se instala Feather 32u4 , Feather M0, Flora and Trinket / Pro Trinket / Gemma / USBtinyISP controladores. También si quieres, puedes instalar el Arduino Gemma (distinto del Adafruit Gemma.), Huzzah. Haz clic para iniciar la instalación.

tr12
Están listos tus controladores.
[nextpage title=»Configuración IDE Arduino.»]

Cómo configurar con  IDE Arduino.

Aunque Trinket tiene un conector USB, no tiene un puerto serie, por lo que no puede enviar y recibir datos desde un ordenador. Antes de cargar el programa asegúrate que el programador esté configurado al USBtiny ISP.
Nota : el Trinket no es 100% compatible con Arduino, utiliza un chip diferente (menor) que Arduino UNO, Mega, Leonardo,etc. Sin embargo, hay muchos pequeños sketchs y bibliotecas que funcionarán bien. Algunos incluso no necesitan otra cosa que cambiar el número PIN.

Código para parpadear un led (Blink).

Después de instalar los controladores en el Arduino IDE, puedes cargar un sencillo ejemplo para probar que un LED parpadee y como funciona tu Trinket.

Abre el IDE de Arduino y copia el siguiente código:

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
To upload to your Gemma or Trinket:
1) Select the proper board from the Tools->Board Menu
2) Select USBtinyISP from the Tools->Programmer
3) Plug in the Gemma/Trinket, make sure you see the green LED lit
4) For windows, install the USBtiny drivers
5) Press the button on the Gemma/Trinket - verify you see
the red LED pulse. This means it is ready to receive data
6) Click the upload button above within 10 seconds
*/
int led = 1; // blink 'digital' pin 1 - AKA the built in red LED
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

En el menú Tools, selecciona el Trinket a 8 Mhz.
tr13
En el menú Tools, selecciona el programador USBtinyISP.

tr14

Ahora puedess subir el programa a tu Trinket.
tr15
Si todo va bien, debería aparecer lo siguiente (sin mensajes de error en rojo) y, por supuesto, el LED rojo parpadeando una vez por segundo en el Trinket.
tr16.

Si algo salió mal.

tr17.
Error: No se pudo encontrar el dispositivo USBtiny significa que el bootloader no está activo. Asegúrate de presionar el botón de tu Trinket  para activar el bootloader antes de hacer clic en el botón de cargar el sketch.
Si tienes mucho texto rojo, errores y también una advertencia acerca de la verificación que no compruebe que has actualizado el avrdude.conf.
tr18.
Si tu actualizas en la descripción del ATtiny85 en el fichero de configuración mediante su sustitución, el IDE no sabe ser paciente con tu Trinket en modo bootloader y tendrá muchos errores de carga.
En Linux si obtienes el mensaje de error
usbtiny_receive: error de protocolo de control; estos pueden ser generalmente ignorados y no debe interferir con el programa. Lamentablemente el USB Linux es un poco lento comunicando con el ATtiny85 en el Trinket/Gemma y pueden causar estos errores. Si una carga falla, intenta de nuevo, ya que es probable que exista un problema intermitente.
[nextpage title=»Programando con el IDE Arduino.»]

Programación con IDE Arduino 

Una vez que hayas comprendido el ejemplo Blink básico para trabajar, podrás intentar algunas de las otras funciones de Arduino y sus bibliotecas.

pinMode() & digitalWrite() & digitalRead()

Puedes usar pinMode() para realizar entradas y salidas en cualquiera de los pines digitales #0 a #4 digitalWrite también funciona bien, y también se puede utilizar con pinMode(input) para activar las resistencias pull-up internas en un pin, por ejemplo, configurar digital #0 como entrada, con un interior pull-up y, comprobar si está siendo desactivado mediante un botón o interruptor y encender el LED rojo cuando está pulsado:

/*
Button
Turns on an LED when a switch connected from #0 to ground is pressed
This example code is in the public domain.
To upload to your Gemma or Trinket:
1) Select the proper board from the Tools->Board Menu
2) Select USBtinyISP from the Tools->Programmer
3) Plug in the Gemma/Trinket, make sure you see the green LED lit
4) For windows, install the USBtiny drivers
5) Press the button on the Gemma/Trinket - verify you see
the red LED pulse. This means it is ready to receive data
6) Click the upload button above within 10 seconds
*/
#define SWITCH 0
#define LED 1
// the setup routine runs once when you press reset:
void setup() {
// initialize the LED pin as an output.
pinMode(LED, OUTPUT);
// initialize the SWITCH pin as an input.
pinMode(SWITCH, INPUT);
// ...with a pullup
digitalWrite(SWITCH, HIGH);
}
// the loop routine runs over and over again forever:
void loop() {
if (! digitalRead(SWITCH)) { // if the button is pressed
digitalWrite(LED, HIGH); // light up the LED
} else {
digitalWrite(LED, LOW); // otherwise, turn it off
}
}

tr8
AnalogRead ()
Puede leer un voltaje analógico a digital #2 (llamada 1) analógico, digital #3 (llamada 3) analógico y digital analógico llamado #4 (2) Por ejemplo, para leer voltaje analógico en el pin #2, que se llama analogRead(1) para leer voltaje analógico en el pin#4 llamado analogRead(2). Esto es un poco confuso porque los pines analógicos están numerados de forma distinta a los pines digitales!

AnalogWrite()
Hay pocas salidas PWM en el Trinket, puedes usar analogWrite() en digital #0, #1 y #4. Por ejemplo, enviar pulsos al LED incorporado, cargar este código:

/*
Pulse
Pulses the internal LED to demonstrate the analogWrite function
This example code is in the public domain.
To upload to your Gemma or Trinket:
1) Select the proper board from the Tools->Board Menu
2) Select USBtinyISP from the Tools->Programmer
3) Plug in the Gemma/Trinket, make sure you see the green LED lit
4) For windows, install the USBtiny drivers
5) Press the button on the Gemma/Trinket - verify you see
the red LED pulse. This means it is ready to receive data
6) Click the upload button above within 10 seconds
*/
int led = 1; // pulse 'digital' pin 1 - AKA the built in red LED
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
for (int i=0; i<256; i++) {
analogWrite(led, i); // PWM the LED from 0 to 255 (max)
delay(5);
}
for (int i=255; i>=0; i--) {
analogWrite(led, i); // PWM the LED from 255 (max) to 0
delay(5);
}
}

Asegurate que en el sketch del Trinket puedas conectar el pin#4 para poder usar el PWM. Si no utilizas el último sketch tendrás que agregar manualmente las funciones como las siguientes a init y escribir los valores analógicos al pin#4. Sin embargo, si tienes el último sketch que incluye funciones para el pin #4 puedes usar “analogWrite” como en Arduino.

void PWM4_init() {
// Set up PWM on Trinket GPIO #4 (PB4, pin 3) using Timer 1
TCCR1 = _BV (CS10); // no prescaler
GTCCR = _BV (COM1B1) | _BV (PWM1B); // clear OC1B on compare
OCR1B = 127; // duty cycle initialize to 50%
OCR1C = 255; // frequency
}
// Function to allow analogWrite on Trinket GPIO #4
void analogWrite4(uint8_t duty_value) {
OCR1B = duty_value; // duty may be 0 to 255 (0 to 100%)
}

Pines (I2C)

Puede utilizar I2C con el Trinket. Si tienes la versión  v1.6.4 de Arduino (esa es la versión del paquete de soporte de Trinket, no IDE) y luego el pin trabajará en ATtiny85.
En la placa del Trinket, el pin # 0 es la SDA (datos del bus I2C), el pin # 2 es SCK (reloj I2C).
[nextpage title=»Programando con AVRdude.»]

Programación con AVRdude

SI quieres programar el Trinket directamente con avr-gcc como compilador, vi/emacs como editor y AVRdude como uploader. Que es fácil de hacer, el objetivo ATtiny85 como el chip utilizado en avr-gcc, con CPU a 8 MHz usando el oscilador interno.
Para Utilizar avrdude un pequeño cambio debes hacer a avrdude.conf. Para averiguar dónde está avrdude.conf, debes abrir una ventana de comandos (cmd: Windows, Mac, Linux: Terminal rxvt etc) y tipo de avrdude -v.
tr19

Busca el archivo de configuración de todo el sistema y encuentra avrdude.conf. Porque el bootloader USB es un poco diferente, tenemos que actualizar el archivo de configuración para tener un mayor retraso.
El camino corto
Descarga el nuevo avrdude.conf haciendo clic en el botón sobrescribir para sustituir el anterior avrdude.conf para avrdude.conf.bak y copia uno nuevo en el mismo directorio.
Descargar aquí.
Un poco diferente es el archivo de configuración necesario para Mac: avrdude.conf (versión Mac)
Descargar aquí.

El camino largo.

Si quieres actualizar tu avrdude.conf a mano, no es demasiado difícil. Abre este archivo en tu editor de texto confiable.
tr20
Encuentra el siguiente texto:
#————————————————————
# ATtiny85
#————————————————————-

tr21
Borra el texto después del encabezado ATtiny85 comenzando por la primera parte y hasta la siguiente cabecera (en la nuestra, que fue ATmega640)
tr22
A continuación, pega el siguiente texto en el punto donde acabas de borrar.

part
id = "t85";
desc = "ATtiny85";
has_debugwire = yes;
flash_instr = 0xB4, 0x02, 0x12;
eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
0x99, 0xE1, 0xBB, 0xAC;
## no STK500 devcode in XML file, use the ATtiny45 one
stk500_devcode = 0x14;
## avr910_devcode = ?;
## Try the AT90S2313 devcode:
avr910_devcode = 0x20;
signature = 0x1e 0x93 0x0b;
reset = io;
chip_erase_delay = 900000;
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
"x x x x x x x x x x x x x x x x";
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
"x x x x x x x x x x x x x x x x";
timeout = 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 1;
hvsp_controlstack =
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
hventerstabdelay = 100;
hvspcmdexedelay = 0;
synchcycles = 6;
latchcycles = 1;
togglevtg = 1;
poweroffdelay = 25;
resetdelayms = 1;
resetdelayus = 0;
hvleavestabdelay = 100;
resetdelay = 25;
chiperasepolltimeout = 40;
chiperasetime = 900000;
programfusepolltimeout = 25;
programlockpolltimeout = 25;
memory "eeprom"
size = 512;
paged = no;
page_size = 4;
min_write_delay = 4000;
max_write_delay = 4500;
readback_p1 = 0xff;
readback_p2 = 0xff;
read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
"a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
"a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
loadpage_lo = " 1 1 0 0 0 0 0 1",
" 0 0 0 0 0 0 0 0",
" 0 0 0 0 0 0 a1 a0",
" i i i i i i i i";
writepage = " 1 1 0 0 0 0 1 0",
" 0 0 x x x x x a8",
" a7 a6 a5 a4 a3 a2 0 0",
" x x x x x x x x";
mode = 0x41;
delay = 12;
blocksize = 4;
readsize = 256;
;
memory "flash"
paged = yes;
size = 8192;
page_size = 64;
num_pages = 128;
min_write_delay = 30000;
max_write_delay = 30000;
readback_p1 = 0xff;
readback_p2 = 0xff;
read_lo = " 0 0 1 0 0 0 0 0",
" 0 0 0 0 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
read_hi = " 0 0 1 0 1 0 0 0",
" 0 0 0 0 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
loadpage_lo = " 0 1 0 0 0 0 0 0",
" 0 0 0 x x x x x",
" x x x a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_hi = " 0 1 0 0 1 0 0 0",
" 0 0 0 x x x x x",
" x x x a4 a3 a2 a1 a0",
" i i i i i i i i";
writepage = " 0 1 0 0 1 1 0 0",
" 0 0 0 0 a11 a10 a9 a8",
" a7 a6 a5 x x x x x",
" x x x x x x x x";
mode = 0x41;
delay = 6;
blocksize = 32;
readsize = 256;
;
# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
memory "signature"
size = 3;
read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
"x x x x x x a1 a0 o o o o o o o o";
;
memory "lock"
size = 1;
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
"x x x x x x x x 1 1 i i i i i i";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "lfuse"
size = 1;
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
"x x x x x x x x i i i i i i i i";
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x o o o o o o o o";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "hfuse"
size = 1;
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
"x x x x x x x x i i i i i i i i";
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x o o o o o o o o";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "efuse"
size = 1;
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
"x x x x x x x x x x x x x x x i";
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x o o o o o o o o";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "calibration"
size = 2;
read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
"0 0 0 0 0 0 0 a0 o o o o o o o o";
;
;

NOTA:Si editas manualmente en Mac  se deben eliminar todas las referencias a los programadores de puerto paralelo («type = par;”).

Programar con AVRdude.
Ahora estamos listos para utilizar avrdude. Abre la línea de comandos y escribe en esta línea(sin regresar a avrdude).
avrdude -c attiny usbtiny -p85
tr23
Ahora conecta el Trinket en el puerto USB de tu ordenador y debes pulsar el botón de reinicio para entrar en modo bootloader. Debes de ver el LED rojo parpadeando. Ahora pulsa la tecla Retorno, debes obtener la misma respuesta que se muestra a continuación:
tr24

 Si obtienes esta respuesta:
Avrdude: Error: No se pudo encontrar el dispositivo USBtiny (0x1781/0xc9f) el modo bootloader no está activo, asegúrate de ver el LED rojo pulsando, pulsa el botón RESET para iniciar el modo bootloader de nuevo.

Programación con el ejemplo Blink.
Para obtener más detalles sobre el uso avrdude y avr-gcc, tienes que leer un libro o tutorial detallado. Sin embargo, puedes hacer una prueba básica al cargar el siguiente archivo HEX, parpadea el LED #1 una vez por segundo (on y off).Si quieres ver el código fuente , usa el fichero Arduino->ejemplos->basics->blink.
Descargar aquí.
Y cargarlo con el comando avrdude -c -P usbtiny attiny85 -U flash:w:trinketblink.hex o, si está dando errores, avrdude -c -P usbtiny attiny85 -D -U flash:w:trinketblink.hex. Como antes, escribe el comando y, pulsa el botón RESET para iniciar el bootloader y una vez que el LED rojo esté parpadeando, retorna al cargar, verás un montón de avrdude: 8 reintentos durante los comandos de SPI y advertencias similares. Está bien porque de la forma en que el ATtiny85 funciona, nos da un pequeño retraso al escribir el nuevo programa, y durante ese retraso, no se pueden guardar los datos USB  ni enviar datos al mismo tiempo. Esto hace que la respuesta del USB avrdude se retrase y avrdude envía alerta.
tr25
[nextpage title=»8MHz Vs 16MHz.»]
8MHz Vs 16MHz configuración de reloj.
El Trinket por defecto funciona a 8 MHz, una velocidad suficiente para casi todas las necesidades de tu microcontrolador. Sin embargo, puede que quieras utilizar el código para funcionar a 16 MHz, o quizás sólo quieres un poco de aumento de velocidad.
La velocidad de reloj de 16MHz para el Trinket de 5V
El ATtiny85 sólo está especificado para funcionar a 16 MHz cuando está alimentado a 5V, lo que significa que oficialmente sólo puede ejecutar el Trinket de 5V a 16 MHz.
Ten en cuenta que este es todavía el overclocking, su código puede ejecutarse o no. Overclocking no debería dañar el AVR, pero seguimos recomendando con 8 MHz sólo para la versión de 3V y 8 o 16 MHz sólo en la versión 5V.
Compensaciones de potencia
Duplicando la velocidad aumentará el uso de energía un poco. A 8 MHz el consumo de corriente es aproximadamente 9 miliamperios. Esa cifra incluye el LED de encendido verde que atrae a aproximadamente 3mA a 6mA para el microcontrolador. En el de 16 MHz son 12mA total. Restando la corriente del LED verde, lo que significa que 9mA para el microcontrolador.
Cómo activar el reloj de 16 MHz
En avr-gcc podemos activar los 16MHz de reloj ‘en software’ simplemente pidiendo al chip ajustar el reloj. Si estás utilizando avr-gcc, ejecuta esta como la primera línea de main().
clock(reloj prescale_set_div_1);
Puede que sea necesario añadir #include en el archivo de modo que los comandos sean reconocidos.
A continuación, asegúrate de que al compilar el código con F_CPU = 16000000.
IDE Arduino
Con 16 MHz  es muy similar a utilizar el IDE de Arduino. Agrega la siguiente línea a la parte superior de tu sketch Arduino (como la primera línea)
#include <avr/power.h>
A continuación, en setup() – añadir esto como la primera línea de la función:
si (F_CPU == 16000000) clock_prescale_set_div_reloj(1);
A continuación, selecciona Trinket de 16MHz desde las Herramientas->menú Board. El código se compila y ejecuta en 16 MHz.
tr26
[nextpage title=»Reparación de bootloader.»]
Reparación de bootloader del Trinket
El ATtiny85 no tiene una sección de bootloader protegido. Esto significa que es posible sobrescribir accidentalmente el bootloader (o incluso si se desconecta el trinket mientras cargaba podrías tener dificultades).
Puedes usar un Arduino UNO para re-programar el bootloader en tu Trinket. No se ha probado para funcionar con otro tipo de Arduino.
Conexiones:

  • Trinket VBAT+ pin en Arduino 5V (o simplemente el voltaje a través de una pila o un cable USB).
  • Trinket GND pin en Arduino GND
  • Trinket RST en Arduino #10
  • Trinket #0 pin en Arduino #11
  • Trinket #1 pin en Arduino #12
  • Trinket #2 pin en Arduino #13

A continuación, descarga,  descomprime y ejecuta el sketch Trinketloader, elije uno que coincida con tu versión de Arduino.
Descargar aquí.
Descomprime y abre  en el IDE de Arduino, selecciona el puerto serie , y debes subirlo al Arduino UNO.
Abre el puerto serie a 9600 baudios, pulsa el botón de reset  en el Trinket y haz clic en Enviar debes ver lo siguiente, firmware quemado y verificado.
tr27
[nextpage title=»Sección de descargas.»]
Descargas
Hojas de datos del regulador integrado utilizado (MIC5225 de 3,3 V y 5,0 V).
http://www.adafruit.com/datasheets/mic5225.pdf
Página web para el ATtiny85, el microcontrolador utilizado en el Trinket.
http://www.atmel.com/devices/attiny85.aspx
CÓDIGO FUENTE DEL BOOTLODER
https://github.com/adafruit/Adafruit-Trinket-Gemma-Bootloader

Windows USBtiny controlador (Driver).
Por favor ten en cuenta que no se necesita un controlador para Mac o Linux. Y el conductor no aparece como un puerto ‘COM’.Se mostrará como un ‘USBtinyISP’ dispositivo.
http://www.adafruit.com/downloads/usbtiny_signed_8.zip

ESQUEMA DE CONEXIÓN TRINKET 3.3Vtr28

TRINKET 5V

tr29

Referencia Adafruit: Tutorial Introducing Trinket.

Compartir ahora:
Deja una respuesta