Forum: Projekte & Code Arduino Library unter Atmel Studio 6.2


von Daniel A. M. (amad) Benutzerseite


Angehängte Dateien:

Lesenswert?

Servus Leute!

Um eine Brücke zwischen der Arduino-"Welt" sowie dem komfortablen AVR 
Studio 6.2 zu schlagen habe ich mich mal daran gemacht folgende 
Tutorials durchzuarbeiten:
http://www.engblaze.com/tutorial-using-atmel-studio-6-with-arduino-projects/
http://code-clarity.blogspot.co.at/2013/01/atmel-studio-for-arduino-guys-part1.html

Dabei ist ein Atmel / AVR Studio Projekt entstanden, welches ich gerne 
als Basis nehme um mal schnell einen Programmcode zu testen, der 
Verwendung von der Arduino-Library macht. Ich hab das selbst schon des 
Öfteren gebraucht, um die Verwendung der Arduino IDE bis auf deren 
Installation komplett zu vermeiden. Vor allem um bestehende 
Beispielcodes für die Ansteuerung von Sensoren oä. schrittweise in 
"reines" C zu "übersetzen". Nur so konnte ich z.B. von der tollen 
IRMP-Library auch gebrauch machen, ohne dass sich etwas mit bereits 
heimlich verwendeten Timer spießt. Außerdem kann man nun mit Alt+G 
bzw. Goto Implementation bis ins kleinste Detail nachverfolgen, was 
unter der Haube der Library vor sich geht. & eventuell ab & zu den Kopf 
schütteln. :D
Jetzt verstehe ich warum das Kompilieren in der Arduino IDE derart lang 
dauert. - Da wird jedes mal die komplette Library aufs neue kompiliert!

Nicht vergessen später dann von der Debug-Konfiguration wegzuschalten 
und bei ggf. anderer Taktung, z.B. Pro Mini mit 8MHz diese unter 
Symbols bei beiden Projekten unter Symbols (für C sowie C++) F_CPU 
anzupassen!
& dann die komplette Projektmappe neu erstellen lassen!

Ein weiterer Tipp:
Die zusätzlichen Zeilen bei der Build-Ausgabe, über die man scrollen 
muss, wenn man die Größe des Kompilats (binäre Sketchgröße im Arduino 
Slang :D - wobei es mir da schon auch ordentlich die Haare aufstellt) 
erfahren möchte, kann man hier deaktivieren:
Extras->Optionen->Projekte & Projektmappen->Ausführlichkeit der Ausgabe: 
Detailiert statt Diagnose

Achja & um aus dem Studio heraus auch gleich flashen zu können, 
einfach nach folgender Anleitung vorgehen und dabei die angegebenen 
AVRDude Zeilen eingeben.
Beitrag "USBasp unter AVRStudio 5 oder 6 verwenden - Anleitung!"
(natürlich den Installationspfad sowie aktuellen COM-Port angeben)
AVRDude: http://download.savannah.gnu.org/releases/avrdude/?C=M;O=D
1
Arduino UNO R3
2
C:\Program Files (x86)\AVRDude\avrdude.exe
3
-patmega328p -carduino -Uflash:w:"$(TargetDir)$(TargetName).hex":i -b115200 -P\\.\COM5

Weil sich beim Versionswechsel eininge Pfade geändert haben gibts es für 
beide jeweils aktuellen Versionen von http://arduino.cc/en/Main/Software 
jeweils ein eigenes Projekt. Es wird dabei ausgegangen, dass ihr es im 
vorgeschlagenen Verzeichnis installiert.

Viel schnellen & hoffentlich frustlosen Erfolg damit,
Daniel A. Maierhofer

von Lara (Gast)


Lesenswert?

Daniel A. Maierhofer schrieb:
> ohne dass sich etwas mit bereits
> heimlich verwendeten Timer spießt.

Es gibt keine "heimlich" verwendeten Timer in den Arduino-Libs. Wer zu 
faul ist die Doku zu lesen ist selbst schuld.

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

