link to the latest version

advertisement
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
AVR stands for Alf (Egil Bogen) and Vegard (Wollan)'s RISC processor
• Mega family
– AtMega328P (Arduino!)
– AtMega2560 (Mega)
– more
• Tiny family
– AtTiny25/45/85
– AtTiny24/44/84
– AtTiny2313/4313
– more
(There’s also an
Xmega family, as
well as a 32 bit
family.)
•
•
•
•
•
•
•
•
•
•
•
•
•
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
•
•
•
•
•
•
•
•
•
•
•
•
•
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
What’s inside
Mega328P
Tiny85
From code to flash
From code to flash
From code to flash
libraries
compiler
/linker
Binary executable
Usually as a Hex File
From code to flash: ascii hex file
From code to flash
Hex File
on host
Chip
From code to flash
Hex File
Hardware
programmer
Chip
From code to flash
Hex File
programming
software
(avrdude)
Hardware
programmer
usually serial
Chip
From code to flash
Hex File
programming
software
(avrdude)
usually serial
Hardware
programmer
programming
interface
Chip
From code to flash
Hex File
programming
software
(avrdude)
usually serial
Hardware
programmer
programming
interface
Chip
From code to flash
Hex File
programming
software
(avrdude)
usually serial
We’ll do it this way for Tiny85!
Hardware
programmer
programming
interface
Chip
From code to flash
Hex File
We’ll do it this way for Tiny85!
programming
software
(avrdude)
programming
interface
USB serial!
Hardware
programmer
Chip
From code to flash
Hex File
We’ll do it this way for Tiny85!
programming
software
(avrdude)
programming
interface
USB serial!
running
“ArduinoISP”
sketch
Chip
From code to flash: Arduino
Hex File
programming
software
(avrdude)
programming
interface
serial!
Chip
From code to flash: Arduino
Hex File
programming
software
(avrdude)
programming
interface
serial!
Chip
From code to flash: Arduino
Hex File
programming
software
(avrdude)
USB
serial driver
serial
programming
interface
USB-serial chip
on Arduino
USB
Chip
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/hardware
linux: /usr/share/arduino/hardware
• In your Arduino directory (make dir “hardware” if
needed)
Win: My Documents/Arduino/hardware
linux: $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 at
hardware/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
–P
–b
–p
–c
–t
/dev/ttyUSB0 (/dev/ttyACM0)
COM4 (or whatever)
19200
t85
<path to avrdude.conf>
avrdude: stop complaining!
part
id
desc
has_debugwire
flash_instr
eeprom_instr
=
=
=
=
=
"t85";
"ATtiny85";
yes;
0xB4, 0x02,
0xBB, 0xFF,
0xBC, 0x02,
0x99, 0xE1,
0x12;
0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
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 resetter
https://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 Tinys
Pins USART PWM A/D
Flash/RAM
chans inputs /EEPROM
Tiny85
8
No
2
4
8K/512/512
Tiny84
14
No
4
8
8K/512/512
Tiny4313 20
Yes
4
0
4K/256/256
Tiny13(a) 8
No
2
4
1K/64/64
There are lots more, but these are a fine starting place.
Architectures
Download