2022
HOME

AVR-Programmierung und Minimalismus - ISP-Programmer
ATtiny85-Minimum
70 Bytes in C für das Blink der Arduino IDE

70 BytesDisplay mit 48x30 Zeichen, 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.


Software Arduino IDE und ATtiny85
Damit die Arduino-IDE den richtigen Kode für einen ATtiny85 erzeugen kann, muss die IDE entsprechend eingerichtet sein. Dazu wird das neue Board in mehreren Schritten hinzugefügt. Nach diesen Schritten kann das Blink-Beispiel von weiter oben für den ATTiny85 kompiliert und hochgeladen werden, wie sonst auch üblich. Der Arduino mit dem Arduino-ISP-Sketch übernimmt die Übertragung. Die einzelnen Schritte zum Hinzufügen des neuen Boards, sowie die Übertragung des erforderlichen Bootloaders:

ATTiny Support Package for Arduino IDE 1.8.x :

  • Datei/Einstellungen/Zusätzliche Boardverwalter URLs: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json hinzufüfen
  • Werkzeuge/Board nnn/Boardverwalter… attiny von David H. Mellis
  • Werkzeuge/Board nnn/ATtiny Microcontrollers/ATtiny25/45/85
  • Werkzeuge/Prozessor: „ATiny85“
  • Werkzeuge/Clock: „Internal 8 MHz“
  • Werkzeug/Port: „COMx (Arduino Uno)“
  • Werkzeug/Programmer: „Arduino as ISP“
  • Werkzeug Bootloader brennen - einmalig ausführen

Nach der Einrichtung der IDE und dem einmaligen Brennen des Bootloaders erfolgt der erste Test.

Wenn eine LED mit Widerstand an PIN 6 des ATtiny85 angeschlossen ist und im Standard-Sketch oben #define LED_BUILTIN 1 eingefügt ist, sollte diese nach dem Hochladen des Sketches im Sekundentakt blinken. Sollten unerwartet Probleme auftauchen, so kann in der IDE über Datei/Voreinstellungen der Haken bei Ausführliche Ausgabe bei Kompilierung/Hochladen gesetzt und so eventuell durch Analyse der Ausgaben der Fehler lokalisiert werden.

Die hier zugrunde liegende ausführliche englische Darstellung kann mit diesem Link als Übersetzung in der gewünschten Sprache gelesen werden. Dort findet man weiter unten ein Neo-Blink vom Autor Kevin Gagnon, welches angepasst ohne setup und loop nur ganze 70 Bytes benötigt in einem ATtiny85!


ATtiny85 Assembler 8-Byte-Blink
ATtiny85 als Compact-Interface
ATtiny88 als Compact-Interface
Mehr Software

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt