C++ AVR: Difference between revisions

From Chaosdorf Wiki
No edit summary
mNo edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Projects]]
{{Project
|name=C++ AVR
|description=inaktiv?
|project category=Software
|location=56
|status=obsolete
}}
[[Category:Mikrofoo]]
[[File:avrBook.jpg|right|thumb|AVR Lehrbuch]]
[[File:avrBook.jpg|right|thumb|AVR Lehrbuch]]
[[File:atmelAVRmouse.jpg|right|thumb|atmel AVR-mouse]]7
[[File:atmelAVRmouse.jpg|right|thumb|atmel AVR-mouse]]
[[File:atmegaBoard.jpg|right|thumb|atmel ATMEGA selfmade Board]]
[[File:atmegaBoard.jpg|right|thumb|atmel ATMEGA selfmade Board]]
= Programmieren von AVR mit C/C++ =
= Programmieren von AVR mit C/C++ =


== Kurzanleitung für Entwicklungsumgebung unter Linux ==
== Kurzanleitung für Entwicklungsumgebung unter Debian GNU/Linux ==
1. Benötigte Softwarepakete
1.1 gcc-avr: Dies ist der (portable) GNU C Compiler, der mehrere Sprachen unterstützt. Dieses Paket bietet Unterstützung für C.


1.2 avr-libc: Standardbibliothek, welche zur Entwicklung von C-Programmen für den Atmel AVR Microcontroller benutzt wird. Dieses Paket enthält die statischen Bibliotheken sowie die nötigen Headerdateien.
=== Benötigte Hardware ===
# Mikrocontroller: -- to be done --
# Programmieradapter: -- to be done --


1.3 avrdude und avrdude-doc: AVRDUDE ist ein Open-Source-Werkzeug für Download, Upload und Manipulation von ROM- und EEPROM-Inhalt der AVR-Mikrocontroller mit Hilfe der ISP-Technik. ISP steht für In-System-Programmierung. Dieses Programmiertool wird durch das makefile
=== Benötigte Softwarepakete ===
# '''Editor''': Hier kann jede(r) seinen/ihren Lieblingseditor verwenden. Wichtig ist nur, daß damit der Text des Quellcodes geschrieben und gespeichert werden kann. Es kann aber auch eine mehr oder weniger ausgewachsene Entwicklungsumgebung (IDE) verwendet werden, die z.T. noch Debugger u.v.m. enthält. Für erste Gehversuche ist das aber m.E. overkill und führt eher zu Verwirrung, da man sich zunächst mit der Bedienung der IDE auseinander setzen muß. Einen Kompromiß stellt evtl. ein Editor dar, der nützliche Zusatzfeatures wie z.B. Syntaxhighlighting enthält, wie z.B. Geany [http://packages.debian.org/squeeze/geany].
# '''gcc-avr''': Dies ist der (portable) GNU C Compiler, der mehrere Sprachen unterstützt. Dieses Paket bietet Unterstützung für C.
# '''avr-libc''': Standardbibliothek, welche zur Entwicklung von C-Programmen für den Atmel AVR Microcontroller benutzt wird. Dieses Paket enthält die statischen Bibliotheken sowie die nötigen Headerdateien.
# '''make''': GNU Make ist ein Dienstprogramm, das die Erzeugung von ausführbaren und anderen Dateien aus Quelltexten steuert. Es bestimmt selbstständig, welche Teile eines großen Programms (erneut) erstellt werden müssen und führt die dafür erforderlichen Befehle aus. Make ist nicht auf ausführbare Programme beschränkt. Es lässt sich für jede Aufgabenstellung, bei der eine Reihe von Dateien aus anderen Dateien aufgrund von Abhängigkeiten und Verarbeitungsregeln erzeugt werden müssen, gebrauchen. In der Tat ist es ein Allzweckwerkzeug für die Auflösung von Abhängigkeiten. Das Programm benötigt für einen ''makefile'', der auch so heißen muß. Diese Datei muß im Suchpfad vorhanden sein, am einfachsten legt man sie im Arbeitsverzeichnis des aktuellen AVR-Projekts an. Es gibt fertige makefiles, die als Vorlage dienen können und nur wenig angepasst zu werden brauchen.
# '''avrdude''' und '''avrdude-doc''': AVRDUDE ist ein Open-Source-Werkzeug für Download, Upload und Manipulation von ROM- und EEPROM-Inhalt der AVR-Mikrocontroller mit Hilfe der ISP-Technik. ISP steht für In-System-Programmierung. Dieses Programmiertool wird durch ''make'' aufgerufen und überträgt den kompilierten Maschinencode in den Mikrocontroller. Dazu muß der natürlich über einen Programmieradapter mit dem Rechner verbunden sein.


