Learning ATtiny Microcontrollers
The table below lists specific items, components and or parts in relation to use or interfacing with various ATtiny microcontrollers. The remainder of this page gives general background information about using and programming ATtiny microcontrollers.
|ATtiny Part Number||Component/ Project||Description||Data Sheet|
|ATtiny85||Blink LED||Demonstrate programming the ATtiny85 to blink an LED||ATtiny85|
|ATtiny85||Buttons||Demonstrate button interfacing with ATtiny85 and software debouncing methods||ATtiny85|
|ATtiny85||Serial Comms (USB-TTL)||Demonstrate serial communications with ATtiny85 with USB-TTL converters/PC Com ports||ATtiny85|
|PCF8574||PCF8574A 8-bit port expander||Demonstrate interfacing ATtiny85/Digispark with I2C using the PCF8574A 8-bit port expansion chip.||PCF8574|
|HCSR04||HC-SR04 Ultrasonic Sensor||Demonstrate interfacing ATtiny85/Digispark with the HC-SR04 Ultrasonic Sensor, distance readings in cm via RS232-USB to PC.||HCSR04|
Programming the ATtiny (Arduino IDE)
There are a variety of methods for progamming ATtiny microcontrollers, but I use the Arduino IDE and Uno as an ISP programmer (since I have a Uno on hand and therefore don't need to outlay money for a dedicated hardware programmer).
Also, since Digispark clones (an ATtiny85 on a small breakout board with PCB traces enabling inserting into a USB connector) are actually cheaper to purchase than stand-alone ATtiny85 chips, "direct" programming from the Arduino IDE via USB and a bootloader is also used. The USB/bootloader is convenient (don't need to have the Uno/ISP programmer connected) but this takes up ~2K of code space, of which the ATtiny85 only has ~8K to begin with.
- Programming ATtiny85/Digispark via Arduino IDE
- Programming ATtiny85/Digispark via Arduino Uno as ISP
- Installing ATtiny boards into Arduino IDE
- Loading Micronucleus bootloader into ATtiny85
The Digispark has a bootloader installed that allows the breakout board to act as a USB device which then can be programmed using the Arduino IDE. If the bootloader has been erased/corrupted and or you are using a bare ATtiny85, instructions for uploading the bootloader are in a following section.
- Step 1: Obviously you will need the Arduino IDE installed (see (1) for the Arduino package).
- Step 2: After the Arduino IDE is installed, the Digispark drivers and "boards" will need to be downloaded and then installed via the Arduino IDE. See the Digispark wiki for detailed instructions (2).
Once the Arduino IDE/Digispark files have been installed, programming a Digispark board (or ATtiny85 with installed bootloader) simply involves selecting "Digispark (Default - 16.5mhz)" via the Ardinuo IDE Tools|Board menu, entering the appropriate sketch in the editor window and then clicking the upload button.
The bottom status box on the Arduino IDE will display the results of the compiling of the sketch, and if successful will ask to plug in the Digispark/ATtiny85 (which you have 60 seconds to comply). After insetring the Digispark to the USB connector, the upload progress will be displayed in the Arduino IDE status box, and upon successful completion (after a 5 second delay) the uploaded code on the Digispark/ATtiny85 will start running.
Upon subsequent insertions of the Digispark into a USB powered socket (or power-up via other suitable source) the previously uploaded firmware will run after a 5 second delay (during which the bootloader is accessing if you are trying to reprogram the chip).
Atmel microcontrollers such as the ATtiny85 do not need a "high voltage" (generally 12V) to force the target microcontroller into programming mode. The ATtiny85 can be programmed using "normal" logic level voltages (i.e. 5V) which is called In System Programming (ISP). ISP is effectively an SPI interface with the microcontroller RESET pin used as SPI Slave Select, which can be implemented on any microcontroller that supports SPI. The Arduino community has created a sketch called ArduinoISP, which allows an Arduino board such as the Uno to behave as an in-system programmer.
Program Uno as ISP
Using the Arduino IDE select the ArduinoISP sketch using the menu selection Files|Examples|11.ArduinoISP|ArduinoISP
With the Tools|Boards menu select "Arduino/Guniuno UNO" as the board
Plug the Uno into the USB port (check in Tools|Port that the correct port is selected for the Uno)
Click the "upload" icon and the sketch will be uploaded to the Uno, which can then be used as an ISP programmer
Using Uno/ISP to program ATtiny85/Digispark
These steps are for programming the ATtiny85/Digispark with an Uno programmed to act as an ISP. This is not loading the bootloader (this will actually over write the bootloader if present), this is just loading IN GENERAL compiled code into the ATtiny85/Digispark with the Uno.
Connect the Uno to the ATtiny85/Digispark as per the following diagram.
The pin connections are as follows:
- ATtiny85/Digispark Pin 0 to Uno Pin 11
- ATtiny85/Digispark Pin 1 to Uno Pin 12
- ATtiny85/Digispark Pin 2 to Uno Pin 13
- ATtiny85/Digispark Pin 5 to Uno Pin 10
Enter/select the sketch in the Arduino IDE (eg FILE|examples|01 Basics|Blink)
Using the Arduino IDE in the Tools menu, select the Board = "Attiny 25/45/85", Processor = "Attiny85", Clock = "Internal 16Mhz".
If these selections are not available in the Arduino IDE, you will need to download and install using the Arduino Boards Manager (see following section).
Using the Arduino IDE menu TOOLS|Programmer|Arduino as ISP (note the “as ISP” not “ArduinoISP”).
Plug the Uno into the USB (and then check that TOOLS|PORT is connected to the Uno port).
Click “upload” and then the sketch will be uploaded to the ATtiny85/Digispark via the Uno.
Using the Arduino IDE open File|Preferences to open the dialog window
Click the "Additional Boards Manager URLs" icon, and then add to the following URL to the list https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
Select the Tools|Boards|Boards Manager and then allow the boards list to load, and then search/filter search for ATtiny, and then Install ATtiny by David A. Mellis",?
Click "close" and the Arduino IDE now will allow selection of ATtiny boards for programming via ISP.
Ensure that the UNO (programmed as an ISP) and connected to the ATtiny85 as per instructions above
Have a copy of the file “t85_default.hex” in the following location on the hard drive C:\Program Files\Arduino (or other as desired, but change the directory paths as appropriate in the avrdude command line). The “t85_default.hex” is the compiled Micronucleus bootloader and is available from the digistump site.
Open a cmd.exe (PC windows - > start | run) and then enter the following command line, which is all one line when entered into the cmd.exe window (changing the paths as necessary for your actual file locations)
"C:\Program Files\Arduino\hardware\tools\avr/bin/avrdude" -CC:"\Program Files\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -pattiny85 -cstk500v1 -PCOM3 -b19200 -Uflash:w:"C:\Program Files\Arduino/t85_default.hex":i -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m
Plug in the UNO to the USB on the PC and then press ENTER when in the cmd.exe window after the command line (previous step) has been entered
The progress of the upload will display in the command window with the final “avrdude done. Thank You.” showing completion. Micronucleus bootloader should now be loaded on the ATtiny85/Digispark.
Now when plugging the ATtiny85/Digispark into the USB port on the PC, should be recognized as a device (if digistump drivers previously installed).
Now can use Arduino IDE to load sketches into ATtiny85/Digispark using the bootloader/USB connection.
- ref001: https://www.arduino.cc/en/Main/Software
- ref002: https://digistump.com/wiki/digispark/tutorials/connecting
- ref003: https://diyodemag.com/projects/programming_the_attiny85
Comments/QuestionsNo comments yet.
Only Logged-In Members can add comments