In der offiziellen Doku http://arduino.cc/en/Reference/HomePage habe ich 
keine Informationen dazu finden können.
Hat jemand einen Link zu einer Seite, wo das gut beschrieben ist?

Bisher bin ich mit dem Nachschauen im Source eigentlich immer recht gut 
ausgekommen, außerdem kann der nicht wie eine zugehörige Doku veraltet 
sein und evt. nicht zusammenpassen, da steht ja schließlich schwarz auf 
weiß was passiert. Grade deswegen finde ich so toll, dass man mit Alt+G 
bzw. Goto Implementation da bis ins kleinste Detail nachverfolgen kann, 
was passiert.
Zumindest auf C-Code-Ebene. ;)

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

& wenn man noch das "Projekt" von
Beitrag "Re: AVR  Atmel Studio 5  6 - libc Source"
als vorhandenes Projekt hinzufügt kommt man per Alt+G sogar zum Source 
der verwendeten avr-libc Funktionen! Querverweise olé!

von Lolli-Lümmel (Gast)


Lesenswert?

@Daniel

Wenn hier jemand etwas veröffentlicht, was auch anderen Leuten von 
Nutzen
sein kann, so kommt sofort eine Ratte aus ihrem Loch, um diese Arbeit
schlechtzureden. Das ist hier so. Man muß dann hart gegen sich selbst 
sein
und den "Dank" solcher Leute ignorieren.

von Daniel A. M. (amad) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hab gerade gemerkt, dass die als Link eingebundenen Dateien alle 
relative Pfade hatten. Anbei die korrigierte Version.
Vorausgesetzt Eure Toolchain liegt in
1
C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\
sowie die Library in
1
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\
Ansonsten einfach per Texteditor ersetzen. ;)

von M. B. (freiberger77)


Lesenswert?

Hy, ich finde die Idee sehr gut.
Ich versuche gerade vergeblich, die Libs von Arduino ins AVR-Studio zu 
bekommen.
Was ist der Unterschied zwischen den beiden Zip-Dateien ?

Wie kann ich zB die Ethernet lib mit DHCP usw in mein Projekt einbinden 
?

von Jörg (Gast)


Lesenswert?

Dem kann ich nur zustimmen. Siehe auch meinen Beitrag "Umgangsformen".

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

Bitteschön ein Update zur Verwendung mit dem Atmel Studio 6.2 Build 1502

https://github.com/damadmai/studio_6_arduino_100
https://github.com/damadmai/studio_6_arduino_100_template

https://github.com/damadmai/studio_6_arduino_150
https://github.com/damadmai/studio_6_arduino_150_template

M. B. schrieb:
> Was ist der Unterschied zwischen den beiden Zip-Dateien ?

Daniel A. Maierhofer schrieb:
> Weil sich beim Versionswechsel eininge Pfade geändert haben gibts es für
> beide jeweils aktuellen Versionen von http://arduino.cc/en/Main/Software
> jeweils ein eigenes Projekt. Es wird dabei ausgegangen, dass ihr es im
> vorgeschlagenen Verzeichnis installiert.

Sollte aber nun durch die Beschreibungstexte auf GitHub noch klarer 
hervorgehen. ;)

Die Einbindung der Servo-Library zog beispielsweise folgende Änderungen 
nach sich:
https://github.com/damadmai/studio_6_arduino_100_template/commit/098beda1dd5ff76ff44939aeb372798a8fad0a62#diff-1

M. B. schrieb:
> Wie kann ich zB die Ethernet lib mit DHCP usw in mein Projekt einbinden

Per Rechtsklick aufs Projekt -> Hinzufügen -> vorhandenes Element... 
alle .cpp-Dateien aus
1
C:\Program Files (x86)\Arduino\libraries\Ethernet\src
2
C:\Program Files (x86)\Arduino\libraries\Ethernet\src\utility
als LINK (durch Anklicken des Pfeils bei "Hinzufügen" im 
Dateiauswahldialog) hinzufügen. (in der .cppproj sollte man dann noch 
die relativen Pfadangaben durch absolute ersetzen...)
Damit die Header gefunden werden, anschließend per Rechtsklick aufs 
Projekt -> Eigenschaften bei der Toolchain für Alle Konfigurationen zu 
den Directories beim C++ Compiler zumindest die Ordner
1
C:\Program Files (x86)\Arduino\libraries\Ethernet\src
2
C:\Program Files (x86)\Arduino\libraries\Ethernet\src\utility
3
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
per absolutem Pfad hinzufügen.