Alternativ evtl. avrp: Avrp ist ein FLASH/EEPROM-Programmierer für Atmels 8-bit-Mikrocontroller-Familie AVR. Er kann außerdem die Mikrocontroller der Atmel-AT89-Reihe programmieren. Er unterstützt mindestens vier verschiedene Programmiergeräte einschließlich Atmels eigenem AVR-Entwicklungs-Board und In-Circuit-Programmierung.
Einige andere Pakete könnten später noch nützlich sein, werden aber am Anfang nicht unbedingt benötigt:
 
* '''avrp''': Avrp ist ein FLASH/EEPROM-Programmierer für Atmels 8-bit-Mikrocontroller-Familie AVR. Er kann außerdem die Mikrocontroller der Atmel-AT89-Reihe programmieren. Er unterstützt mindestens vier verschiedene Programmiergeräte einschließlich Atmels eigenem AVR-Entwicklungs-Board und In-Circuit-Programmierung.
1.4 make: GNU Make ist ein Dienstprogramm, das die Erzeugung von ausführbaren und anderen Dateien aus Quelltexten steuert. Es bestimmt selbstständig, welche Teile eines großen Programms (erneut) erstellt werden müssen und führt die dafür erforderlichen Befehle aus. Make ist nicht auf ausführbare Programme beschränkt. Es lässt sich für jede Aufgabenstellung, bei der eine Reihe von Dateien aus anderen Dateien aufgrund von Abhängigkeiten und Verarbeitungsregeln erzeugt werden müssen, gebrauchen. In der Tat ist es ein Allzweckwerkzeug für die Auflösung von Abhängigkeiten.
* '''binutils-avr''': The programs in this package are used to manipulate binary and object files that may have been created for Atmel's AVR architecture. This package is primarily for AVR developers and cross-compilers and is not needed by normal users or developers.
 
