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.
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
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
neue Sidebar
Kurze Infos finden sich hier.

Valid XHTML 1.0 Strict CSS ist valide!