Jan 19

HowTo: AVR in C programmieren mit Eclipse

Veröffentlicht von Benibr


Eclipse ist eine sehr mächtige IDE fürs Programmieren in allen möglichen Sprachen. Beim Versuch alle meine Projekte in einer Programmierumgebung zusammen zufassen bin ich darauf gekommen, dass das Programmieren von AVRs mit Eclipse sehr einfach ist. Ich habe hier kurz zusammengetragen was fürs AVR-C Programmieren in Eclipse notwendig ist.
Ich nutze hierfür Ubuntu 11.10 und Eclipse Indigo (3.7.1) das hier heruntergeladen werden kann.

Zusätzlich sollten noch folgende Packete installiert werden: avr-gcc avr-libc gcc binutils-avr libc6 libc6-dev libc6-dev-i386 avrdude

sudo apt-get update sudo apt-get install avr-gcc avr-libc gcc binutils-avr libc6 libc6-dev libc6-dev-i386 avrdude
sudo apt-get upgrade 
Select Programmer

Select Programmer

Wenn man Eclipse dann startet, kann man gleich von dem tollen neuen programmeigenen Packetmanager Gebrauch machen.
Unter Help ->  Eclipse Marketplace findet man mit dem simplen Suchbegriff “AVR” sofort, das AVR Eclipse Plugin! Ist dies installiert sollte man Eclipse einmal neustarten.

Nun gilt es noch einige Einstellungen vorzunehmen. Unter Window -> Preferences  -> AVR -> AVRDude wird der Programmer angegeben mit dem der Microcontroller geflasht werden soll. Anschließend sollte unter AVR -> Paths überprüft werden, ob Eclipse den Pfad für “AVR-GCC”, “AVR Header Files” und “AVRDude” richtig erkannt hat. Wenn nicht ist vermutlich etwas bei der Insallation der oben aufgeführten Packete fehlgeschlagen. Ansonsten: Apply und dann OK
Anlegen einer Source File

Anlegen einer Source File

Nun können wir mit File -> New ->  C Project ein neues Project erstellen, Name und Ort sind selbsterklärend und als Projekttyp wird “AVR Cross Target Aplication” ausgewählt. Der nächste Schritt bietet uns nun die Möglichkeit die zwei Standardkonfigurationen “Debug” und “Release” anzuwählen. Wenn ihr euch unsicher seid wählt einfach nur Release. In den meisten Fällen reicht das.
Unter  Advanced settings -> AVRDude sollte noch der vorher angelegte Programmer ausgewählt werden, falls dies nicht schon automatisch der Fall ist.  Achtung! Häufiger Fehler: Apply und dann OK.


Auf der nächsten Seite kann man nun den Prozessortyp und die Arbeitsfrequenz einstellen. Fertig! Das Programmieren kann beginnen. Alle Einstellungen können unter Project -> Properties noch im Nachhinein verändert werden.

Mit File -> New -> Source File bzw. Header File können Dateien zu Projekt hinzugefügt werden. Schreibt euren Code und wählt Project -> Build All aus. Wenn er keine Errors beim Kompilieren gibt, könnt ihr anschließen euer Programm mit
AVR -> Upload Project to Target Device auf euren Microcontroller flashen.

Auch wenn für Anfänger Eclipse auf den ersten Blick ein wenig nach Overkill aussehen mag so bietet es doch alle Möglichkeiten die man sich wünschen kann in einer netten grafischen Oberfläche an.

Viel Spass

Flash µC
Flash µC

Update: Ein häufig auftretendes Problem ist, dass AVRDude root-Rechte benötigt um auf den Controller zu schreiben. Dies ist zum Beispiel der Fall bei dem USB zu ISP Wandler den ich benutze (USBasp).
Zur Lösung des Problems muss man eine neue udev Rule anlegen, mit folgendem Befehl:

sudo gedit /etc/udev/rules.d/45-USBasp.rules

In diese Datei wird folgender Inhalt eingetragen:

SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="plugdev", MODE="0660"

Und anschließend muss udev noch neugestartet und der Programmer aus- und wieder eingesteckt werden.

sudo restart udev

 

Quelle: http://78.46.161.153/wiki/index.php?n=Linux.Udev4User

Mar 26

