Einstieg in die ATtiny Entwicklung - Markus Edenhauser - E-Book
SONDERANGEBOT

Einstieg in die ATtiny Entwicklung E-Book

Markus Edenhauser

0,0
7,99 €
4,99 €
Niedrigster Preis in 30 Tagen: 7,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Zu jedem Buch gibt es kostenlos das E-Book im PDF-Format zum Downloaden dazu. Auch für Einsteiger_innen sehr gut geeignet. ATtinys sind kostengünstige Mikrocontroller, die durch ihre kleine Bauform und ihren geringen Stromverbrauch (~4-8µA während DeepSleep) überzeugen. Die ATtinys lassen sich im gewohnten Arduino Umfeld (IDE und C++) einfach und schnell programmieren, sodass man eine günstige Alternative zu den Arduinos und ESPs hat. Die ATtinys können mit einer Knopfzellen-Batterien CR2032 betrieben werden und haben für gewöhnliche DIY Projekte ausreichend Speicher zur Verfügung. Die gesamten Inhalte aus diesem Buch sind mit ATtinys 25/24, 44/45 und 84 wie auch dem Digispark ATtiny85 umgesetzt. Wenn du dieses Buch gelesen hast, dann kannst du… …eigene Praxisprojekte mit dem Mikrocontroller ATtiny erstellen …Source-Code vom Arduino für kostengünstige und stromsparende ATtiny schnell adaptieren …stromsparende Schaltungen für die Verwendung mit CR2032 Knopfbatterien entwickeln … verschiedene Upload-Methoden (Arduino as ISP, USB-Flasher) mit Arduino IDE und PlatformIO anwenden … Grundeinstellungen wie Brown-out Detection, CPU-Taktfrequenz mit ATtiny vornehmen …Grundkonzept der Programmierung für Mikrocontroller verstehen Was wir in diesem Praxisbuch durchnehmen werden: Ein ideales Geschenk für alle Bastler_innen, Smart-Home Einsteiger_innen und Hobby-Programmierer_innen. Leg das Buch jetzt gleich in den Einkaufswagen und sichere dir viele tolle Stunden in der ATtiny Entwicklung.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Einstieg in die ATtiny Entwicklung
Eine praxisorientierte Anleitung für die Programmierung mit den Mikrocontrollern ATtiny 24/44/84 und 25/45/85
Markus Edenhauser, MA MSc
Copyright ©September 20221. AuflageSelbstverlag
Markus Edenhauser, MA MScVölser Straße 416020 InnsbruckÖsterreichpixeledi.eu/impressum
Gewidmet der besten Frau der Welt – meiner Partnerin,die viele Ideen beigesteuert hat.
Ebenso hat sie fleißig die Prototypen mitentwickelt, gelötet und gebastelt. Ich vermute, sie hat sogar gefallen an den kleinen ATtinys gefunden.
Achja und Danke fürs Lektorat zu diesem Buch :)
Inhaltsverzeichnis
1  Vorwort             8.
1.1  Wie liest man dieses Buch             10
1.2  Code, Menüpunkte und Fragen             10
1.3  Codeschnipsel zum Downloaden             11
1.4  Was erwartet dich?             11
1.5  Was kannst du nicht erwarten?             12
1.6  Warum nicht objektorientiert?             12
1.7  Das geht sicher auch anders!             13
1.8  Haftungsausschluss             13
2  ATtiny Grundlagen             15
2.1  Was ist ein ATtiny?             15
2.2  Welche Programmiersprache?             16
2.3  Wie wird ein ATtiny geflashed?             18
2.4  ATtiny Varianten 25/45/85 und 24/44/84             22
2.5  Technische Daten am Bsp ATtiny 44/45             23
2.6  Digispark ATtiny85 mit USB             26
2.7  Pinout ATtiny 25/45/85 und 24/44/84             27
2.8  CPU Taktfrequenz             31
2.9  Stromverbrauch             33
2.10  Brown-out Detection             34
2.11  Fuses für die Hardwarekonfigurationen setzen             36
3  IDE und Upload Devices einrichten             41
3.1  ATtiny Cores für Arduino IDE 1.8.x             41
3.2  Visual Studio Code und PlatformIO einrichten             43
3.3  Verdrahtung Arduino UNO als ISP             44
3.4  DIY Shield zum Flashen mit Arduino Uno             45
3.5  Verwendung eines USB-ISP             46
3.6  Microchip Studio             47
3.7  Source Code von VS Code in Arduino IDE öffnen             49
3.8  Online Simulator für ATtinys             50
4  Erster Sketch mit unterschiedlichen Upload Varianten             52
4.1  Verdrahtung             52
4.2  Sketch             53
4.3  Upload mit Arduino IDE 1.8.x und Arduino Uno             54
4.4  Upload mit Arduino IDE 1.8.x und USB-ISP             55
4.5  Upload mit VS Code mit PlatformIO und USB-ISP             56
4.6  Upload mit VS Code PlatformIO und Arduino Uno             58
4.7  Upload mit Arduino IDE 1.8.x auf Digispark ATtiny85             60
5  PWM mit 3 LEDs             62
5.1  Verdrahtung             63
5.2  Vorwiderstandsberechnung für die LED             64
5.3  Ablaufdiagramm             65
5.4  Programmcode             66
5.5  3D Design und Druck             68
5.6  Learnings             70
6  Digitaler Würfel mit Zufallszahl und LEDs             71
6.1  Verdrahtung             71
6.2  Ablaufdiagramm             72
6.3  Was man zu Zufallszahlen wissen sollte             73
6.4  Programmcode             75
6.5  3D Design und Druck             82
6.6  Learnings             84
7  Digitaler Würfel mit WS2812b und FastLED             85
7.1  Verdrahtung             85
7.2  Ablaufdiagramm             87
7.3  Programmcode             88
7.4  3D Design und Druck             96
7.5  Learnings             98
8  Binäruhr mit RTC Modul und Schieberegister             99
8.1  Verdrahtung             99
8.2  Ablaufdiagramm             103
8.3  Programmcode             104
8.3.1  Set Time             104
8.3.2  Platformio.ini             105
8.3.3  Schieberegister testen             106
8.3.4  Hauptprogramm             109
8.4  3D Design und Druck             115
8.5  Learnings             117
9  Pflanzenüberwachung mit Buzzer, LED & Deep Sleep118
9.1  Verdrahtung             118
9.2  Ablaufdiagramm             121
9.3  Programmcode             123
9.3.1  Kalibrierung Bodenfeuchtigkeitssensor             123
9.3.2  Platformio.ini und externe Bibliotheken             125
9.3.3  Hauptteil             126
9.3.4  Stromverbrauch mit und ohne Deep Sleep             131
9.4  3D Design und Druck             133
9.5  Learnings             135
10  Pflanzenüberwachung mit OLED & Interrupt             136
10.1  Verdrahtung             137
10.2  Ablaufdiagramm             139
10.3  Programmcode             140
10.3.1  Platformio.ini und externe Bibliotheken             140
10.3.2  Deep Sleep und Interrupt Einstellungen             141
10.3.3  Erstellung einer Grafik für das OLED             143
10.3.4  Hauptteil             144
10.4  3D Design und Druck             147
10.5  Learnings             148
11  Transistorschaltung mit Klatsch-Detektor             149
11.1  Verdrahtung             149
11.2  Ablaufdiagramm             152
11.3  Programmcode             153
11.4  3D Design und Druck             158
11.5  Learnings             160
12  Platinenanhänger mit Piezolautsprecher             161
12.1  Happy Birthday Badge mit Pin             161
12.2  RGB LEDs als Schlüsselanhänger             167
12.3  Taschenlampe mit Touch-Sensor als Kette             172
12.4  Learnings             176
13  Miniwetterstation mit Digispark ATtiny85             177
13.1  Verdrahtung             178
13.2  Programmcode             179
13.3  Learnings             182
14  DIY USB Rubber Ducky mit Digispark ATtiny85             182
14.1  Programmcode             183
14.2  3D Design und Druck             185
14.3  Learnings             186
15  Abschluss             187
15.1  Häufigste Fehler             187
15.2  Zugang Website             190
15.3  Rabattcodes             191
15.4  Stuff that works             192
16  Über den Autor             193
17  Weitere Literatur vom Autor             194
18  Verzeichnisse             195
19  Literaturverzeichnis             198
1            Vorwort
Hallo Arduino-Entwicklerin und Entwickler. Ich freue mich, dass du neugierig auf das Thema ATtiny geworden bist. Vermutlich hast du schon das eine oder andere Arduino oder Raspberry Projekt umgesetzt und möchtest nun etwas tiefer in die Materie der Mikrocontroller-Entwicklung einsteigen.
ATtinys sind günstig, vielseitig und können in der gewohnten Arduino-Umgebung programmiert werden. Ein weiteres Feature ist der geringe Stromverbrauch des Deep-Sleep-Modus, der mit gerade mal 5-8 µA hervorragend für DIY-Projekte ist, die mittels Batterie versorgt werden sollen. Der ATtiny überzeugt auch mit seiner kleinen Bauform und ist ein gern gewählter Mikrocontroller für viele Anwendungen.
Dieses Buch hat den Anspruch eines Praktikers, das heißt, dass wir uns vorwiegend mit der Ansteuerung der Mikrocontroller und der verwendeten Bauteile in Projekten beschäftigen werden. Lernen funktioniert meiner Meinung nach am Besten, wenn man Relevanz zu einem Thema herstellt und das gelingt optimal mit kleinen Praxis-Projekten. Aus diesem Grund gibt es zuerst ein ausführliches Grundlagenkapitel, in dem du gezeigt bekommst, was du tun musst, um den Sensor oder das Bauteil mit dem ATtiny ansprechen oder auswerten zu können.
In diesem Zuge zeige ich dir auch State of the Art Logiken, die man für die Programmierung von Mikrocontrollern verwendet.
Nach dem ATtiny-Grundlagenkapitel richten wir die IDE, also die Entwicklungsumgebung ein. Da es diverse Möglichkeiten gibt, wie man die ATtinys programmiert und flasht, wird in Kapitel 3 die Verwendung mit der Arduino IDE 1.8.x und mit Visual Studio Code mit PlatformIO vorgestellt. Für beide IDEs wird gezeigt, wie man mit dem Arduino UNO und einem USB-ISP die ATtinys flashen kann. Gerade, wenn man zum ersten Mal die Verwendung und Programmierung der ATtinys ausprobieren möchte, bietet sich die Low-budget Variante mit dem Arduino UNO an, den eine gut ausgerüstete Hobby-Werkstatt meist vorrätig hat.
Die Arduino IDE 2.0 wurde bereits zu Beginn 2022 veröffentlicht. Wie so oft in der Open-Source-Welt, dauern die Adaptierungen von Bibliotheken und Plug-ins von Drittanbietern, sodass man mit der Arduino IDE 1.8.x meiner Meinung nach schneller zum Ziel gelangt. Aus diesem Grund wird in den hier angeführten Praxisbeispielen die Arduino IDE 2.x nicht behandelt.
Ich habe ebenfalls den Fokus auf die Verwendung von Visual Studio Code mit PlatformIO gelegt, sodass man sich nach dem Lesen der Grundlagen sein favorisiertes Setting zusammenstellen kann. Die hier vorgestellten Projekten sind mit beiden IDEs und mit beiden gezeigten Flash-Varianten umsetzbar.
Nach den Grundlagen starten wir in die Praxisprojekte. Jedes Projekt wird zunächst hinsichtlich der Funktion und des Aufbaus vorgestellt. Es folgt die Erklärung der Verdrahtung mittels Fritzing-Schemata und anschließend eine Beschreibung der Schaltung und Bauteile. Danach verschaffen wir uns einen Überblick über die Programmierung, die verwendeten Funktionen und Variablen mithilfe eines Ablaufdiagramms. In einem weiteren Schritt folgt die Quellcode-Besprechung, in der wir ausführlich Zeile für Zeile durchgehen und Besonderheiten aufgreifen. Im Anschluss darauf stelle ich für jedes Projekt ein 3D Design bzw. einen Vorschlag für einen 3D Druck vor. Selbstverständlich stehen alle Unterlagen zu den Projekten als Download zur Verfügung.
1.1       Wie liest man dieses Buch
✓      Falls du noch nicht viel mit Hardware- und Softwareentwicklung zu tun hattest, empfehle ich dir, dieses Buch chronologisch zu lesen.
✓      Falls du schon etwas Erfahrung in der Programmierung mit ATtinys und Mikrocontrollern mitbringst, kannst du bestimmt auch einige Kapitel am Anfang auslassen und direkt in die Materie reinspringen.
1.2       Code, Menüpunkte und Fragen
Zur besseren Lesbarkeit markiere ich dir immer wieder gewisse Textpassagen mit folgender Formatierung, sodass sich der Fließtext zu den Codezeilen abgrenzt:
In diesem Format findest du Codeschnipsel vor:
1.           if(Formatierung) Serial.println(„Der Lesefluss ist besser“);
2.           else Serial.println(„Hä, hier steht auch was?“);
Damit wir in diesem Praxisbuch nicht seitenweise Screenshots produzieren und damit unnötig viele Buchseiten erzeugen, werden Menüpunkte meist so dargestellt:
Menüpunkt→ Untermenüpunkt → hier klicken
Ich führe oft mit mir selber einen Dialog und markiere offen gestellte Fragen wie folgt:
Warum stellst du Fragen in einem Buch?
Sollte die Frage nicht lauten: „Wieso redest du als Autor mit dir selbst?
1.3       Codeschnipsel zum Downloaden
Oft findet man die eigenen Fehler nur schwer oder man möchte einfach nur einen Teil des Codes ausprobieren ohne viel tippen zu müssen. Zu jedem Praxisprojekt gibt es den gesamten Source Code, die Verdrahtungsübersicht und STL-Files für den 3D Druck zum herunterladen. Der Hauptlink zu den Dateien lautet:
www.pixeledi.eu/arduino/attiny
Das dazugehörige Passwort findest du im Anhang (Kapitel 15.2 Seite 190).
Ich hinterlege zu den Kapiteln im Buch den jeweiligen Dateinamen im Fließtext – so zum Beispiel:
01_ersteKommunikation.zip
Ach ja, das E-Book im PDF-Format ist auch mit dabei!
1.4       Was erwartet dich?
Jahrelang habe ich mich akademischen Herausforderungen gestellt und wurde zunehmend kritischer bezüglich der Praxisrelevanz meiner Aufsätze, Studien und Projekte.
Ich vertrete folgenden Ansatz: Wir schauen uns gemeinsam die Aufgabenstellung an. Darauffolgend gibt es für Willige einen kurzen Theorie-Teil und im Anschluss darauf folgt die Umsetzung und das Programmieren. Klingt simple, oder?
Das heißt, alle jene von euch, die sich so mittelmäßig für die Theorie-Teile begeistern, bauen die Bastelprojekte einfach nach und nehmen die vorhandenen Codeschnipsel als gegeben hin. Die anderen können sich im Selbststudium näher in die Materie einarbeiten und verwenden das Praxisbuch als Leitfaden und Struktur für die Ausarbeitung.
1.5       Was kannst du nicht erwarten?
Du findest hier weder eine voll umfassende Bibel zur Programmierung für das ATtiny-Umfeld, noch kannst du einen kompletten C++-Programmiersprachen-Kurs erwarten. Ebenfalls behandeln wir hier keinen Assembler Code, der auch oft im ATtiny-Umfeld verwendet wird. Im Kapitel 2.2 gehen wir auf die Programmiersprachen nochmal genauer ein. Weiters decken wir hier nicht die Grundlagen der Elektrotechnik ab.
Ich will sofort mein Geld zurück denkst du jetzt?
Stopp! Ich möchte nur transparent machen, dass es sich hier um kleine Projekte handelt, welche jedoch viele einzelne Komponenten und Schnittstellen abdecken. Durch die verschiedenen Praxisprojekte führe ich dich an unterschiedliche Problemstellungen bzw. Vorgehensweisen heran, wodurch du Schritt für Schritt neue Konzepte und Umsetzungen gezeigt bekommst. Wahrlich ein Tausendsassa dieser ATtinys.
1.6       Warum nicht objektorientiert?
Wenn du schon Erfahrung in der Programmierung mitbringst, wirst du dir vermutlich denken: "Warum verfolgst du nicht den objektorientierten Ansatz?"
Berechtigte Frage, doch wie zuvor beschrieben ist das ein Praxishandbuch für alle technikinteressierten Personen, egal mit welchem Erfahrungsniveau. Deshalb ist das Kredo: KISS – keep it simple and stupid. Die eine oder andere selbstgeschriebene Funktion lässt sich beim Lesen der Codezeilen gut nachvollziehen.
Für alle die sich für die objektorientierte Programmierung im Arduino bzw. ATtiny-Umfeld mehr interessieren, hierzu habe ich bereits einen 6 stündigen Videokurs erstellt. Falls du Interesse hast, schick mir eine Nachricht an [email protected]. Ich habe pro Monat immer wieder Aktionscodes frei, sodass du einen stark reduzierten Nachlass (70-80% vom regulären Preis) bekommst.
1.7       Das geht sicher auch anders!
Du wirst dir eventuell bei einer Codezeile mal denken „Geht es denn noch komplizierter?“. „Benutze doch lieber ein Switch case“, „Wieso so umständlich über den Funktionsaufruf, schreibs doch direkt in die Variable“... Kein Problem, bau es einfach so auf, wie du es für richtig hältst. Was für mich Sinn ergibt, kann für jemand anderen durchaus kompliziert erscheinen. Wir konstruieren und programmieren „frei“ und halten uns nicht an viele Standards – also außer den physikalischen Grundgesetzen natürlich.
1.8       Haftungsausschluss
Kommst du mir jetzt mit juristischen Fachbegriffen?
Ich habe die Qualifikation und Befugnis im Niederspannungsbereich arbeiten zu dürfen. Dennoch bin ich (leider) auch nicht frei von Fehlern. Es kann sein, dass ich etwas falsch darstelle, beschreibe oder anschließe und ihr dadurch ein Bauteil beschädigt, das komplette Projekt euch abbrennt oder ihr euch verletzt.
Die ATtinys kann man sich ganz leicht zerstören, wenn man sie falsch herum einsetzt oder auch die PINs vertauscht. Durch das unbeabsichtigte falsche Anschließen, könnt ihr einen Kurzschluss erzeugen, sodass eine weitere Gefahrenquelle besteht. Ebenso kann eine unsachgemäße Handhabung und Verwendung der Komponenten einen Brand verursachen. Gerade die Spannungswandler (auch andere Sensoren) haben eine sehr hohe Oberflächentemperatur von über 70 °C, sodass Brandgefahr besteht.
Deshalb hier nochmal mein eindringlicher Appell an euch: Arbeitet langsam, mit Bedacht und schaltet euren Hausverstand ein. Falls ihr die Projekte zusammen mit euren Kindern erarbeitet, achtet stets auf Spannungsfreiheit beim Arbeiten und minimiert alle Gefahrenquellen.
In diesen Bastelprojekten bewegen wir uns im Kleinspannungsbereich, das heißt kleiner gleich 50 Volt Gleichspannung.
„Diese Werte entsprechen der Grenze für die dauernd zulässige Berührungsspannung für erwachsene Menschen und normale Anwendungsfälle als nicht lebensbedrohlich.“[2]
Wir können jedoch im echten Leben nicht immer vom Normalfall ausgehen. Während der Entwicklung hängen eventuell Litzen und Drähte herum und dann passiert auch ganz schnell mal ein Kurzschluss. Vor allem, wenn ihr die Projekte gemeinsam mit Kindern aufbaut, ist noch einmal mehr Vorsicht geboten.
Der Nachbau erfolgt auf eigene Verantwortung. Ich kann keinerlei Garantie über die Richtigkeit und Funktionalität gewährleisten. Außerdem kann ich euch keine individuelle Hilfestellung leisten. Falls ihr nicht mehr weiter wisst, holt euch Hilfe von fachkundigen Kollegen. Ebenso ist jegliche Haftung für Beschädigungen und Verletzungen ausgeschlossen.
Falls ihr einen Fehler im Buch entdeckt oder sonstige konstruktive Kritik für mich habt, meldet euch unter: [email protected].
So aber jetzt nützen wir die Zeit und legen los. Viel Spaß dabei!
2            ATtiny Grundlagen
Oft sind Arduinos, ESPs oder andere Mikrocontroller für DIY Projekte überdimensioniert. Eventuell benötigt man nur 2 Pins zum steuern oder man möchte gerne nur einen Sensor auslesen bzw. per Intervall einen Verbraucher steuern. Genau dann kommt der ATtiny ins Spiel. Soll das Projekt zusätzlich eine kabellose Stromversorgung erhalten, ist der ATtiny mit seinem geringen Energie-Verbrauch geradezu prädestiniert für den Einsatz mit Batterien. Es gibt unterschiedliche Bauformen und Speichergrößen, doch im Grunde sind die ATtinys die in diesem Buch verwendet werden sich alle sehr ähnlich [3].
2.1       Was ist ein ATtiny?
Abbildung 1: ATtiny85 und ATtiny44
Beim ATtiny handelt es sich um einen 8-Bit-RISC-Ein-Chip-Mikrocontroller. RISC ist die Abkürzung für Reduced Instruction Set Computer, also relativ wenige und einfache Befehle jedoch viele Register. AVR ist eine Familie von Mikrocontrollern, die seit 1996 von Atmel entwickelt und 2016 von Microchip Technology übernommen wurde.  AVR war eine der ersten Mikrocontroller-Familien, die einen On-Chip-Flash-Speicher für die Programmspeicherung verwendeten. Gerade die Verwendung des Flash-Speichers war zu dieser Zeit ein großer Vorsprung zu anderen Herstellen, die im Gegensatz dazu nur einmalig programmierbare ROM, EPROM oder EEPROM „Speicher“ verbauten.
Besonders in Embedded Systems, also eine Kombination aus mehreren Hard- und Softwareteilen, ist der AVR-Mikrocontroller ATtiny heutzutage in vielen Anwendungen im Hobby- und Industriebereich anzutreffen. Durch die Einbeziehung vieler offener Hardware-Entwicklungsboards wie der Arduino-Reihe sind diese Mikrocontroller erst recht populär geworden [4].
Ein performanter Verwandter des ATtiny ist die ATmega Reihe. Diese Mikrocontroller-ICs der Firma ATMEL werden zum Beispiel auch bei Arduino UNOs verbaut. Schnapp dir mal den Arduino und schau dir den großen Chip an, es wird vermutlich ein ATMEGA328P sein. Dieser IC (=Integrierte Schaltung) ist sozusagen das Herzstück des Arduino Unos. Du könntest also nur diesen Chip für deine Projekte verwenden. Daraus lässt sich schon ableiten, dass die ATMega-Reihe mit wesentlich mehr Flash- und Arbeitsspeicher ausgestattet ist.
Wir verwenden in diesem Buch die ATtinys, weil sie kostengünstig und stromsparend sind. Die hier gezeigten Inhalte, lassen sich jedoch sehr einfach auf die ATmega Reihe  anwenden.
2.2       Welche Programmiersprache?
Wenn wir uns über Mikrocontroller und ATtinys unterhalten, darf die Programmiersprache bzw. auch der gleichnamige Compiler „Assembler“ nicht fehlen. Computer verstehen im Grunde nur Maschinencode, also eine lange Zeichenkette von binären Befehlen. Damit unser Source Code in diesen Maschinencode übersetzt werden kann, braucht es einen Compiler.
Der Großteil der Assemblersprachen orientieren sich stark an den hardwarespezifischen Daten der Mikrocontroller. Aus diesem Grund sind Assemblerprogramme nur schwer auf andere Prozessorfamilien anwendbar [5].  
Vermutlich bringen einige von euch auch schon erste Erfahrungen in einer Programmiersprache mit. Die Syntax von Java, PHP, Java-Script, Python oder anderen Programmiersprachen sind oft sehr ähnlich wodurch man sich schnell in C++ zurechtfinden kann. Bei Assembler ist die Syntax sehr an die Hardware orientiert, sodass das Lesen des Codes nicht so ohne weiters verständlich bzw. intuitiv wirkt – dazu ein Beispiel zur besseren Verdeutlichung.
Code 1: Assembler Source Code LED Blink [6]
1.           void setup(){
2.             pinMode(3, OUTPUT);
3.           }
4.            
5.           void loop(){
6.             digitalWrite(3, HIGH);  
7.             delay(1000);                      
8.             digitalWrite(3, LOW);    
9.             delay(1000);                      
10.        }
Code 2: C++ Source Code LED Blink
Code 1 und 2 führen zu ähnlichen Ergebnissen unterscheiden sich   jedoch nicht nur in der Länge, sondern auch in der Lesbarkeit. Gerade im Sinne von Clean-Code Prinzipien ist die Lesbarkeit des  Quellcodes eines der Grundpfeiler der Hard- und Software-Entwicklung. Eines sollte man nicht außer Acht lassen, man sollte seinen eigenen Code auch später noch lesen und verstehen können. Ich habe mir schon einige Male selber auf die Schulter geklopft, als ich einen von mir selbst geschriebenen Source Code durchschaute. Ich hatte keinen blassen Schimmer wie und was ich da fabrizierte und war nur froh, dass es funktionierte. Man stelle sich jetzt vor, dass man den eigenen Assembler Code 4 Monate später nochmal durchschaut, weil man eine kleine Änderung vornehmen möchte.
Den C++ Source Code kann man auch ohne weiters auf einen anderen ATtiny oder sogar Arduino anwenden, insofern am Pin 3 eine LED angeschlossen ist.
Aus diesen Überlegungen heraus wird auch in diesem Buch ausschließlich C++ zur Programmierung von ATtinys verwendet. Ich will euch das Programmieren mit Assembler nicht ausreden, aber Spaß schaut für mich definitiv anders aus ;).
2.3       Wie wird ein ATtiny geflashed?
Dieses Kapitel soll einen groben Überblick über die diversen Varianten zum Flashen von ATtinys aufzeigen. Die genaue Umsetzung und Ausführung folgt im Kapitel 3 .
Unser selbst geschriebener C++ Code, also das Programm im eigentlichen Sinne, wird auf den Flash-Speicher des ATtiny geladen. Daraus leitet sich auch das Wort „flashen“ ab, was soviel bedeutet wie: Einen kompilierten C++ Code (=Maschinencode) auf den Mikrocontroller laden [7].
Die ATtinys sind ICs, also Bauteile mit vielen integrierten Schaltkreisen, umgangssprachlich auch Chips genannt. Gegenüber den meisten Arduinos verfügen die ATtinys über keinen USB-Anschluss. Der Digispark ATtiny85 ist eine Sonderform, welcher im Kapitel 2.6 näher besprochen wird. Diese Tatsache stellt uns vor die Herausforderung, wie wir jetzt den Source Code auf unseren ATtiny übertragen können. Dazu haben wir mehrere Möglichkeiten und ich möchte euch zwei gängige Varianten vorstellen.
Das Akronym ISP steht für In System Programming und bedeutet, dass wir den Mikrocontroller programmieren können, ohne dass dieser aus der Schaltung ausgebaut werden muss [8].
Eine günstige und gute Alternative zu den käuflichen Programmieradaptern ist die Verwendung eines Arduino Unos als ISP.
Abbildung 2: Arduino Uno als ISP
Die Abbildung 2 zeigt die Verdrahtung mit dem Arduino UNO und einem ATtiny85. Selbstverständlich lassen sich alle ATtinys die hier verwendet werden mit dieser Methode programmieren.
Die Vorteile für diese Variante liegen auf der Hand. Wenn man einen Arduino Uno zu Hause rumliegen hat, kann man direkt mit dem Programmieren von ATtinys loslegen. Die Verdrahtung ist übersichtlich und schnell umzusetzen [9].
Für alle Wissbegierigen, die noch mehr über die technische Umsetzung des Flashens mit Arduino Uno wissen wollen, empfehle ich den Artikel von Heise Online zum Thema: Microcontroller flashen: Arduino Uno als In-System-Programmer [7].
Abbildung 3: DIY Arduino Uno als ISP Shield
Wenn man jedoch vermehrt ATtinys flashen möchte, ist das ständige verdrahten fehleranfällig und arbeitsaufwändig. Abbildung 3 zeigt ein selbsterstelltes Shield mit einer Lochrasterplatine, Stiftleisten und Sockel für die ATtinyx4 und ATtinyx5 Bauformen. Durch die Stiftleisten kann das Shield einfach und bequem auf den Arduino UNO aufgesetzt werden. In diesem Fall setzt man den ATtiny auf das Shield und schon kann der Source Code überspielt werden.
Abbildung 4: USB ISP Programmieradapter
Meine bevorzugte Variante ist die Verwendung eines USB ISP Programmieradapters, wie in Abbildung 4 zu sehen ist. Ich habe mir ein Breadboard erstellt, auf das ich die ATtinyx4 und ATtinyx5 jeweils an ein Ende setzen, die Kabelverbindung zusammenstecken und den ATtiny flashen kann. Dieser ISP-Programmer hat einen eigenen Onboard-Prozessor, der sehr schnelle Programmierzyklen erlaubt. Bei dieser Variante wird der Speicher dynamisch genützt, was bedeutet, dass der Speicher teilweise wieder gefüllt wird, währenddessen noch programmiert wird. In der oben gezeigten Variante kann man mittels Schalter die Spannungsversorgung einstellen. Es ist wahlweise eine Target-Spannungsversorgung von 5V oder 3,3V zuschaltbar [10].
Allgemein ist bei der Verwendung von USB-ISP darauf zu achten, welche Mikrocontroller und Programmier-Software bzw. Protokolle unterstützt werden. Dieser USB-ISP verwendet das Protokoll STK500v2, das wir später in PlatformIO bzw. der Arduino IDE benötigen und einstellen werden.
Gehen wir nun zu den gängigsten Bauformen der ATtinys über.
2.4       ATtiny Varianten 25/45/85 und 24/44/84
Abbildung 5: Erklärung der ATtiny Bezeichnungen
Die hier verwendeten ATtinys unterscheiden sich im Wesentlichen durch die Anzahl der Pins und die Größe des Flash-Speichers.
Aus diesen zwei Eigenschaften lässt sich auch die Bezeichnung des ATtiny ableiten. Die erste Zahl gibt die Größe des Flash-Speichers an und die zweite Zahl ist ein Indikator für die Pins.
Abbildung 6: ATtiny Bezeichnung, Speicher und Pins
Wie in Abbildung 6 dargestellt, hat die kleine Bauform mit 8 Pins eine 5 am Ende der Bezeichnung, weshalb sie oft auch als ATtinyx5 bezeichnet wird. Auf der rechten Seite in Abbildung 6 sieht man einen ATtinyx4, also eine Version mit 14 Pins. Der ATtiny25 hat  2 kB, der ATtiny44 hat 4kB und der ATtiny85 hat 8kB Flashspeicher [11].
Die ATtinys gibt es auch als SO-Bauform, also Small Outline, die eine kleinere Gehäuseform bezeichnet. Ebenso gibt es Varianten mit 10MHz oder wahlweise auch 20MHz, was sich schlussendlich im Preis niederschlägt [11].
Die hier gezeigten ATtinys sind gerade für den Start in die ATtiny-Welt gut zu verwenden und das aus mehreren Gründen. Sie sind kostengünstig, die Elektrohändler im deutschsprachigen Raum können diese Varianten auch ausliefern bzw. haben sie im Sortiment vorrätig und es gibt eine sehr gute ATtiny Core Bibliothek für die Arduino IDE. Die Unterstützung für Visual Studio Code mit PlatformIO ist ebenfalls gegeben. Der viel verwendete ATtin85 ist zum Zeitpunkt, an dem ich an dem Buch schreibe, bei den meisten Händlern vergriffen, deshalb wird er in den hier gezeigten Praxis Projekten nicht verwendet – mit Ausnahme des Digispark ATtiny85 mit Onboard USB.
Eine gute Übersicht über die häufigsten ATtinys findet ihr unter folgenden Quellenangabe [11].
2.5       Technische Daten am Bsp ATtiny 44/45
Die Frage, die sich nun stellt, lautet: Gibt es außer der Anzahl der Pins, sonstige Unterschied zwischen den ATtiny 25 - 24, 45 – 44 und 85 – 84?
Dazu nehmen wir uns die beiden Datenblätter und vergleichen diese in Tabelle 1.
Tabelle 1: Gegenüberstellung technische Daten ATtiny 45 und 44
Quellen: [12] [13]
Daten
ATtiny 45
ATtiny44
Technologie
AVR RISC
AVR RISC
Typ
8-BIT Mikrocontroller
8-BIT Mikrocontroller
Bauform
PDIP-8
PDIP-14
CPU Takt
10 MHz
10 MHz
Speicher
4 kB
4 kB
RAM
256 Byte
256 Byte
EEPROM
256 Byte
512 Byte
I/O Pins
6
12
8-bit Timer16-bit Timer
20
11
PWM
5
4
Analog Komperatoren
1
1
I2C
1
1
SPI
1
1
ADC
4
8
Versorgungsspannung
+1,8 V bis +5,5 V DC
+1,8 V bis +5,5 V DC
Temperaturbereich
-40°C bis +85°C
-40°C bis +85°C
Auf den ersten Blick in Tabelle 1 unterscheiden sich die beiden ATtinys nicht wesentlich. Die wichtigsten Unterschiede wurden je Zeile farblich  hinterlegt.
Es lässt sich festhalten, dass der Speicher des EEPROMs unterschiedlich groß ist.
Natürlich ist die PIN-Anzahl der beiden ATtinys unterschiedlich. Weiters ist zu erwähnen, dass jeweils zwei Pins für die Spannungsversorgung und der RESET Pin zum Flashen reserviert sind. Studiert man das Datenblatt, wird man sehen, dass der RESET Pin auch als (schwacher) I/O Pin verwendet werden kann. Jedoch funktioniert dann die hier gezeigte Methode zum Flashen nicht mehr, was bedeutet, dass wir den IC nicht mehr beschreiben können und das wollen wir doch nicht, oder? Demnach hat man beim ATtiny45 fünf und beim ATtiny44 elf Pins zur Verfügung [12] [13].
Der ATtiny45 hat zwei 8 bit-Timer und der ATtiny44 hat einen 8 bit- und einen 16-bit Timer. Ein Timer ist ein einfacher Zähler. Der Eingangstakt und der Betrieb des Mikrocontrollers sind unabhängig von der Programmausführung. Das bedeutet, dass der Timer asynchron zum AVR-Kern laufen kann und daher sind die Timer völlig unabhängig von der CPU. Ein 8-bit Timer kann bis 255 und ein 16-bit Timer kann bis 65536 zählen [14].
Auffallend ist auch die Zeile der PWM Pins in Tabelle 1. Der ATtiny45 hat 5 PWM Pins wo hingegen der ATtiny44 bloß 4 PWM Pins besitzt, trotz größerer Bauform und mehr Pins.
Der letzte Unterschied aus Tabelle 1 zeigt sich in der Zeile ADC, was für Analog to Digital Converter steht. Wann immer eine Spannung gemessen werden soll, wird eine elektrische Spannung in eine digitale Zahl umgewandelt.
Die Pins sind für einen Spannungsbereich von 0 bis ~ 5V ausgelegt. Der ATtiny 45 hat vier und der ATtiny44 acht ADC Pins. Beachtet bei der Verwendung der Pins unbedingt das Pinout, da sich hier für den gleichen Pin die Pin-, GPIO- und ADC-Nummer teilweise unterscheiden. Auf diese Tatsache gehen wir in den einzelnen Praxisprojekt jeweils genauer ein [15].
Ebenso erwähnenswert ist, dass das Pinout wie auch ein Großteil der technischen Daten für eine gesamte Serie der ATtiny Gültigkeit hat. Die ATtiny24/44/84 und die ATtiny25/45/85 haben jeweils ein Datenblatt [12] [13].
2.6       Digispark ATtiny85 mit USB
Abbildung 7: Digispark ATtiny85
Der ATtiny85 von Digispark hat einen Onboard USB, sodass das Flashen ohne weitere Hilfsmittel bequem funktioniert. Außerdem verfügt die Platine über Anschlüsse für P0 bis P5 mit zusätzlichen 3 Pins für die Spannungsversorgung. Der Digispark ATtiny85 kann mit einer Spannung von 6 V bis 12 V über den VIN Pin versorgt werden. Die Gesamtstromaufnahme sollte 500mA nicht überschreiten. Dadurch kann man den Digispark ATtiny85 vielseitig und schnell für Bastelprojekte einsetzen [16].
Werfen wir noch einen Blick auf die weiteren technischen Details:
Tabelle 2: Technische Daten Digispark ATtiny85
Quelle: [16]
Daten
ATtiny 45
Versorgungsspannung
2,7 V – 5,5 V
Betriebsstrom
300 µA
Temperaturbereich
-40°C bis +85°C
I/O Pins
6
Schnittstellen
SPI, I2C
Abmessungen
20mm x 19mm x 6mm
Der ATtiny85 von Digispark zeigt in Tabelle 2 ähnliche Daten wie der ATtiny85. In der Praxis zeigt sich jedoch, dass man anstatt der 8 kB Flash-Speicher lediglich 6 kB frei zur Verfügung hat. Vermutlich werden die fehlenden 2 kB für die USB-Anbindung und den Programmer verwendet. Weiters fällt auf, dass die minimale Versorgungsspannung bei 2,7 V startet. Dies ist der Tatsache geschuldet, dass der Digispark ATtiny85 auf eine höhere CPU Taktfrequenz eingestellt ist. Für unsere Beispiele reichen meist 1 MHz leicht aus, sodass wir mit einer minimalen Versorgungsspannung von > 1,8 V ausgehen können. Im Kapitel  2.8 werden wir näher auf die Tatsache von CPU-Takt und Stromverbrauch zu sprechen kommen. Weitere Details zum Digispark ATtiny und das Pinout findet man unter folgender Quellenangabe [16].
2.7       Pinout ATtiny 25/45/85 und 24/44/84
Bevor wir mit der Programmierung starten, sollten wir noch einen Blick auf die Pinouts werfen. Einige Inhalte der Pinouts muss man einmal gesehen haben, damit man sich später in der Entwicklung nicht mit selbsterstellten Schwierigkeiten herumärgern muss.
Das Pinout wurde wie üblich farbig hinterlegt, für eine bessere und detaillierte Ansicht, können die Pinouts im Downloadbereich zu diesem Buch (Kapitel 1.3 ) heruntergeladen werden.
Abbildung 8: Pinout ATtiny 25/45/85
Beginnen wir in Abbildung 8 links oben beim ATtiny als Bauteil [17]. Der Kreis zeigt uns die Orientierung des Bauteils an. Dementsprechend wissen wir, dass links oben der Pin 1 ist. Pin 1 ist der Reset Pin, welchen wir später für das Flashen benötigen.
In der nächsten Zeile befindet sich Pin 2. Und spätestens jetzt können wir schon die erste Eigenheit des Pinouts erkennen. Pin Nummer 2 sprechen wir im Source Code mit PB3 bzw. 3 an, welcher im Pinout als Port Pin bzw. Arduino Pin hinterlegt ist. Es geht jedoch noch verwirrender.
Gehen wir jetzt eine weitere Zeile hinunter zum Pin 3, welcher als PB4 definiert ist. Doch Achtung, soll dieser Pin als Analogpin verwendet werden, muss der Pin mit A2 angesprochen werden.    Wir halten also fest: Pin Nummer 3 ist Arduino Pin 4 und Analogeingang 2, also wenn das kein Fehlerpotential mit sich bringt.
Die ATtinyx5 haben standardmäßig auch eine I2C-Schnittstelle. SDA Pin ist rechts unten am PB0 Pin und SCL ist am PB2 Pin. Die SPI Pins sind mit Reset, MOSI, MISO und SCK gekennzeichnet.
Abbildung 9: Pinout ATtiny 24/44/84
Hat man den Dreh mit dem Pinout raus, lässt sich auch die Abbildung 9 gut verstehen [17].
Zu den Eigenheiten des Pinouts ATtiny24/44/84 ist zu erwähnen, dass es PB und PA Port Pins gibt. Im Datenblatt ist hinterlegt, dass PB für INPUT_PULLUP steht. Das heißt, die ATtinyx4 haben nur 4 Pins mit internen Pullup Widerständen, die PA sind gewöhnliche Pins. Die ATtinyx5 aus Abbildung 8 sind hingegen alles PB Pins.
Weiters ist in diesem Pinout auffällig, dass die Arduino Pins doppelt angeführt werden, was mit einem Pfeil auf der Unterseite der Abbildung mit Counterclockwise pinout erklärt wird. Dieses kleine Detail, das einem im Grunde sofort ins Auge springt, hat mich schon einige Stunden Lebenszeit gekostet.
In der Arduino IDE (dazu kommen wir später noch) lässt sich bei den ATtinyx4 das Pinout unter:
Tools→ Pin mapping
umstellen. Es gibt also die Möglichkeit, dass wir softwareseitig die PIN-Nummerierung vertauschen. Weshalb will man das? Nun, vermutlich, wenn man beim Routing (Platinen Layout) auf Schwierigkeiten stößt, kann man die Position der Pins dadurch anpassen.
Die Arduino IDE bzw. die hinterlegten Boarddaten sind standardmäßig auf clockwise und PlatformIO ist standardmäßig auf counterclockwise (!!!) eingestellt. Wir werden uns zu Beginn der jeweiligen Praxisprojekten die Einstellungen genauer vornehmen.
Auch hier kann man zusammenfassen:
„Wer lesen kann, ist klar im Vorteil, wer es auch tut noch mehr“.
2.8       CPU Taktfrequenz
Nicht nur bei handelsüblichen Computern ist die CPU Taktfrequenz ein entscheidendes Merkmal für die Leistung, sondern auch bei den Mikrocontrollern.
Ist eine hohe Taktfrequenz gleichbedeutend mit schnellerer Leistung?
Wie heißt es so schön? Es kommt drauf an. Wir haben in den technischen Details gelesen, dass die ATtinys eine 8-bit Architektur haben. Das bedeutet, dass der ATtiny Additionen/Befehle mit Werten von 0 – 255 verarbeiten kann. Für größere Zahlen wird der Befehl aufgesplittet und dementsprechend braucht die Ausführung mehr Zeit. Die ATtinys und allgemein Mikrocontroller brauchen für den Betrieb einen Takt. Wir haben ebenfalls schon gelesen, dass es ATtiny Varianten mit 10 MHz und 20 MHz zu erwerben gibt.
Der CPU Takt lässt sich auch softwareseitig runter regeln, was wir bei unseren Projekten auch machen, da der Stromverbrauch dann wesentlich geringer ausfällt [18].
Die Taktfrequenz alleine ist jedoch noch kein Indikator für die Leistung bzw. Geschwindigkeit. Ein ATtiny, der auf 8 MHz eingestellt ist und die meisten Befehlsketten in einem Zyklus abarbeitet, schafft dann 8 Millionen Befehle pro Sekunde. Die Taktfrequenz sagt jedoch noch nichts über die tatsächliche Geschwindigkeit eines Prozessors aus. So wird z.B. bei den meisten 8051-Controllern die Frequenz intern durch 12 geteilt, ein mit 24 MHz getakteter 8051 arbeitet also eigentlich nur mit 2 MHz. Benötigt dieser dann für einen Befehl durchschnittlich 2 Taktzyklen, so bleiben nur noch 1 Mio. Befehle pro Sekunde übrig - ein AVR, der ungeteilt mit 8MHz arbeitet und für die meisten Befehle nur einen Zyklus braucht, schafft dagegen fast 8 Mio. Befehle pro Sekunde [18].
Standardmäßig ist bei den hier angeführten ATtinys der CPU Takt auf 1 MHz eingestellt. Sowohl die IDE als auch der ATtiny muss die selbe Einstellung bezüglich des CPU-Takts hinterlegt haben, damit der Sketch ordnungsgemäß ausgeführt wird. Mehr Details dazu in den jeweiligen Praxiskapiteln.
2.9       Stromverbrauch
Eines, wenn nicht sogar das Feature, das für einen ATtiny spricht ist der geringe Stromverbrauch. In den Praxisprojekten der nachfolgenden Kapiteln werden wir uns die verschiedenen Deep Sleep Varianten ansehen, sodass der ATtiny nur mehr ~8µA verbraucht.
Im Normalbetrieb hängt der Stromverbrauch unter anderem auch von der CPU-Taktgeschwindigkeit ab.
Abbildung 10: Betriebsstrom & Spannung vs. CPU Taktfrequenz
Blättert man durch das Datenblatt des ATtinyx5, was du sicher regelmäßig vor dem Schlafengehen machst, so wird man auf der Seite 173 die Abbildung 10 wiederfinden. Diese Grafik visualisiert uns den Stromverbrauch in Abhängigkeit von der CPU-Taktfrequenz. Auf der Y-Achse haben wir den Betriebsstrom in Milliampere und auf der X-Achse sind die Frequenzbereiche angegeben. In dem Diagramm aus Abbildung 10 lässt sich jetzt ableiten, dass bei einer CPU-Taktfrequenz von 1 MHz der Betriebsstrom ~ 300µA ausmacht (linker Kreis). Ebenfalls ist erkennbar, dass der ATtiny in diesem Setting mindestens 1,8 V Versorgungsspannung benötigt.
Gehen wir in dem Diagramm zum rechten Kreis weiter. Die Frequenz wurde auf 10 MHz gesetzt, sodass der ATtiny mindestens 2,7 V Versorgungsspannung benötigt. Genau das ist der springende Punkt, wenn es zu einem Batteriebetrieb kommt. Die handelsüblichen CR2032 Knopfzellbatterien haben ~3V. Nicht nur, dass der Stromverbrauch bei 10 MHz höher ist, so wäre auch der Grenzwert von 2,7 V Batteriespannung schnell unterschritten und daraus resultierend würde der ATtiny seinen Dienst quittieren. Falls die Schaltung mit 1 MHz auskommt, ist man nicht nur stromsparender unterwegs, sondern verschiebt den Schwellwert der Batteriespannung auf 1,8 V, sodass man länger mit der selben Batterie den ATtiny betreiben kann [13].
Und woher weiß ich, ob meine Schaltung eine höhere CPU-Frequenz braucht?
Ich starte immer mit der Standardeinstellung, also 1 MHz und probiere die Schaltung aus. Bei einem unserer Praxisbeispiele werden wir sogar vom Compiler hingewiesen, dass die externe Bibliothek FastLED eine Taktfrequenz von mindestens 8 MHz benötigt. Bei einem anderen Sketch mit einem Buzzer, in der wir selbst erstellte Melodien abspielen, merkt man beim Ausprobieren ganz schnell, dass die Töne nicht richtig abgespielt werden. Auch diese Bibliothek benötigt eine höhere CPU-Taktfrequenz [13].
Die Schwellwerte (Triggerpegel) der Versorgungsspannung sind für den Normalbetrieb relevant. Werden nämlich diese Grenzwerte auch nur ganz kurz Unterschritten, ist der Regelbetrieb nicht mehr gewährleistet. Wie man damit umgeht und was man dagegen machen kann, werden wir im nachfolgenden Kapitel behandeln.
2.10 Brown-out Detection
Für viele wird der Begriff Black-out geläufig sein. Ein Black-out kommt meist aufgrund einer Kettenreaktion mehrerer unvorhersehbarer Umstände zustande und hat zur Folge, dass ein Stromnetz komplett ausfällt.
Ein Brown-out ist sozusagen die Vorstufe eines Black-outs. Ein Zustand, der einen unerwünschten Betriebsmodus hervorruft, weil die Versorgungsspannung nicht konstant ist oder unterschritten wird.
Damit der Betrieb bestmöglich gewährleistet werden kann, haben die ATtinys eine On-Chip Brown-out Detection (BOD). Es wird der Pegel der Betriebsspannung (VCC) stetig überwacht und mit einem festen Triggerpegel abgeglichen [19].
Abbildung 11: Brown-out Reset während Betrieb
Durchforstet man erneut die technischen Details der ATtinyx5 Serie, so findet man die Abbildung 11. Die Grafik zeigt, dass beim unterschreiten des Triggerpegels, der ATtiny neu gestartet und somit ein fehlerhafter Betrieb vermieden wird. Das Auslösen des Resets bei Erreichen eines Triggerpegels ist somit die Brown-out Detection [19].
Abbildung 12: Sicherer Spannungsbereich für den Betrieb
Der Triggerpegel ist bei 1 MHz 1.8 V was wir in der Grafik 10 bereits abgelesen haben. Der graue Bereich in Abbildung 12 veranschaulicht jenen Spannungsbereich, der für einen sicheren Betrieb garantiert.
Wie man die Brown-out Detection aktiviert und die jeweiligen Triggerpegel hinterlegt, wird ebenfalls im Umfang der  Praxisprojekten besprochen.
2.11 Fuses für die Hardwarekonfigurationen setzen
Die Konfigurationen müssen einerseits in der IDE eingestellt und anderseits auch für die ATtinys übernommen bzw. gesetzt werden. Die Hardware-Einstellungen lassen sich nicht mit dem Upload des Sketches übernehmen, dass muss getrennt davon übernommen werden.
Wie die Einstellungen übernommen werden, hängt vom Einsatz der IDE ab. Ganz allgemein kann festgehalten werden, dass AVR Fuses  die Stellen im nicht-flüchtigen Speicher sind, die die Hardware-Konfiguration des ATtinys definieren. Die Fuses sind in einem ausgewählten Bereich des Speichers untergebracht und bestehen aus einigen Registern. Jedes Bit des Registers steht für eine andere Fuse-Einstellung [20].
In der Arduino IDE wird dies über das Menü Werkzeuge getätigt. Hier kommt es auch wieder drauf an, welche ATtiny Core installiert ist. Die Core-Version von SpenceKonde hat viele Einstellungsmöglichkeiten, die wie gesagt, bequem über das Menü auswählbar sind. Die Einstellungen muss man dann über das Werkzeugmenü mit der Auswahl „Bootloader brennen“ übernehmen. Damit werden die Fuses beschrieben und der ATtiny kann die Konfiguration dementsprechend auslesen.
Bei der Verwendung von PlatformIO hilft einem der AVR Fuse Calculator. Es gibt diverse Quellen im Internet, ich habe mit dem folgenden gute Erfahrungen gemacht:
https://www.engbedded.com/fusecalc/
Abbildung 13: AVR Fuses Feature configuration
Man wählt zuerst den gewünschten ATtiny aus. Abbildung 13 zeigt die Feature configuration im Standardsetting. Auffällig ist, dass beim ersten Dropdown-Menü 8 MHz hinterlegt sind. Gerade vorher habe ich noch erwähnt, dass die ATtinys standardmäßig mit den Werten von 1 MHz eingestellt bzw. ausgeliefert werden. Schaut man sich die erste ausgewählte Checkbox an, sieht man, dass die 8 MHz durch 8 dividiert werden, sodass wir 1 MHz festgelegt haben. Will man also später den CPU-Takt auf 8 MHz stellen, braucht man diese Checkbox nicht auswählen.
Das zweite Dropdown-Menü zeigt die Einstellungsmöglichkeiten für Brown-out Detection und den unterschiedlichen Spannungs-Triggerpegel.
Ist man mit den Einstellungen soweit fertig, klickt man auf „Apply feature settings“ und scrollt weiter hinunter.
Abbildung 14: AVR Fuses Ergebnis
Das Ergebnis aus Abbildung 14 zeigt dir jetzt drei Fuses an. Diese Info brauchen wir für die Praxisprojekte, damit wir dementsprechend die Hardwarekonfiguration in der platformio.ini Datei setzen können.
Ändert man den CPU-Takt auf 8 MHz, so würde sich LOW von 0x62 auf 0xE2 ändern. Aus diesen drei Fuses können die ATtinys die Konfigurationswerte auslesen und interpretieren.
Damit mit PlatformIO die Einstellungen auch übernommen werden, muss man auf das PlatformIO Menü klicken und es öffnet sich eine Projekt Tasks Übersicht.
---ENDE DER LESEPROBE---