Download - Welcome to Workshop 88’s
Welcome to Workshop 88’s
Tiny85 Class
Please download Tiny core libs from:http://code.google.com/p/arduino-tiny/(for Arduino 1.0, not 1.5!)Unzip and stash the ‘tiny’ folder for later.
ver 1.1 2/1/14
Objective of class
You walk out with a Tiny85 with code that you wrote and that you burned into the chip.
What we’ll cover• Why use a Tiny85 (or friends)? Why not?• How Arduino IDE works with Tinys• Putting new core libs on your IDE• Put a Tiny blinkie on your breadboard• Write your own blinkie• Porting code to Tiny85• Mapping Tiny85 pins to Arduino pins• How to burn code to a Tiny: programming, programmers, programs…• Burn your blinkie!• Fuses and avrdude• Using RESET as a 6th I/O pin• Commercial Tiny85s• Other Tinys: 84, 4313
Atmel 8 bit AVR familes
• Mega family– AtMega328P (Arduino!)– AtMega2560 (Mega)– more
• Tiny family– AtTiny25/45/85– AtTiny24/44/84– AtTiny2313/4313– more
AVR stands for Alf (Egil Bogen) and Vegard (Wollan)'s RISC processor
(There’s also an Xmega family, as well as a 32 bit family.)
What’s inside Mega328P
• 32K program flash• 2K RAM• 1K EEPROM• Two 8-bit counters• One 16-bit counter• Six PWM channels• Serial USART• I2C/TWI interface• 8 channel A/D converter• 23 I/O lines• SPI interface • Analog comparator• Watchdog timer
What’s inside Mega328P
Tiny85
• 32K 8K program flash• 2K 512B RAM• 1K 512 B EEPROM• Two 8-bit counters• One 16-bit counter• Six Two PWM channels• Serial USART• I2C/TWI USI interface • 8 4 channel A/D converter• 23 6 I/O lines• SPI interface• Analog comparator• Watchdog timer
From code to flash
From code to flash
From code to flash
compiler/linker
libraries
Binary executableUsually as a Hex File
From code to flash: ascii hex file
From code to flash
Hex Fileon host
Chip
?
From code to flash
Hex File
Chip
Hardwareprogrammer
From code to flash
Hex File
Chip
programmingsoftware
(avrdude)Hardware
programmer
usually serial
From code to flash
Hex File
Chip
programmingsoftware
(avrdude)Hardware
programmer
usually serial
programminginterface
From code to flash
Hex File
Chip
programmingsoftware
(avrdude)Hardware
programmer
usually serial
programminginterface
wires!
From code to flash
Hex File
Chip
programmingsoftware
(avrdude)Hardware
programmer
usually serial
programminginterface
wires!
We’ll do it this way for Tiny85!
From code to flash
Hex File
Chip
programmingsoftware
(avrdude)
USB serial!
programminginterface
wires!
Hardwareprogrammer
We’ll do it this way for Tiny85!
From code to flash
Hex File
Chip
programmingsoftware
(avrdude)
USB serial!
programminginterface
wires!
running“ArduinoISP”
sketch
We’ll do it this way for Tiny85!
From code to flash: Arduino
Hex File
Chip
programmingsoftware
(avrdude)
serial!
programminginterface
programmeremulatorprogram
From code to flash: Arduino
Hex File
Chip
programmingsoftware
(avrdude)
serial!
programminginterface
Arduino bootloader!programmeremulatorprogram
From code to flash: Arduino
Hex File
Chip
programmingsoftware
(avrdude)
serialprogramming
interface
Arduino bootloader!programmeremulatorprogram
USBserial driver
USB-serial chipon Arduino
USB
Arduino bootloader burner
From code to flash
From code to flash
Get your Tiny on!
• Refer to pinout and connect +5V and ground• The Tiny is preprogrammed with a blink
sketch on pin 5• Put an LED on pin 5 and verify that it works!
Installing Tiny core libs• Unzip if needed• Copy “tiny” directory to the “hardware” directory
either:• In main Arduino installation
Win: Program Files/arduino-1.0.5/hardwarelinux: /usr/share/arduino/hardware
• In your Arduino directory (make dir “hardware” if needed)Win: My Documents/Arduino/hardwarelinux: $HOME/sketchbook/hardware
boards.txt
• Contains definitions for all available boards• In top “tiny” directory, copy “Prospective
Boards.txt” to “boards.txt”• I suggest cleaning up your new “boards.txt”,
leaving only stanzas for– ATtiny85 @ 8 MHz– ATtiny85 @ 1 MHz
Write your blinkie!
• Recognizable pattern• 1-3 LEDs (5 max)• Use variables or #defines for pins
Porting
Tiny has:• Digital pins 0-5• Analog pins A0-A3• Change your pin numbers to ones Tiny has• Find the mapping in the Tiny core libs athardware/tiny/cores/tiny/pins_arduino.c• Figure out which physical pins you’re using!
Connecting Arduino as ISP to your Tiny85
You need 6 wires:• Power and ground• SPI lines MISO, MOSI, SCK• Reset
Line names are marked on the mini-shield
Using Arduino as ISP• Plug in your Arduino• Select the board type of your Arduino• Load ArduinoISP from Examples• Upload to your Arduino• Plug in mini-shield (must be AFTER loading
ArduinoISP!)• Select Tiny85 board• Select Arduino as ISP as Programmer• Load your code• Click Upload!
avrdude: path
• Windows: try \Program Files\arduino1.0.x\hardware\tools\avr\bin
• Linux: try<arduino-root>/hardware/tools(mine was /usr/share/arduino/hardware/tools)
avrdude: command line
$ avrdude– P /dev/ttyUSB0 (/dev/ttyACM0)– P COM4 (or whatever)– b 19200– p t85– c <path to avrdude.conf>– t
avrdude: stop complaining!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;
## next 2 are fakes so avrdude won't complain pagel = 1; bs2 = 1;
## no STK500 devcode in XML file, use the ATtiny45 one stk500_devcode = 0x14;
Fuses
• (Not what it sounds like)• Nonvolatile configuration bits• There are 3:
– FUSE LOW BYTE– FUSE HIGH BYTE– FUSE EXTENDED BYTE
• Logic values confusing:1 (not programmed) = FALSE
FUSE LOW BYTE
FUSE HIGH BYTE
FUSE EXTENDED BYTE
HV programmer/fuse resetter
HV programmer/fuse resetterhttps://sites.google.com/site/wayneholder/attiny-fuse-reset
Other Tiny85s: Babygnusbuino
Other Tiny85s: DigiSpark
Other Tiny85s: Gemma
Other Tiny85s: Trinket
Other Tiny85s: EezeeTiny
Other Tiny85s: PicoDuino
Other Tiny85s: my dollhouse nodes
Other TinysPins USART PWM
chansA/Dinputs
Flash/RAM/EEPROM
Tiny85 8 No 2 4 8K/512/512Tiny84 14 No 4 8 8K/512/512Tiny4313 20 Yes 4 0 4K/256/256Tiny13(a) 8 No 2 4 1K/64/64
There are lots more, but these are a fine starting place.
Architectures