Viel Erfolg damit,

von Döbelbieger (Gast)


Lesenswert?

> Es gibt keine "heimlich" verwendeten Timer in den Arduino-Libs. Wer zu
> faul ist die Doku zu lesen ist selbst schuld.

Genau, wer Arduino nimmt ist selbst schuld!

von jok3r (Gast)


Lesenswert?

Hallo meine Frage zum ganzen,
ich habe ein größeres Projekt mit der Arduino IDE geschrieben und würde 
dieses gerne in ATMEL Studio bearbeiten, und später mit dem 
Programmieradapter flashen ohne Bootloader.
Wieso genügt es nicht einfach , die Standart Arduino.h lib mit 
einzubinden ?
Darin befinden sich doch alle diese "hilfreichen" funktionen aufrufe 
ect??

Diesen Setup() kram ect braucht doch keiner ?
Gruß

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

Naja, weil in der Header Datei nur die Funktionsdeklarationen, aber 
nicht die Definitionen, also der eigentliche Code enthalten sind.
Der ist in den vielen .c-Files, die ich da manuell eingebunden hatte. 
Außerdem würden ohne die main / setup Aufrufe im Hintergrund die Timer, 
der ADC usw. nicht initialisiert werden, was z.B. fürs unktionieren von 
analogWrite() und analogRead() notwendig ist. Siehe auch:

Lara schrieb:
> Es gibt keine "heimlich" verwendeten Timer in den Arduino-Libs. Wer zu
> faul ist die Doku zu lesen ist selbst schuld.
Daniel A. Maierhofer schrieb:
> In der offiziellen Doku http://arduino.cc/en/Reference/HomePage habe ich
> keine Informationen dazu finden können.
> Hat jemand einen Link zu einer Seite, wo das gut beschrieben ist?

Hab bis jetzt nix Gutes dazu gefunden. Evtl. jemand anderes?

Fürs Programmieren kann ich
Beitrag "AVRDUDE Program_Upload_to_MC.bat"
empfehlen. ;)

Jetzt wird ja dann eh bald wieder ein Update fällig. ;)

von Jok3r (Gast)


Lesenswert?

sry das war mein Fehler natürlich bräuchte ich dazu auch die .c 
Dateien...

Kannst du das mir erläutern ? ->
Außerdem würden ohne die main / setup Aufrufe im Hintergrund die Timer,
der ADC usw. nicht initialisiert werden, was z.B. fürs unktionieren von
analogWrite() und analogRead() notwendig ist. Siehe auch:

das ganze sieht doch so aus oder nicht? ->

main(){

   setup();

   while(true){
   loop();
   }
}

von Checker (Gast)


Lesenswert?

Hallo,

Leute, warum installiert Ihr nicht die Arduino IDE und Atmel Studio und 
dann noch das Plugin hier
http://www.visualmicro.com/page/Arduino-Visual-Studio-Downloads.aspx
und fertig ist das Ding.

Dann kann man Arduino typisch oder rein C oder gemischt programmieren.

von Checker (Gast)


Lesenswert?

Hallo,

nochwas. Es hindert Euch aber auch niemand daran in der Arduino IDE rein 
C zu programmieren. Aber wie gesagt mit dem Atmel Studio und dem Plugin 
habt ihr eine Oberfläche und könnt alles machen. Geht auch aus VS 
heraus.

von Dustin (Gast)


Lesenswert?

Hallo,

wenn ich die Datei Studio_Arduino.cpp ausführe kommen da nur 2 error:
Error  1  cannot find -larduinocore    1  1  Studio_Arduino
+
Error  2  ld returned 1 exit status  collect2.exe  0  0  Studio_Arduino
Was kannn/muss ich dagegentun ?
Danke schonmal im vorraus.
LG
Dustin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.