Wie unterscheidet sich die Programmierung eines Arduino von Standard-C?

Lesezeit: 4 Minuten

Benutzer-Avatar
Nathan

Ich habe einen Hintergrund in der Programmierung eingebetteter Systeme (TI MSP430Atmel ATxmega). Wie unterscheidet sich die Programmierung eines Arduino von diesen? Welche Kenntnisse über C kann ich in die Programmierung des Arduino einfließen lassen?

  • Das C++-Tag wurde entfernt, da es sich um reines C handelt.

    – Xeo

    9. Mai 2011 um 1:51 Uhr

  • Entschuldigung, ich war verwirrt, weil hier in diesem Beispiel arduino.cc/en/Hacking/LibraryTutorial Sie verwenden C++

    – Nathan

    9. Mai 2011 um 2:10 Uhr


  • Ich verstehe nicht, warum das C++-Tag entfernt wurde. Arduino-Bibliotheken sind normalerweise C++-Klassen. (Doh! zwei Jahre alte Kommentare 😛 )

    – Marcello Romani

    13. Mai 2013 um 18:21 Uhr


  • Immer noch C++ und jetzt fast 3 Jahre alt… ähm. 😛

    – Fähiger Mac

    7. Dezember 2015 um 2:39 Uhr

Benutzer-Avatar
baalexander

Obwohl ich nichts über den ATXMega weiß, verwenden die 8-Bit-AVR-Chips wie der ATmega328, der auf den neueren Arduinos verwendet wird, den AVR-GCC-Compiler. Dies ermöglicht das Kompilieren von C und sogar C++ zu einem AVR-Chip. Eine Ebene über dem AVR-GCC befindet sich die AVR Libceine C-Bibliothek, die das Programmieren für den AVR zu einer übergeordneten Aufgabe macht (nicht mehr direkt auf Register verweisen muss usw.).

Die Arduino IDE verwendet AVR-GCC und die AVR libc-Bibliothek im Backend. Darüber hinaus macht die Arduino IDE andere Bibliotheken verfügbarwie eine schöne serielle Schnittstelle.

Schließlich wird der Arduino mit einem Bootloader geliefert, der auf den AVR-Chip gebrannt ist. Der Bootloader ermöglicht es einfach, den AVR über eine serielle Verbindung (von USB) anstelle eines In-Sytem-Programmierers oder Entwicklungsboards zu programmieren.

Genug Hintergrundgeschichte, um Ihre Frage zu beantworten: Der Arduino kann in C und sogar C++ programmiert werden. Die verfügbaren Bibliotheken sind in C geschrieben und alles wird mit AVR-GCC kompiliert. Die Arduino IDE ist nicht einmal erforderlich.

Bearbeiten

Das Interesse an diesem Thema scheint groß zu sein. Ich habe einen Blogbeitrag geschrieben, um zu versuchen und zu geben ausführlichere Details zu AVR, Arduino und AVR-GCC.

  • verfügbare Bibliotheken sind in C und HAUPTSÄCHLICH in C++ geschrieben

    – Zeiger Null

    14. November 2014 um 8:50 Uhr

  • Das Repo des Eclipse-Projekts wurde gelöscht.

    – alter Schlamm0

    5. September 2016 um 3:24 Uhr

  • @oldmud0 danke, ich muss das GitHub-Repo irgendwann gelöscht haben. Ich habe den Verweis auf das Eclipse-Projekt aus der Antwort entfernt.

    – Baalexander

    6. September 2016 um 18:22 Uhr

Benutzer-Avatar
Georg Profenza

Sie können Ihre vorhandenen C-Kenntnisse bei der Verwendung von Arduino mitnehmen.

Der Zweck bestand darin, Künstlern/Nicht-Programmierern einen einfachen Einstieg in die Hardwareprogrammierung und das Basteln zu ermöglichen, sodass die „Arduino-Sprache“ nur ein Wrapper ist, um die Entwicklung zu vereinfachen.

Es sollte für Sie als C-Programmierer viel einfacher sein, Arduino zu verwenden. Das Dokumentation ist gar nicht lang, die wiki ist nett und die Leute auf der Forum sind begeistert und hilfsbereit.

Arduino ist C, nur dass dies in jedes Programm eingefügt wird:

void main() {
  setup();
  for(;;) {
    loop();
  }
}

  • Arduino ist mehr als C, das ist es (eine Teilmenge von) C++.

    – Peter Mortensen

    28. Oktober 2011 um 17:59 Uhr

  • Es gibt auch einige andere Ausnahmen bei der Verwendung der Arduino IDE. Beispielsweise treten Probleme bei der Verwendung von Strukturen in Funktionsaufrufen oder Rückgaben auf, es sei denn, Sie definieren die Struktur in einer separaten .h-Datei. Wie es darin steht Spielplatz.arduino.cc/Code/Struct: Der übliche Arduino-Workaround/Hack besteht darin, alle Funktionen zu haben, die benutzerdefinierte Datenstrukturen erfordern, die in einer zusätzlichen .h-Datei platziert werden müssen. Erstellen Sie einfach eine neue Registerkarte in der IDE und geben Sie ihr einen Namen.h dann #include “name.h”

    – WienMike

    22. Februar 2013 um 20:24 Uhr

  • Seltsam. So blöd das Beispiel auch sein mag: pastebin.com/aF3QLVce kompiliert unter Arduino IDE v1.0.5. Ich lade 1.5.6-r2 herunter, um es auszuprobieren … Könnten Sie aus Neugier den Code, den Sie versucht haben, einfügen? (Übrigens, ich bin auf Ubuntu 12.04 x64)

    – Marcello Romani

    12. Mai 2014 um 7:13 Uhr


  • Kompiliert auch unter 1.5.6-r2.

    – Marcello Romani

    12. Mai 2014 um 7:16 Uhr

  • @PaulJurczak IIRC die Arduino IDE spielt mit den ersten Zeilen der .ino-Quelldatei. Dies führt manchmal dazu, dass gültige C++-Konstrukte syntaktisch falsch werden. Eine Lösung hierfür besteht darin, die Zeilen, die Ihnen Probleme bereiten, in eine separate .h-Datei zu packen und sie dann (mit doppelten Anführungszeichen) in die Skizze aufzunehmen. Ich habe dies mit Ihrem Beispiel versucht, und es funktioniert. (Siehe auch den Kommentar von ViennaMike oben.)

    – Marcello Romani

    29. Mai 2014 um 8:40 Uhr

Sie können so ziemlich Ihr gesamtes Wissen mit C und eingebetteten Systemen mitnehmen und Sie werden mehr als in Ordnung sein. Es ist überhaupt nicht schwer zu bedienen. Setzen Sie ein Lesezeichen für Arduino-Referenz Seite und Sie werden in kürzester Zeit Sachen schreiben.

Arduino ist C-ähnlich und extrem einfach zu erlernen. Sie haben sich von Dingen wie dem Lesen und Schreiben in periphere Register abstrahiert, um grundlegende Aufgaben zu erledigen.

Ein Blick auf einen Beispielcode und die Arduino-Referenz und Sie sind im Handumdrehen einsatzbereit, wenn Sie echtes C auf einer anderen Plattform gemacht haben.

1365200cookie-checkWie unterscheidet sich die Programmierung eines Arduino von Standard-C?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy