104 lines
2.5 KiB
Markdown
104 lines
2.5 KiB
Markdown
|
|
|||
|
# ATTiny85 Hello World
|
|||
|
|
|||
|
Blinking an LED using an ATTiny85 programmed with `avr-gcc` and `avrdude` on Mac OS X.
|
|||
|
|
|||
|
## Mac OS X AVR toolchain install
|
|||
|
|
|||
|
Using Homebrew, tap [larsimmisch's homebrew-avr repository](https://github.com/larsimmisch/homebrew-avr):
|
|||
|
|
|||
|
```
|
|||
|
brew tap larsimmisch/avr
|
|||
|
brew install avr-libc
|
|||
|
```
|
|||
|
|
|||
|
## Build steps
|
|||
|
|
|||
|
1. Compile with `avr-gcc`
|
|||
|
2. Prepare the hex file with `avr-objcopy`
|
|||
|
3. Flash the hex with `avrdude`
|
|||
|
|
|||
|
```
|
|||
|
avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=attiny85 -o hello.o hello.c
|
|||
|
avr-objcopy -j .text -j .data -O ihex hello.o hello.hex
|
|||
|
avrdude -c usbtiny -p t85 -U flash:w:hello.hex:i
|
|||
|
```
|
|||
|
|
|||
|
`F_CPU` must be defined at the `avr-gcc` command line or above the `#include <util/delay.h>`
|
|||
|
so the delay library knows the microcontroller's clock speed.
|
|||
|
|
|||
|
## Breadboard configuration
|
|||
|
|
|||
|
Wire the ISP-6 cable from the USBTinyISP to the breadboarded ATTiny85 using jumpers.
|
|||
|
|
|||
|
### ISP-6 pinout
|
|||
|
|
|||
|
Looking at the ISP-6 *cable* with the connector key at the bottom, the pins are numbered
|
|||
|
like this:
|
|||
|
|
|||
|
```
|
|||
|
+-----------+
|
|||
|
|(6) (4) (2)|
|
|||
|
|(5) (3) (1)|
|
|||
|
+-----------+
|
|||
|
|_|
|
|||
|
```
|
|||
|
|
|||
|
1. MISO
|
|||
|
2. Vcc
|
|||
|
3. SCK
|
|||
|
4. MOSI
|
|||
|
5. Reset
|
|||
|
6. Ground
|
|||
|
|
|||
|
(See also [this photo](http://www.ics.uci.edu/~givargis/courses/cs145/resources/avrisp.png))
|
|||
|
|
|||
|
### ATTiny85 pintout
|
|||
|
|
|||
|
The ATTiny85's pins are:
|
|||
|
|
|||
|
```
|
|||
|
(8) (7) (6) (5)
|
|||
|
+---------------+
|
|||
|
| |
|
|||
|
| o |
|
|||
|
+---------------+
|
|||
|
(1) (2) (3) (4)
|
|||
|
```
|
|||
|
|
|||
|
1. PB5 (Reset)
|
|||
|
2. PB3
|
|||
|
3. PB4
|
|||
|
4. Ground
|
|||
|
5. PB0 (MOSI)
|
|||
|
6. PB1 (MISO)
|
|||
|
7. PB2 (SCK)
|
|||
|
8. Vcc
|
|||
|
|
|||
|
### Programming jumpers
|
|||
|
|
|||
|
Connect the ISP and the ATTiny85 together on the Ground, MISO (Master In, Slave Out),
|
|||
|
MOSI (Master Out, Slave In), SCK (Serial ClocK), Reset, and Vcc pins:
|
|||
|
|
|||
|
- ISP-6 pin 1–ATTiny85 pin 6 (MISO)
|
|||
|
- ISP-6 pin 2–ATTiny85 pin 8 (Vcc)
|
|||
|
- ISP-6 pin 3–ATTiny85 pin 7 (SCK)
|
|||
|
- ISP-6 pin 4–ATTiny85 pin 5 (MOSI)
|
|||
|
- ISP-6 pin 5–ATTiny85 pin 1 (Reset)
|
|||
|
- ISP-6 pin 6–ATTiny85 pin 4 (Ground)
|
|||
|
|
|||
|
N.B. The ATTiny's pins 2 and 3 are unconnected.
|
|||
|
|
|||
|
### LED circuit
|
|||
|
|
|||
|
Power the LED with a transistor and a series resistor, switching the transistor using a resistor
|
|||
|
from the ATTiny's pin 2 to the transistor's base.
|
|||
|
|
|||
|
## References
|
|||
|
|
|||
|
- [Honey, I Shrunk the Arduino](http://www.instructables.com/id/Honey-I-Shrunk-the-Arduino-Moving-from-Arduino-t/?ALLSTEPS)
|
|||
|
- [ATTiny85 and ISP-6 pinouts](http://fabienroyer.wordpress.com/2010/12/12/build-a-cheap-flexible-avr-microcontroller-programming-target-board/)
|
|||
|
- [ATTiny85 pinout](http://teslaui.files.wordpress.com/2012/11/attiny85_pins.png)
|
|||
|
- [Atmel's in-system programming documentation](http://www.atmel.com/Images/doc0943.pdf)
|
|||
|
|