ATFlash: AVR Controller flashen
Wenn man einige Zeit mit Arduino „gearbeitet“ bzw. gespielt hat, kommt oft die
Lust eine fertige Leiterplatte auf zu bauen und nicht für jedes
Projekt ein neuen Arduino zu kaufen. Hier bietet es sich an, die
Atmel Prozessoren alleine laufen zu lassen. Am Ende dieses
Tutorials sollte man in der Lage sein, die folgende Schaltung zu
realisieren:
Wobei in allen Fällen folgendes Programm auf den Prozessoren läuft:
Grundsätzlich unterstützt das von mir zusammengestellte Arduino "Plugin" die folgenden Controller:
Für das Aufbauen der Flash-Verkabelung empfehle ich, die folgende Datei aus zu drucken. Es beinhaltet eine Übersicht der Verbindungen zu den Chips und die Namen der Pins in der Arduino Umgebung (in rot): Es ist eine Collage aus folgenden Quellen: Datasheets von Atmel, Guloshop.de Von der farblichen Zuordnung müssen beim Flashen per ISP die Leitungen: Weiß, Blau, Grün und Gelb und Schwarz und eventuell Rot angeschlossen werden. Doch dazu später mehr. Installation ATFlash
Nun installiert man das von mir zusammengestellte Paket ATFlash in der Arduino IDE.
Um die ATtinys per ISP zu flashen kann auch das
Original von David Mellis
und das
Original für Arduino on Breadboard installiert werden, aber letzteres ist
umständlich und meiner Meinung nach fehlerhaft.- Arduino 1.6.5 starten (es sollte mit allen 1.6er Versionen gehen) - Unter Datei - Einstellungen - das Häkchen bei Hochladen setzen und die Board Manager URL: https://mesom.de/atflash/package_atflash_index.json eintragen. - Unter Werkzeuge - Platine - Boards Manager - nach "atflash" suchen und auf "Install" klicken - Unter Werkzeuge - Platine - sind nun neue Einträge vorhanden: Standalone ISP Flashen
Vereinfacht gesagt läuft das normalen Flashen von der Arduino IDE zum
Arduino Uno von der Kommunikationskette so ab:Arduino IDE → USB (AVRISP mkII) → Uno Das "AVRISP mkII" Protokoll kommuniziert dabei per RX/TX Leitungen über den ATmega16U2 mit dem ATmega328P. Bei der Flash Art "Arduino as ISP" dienen die beiden Prozessoren nur zum Weiterreichen der eigentlichen Prgrammierbefehle: Arduino IDE → USB → Uno → Arduino as ISP → ATtiny85 Bei dieser Programmierung läuft das eigentliche Programm (z.B. LED Blink) später nicht auf dem normalen Arduino Board sondern auf einem eigenen Prozessor, der völlig unabhängig Arduino Board ist. Im Detail ist dazu folgendes zu tun: - ISP_N_SerialBridge_V2_1 normal auf den Uno spielen (seriellen Port wählen; Programmer ist "AVRISP mkII") - Danach folgende Schaltung aufbauen - unbedingt den 10 µF Kondensator an die Reset Leitung des Uno ergänzen (siehe Bild) - LED und Widerstand an Digital 9 des Uno hinzufügen (siehe .ino Datei; der Schritt ist optional) - Unter Werkzeuge - Platine - "ATtiny85 (ISP)" Chip auswählen - Unter Werkzeuge - Clock - "Internal 8 MHz" auswählen - Unter Werkzeuge - Programmer - "Arduino as ISP" - Unter Werkzeuge - Bootloader brennen (dieser Schritt setzt einmalig die korrekten "Fuses" und muss nicht noch einmal wiederholt werden) - Das eigentliche Programm (zum Beispiel Blink_N_Hello_World) mit gedrückter Shift Taste Uploaden. Die gedrückte Shift Taste ist nur für ATmega328P erforderlich - sonst optional. Bekannte Probleme
- Beim Benutzen des
Uno am Mac (bei Windows nicht) gibt es scheinbar einen Fehler im
Gerätetreiber: Nach dem Flashen (was korrekt verläuft) geht der
Uno nicht zurück in den Flash Modus (die LED Anzeige bleibt
„hängen“); zudem ist das Schalten in den Serial Bridge
Modus per Knopfdruck nicht möglich; über die Hochohmig
Schaltung der Leitungen zu dem zu flashenden Chip kann ich keine
Aussage machen; Sicherheitshalber, und damit alles wieder normal
läuft, sollte nach dem fertigen Flashvorgang der Reset Taster
des Uno gedrückt werden. Boards, die auf dem FTDI basieren (wie
z.B.: der Nano) haben das Problem nicht.- Eine Fehlermeldung mit „...PAGEL...“ kann ignoriert werden. - Andere Probleme haben meiner Erfahrung nach immer mit falscher Verkabelung, falscher Baudrate, falsch ausgewähltem Zielchip sowie dem fehlenden 10 µF Kondensator zu tun. |