in der aktuellen c't wird beschrieben, wie man Arduinos im AVR-Studio programmiert. Das AVR-Studio hat einige Vorzüge, z.B. Codetextmarkierungen und Intellisense.
Auch wird kurz einmal auf Eclipse hingewiesen.
Aus diesem Grunde hätte ich dann neben dem Tipp noch eine kurze Frage:
Kann ich mit so einem Setup den Arduino im AVR-Studio/Eclipse auch so bequem über den USB-Port programmieren wie in der Originalen Arduiono-Software?
Wer's nicht glaubt einfach mal die Ausgabeoptionen auf "verbose" stellen. Dann sieht man welcher Compiler am Werk ist und wo er die Dateien herbekommt. Wenn man die Quelldateien anschaut sieht man sofort, was die IDE hinter den Kulissen treibt und dass Arduino C bzw. C++ nutzt.
Was hat der Compiler mit der Sprache zu tun? C ist C egal, ob mit gcc, dem C-Compiler vom M$, oder was auch immer.
Kleine Unterschiede gibt es sicher immer. So kennt der avr-gcc z.b. die Namen der Register und man kann die somit wie Variablen verwenden. Der Rest sind reine, wieder in C geschriebene Bibliotheken die von der IDE mitgebracht werden.
Allerdings kann der avr-gcc nicht nur C sondern auch dessen Erweiterung C++.
Der Compiler ist aber non-standard. Da wurde gemoddet.
Naja, angepasst an AVR ja, an Arduino nein. Die IDE gaukelt Dir vor es wäre etwas anderes, aber das ist C bzw. C++ wie es der Rest der Welt auch verwendet.
nochmal zur ursprünglichen Frage: Kann man mit USB programmieren:
Ja das geht, hängt aber vom Prozessortyp ab, den man verwendet. Es gibt Atmel Prozessoren (z.B. 32u2), die mit wenig Beschaltung einen USB
Eingang in den Prozessor ermöglichen. Es ist ein Bootloader von Atmel im Prozessor, der über das Atmel eigene FLIP Tool die schnelle Programmierung
des Prozessors ermöglicht. Dazu müssen unter Win7 ein paar Treiber installiert werden und dann funktioniert dies stabil. Dieses Flip Tool kann man in das AVR Studio integrieren.
Einen anderen Aspekt sollte man noch beachten:
Wenn man die Arduino Plattform verläßt, gibt man auch die ganzen schönen Makros auf, die auf dieser Plattform zur Verfügung gestellt werden.
Man muß viel mehr von Hand codieren und sich in der internen Prozessor Architektur besser auskennen. Aber man lernt noch Prozessor naher.
Viele Arduino Biblioteken muß man erstmal auf die Atmel Platform portieren..
Aber AVR Studio bietet auch einiges, wie Debugging, man kann jedes prozessorinterne Bit begutachten, was auch nicht schlecht ist..
Ja das geht, hängt aber vom Prozessortyp ab, den man verwendet. Es gibt Atmel Prozessoren (z.B. 32u2), die mit wenig Beschaltung einen USB
Eingang in den Prozessor ermöglichen. Es ist ein Bootloader von Atmel im Prozessor, der über das Atmel eigene FLIP Tool die schnelle Programmierung
des Prozessors ermöglicht. Dazu müssen unter Win7 ein paar Treiber installiert werden und dann funktioniert dies stabil. Dieses Flip Tool kann man in das AVR Studio integrieren.
Der Arduino hat einen Bootloader, aber der ist nicht von Atmel.
Einen anderen Aspekt sollte man noch beachten:
Wenn man die Arduino Plattform verläßt, gibt man auch die ganzen schönen Makros auf, die auf dieser Plattform zur Verfügung gestellt werden.
Man muß viel mehr von Hand codieren und sich in der internen Prozessor Architektur besser auskennen. Aber man lernt noch Prozessor naher.]
Einen anderen Aspekt sollte man noch beachten:
Wenn man die Arduino Plattform verläßt, gibt man auch die ganzen schönen Makros auf, die auf dieser Plattform zur Verfügung gestellt werden.
Man muß viel mehr von Hand codieren und sich in der internen Prozessor Architektur besser auskennen. Aber man lernt noch Prozessor naher.
Man kann die Arduino Libraries völlig problemlos ohne die Arduino IDE und ohne die Arduino Hardware benutzen. Sowohl mit als auch ohne AVR Studio. Habe ich auch schon öfters getan.
Viele Arduino Biblioteken muß man erstmal auf die Atmel Platform portieren..
Stimmt nicht. Sie sind Atmel kompatibel. Wie sollte es auch anders sein?
Aber AVR Studio bietet auch einiges, wie Debugging, man kann jedes prozessorinterne Bit begutachten, was auch nicht schlecht ist..
Wie immer, es gibt Vor- und Nachteile.
Der einzige Nachteil der mir einfällt ist, daß es kein vorkonfiguriertes "einfaches" build Script gibt. Daß AVR Studio die Funktionsprototypen nicht selber generiert sehe ich als Vorteil.
vielen Dank für deine Antwort, das wie macht mich aber neugierig.
1.) Wie kann man die Arduino Funktionen im AVR Studio nutzen. Gibt es hierzu eine Anleitung?
2.) Gibt es für den Atmel U32U2 einen Arduino Bootloader? Falls ja, kannst du mir sagen wo?
a) Das sind ganz normale C Bibliotheken. Die benutzt man genau so wie es jedes C Anfängerbuch und auch jedes Tutorial beschreibt. Man muss nur herausfinden wo sie stehen und wie sie heissen. Wie das geht hatte ich bereits geschrieben.
Arduino wird in C programmiert.
Wer's nicht glaubt einfach mal die Ausgabeoptionen auf "verbose" stellen. Dann sieht man welcher Compiler am Werk ist und wo er die Dateien herbekommt. Wenn man die Quelldateien anschaut sieht man sofort, was die IDE hinter den Kulissen treibt und dass Arduino C bzw. C++ nutzt.
Allerdings kann es sein, dass die Bibliotheken nicht jeden beliebigen Atmel Chip unterstützen. Man kann aber auch gleich auf alle Arduino Funktionen verzichten und direkt die AVR-libc nehmen. Letztendlich ist Arduino nur eine Fassade für genau diese Libraries. An einigen Stellen ist Arduino bequemer zu bedienen, aber an vielen Stellen ist AVR-libc performanter und manchmal sogar reichhaltiger in den Funktionen. Und vor allem unterstützt avr-libc sehr viel mehr Chips als Arduino.
b) Der Arduino Bootloader ist nicht Arduino spezifisch sondern emuliert ein ISP Protokoll. Von daher würde ich erwarten, dass alle Bootloader mehr oder weniger gleich gut geeignet sind. Da Du schreibst, dass es für den U32U2 einen Bootloader gibt sollte sich die Frage bereits von selber erledigt haben.
Die Anleitung sieht verdächtig ähnlich aus wie die aus der CT. Fragt sich wer da bei wem abgeschrieben hat. Dass abgeschrieben wurde ist klar weil es ganz offensichtlich bessere Lösungen gibt. AVR Studio unterstützt externe Build Skripte. Deshalb sind die manuellen Schritte die da beschrieben werden definitiv nicht nötig. Irgendwie scheint mir die CT wird immer nur schlechter
Genau mein Punkt. Abschreiben und Verbesserungen hinzufügen wäre OK. Aber einfach nur abschreiben ohne wenigstens die naheliegenden Verbesserungen durchzuführen ist einfach nur schwach. Vor allem weil ja jede Menge Arduino Build Skripte schon veröffentlich wurden und auch nicht schwer mit Google zu finden wären.
Nochmal zur Wiederholung: es gibt keinen "Arduino" Bootloader. Arduino verwendet einen Bootloader.
Warum sollte das nicht gehen? Den IDEs sollte es doch egal sein mit was sie reden solange die Gegenseite das Protokoll einhält. Ich hab's zwar nicht probiert, ich würde mich aber sehr wundern wenn es nicht gehen würde. Die Frage ist nicht "ob" sondern "wie".
Die IDE erzeugt immer aus einem *.ino bzw. *.pde File ein *.cpp Programm. Dieses findet man im "Arbeitsverzeichnis". Wenn man die IDE auf "verbose" einstellt kann man sehen wo das liegt. Wichtig ist aber wie mkl0815 schon erwähnt hat, dass die IDE immer main.cpp mitkompiliert und auch linkt weil dort eben "main" implementiert wird.
Wenn man den Buildprozess von C einmal verstanden hat ist es leicht auf den ganzen *.pde / *.ino Zauber zu verzichten und die Bibliotheken direkt zu verwenden. Dann hat man alle Arduino Funktionen zur Verfügung und kann ganz normal C/C++ programmieren. Bequemerweise funktionieren dann die üblichen C Tools auch richtig. Insbesondere gilt das für die Fehlermeldungen vom Compiler bei denen dann plötzlich auch die Zeilennummer stimmt