DIY

So verwandeln Sie Ihr Arduino in einen ISP - Programmierung des ATmel ATtiny85

So verwandeln Sie Ihr Arduino in einen ISP - Programmierung des ATmel ATtiny85

Kurze Bytes: Manchmal ist die Verwendung eines vorgefertigten Arduino-Boards in einem Projekt übertrieben oder einfach übergroß. Der ATtiny85 ist ein kostengünstiger, aber überraschend leistungsfähiger Mikrocontroller, der dazu beitragen kann, den Platzbedarf Ihres Projekts zu verringern. So können Sie ein ATtiny für die Verwendung in Ihrem Projekt programmieren.

Die Arduino-Plattform ist ein erstaunliches Werkzeug zum Lernen, aber manchmal passen die unterstützten Arduino-Boards nicht genau dort hin, wo Sie sie brauchen. Mit dem Arduino Uno (das gebräuchlichste Modell) Mit einer Größe von etwa 65 mm x 50 mm ist leicht zu erkennen, dass es sich bei einigen Projekten möglicherweise um die größte Komponente handelt. Es gibt andere Boards wie das Nano, die viel kleiner sind (Mein Nano-Knockoff ist 43 x 17 mm, 4,5-mal kleiner), aber selbst dann ist das manchmal einfach zu groß. Was ist, wenn Sie beispielsweise ein tragbares Gerät bauen möchten? Vielleicht ist es nur eine blinkende LED, die Ihr Hund nachts tragen kann. Sobald Sie eine Batterie usw. berücksichtigt haben, kann sie ziemlich groß werden.

Cue die ATtiny-Linie, der Held unseres Problems. Der Namensvetter des ATtiny ist offensichtlich. Sie finden es in einem DIP-8-Paket (Dual Inline Package - 8 Pins), Das ist etwa 9 mm im Quadrat. In der wahren Natur seines Namensgebers ist der ATtiny winzig, aber in mehr als nur seiner physischen Größe. Der ATtiny85, der für diesen Artikel verwendet wird, verfügt nur über 8 KB Programm-Flash-Speicher, 512 Byte RAM und 512 Byte EEPROM (permanenter Speicher außerhalb des Programmspeichers).

Jetzt ist das Problem, einen dieser kleinen Typen zu programmieren. Hierfür sind einige Tutorials online, aber ich habe festgestellt, dass sie etwas unvollständig sind oder keine Anweisungen enthalten.

ISP - In System Programmer

Ein In System Programmer (ISP) ist nicht so ausgefallen, wie es sich anhört. In der Regel besteht ein ISP für einen ATmel-Chip aus einem Gerät mit einem sechspoligen USB-Kabel. Die ISP-Pins sind auf Arduinos sehr leicht zu erkennen. Sie befinden sich normalerweise gegenüber dem USB-Anschluss. ATmel-Chips sollen über die ISP-Pins programmiert werden. Die Arduino-Plattform hat jedoch einen USB-zu-Seriell-Adapter auf der Karte implementiert, um die Notwendigkeit des ISP-Geräts zu beseitigen. Trotzdem haben sie die ISP-Pins bei vielen, wenn nicht den meisten Modellen verfügbar gelassen.

Da unsere ATtiny-Chips nicht über das USB-zu-Seriell-Gerät verfügen, über das die Arduinos verfügen, müssen sie mit einem ISP programmiert werden. ATmel ISP-Geräte sind ziemlich teuer, zumindest im Vergleich zu den Kosten eines Arduino selbst. Wir sparen uns also Geld und Versandzeit, indem wir ein Arduino so programmieren, dass es sich als ISP verhält.

Dazu öffnen wir die Arduino IDE und wählen ArduinoISP aus den Beispielskizzen aus.

Beim Öffnen der Skizzendatei werden einige Informationen zum erwarteten Verhalten des Codes angezeigt. In dieser Datei müssen wir eine schnelle Änderung vornehmen, damit unser ISP ordnungsgemäß mit der Arduino IDE kommunizieren kann.

In Zeile 220 finden wir die installieren() Funktion.

void setup () SERIAL.begin (BAUDRATE); pinMode (LED_PMODE, OUTPUT); Impuls (LED_PMODE, 2); pinMode (LED_ERR, OUTPUT); Impuls (LED_ERR, 2); PinMode (LED_HB, OUTPUT); Impuls (LED_HB, 2); 

Wir müssen uns ändern BAUDRATE bis 19200 lautet also die Zeile

SERIAL.begin (19200);

Nach dem, was ich gelesen habe, hat die Arduino IDE ein Update erhalten, das die Kompatibilität mit dieser ArduinoISP-Firmware beeinträchtigt hat. Das Arduino und die IDE versuchten, mit unterschiedlichen Baudraten zu kommunizieren, und dies führte dazu, dass das Arduino trotz ordnungsgemäßer Flash-Firmware nicht als ISP verwendet werden konnte.

Kleine Bibliotheken

Die Arduino IDE unterstützt eine Vielzahl verschiedener Mikrocontroller und Boards, aber leider sind die ATtiny-Serien nicht enthalten. Das heißt, wir müssen uns selbst um Unterstützung bemühen.

Bei mir hat es funktioniert, die folgende URL zu den URLs des Additional Boards Manager unter den Arduino IDE-Einstellungen hinzuzufügen,

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Starten Sie die IDE neu, öffnen Sie den Boards Manager unter Tools -> Board -> Boards Manager, suchen Sie nach dem ATtiny-Paket und installieren Sie es.

Sobald dies erledigt ist, können Sie beginnen, Ihre Schaltung für die Programmierung Ihres ATtiny aufzubauen.

Aufbau Ihres ISP