Unter Verwendung von Ubuntu 10.10 ist es doch relativ einfach einen Web-Server mit Mysql-Datenbank- und PHP-Unterstützung aufzusetzen, sowie Drupal 7 mit einer sehr schönen Bildergallerie. Folgende Schritte müssen dafür vorgenommen werden (Achtung: Bei der Installation von MySQL werden Benutzername und Passwort für den Server-Login erfragt. Diese Informationen werden später noch benötigt!):

sudo aptitude install php5 php5-gd php5-mysql apache2 mysql-server
sudo chmod -R a+w /var/www
wget http://ftp.drupal.org/files/projects/drupal-7.0.tar.gz -O /var/www/drupal-7.0.tar.gz
tar -C /var/www -xvf drupal-7.0.tar.gz
rm /var/www/drupal-7.0.tar.gz
mv /var/www/drupal-7.0 /var/www/drupal
cd /var/www/drupal
wget http://ftp.drupal.org/files/translations/7.x/drupal/drupal-7.0.de.po -O profiles/standard/translations/drupal-7.0.de.po
mkdir sites/all/libraries
wget http://colorpowered.com/colorbox/colorbox-1.3.16.zip -O sites/all/libraries/colorbox-1.3.16.zip
unzip -d sites/all/libraries sites/all/libraries/colorbox-1.3.16.zip
rm sites/all/libraries/colorbox-1.3.16.zip
wget http://ftp.drupal.org/files/projects/galleryformatter-7.x-1.0.tar.gz -O modules/galleryformatter-7.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/colorbox-7.x-1.0-beta2.tar.gz -O modules/colorbox-7.x-1.0-beta2.tar.gz
tar -C modules/ -xvf modules/galleryformatter-7.x-1.0.tar.gz
tar -C modules/ -xvf modules/colorbox-7.x-1.0-beta2.tar.gz
rm modules/galleryformatter-7.x-1.0.tar.gz modules/colorbox-7.x-1.0-beta2.tar.gz
mkdir sites/default/files
chmod -R a+w+r sites/default/files
cp sites/default/default.settings.php sites/default/settings.php
chmod a+w+r sites/default/settings.php

Drupal 7 selbst wird nun im Browser konfiguriert, indem man das CMS unter http://127.0.0.1/drupal-7.0 aufruft. Hier fährt man mit dem “Core”-Installationstyp fort und wählt darauf hin z.B. das installierte deutsche Sprachpaket aus. Als nächstes erstellt man im Terminal eine Mysql-Datenbank:

mysqladmin -u root -p create drupal_datenbank
mysql -u root -p
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES ON “drupal_datenbank”.* TO “drupal”@”localhost” IDENTIFIED BY “drupal_password”;
FLUSH PRIVILEGES;
exit

Diese Daten (Benutzername “drupal” mit Passwort “drupal_password” und Datenbank “drupal_datenbank”) können so nun auch im Browser beim Drupal-Setup eingegeben werden.
Sobald Drupal eingerichtet ist und man sich in der Administration befindet, müssen Colorbox und GalleryFormatter unter der Kategorie Module aktiviert werden. Unter dem Mnüpunkt Struktur kann nun entweder ein neuer “Inhaltstyp” angelegt oder ein bereits bestehender verändert werden. In diesem Beispiel fügen wir die Bildergallerie in einer “einfachen Seite” hinzu und legen dort ein neues Feld unter der Option “Felder verwalten” an.
Dabei nennen wir das bereits vorhandene Feld “Gallerie” und definieren es als “Bild: field_image” und den Datentyp als “Bild”. Nach einem klick auf Speichern, werden weitere Einstellungsmöglichkeiten angezeigt. Bildstil-Vorschau kann hier auf “galleryformatter_slide” oder “galleryformatter_thumb” gestellt werden und die Anzahl an Werten auf unbegrenzt. Die Konfiguration wird hier übernommen mit einem klick auf “Einstellungen speichern”. Im Tab “Anzeige verwalten” kann man nun den Eintrag “Gallerie” bei Format von “Bild” auf “jQuery” ändern. Auf der rechten Seite des Eintrags lässt sich durch einen klick auf die Zahnräder weitere Optionen einblenden, bei denen die Einstellung “Use jQuery modal for full image link” auf “Colorbox” gesetzt werde muss. Ein klick auf “Aktualisieren” und darauf “Speichern” übernimmt die Einstellungen für den veränderten Inhaltstyp. Bilder die nun beim anlegen einer “einfachen Seite” über das Upload-Formular hinzugefügt werden, werden dann im Artikel selbst in der davor ausgewählten Art der Javascript-Gallerie angezeigt.

