Forum: Mikrocontroller und Digitale Elektronik Grundsatzfrage zu Arduino und AVR-GCC


von Dominic N. (dominicn)


Lesenswert?

Hallo,

ich habe hier ein Arduino-Lernpaket, das ein Buch und eine 
Experimentierplatine enthält. Bestückt ist diese mit dem ATmega168, zum 
Programmieren kann man direkt die USB-Buchse nutzen.

Nun habe ich mich damit ein bisschen beschäftigt und bin unschlüssig, ob 
ich für das nächste Projekt jetzt voll auf Arduino setzen soll. Das 
scheint ja nicht der Standard-C-Ansatz zu sein, denn dort arbeitet man 
mit startup() und loop() während ich im AVR-GCC-Tutorial die ganz 
normale main()-Routine fand, in der dann alles platziert wird.

Außerdem habe ich mir schon AVR Studio 5 installiert, was auf den 
allerersten Blick auch netter aussieht als dieser simple Arduino-Editor.

Habe ich also später ein Problem, wenn ich jetzt auf Arduino setze und 
später µC ohne Arduino-Bootloader nutzen muss? Wie kann ich jetzt schon 
die Experimentierplatine mit dem AVR Studio programmieren?

Grüße
Dominic

von Robin F. (gehacktes)


Lesenswert?

Schönen guten Morgen,

da hast du voll und ganz recht! Bei dem Arduino arbeitest du nicht mit 
dem Standard C! Zum kennenlernen der Programmiersprache, ist die 
Arduinoumgebung  sehr gut! Da man mit recht leicht verständlichen 
Befehlen ein Programm schreiben kann und meiner Meinung nach sehr gut 
nachvollziehen kann was man da jetz gemacht hat.

Was für mich aber ein sehr großer nachteil ist, wenn du später mit dem 
Standard C arbeiten willst, du viele Befehele umlernen musst! Darum ist 
es sehr zu empfehlen vorher nochmal ein C Programmier Buch sich vor zu 
nehemen und dieses dann nochmal durch zu arbeiten!

( also ist das Arduino nur gut wenn du erstmal in die Welt der µc 
Programmierung einteigen willst )

Mit AVR Studio weiß ich nicht ob du das Arduino benutezn kannst aber ich 
habe z.B. ein MyAVR mk2

http://shop.myavr.de/index.php?404;http://myavr.de:80/shop/article.php?artDataID=36

was für recht wenig Geld sehr gut ist!

von (Gast) (Gast)


Lesenswert?

Naja, ganz so anders ist es dann doch nicht: In der Arduino-IDE werkelt 
schließlich ein avr-gcc. Es sieht deshalb so anders aus, weil erstens 
das main() nicht in Nutzerhand liegt, sondern in einer Datei innerhalb 
der Arduino-Umgebung (und dieses main() enthält die Aufrufe für setup() 
und loop()), in die beim compilieren das Benutzerprogramm (mit 
setup()und loop()) eingebuden wird.
Zweitens gibt's noch Libraries, die die typischen Arduino-Befehle 
abbilden, wie digitalWrite() etc. Die musst Du aber nicht nutzen, man 
kann da auch gleich die typischen avr-gcc-Befehle nehmen.

Bis auf die Trennung in setup() und loop() kann man in Arduino also auch 
ganz normales avr-gcc schreiben, hat aber bei Bedarf auch die 
Unterstützung durch die Arduino-libraries, die ich für manche Sachen 
nicht missen möchte.

von Martin (Gast)


Lesenswert?

Robin F. schrieb:
> Bei dem Arduino arbeitest du nicht mit
> dem Standard C!

Doch, genau damit.

von Bernhard M. (boregard)


Lesenswert?

Martin schrieb:
> Robin F. schrieb:
>> Bei dem Arduino arbeitest du nicht mit
>> dem Standard C!
>
> Doch, genau damit.

Na ja, genaugenommen mit C++...

von Dominic N. (dominicn)


Lesenswert?

Vielen Dank für eure Antworten. Das heißt also, dass ich mit Arduino 
doch erstmal ganz gut aufgestellt bin. Ich habe auch ein bisschen weiter 
experimentiert und z.B. die fertige Bibliothek zur 
LCD-Display-Ansteuerung ist schon recht praktisch.

Kann ich denn mit Arduino geschriebene Programme später ganz einfach auf 
Mikrocontroller bringen, die nicht in einem Arduino-Experimentierboard 
stecken? Das sollte ja eigentlich kein Problem sein, oder?

von Tom M. (tomm) Benutzerseite


Lesenswert?

Dominic N. schrieb:
> Kann ich denn mit Arduino geschriebene Programme später ganz einfach auf
> Mikrocontroller bringen, die nicht in einem Arduino-Experimentierboard
> stecken? Das sollte ja eigentlich kein Problem sein, oder?

Jain, ev. brauchst du einen anderen Programmer, weil jungfräuliche AVRs 
keinen Bootloader drauf haben. Die "Arduino-AVRs" kommen 
vorkonfiguriert/mit Bootloader, deshalb geht deren Programmierung ganz 
einfach via USB/UART.

Damit das Programm auf dem Zielboard funzt, wirst du ev. auch die Fuses 
programmieren. Jungfräuliche AVRs laufen nicht mit externem Quarz bei 
16Mhz, sondern mit dem internen Schwinger bei 1..8 Mhz.

Siehe AVR In System Programmer und AVR Fuses.

Viel Spass mit dem Arduino! :)

von Dominic N. (dominicn)


Lesenswert?

Tom M. schrieb:
> Jain, ev. brauchst du einen anderen Programmer, weil jungfräuliche AVRs
> keinen Bootloader drauf haben.

Okay, aber das ist ja kein Riesenproblem. Prima, dann kann ich jetzt 
echt loslegen ohne mir Sorgen machen zu müssen.

von Christopher (Gast)


Lesenswert?

Dann greif ich das Thema gleich mal auf für eine kurze Frage:

Ich bin über Smileys Workshop gestolpert, da wird einem unter anderem 
gezeigt, wie man das Blink Beispiel in Arduino, als auch über das AVR 
Studio 5 auf den µC bekommt. Schon bei dem nächsten Beispiel, in dem man 
das klassische "hello world!" an den PC schickt und mit dem 
Hyperterminal bin ich dann aber mit dem AVR Studio gescheitert. In 
Arduino lief alles problemlos.

Jetzt die Frage: Wie finde ich möglichst einfach die richtigen Befehle 
um z.B. eben genanntes Beispiel umzusetzen ohne umständlich jedes 
einzelne Register manuell beschreiben zu müssen? Oder gibt es eine 
einfache Möglichkeit um die Arduino-Bibliothek auch im AVR-Studio zu 
nutzen?

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.