Posts Tagged ‘avr-gcc’

Anjuta als IDE für avr-gcc nutzen

Montag, Juli 25th, 2011

Unter Windows gibt es das AVR Studio, Bascom oder teure C Compiler mit IDE. Unter Linux fehlt sowas vollständig. Man muss sich seine Umgebung mit dem avr-gcc selbst einrichten.

Die einen verwenden normale Editoren wie Gedit oder Geany, andere vim oder Emacs oder man greift gleich zu Eclipse. Aber keines davon konnte mich bisher überzeugen. Eclipse ist mir einfach zu aufgeblasen und fett, vim und Emacs nicht mein Ding. Am besten eignet sich für mich immer noch Geany, wobei mich dabei immer stört, dass man eine Source Datei im Root Verzeichnis des Projekts auswählen muss, bevor man make aus Geany heraus aufrufen kann. Das Build System passt sich immer automatisch an die aktuelle Datei an. Es fehlt eine richtige Projektverwaltung.

Deshalb habe ich es mir jetzt mal zur Aufgabe gemacht, eine einfache aber trotzdem halbwegs komfortable IDE für die AVR Entwicklung zu basteln. Am geeignetsten erschien mir Anjuta. Bisher basiert das Projekt auf einem einfachen Makefile Projekt. Das heißt, dass man später neue Source Files immer noch von Hand in das Makefile eintragen muss. Später will ich versuchen, das Ganze mit Automake umzusetzen.

Es ist bereits möglich, einfache Projekte zu erstellen, ohne das Makefile manuell bearbeiten zu müssen. Alle Grundeinstellungen können in einem Wizard vorgenommen werden und das Makefile nutzt die Möglichkeiten von Anjuta. So lässt sich avrdude zum Programmieren des AVR über “Projekt installieren” aufrufen.

Hier noch eine kleine Vorschau des Wizards (Video nur im Blog zu sehen)

 

avr-gcc räumt in Header Dateien auf

Montag, Juli 11th, 2011

Atmel aktualisiert seit geraumer Zeit die Fertigungstechnik, wodurch zum Beispiel aus einem ATmega8 ein ATmega8A wird. Einzige Unterschiede sind geringere Kosten, geringerer Stromverbrauch und, besonders wichtig, der Wegfall von getrennten Versionen für Low Voltage und Standardausführung. Die neuen Typen sind 100% Pin- und Code kompatibel. Sie verwenden auch die selbe Signatur.

Natürlich gibt es für die neuen Typen auch neue Header Dateien (unter Ubuntu zu finden unter /usr/lib/avr/include/avr). Die Dateien für die neuen A Typen wurden aber deutlich aufgeräumt und auch um einige Informationen ergänzt.

In der Datei iom16.h hieß es beispielsweise bei den Interrupts noch

/* External Interrupt Request 0 */
#define INT0_vect			_VECTOR(1)
#define SIG_INTERRUPT0			_VECTOR(1)

In der Datei iom16a.h entfallen die alten Interrupt Bezeichnungen. Dafür wurde eine Definition für die Vektornummer hinzugefügt

#define INT0_vect_num  1
#define INT0_vect      _VECTOR(1)  /* External Interrupt Request 0 */

Damit entfällt schonmal das Rätselraten, welche der Vektoren denn jetzt die richtigen sind. Es gibt aber auch neue Definitionen, beispielsweise für die Sonderfunktionen der IO Ports.

#define RXD_DDR   DDRD
#define RXD_PORT  PORTD
#define RXD_PIN   PIND
#define RXD_BIT   0

#define TXD_DDR   DDRD
#define TXD_PORT  PORTD
#define TXD_PIN   PIND
#define TXD_BIT   1

Das vereinfacht die Konfiguration der Ports.

Wer also ein neues Projekt mit einem ATmega8, ATmega16 oder ATmega32 startet sollte darüber nachdenken, eventuell die Header Files für die jeweiligen A Typen zu verwenden


Switch to our mobile site