Oct 15

USBasp/WinAVR Tutorial

Veröffentlicht von Benibr

Einführung

Da ich mit dem USBasp Adapter vor einigen Jahren so einige Anfangsschwierigkeiten hatte (ganz besonders unter Windows^^) habe ich ein Tutorial geschrieben, das Anfängern den Einstieg etwas erleichtern soll. Gekauft habe ich das Gerät im RHS Onlineshop. Die offizielle Seite zu der Platine gibt’s unter: http://www.fischl.de/usbasp/.

Hardware

Wenn ihr den USBasp-Adapter gekauft oder gelötet habt, so erhaltet ihr einen fertig programmierten ATMEGA8 mit (steht auch im RHS-Shop).

Dieser übernimmt die ehrenvolle Aufgabe das USB Protokoll für den zu Programmierenden Microcontroller verständlich zu machen.Programmiert wird dieser (in der Regel) nicht. Der Prozessor den ihr programmieren wollt muss sich auf einer anderen Platine befinden.
Was für eine Platine das ist, auch ob selbst entworfen/gelötet, ist egal solange sie den korrekten Anschluss des Microcontrollers per ISP Schnittstelle garantiert.
Eine Liste mit möglichen Platinen zu Experimentieren und Programmiernen findet ihr hier: Mikrocontroller.net

Die Programmierplatine wird nun per ISP (das 10-polige Flachbandkabel) mit dem USBasp-Adapter verbunden. Hierbei ist es möglich die Programmierplatine mit Strom aus dem USB zu versogen. Dafür wird der Jumper 3 (JP3) gesetzt. Diese Einstellung bitte nur vornehmen wenn die Platine auch entsprechend korrekt verlötet ist und keinen Strom von anderer Quelle bezieht.

Wichtig: Die Stecker für Flachbandkabel, welches mit dem USBasp mitgeliefert wird haben an einer Seite eine Ausbeulung. Diese Ausbeulung muss bei beiden Enden des Kabels in die selbe Richtung zeigen damit das Kabel funktionstüchtig ist. Sollte später trotz richtig konfigurierter Software die ganze Sache nicht funktionieren so kontrolliert bitte noch einmal die absolut korrekte Verlötung aller Platienen und überprüft alle Kabel. Notfalls Pin für Pin mit einem Messgerät.

Software

Als erster mal zu benötigten Software für den Computer:

Das wichtigste ist erst einmal, dass ihr einen Treiber für den USBasp Adapter installiert. Runterladen kann man diesen hier. Dieses ZIP-Archiv enthält den ordner “win-driver-X.XXX”, den ihr als erstes mal an einen beliebigen Platz exportiert. Wenn ihr den USBasp Adapter an euren Rechner anschließt so erscheint als erstes der allseitsbeliebte Treiberinstallations Assi(stent) von Windows XP.

Hier wird nun als erst “Nein, diesmal nicht” ausgewählt und “Weiter” geklickt.

Da wir korrekten Treiber haben und Windows wohl kaum einen eigenen für den USBasp Adapter hat, wählen wir “Software von einer Liste oder bestimmten Quelle installieren.”

Der zu installierende Treiber wird selbst gewählt.

Als nächstes müssen wir den Treiber nun direkt auswählen. Als 1. klicken wir hierzu aus den Button “Datenträger.” Im dort erscheinenden Fenster wählt ihr nun “Durchsuchen” (2.). Im “Datei öffnen”-Dialog wird nun die “usbasp.inf” aus dem Treiberordner (3.) ausgewählt.Jetzt wird der Treiber installiert und sobald dies erledigt ist wird der Assistent mit einem Klick auf “Fertig stellen” beendet
Als Software um Programme für den Microcontroller zu erstellen, bietet sich WinAVR an, welches man hier finden kann:

http://winavr.sourceforge.net/

WinAVR enthält neben AVRdude (Das Programm, welches die den Code letztendlich zum Controller überträgt) auch noch einen schicken Editor names “Programmers Notepad 2″.