* '''gdb-avr: source-level debugger
1.5 binutils-avr: The programs in this package are used to manipulate binary and object files that may have been created for Atmel's AVR architecture. This package is primarily for AVR developers and cross-compilers and is not needed by normal users or developers.
* '''simulavr''': Simulator
 
* '''avr-evtd''': ARV-Watchdog-Daemon für Linkstation/Kurobox  
1.6. Editor: Hier kann jede(r) seinen/ihren Lieblingseditor verwenden. Wichtig ist nur, daß damit der Text des Quellcodes geschrieben und gespeichert werden kann.
 
Einige andere Pakete könnten später noch nützlich sein, werden aber am Anfang nicht unbedingt benötigt, z.B. "avr-evtd"
(ARV-Watchdog-Daemon für Linkstation/Kurobox), "simulavr" (Simulator), "gdb-avr" (source-level debugger)
   
   
2. Mit dem Editor ein C-Programm schreiben, als Test kann flash1.c dienen, daß eine LED zum Blinken bringt. Die Datei muß in .c enden
=== Progamm erstellen ===
Mit dem Editor ein C-Programm schreiben, als Test kann das ''flash1.c'' im Listing weiter unten dienen, das eine LED zum Blinken bringt. Die Datei muß die Endung .c haben.


Beispielcode flash1.c (dankenswerterweise von penma zur Verfügung gestellt)
Beispielcode flash1.c (freundlicherweise von penma zur Verfügung gestellt)
<pre>
<pre>
#include <avr/io.h>
#include <avr/io.h>
Line 51: Line 60:
</pre>
</pre>


2. Compilieren
=== Compilieren ===
Das erfolgt durch Aufruf des Programms ''make''. Es benötigt den makefile, der im Pfad zu finden sein muß, am besten im Arbeitsverzeichnis.
<pre>
<pre>
"make TARGET=flash1"
"make TARGET=flash1"
Line 57: Line 67:
</pre>
</pre>


3. Übertragen des Hexfiles in den Controller
=== Übertragen des Hexfiles in den Controller ===
Dies geschieht auch durch Aufruf des makefile. Damit wird avrdude aufgerufen, der dann die Hardware des Programmieradapter ansteuert und darüber die Daten in den AVR überträgt.
<pre>
<pre>
   make program TARGET=flash1
   make program TARGET=flash1
</pre>
</pre>

Latest revision as of 19:32, 30 June 2020

C++ AVR obsolete
inaktiv?
Ort 56
AVR Lehrbuch
atmel AVR-mouse
atmel ATMEGA selfmade Board

Programmieren von AVR mit C/C++[edit | edit source]

Kurzanleitung für Entwicklungsumgebung unter Debian GNU/Linux[edit | edit source]

Benötigte Hardware[edit | edit source]

  1. Mikrocontroller: -- to be done --
  2. Programmieradapter: -- to be done --

Benötigte Softwarepakete[edit | edit source]

  1. Editor: Hier kann jede(r) seinen/ihren Lieblingseditor verwenden. Wichtig ist nur, daß damit der Text des Quellcodes geschrieben und gespeichert werden kann. Es kann aber auch eine mehr oder weniger ausgewachsene Entwicklungsumgebung (IDE) verwendet werden, die z.T. noch Debugger u.v.m. enthält. Für erste Gehversuche ist das aber m.E. overkill und führt eher zu Verwirrung, da man sich zunächst mit der Bedienung der IDE auseinander setzen muß. Einen Kompromiß stellt evtl. ein Editor dar, der nützliche Zusatzfeatures wie z.B. Syntaxhighlighting enthält, wie z.B. Geany [1].
  2. gcc-avr: Dies ist der (portable) GNU C Compiler, der mehrere Sprachen unterstützt. Dieses Paket bietet Unterstützung für C.
  3. avr-libc: Standardbibliothek, welche zur Entwicklung von C-Programmen für den Atmel AVR Microcontroller benutzt wird. Dieses Paket enthält die statischen Bibliotheken sowie die nötigen Headerdateien.
  4. make: GNU Make ist ein Dienstprogramm, das die Erzeugung von ausführbaren und anderen Dateien aus Quelltexten steuert. Es bestimmt selbstständig, welche Teile eines großen Programms (erneut) erstellt werden müssen und führt die dafür erforderlichen Befehle aus. Make ist nicht auf ausführbare Programme beschränkt. Es lässt sich für jede Aufgabenstellung, bei der eine Reihe von Dateien aus anderen Dateien aufgrund von Abhängigkeiten und Verarbeitungsregeln erzeugt werden müssen, gebrauchen. In der Tat ist es ein Allzweckwerkzeug für die Auflösung von Abhängigkeiten. Das Programm benötigt für einen makefile, der auch so heißen muß. Diese Datei muß im Suchpfad vorhanden sein, am einfachsten legt man sie im Arbeitsverzeichnis des aktuellen AVR-Projekts an. Es gibt fertige makefiles, die als Vorlage dienen können und nur wenig angepasst zu werden brauchen.
  5. avrdude und avrdude-doc: AVRDUDE ist ein Open-Source-Werkzeug für Download, Upload und Manipulation von ROM- und EEPROM-Inhalt der AVR-Mikrocontroller mit Hilfe der ISP-Technik. ISP steht für In-System-Programmierung. Dieses Programmiertool wird durch make aufgerufen und überträgt den kompilierten Maschinencode in den Mikrocontroller. Dazu muß der natürlich über einen Programmieradapter mit dem Rechner verbunden sein.

Einige andere Pakete könnten später noch nützlich sein, werden aber am Anfang nicht unbedingt benötigt:

  • avrp: Avrp ist ein FLASH/EEPROM-Programmierer für Atmels 8-bit-Mikrocontroller-Familie AVR. Er kann außerdem die Mikrocontroller der Atmel-AT89-Reihe programmieren. Er unterstützt mindestens vier verschiedene Programmiergeräte einschließlich Atmels eigenem AVR-Entwicklungs-Board und In-Circuit-Programmierung.
  • binutils-avr: The programs in this package are used to manipulate binary and object files that may have been created for Atmel's AVR architecture. This package is primarily for AVR developers and cross-compilers and is not needed by normal users or developers.
  • gdb-avr: source-level debugger
  • simulavr: Simulator
  • avr-evtd: ARV-Watchdog-Daemon für Linkstation/Kurobox

Progamm erstellen[edit | edit source]

Mit dem Editor ein C-Programm schreiben, als Test kann das flash1.c im Listing weiter unten dienen, das eine LED zum Blinken bringt. Die Datei muß die Endung .c haben.

Beispielcode flash1.c (freundlicherweise von penma zur Verfügung gestellt)

#include <avr/io.h>
#include <stdlib.h>

int main (void) {
	uint32_t cnt = 0;

	DDRD = (1 << PD5) | (1 << PD6);

	while (1) {
		cnt++;
		cnt &= (1 << 15) - 1;

		if (cnt & (1 << 14)) {
			PORTD = 1 << PD5;
		} else {
			PORTD = 0 << PD5;
		}
	}

	return 0;
}

Compilieren[edit | edit source]

Das erfolgt durch Aufruf des Programms make. Es benötigt den makefile, der im Pfad zu finden sein muß, am besten im Arbeitsverzeichnis.

"make TARGET=flash1"
Mit TARGET wird der Name des Programms angegeben 

Übertragen des Hexfiles in den Controller[edit | edit source]

Dies geschieht auch durch Aufruf des makefile. Damit wird avrdude aufgerufen, der dann die Hardware des Programmieradapter ansteuert und darüber die Daten in den AVR überträgt.

   make program TARGET=flash1