Wie funktioniert das Arduino Framework

Hi,

Ich hatte mich gefragt wie das ganze Arduino Framework funktioniert. Kann ich das "Arduino C" nenn ich das mal nur auf einem Arduino Programmieren oder auch beispielsweise auf einem attiny. Wie funktioniert das denn mit den speziellen Arduino Funktionen wie digitalRead. Macht der Complier das dann zu einem anderen C-Code den der Controller versteht ? Blicke da nicht ganz durch.

Der QuellCode liegt auf deinem Rechner.
Reinschauen, C und C++ verstehen, und du findest alles was du brauchst.

Für andere µC, als die Arduino üblichen, gibt es eigene Cores.

die Arduino IDE unterstützt mehrere Prozessoren, bzw. können weitere Boards hinzugefügt werden.
Daher klappt auch die Programmierung eines ATtiny.

Funktionen/Methoden die nicht Standard C++ sind, wie z.B. das digitalRead, kommt durch entsprechende Libraries hinzu.
Das sind oft normale .h/.cpp Dateien.
Viele Libraries bindet die Arduino IDE automatisch ein, daher siehst du nicht immer das #include dazu.

Der eigentliche Build-Prozess ist z.B. hier dokumentiert
https://arduino.github.io/arduino-cli/sketch-build-process/

Sagen wir mal vereinfacht so es werden in den Sketch automatisch Bibliotheken (wie zB arduino.h) eingebunden in denen die Arduino-spezifischen Funktionen und Variablen definiert werden.
Diese findest Du in Arduino-IDE-Packet.
Grüße Uwe

Das was du "Arduino C" nennst sind ganz normale in C/C++ geschriebene Klassen und Funktionen.

Das kannst du dir selbst anschauen:
x:\Arduino\hardware\arduino\avr\cores\arduino

digitalRead()/digitalWrite() z.B steckt in wiring_digital.c

Die Controller unterscheiden sich intern in den Registern und extern bei den Pins und was diese können. Da wird mit Präprozessor-Makros und Hilfsfunktionen gearbeitet um das allgemein zu halten so dass je nach eingestelltem Controller andere Sachen verwendet werden. An der Stelle wird es aber etwas unübersichtlich, da das über mehrere Dateien verteilt ist

Im \avr\variants Order ist die Pin-Struktur bestimmter Prozessoren definiert

In WInterrupts.c und wiring_analog.c sieht man das auch gut

Also ist Arduino quasi eine Riesige Bibliothek und ich könnte theoretisch jeden C/C++ Controller mit Arduino programmieren ?

Serenifly:
Das kannst du dir selbst anschauen:
x:\Arduino\hardware\arduino\avr\cores\arduino

werde ich gleich mal durchschauen

Hi

Um Das klar gesagt zu haben:
Du kannst nicht ein beliebigen Arduino-Sketch auf einen ATtiny brutzeln.
Nicht nur, weil im ATtiny viel weniger Platz ist, auch hat der ATtiny nicht die ganze Hardware, Die der 'normale' Arduino mitbringt.

Aber: Ein klares Ja, man kann mit der IDE einen ATtiny programmieren (z:b. per Arduino und dem Sketch Arduino_as_ISP).

MfG

Der µC versteht nur Assembler - aber Das macht dann der Kompiler.
Mit Einschränkungen kannst Du aber Alles, was der Kompiler verdaut, auf ein anderes Target schreiben.

und ich könnte theoretisch jeden C/C++ Controller mit Arduino programmieren ?

Lesestoff