70 Bytes,
ein ATtiny85, eine LED und zwei Drähte zur Spannungsversorgung sind das Minimum zur Realisation des bekannten LED-Blinkers mit diesem Mikrocontroller.
Die Programmierung erfolgt dabei in der bekannten IDE des Arduino mit Hilfe des Arduino Uno, der lediglich als ISP dient. Ein In-System-Programmierung, auch bekannt als In-Circuit Serial Programming (ICSP) ist eine Hardware, mit deren Hilfe ein Mikrocontroller programmiert werden kann. Dies kann ein Arduino Uno übernehmen in dem ein Sketch mit dem Namen ArduinoISP läuft. Die Programmierung bzw. die Kommunikation zwischen ISP (Arduino) und dem Mikrocontroller (ATtiny85) erfolgt über die sogenannten SPI-Leitungen.
Der nach der Einrichtung der Programmierumgebung zu übertragende Sketch für den ATtiny85 entspricht Datei/Beispiele/Basics/Blink ohne Kommentare. Als LED-Anschluss kommt hier Port B1 alias Pin 6 zum Einsatz, da der nackte Schaltkreis keine eingebaute LED besitzt.
#define LED_BUILTIN 1
void setup()
{pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Um diesen Sketch im ATtiny85 ausführen zu können, sind folgende Schritte erforderlich:
- Arduino und Arduino-IDE 1.8.x einrichten z. B. an COM3
- Blink-Sketch aus den Basic-Beispielen laden und hochladen als Test (LED des Arduino blinkt)
- Sketch ArduinoISP aus den Beispielen (11) hochladen: Pulsierende LED an PIN9
- IDE für ATtiny85 einrichten
- Arduino mit ATtiny85 per SPI als ISP verbinden und Bootloader einmalig "brennen"
- Blink-Sketch mit LED-BUILTIN 1 an ATtiny85 hochladen: LED an PIN6 des ATtiny blinkt
Hardware ISP-Programmer mit ArduinoISP
Um einen Arduino Uno als ISP-Programmer zu verwenden, wird dieser, wie üblich, über USB mit dem PC verbunden und die IDE 1.8.x so verwendet, als solle ein beliebiger Sketch für den Arduino übertragen werden. Unter Datei/Beispiele ist als 11. Eintrag ArduinoISP angegeben. Durch das Hochladen dieses Sketches verhält sich ein Arduino wie ein ISP-Programmer. Die Kommentare im ArduinoISP-Sketch besagen, dass die Pins 10, 11, 12 und 13 mit RESET/CS, MOSI, MISO bzw. SCK verbunden werden sollen.
Arduino Pin
|
SPI
|
Pin ATtiny85 |
Ss 10
|
|
1 PB5 NReset |
MOSI 11
|
|
5 PB0 Mosi |
MISO 12
|
|
6 PB1 Miso |
SCK 13
|
|
7 PB2 LED Sck |
5V
|
|
8 5V Vcc |
GND
|
|
4 GND |
|
|
|
Der Arduino-Sketch liefert optional an weiteren Ausgängen die Signale für die drei LED im Blockschaltbild der ISP-Hardware.
- Pin 7: Data - Kommunikation mit dem ATTiny85.
- Pin 8: Error - schaltet sich ein, wenn bei der Programmierung etwas schief geht.
- Pin 9: Heartbeat - HT zeigt an, dass der Programmer richtig funktioniert (pulsiert).
Der Aufbau in bildhaft-anschaulicher Weise:
Die 6polige Pfostenleiste rechts am Arduino führt ebenfalls die ISP-SPI/ICSP-Leitungen.