Wer will kann sich auch noch das kostenlose “AVR Studio” holen (Atmel.com). Dies bietet noch mehr AVR speziefische Möglichkeiten als Programmers Notepad, kann jedoch nicht direkt mit dem USBasp kommunizieren und benötigt so ein wenig mehr Kenntnis. (Habt ihr die Grundlagen erst einmal verstanden und Blut geleckt dann findet sich AVR Studio fürher oder später sowieso auf eurem Rechner). Für absolute Programmier Neulinge ist auf jeden Fall die Programmiersprache Bascom interessant.

Zurück zum Thema: Die Installation von WinAVR ist denkbar einfach gehalten und benötigt nichts außer ein klein wenig Geduld.

Konfiguration

Nun zur korrekten Konfiguration: Damit später im Programmers Notepad das Programm per Mausklick kompiliert und auf den µController übertragen werden kann, müssen alle dafür wichtigen Informationen im sogenannten Makefile gesammelt werden. Hierzu startet ihr das bei WinAVR enthaltene Programm MFile. In MFile wird sofort ein Beispiel einer solchen Makefile mitgeöffnet, das wir nun für unsere zwecke editieren. Als erstes wird das Schreiben in die Beispiel-Makefile ermöglicht indem man im Menü
Makefile->Enable editing of Makefile

Als nächstes wird der CPU Type den ihr benutzt gewählt (Also nicht der Atmega8 auf dem AUSBasp Adapter sonder der den ihr beschreiben wollt). Der Eintrag F_CPU bestimmt die Taktfrequenz des zu Programmierenden Prozessors. Diese ist abhängig von dem Benutzen Quarz. In dem Eingabefeld Makefile -> Main File Name… wird nun der Name des Programms angegeben, das ihr gleich schreiben wollt.
Die letzten Einstellungen die noch vorgenommen werden müssen:

AVRDUDE_PROGRAMMER = USBasp

AVRDUDE_PORT = usb

Jetzt File->Speichern unter klicken und die Datei im Projektordner des zukünftigen Projekts speichern.

Programmieren

Jetzt kann es endlich mit programmieren losgehen! Dazu startet man Programmers Notepad.

In Programmers Notepad fügt ihr nun folgenden Code ein (oder schreibt selbst einen):

#include <avr/io.h>                //Standard
#include <util/delay.h>                //wird benötigt um evtl. die Funktion _delay_ms(Wartezeit); zu verwenden.

int main(void) {

DDRD = 0×60;                //PORTD5 und PORTD6 als Ausgang definieren

while (1) {                //Endlosschleife
if ((PIND & 0×10 ) != 0) {    //wenn PORTD4 = 1 also high ist
PORTD = 0×60;        //dann PORTD5 und PORTD6 anschalten
}
else {                //sonst
PORTD = 0×40;        //dann schalte nur PORTD6 ein
}
}

return 0;
}

So diese Datei speichert ihr nun im selben Ordner wie die Makefile vorher. Das Make-Programm weiß

dann mit dem Quellcode entsprechend den Regeln in der Makefile umzugehen.

Der Menüpunkt Tools -> Make All kompiliert nun das Programm in das benötigte .hex-Format (1.).
Im Output (2.) unten im Fenster erscheinen ggf. Fehlermeldungen wenn das Programm falsch ist. Ansonsten sollte das Output so aussehen wie auf dem Bild.Als nächstes wird der Menüpunkt Tools -> Make Program aufgerufen und somit das gesamte Programm auf den Microcontroller übertragen.
(Falls benötigt kann man mit Make Clean alle bei der Kompilierung entstandenen temporären Dateien wieder löschen.)

Das Programm sollte sich nun auf dem Microcontroller befinden und laufen. Wenn also eine high-Flanke auf Port 4 ein Signal registriert wird, so wird Port 5,6 geschaltet, ansonsten wird nur Port 6 geschaltet.

So das wäre jetzt erst mal das Ende dieses Tutorials. Ich hoffe, dass es einigen von euch weitergeholfen hat.
Für den Fall, dass die ein oder andere Sache nicht klar ist habe ich hier noch ein paar Links zum Thema, unter anderem auch zu anderen Tutorials.

Ansonsten gerne in der Kommentaren fragen oder meine Mail/Twitterdaten auf der Aboutseite benutzen.

Sehr großes Tutorial zum Thema AVR-Programmierung in C (mikrocontroller.net)

Alternatives Tutorial zum Thema WinAVR

Lokalisiert von Hashi. Modified by project-insanity.