AVR Programmierung

Hier finden sich verschiedene Dinge rund um die Programmierung von ATMELs AVR MPUs. Ich arbeite mit den ATMEGA-Prozessoren (vorrangig ATMEGA8) und evaluiere meinen Code normalerweise mit dem Pollin Evaluationsboard inklusive Addon-Board, wie im Bild ersichtlich.
Programmiert werden meine ATMEGAs mit dem USBTinyISP von Adafruit.

Das Addonboard zum Evaluationsboard von Pollin

Immer wenn mir irgendwas unklar war und ich länger nachforschen musste, werde ich es hier niederschreiben. :)


ATMEGA verfust

Die Fusebits bei ATMEL-Mikrocontroller werden geliebt und gehasst. Zum Einen bieten sie die einfache Möglichkeit, Eigenschaften des Mikrocontrollers bequem zu setzen, andererseits fördert die Logik, mit der das passiert immer wieder Konfusionen: 0 bedeutet "gesetzt" bzw. "programmiert" und 1 bedeutet "ungesetzt" bzw. "nicht programmiert". Darüber hinaus ist ein detailliertes Wissen darüber, was man tut, wenn man dieses oder jenes Bit setzt vonnöten, um die Richtige Konfiguration zu finden. Es passiert oft genug, dass man einem Mikrocontroller beispielsweise sagt "du hast einen externen quarz" und diesen aber falsch einstellt - damit sperrt man sich dann selbst aus und kann diesen Mikrocontroller nicht mehr programmieren und auch die Fusebits nicht mehr korregieren.
Es gibt jedoch eine Möglichkeit, den Mikrocontroller zu retten: über einen selbst generierten externen Taktgeber, können die Fusebits reprogrammiert werden. Dazu ist allerdings ein weiterer Mikrocontroller vonnöten. Ein einfaches Programm, welches mit jedem loop den Zustand an einem beliebig wählbaren Pin toggelt, gibt den Takt mit:

PORTB ^= (1<<1);

Wobei PORTB der von mir gewähte Port ist und ich dort PIN 1 beschalte.
Den so programmierten Mikrocontroller steckt man nun auf ein Breadboard, verbindet die VCC- und GND-Pins entsprechend und schließlich den gewählten taktgebenden Pin (in meinem Fall Pin B1) mit dem XTAL Pin A des zu rettenden Mikrocontroller, der im Programmer steckt.
Sehr wichtig ist noch, dass man dem ISP-Programmer mitteilt, dass er nicht so schnell programmieren soll: -B 100 als Parameter dazu hat bei mir mit etwa 87 kHz geklappt (es soll der ISP-Takt X, welcher sich mittels 1000/(1,5*B)=X kHZ errechnet immer maximal 1/4 des eingegebenen Taktes sein - zum Beispiel: 1000/(1,5*100)=9,8 kHz<1/4*87 kHz).
Nun bekommt der zu rettende Mikrocontroller seinen Takt vom Rettungscontroller und kann mit avrdude mit neuen Fusebits versorgt werden.
Das gesamte Programm kompilierbar für ATMEGA8:
taktgeber.tar.gz (5KB)
Die richtigen Fusebitsettings kann man sich unter anderem bei engbedded.com online zusammenstellen.

News - Sidebar
Ubuntu Touch Backup und Restore
Ubuntu Touch ist nun seit mehr als zwei Jahren mein Betriebssystem der Wahl auf meinem Nexus 4. Leider habe ich mir irgendwie den Update-Mechanismus zerschossen und so kurzerhand beschlossen, das System neu aufzusetzen. Den Prozess habe ich in der ubuntu touch section dokumentiert.
Ableton MIDI CC Automation
In der Audio-Sektion wird nun kurz erläutert, mit welchem Hilfsmittel man im Arrangement View von Ableton Live MIDI CC Parameter eines externen Instruments automatisieren kann.
x0xb0x und Reason 7
In der Audio-Sektion habe ich kurz niedergeschrieben, wie der Sound einer x0xb0x in Reason 7 per MIDI-Clock synchron geroutet werden kann.
LaTeX-Workshop
In der LaTeX-Sektion werden inzwischen Folien und weiteres zu einem LaTeX-Workshop verlinkt.
ClusterGL
Unter Projekte->ClusterGL habe ich ein paar Schritte zur Nutzung von ClusterGL online gestellt.
NFC MobiDoc
Unter Projekte->NFC MobiDoc habe ich eine in einer Gruppe von 5 Stundenten inklusive mir umgesetzte NFC-basierte Krankenhausanwendung dokumentiert.
VotingTool
Unter Projekte->VotingTool habe ich ein Grailsbasiertes VotingTool online gestellt.
neues Design
Heute habe ich ein Geschenk von Max bekommen - ein neues schönes Design. Vielen Dank an dieser Stelle!
ROBERTA
Heute habe ich neben der Übersetzung ins Englische auch eine Featurelist für den Server aus dem ROBERTA-Projekt erstellt.
Git + Apache
Wer sein Git-Repository über HTTP mit Apache und aber ohne VirtualHosts (also ohne Subdomain) verfügbar machen will, findet unter Anleitungen -> Vermischtes nun eine entsprechende Anleitung.
ARM-Toolchain
Wie man einen gcc Toolchain für ARM aufsetzt, findet sich ab sofort unter Anleitungen -> ARM. Diesen nutze ich beispielsweise für die Programmierung von OpenBeacon USB 2-RFID-Tags.
SD-Karte kaputt
Nach dem Netzteil nun auch die SD-Karte: Unter Anleitungen -> Sheevaplug mein Rettungsweg.
Netzteil kaputt
Wem das gleiche Glück mit dem Sheevaplug beschieden, der findet unter Sheevaplug meinen Lösungsweg.
ATMEGA verfust
Wer einen seiner AVR Mikrocontroller verfust hat, findet unter Anleitungen -> AVR nun einen rettenden Beitrag.
Abschlussarbeit
Unter Anleitungen -> LaTeX habe ich eine Vorlage für eine Abschlussarbeit verlinkt.
Etherpad
unter Anleitungen -> Vermischtes findet sich ein Tutorial zur Installation von Etherpad auf Debian Lenny

Valid XHTML 1.0 Strict CSS ist valide!