Es gibt verschiedene Möglichkeiten, wie Sie Ihren ISP erstellen können. Sie können es in ein lötfreies Steckbrett einbauen, um die Teile wiederzuverwenden, oder Sie können eine semipermanente Lösung herstellen, indem Sie alles wie ich zusammenlöten. Wenn Sie alles sorgfältig zusammenlöten, können Sie das Arduino bei Bedarf für ein anderes Projekt wiederverwenden.

In den ersten dreißig Zeilen der ArduinoISP-Skizze finden Sie die folgenden Informationen zum Einrichten des Arduino als ISP.

Pin 10 Pin zurücksetzen für
Ziel-Mikrocontroller
Pin 11 SPI Master Out
Slave In
Pin 12 SPI Master In
Sklave raus
Pin 13 SPI Serial Clock

Optional können Sie LEDs an die folgenden Pins anschließen, um den Status anzuzeigen

Beachten Sie, dass für diese LEDs Widerstände erforderlich sind.

Hier sehen wir die Pinbelegung für den ATtiny85 und die entsprechenden Verbindungen, die wir zum Arduino herstellen müssen. Es ist eine ziemlich grobe Zeichnung, aber ich habe die Stifte des ATtiny85 der Einfachheit halber beschriftet. Es ist jedoch zu beachten, dass die Pins nicht wie im Diagramm mit 1,2,3… 8 adressiert sind, sondern in der Arduino IDE so gekennzeichnet sind, wie sie im diagonalen Text gekennzeichnet sind.

Dies ist ein viel detaillierteres Diagramm der verschiedenen Verbindungen. Alle LEDs sind optional, aber sie sind nützlich für die Fehlerbehebung. Zusätzlich zu den drei Status-LEDs, die in der ArduinoISP-Skizzendatei empfohlen wurden, gibt es eine, die einfach von 5 V an Masse angeschlossen wird (natürlich mit einem Widerstand), und dann ist da noch einer mit dem zweiten Pin verbunden (Pin 3 in der IDE) zum Testen des ATtiny mit dem Blinktest. Beachten Sie den Kondensator, der den Reset-Pin mit Masse verbindet. Dies ist erforderlich, damit der Arduino als ISP fungiert.

Dies ist der Arduino ISP, den ich für ATtiny-Mikrocontroller gebaut habe. Sie können sehen, dass ich die DIP-8-Buchse verwendet habe, um das ATtiny zu halten, während es programmiert wird. Ich habe auch rechts genug Platz gelassen, um einen DIP-28-Sockel zum Programmieren von ATmega-Chips wie dem ATmega328P zu installieren. Das Upgrade wird sehr unkompliziert sein und erfordert lediglich, dass die erforderlichen Pins für die Atmega-Chips wie beim ATtiny verbunden werden.

Sobald Sie Ihren Arduino ISP zusammengestellt haben, möchten Sie ihn sicherlich ausprobieren. Stellen Sie sicher, dass Sie die entsprechenden Einstellungen für die Programmierung über Ihr angeschlossenes Arduino auswählen und nicht das Arduino selbst programmieren.

Für das Board wählen wir die Option ATiny 25/45/85, dann ATtiny85 in der Prozessorauswahl und schließlich Arduino als ISP von den Programmierern. Das sagt der IDE alles, was sie über das Zielsystem wissen muss, einschließlich der Art und Weise, wie es mit ihm kommunizieren wird. Jetzt können wir die Blink-Skizze aufrufen (oder tippe es selbst aus, wenn du so hardcore bist) und probieren Sie es aus, stellen Sie sicher, dass Sie den Pin, der zum Blinken der LED verwendet wird, auf den Pin umschalten, den Sie in Ihrer Schaltung verwendet haben. Dies ist Pin 3, wenn Sie den von mir bereitgestellten Schaltplan verwenden. Zuletzt kompilieren und laden wir die Skizze hoch, indem wir auf Skizze -> Mit Programmer hochladen klicken.

void setup () pinMode (3, OUTPUT);  void loop () digitalWrite (3, HIGH); Verzögerung (1000); digitalWrite (3, LOW); Verzögerung (1000); 

Insgesamt kostet mein zusammengelöteter Arduino ISP wahrscheinlich drei oder vier Dollar. Die ATtiny-Chips können auch extrem billig sein, normalerweise nur etwa einen Dollar pro Stück. Ich empfehle den Kauf der DIP-8-Sockel, wenn Sie ATtiny-Chips in Projekte einbauen möchten, da Sie möglicherweise Code aktualisieren oder den Chip neu verwenden möchten. Das Löten eines ICs ist möglich, aber Sie können den IC leicht beschädigen, insbesondere bei wiederholter Belichtung, wie dies der Fall wäre, wenn Sie den Code einige Male aktualisieren würden.

Hat noch jemand so etwas gemacht? Möchten Sie mehr Arduino-Zeug sehen? Lass es uns in den Kommentaren unten wissen.

Lesen Sie auch: Raspberry Pi oder Arduino - Welches Board ist am besten für Anfänger?
Beste Film- und TV-Show-Apps (APKs) für Android-Geräte und Fire TV Stick
Die App (APKs) für Android-Filme und Fernsehsendungen ist als Methode zum Streamen von Videos sehr beliebt geworden. Oft einfach als APK bezeichnet, ...
Test DBPOWER T20 LCD-Miniprojektor 1080P HD-Heimkino
Der DBPOWER T20 ist ein kleiner Miniprojektor, mit dem Videos oder Bilder auf einer ebenen Fläche wie einer Wand angezeigt werden können. Es ist ein ...
So installieren Sie die Stremio App (APK) für Android-Geräte und Fire TV Stick
Stremio ist eine Top-Video-App (APK) für Android-Geräte wie TV-Boxen, Smartphones und den Fire TV Stick. Es überträgt Filme und Fernsehsendungen in ei...