Moin,
ich möchte den Seeeduino XIAO verwenden, der einen SAMD21G18A in sich
trägt und von der Ardu IDE unterstützt wird. Stromzufuhr und Debug Port
laufen über den USB Stecker, der ohne FTDI auskommt und kein virtueller
COM Port ist.
SWD ist leider nicht rausgeführt, sonst könnte ich zb Embitz verwenden.
Aber J-Link steht auch nicht als Debugger drin im Manual, Atmel hat da
wohl was anderes als ST.
Problem: Die Arduino "Projektverwaltung" ist nicht so meines. Ich muss
aber die IDE verwenden, da sie halt das Framework für diese CDU bildet.
Und da sind halt nur .ino Dateien drin im Verzeichnis. Die vielen
Features die dieser Chip hat sind sowieso nicht erreichbar über
"Arduino". Nicht mal der Clock lässt sich variieren.
Ein gescheites Programm mit 5-6 Files besteht aber aus Headern und Code
Dateien, weil zwischen den Modulen ja Daten ausgetauscht werden müssen.
Kriegt man das irgendwie hin? Erzeuge ich eine main.h und versuche die
einzubinden, egal ob mit "" oder mit den eckigen Klammern wird die nicht
gefunden.^
Gilt übrigens alles auch für den ESP8266. Wen es möglich wäre den ganzen
WLAN Kram da raus zu halten, der jedes Projekt mit 350kb aufbläst würde
ich den 8266 öfter verwenden. Aber Arduino will das so...
Du kannst in Arduino Projekten (*.ino) ganz normal header und weitere
*.cpp Dateien einfügen und benutzen.
Aber die "main" Datei wird vom Framework erzeugt, da solltest du die
Finger von lassen.
Da hast du ein kleines Beispielprojekt:
http://stefanfrings.de/arduino_oled/index.html
Stefan ⛄ F. schrieb:> Aber die "main" Datei wird vom Framework erzeugt, da solltest du die> Finger von lassen.
Oha... und da wundert man sich :-(
"Textausgabe mit 6x8 Pixel Zeichensatz, incl. deutscher Umlaute"
Das klingt ja prima.... gucken ob ich das in Embitz portiert kriege
(Code sieht sehr gut aufgeräumt aus). Der Flaschenhals ist ja I2C bei
den Dingern. Mit 400khz laufen die bei mir nicht richtig, hängen sich
oft auf.
Christian J. schrieb:> Mit 400khz laufen die bei mir> nicht richtig, hängen sich oft auf.
Ich habe ca. 500kHz als Maximum herausgefunden, aber ohne
Langzeit-Erfahrung. Angeblich gibt es diese Display von
unterschiedlichen Herstellern mit unterschiedlichen Eigenschaften.
Stefan ⛄ F. schrieb:> Ich habe ca. 500kHz als Maximum herausgefunden, aber ohne> Langzeit-Erfahrung.
Die habe ich... LED Wetterstation mit ESP8266 und OLED1306... alle 1-2
Tage stand es. Aktuell auf 100khz läuft es seit gut 6 Monaten ohne ein
einziges Mal zu hängen.
Zu den Headern: Du kannst also zu jeder ino Datei (außer main) einen
Header erzeugen? Und den einbinden in andere .ino 's.
Als Alternative zur Arduino IDE kann ich
https://github.com/arduino/arduino-cli empfehlen. Zusammen mit einem
kleinen Makefile ist das mMn wesentlich komfortabler als die Arduino IDE
(die einige Limitierungen und Einschränkungen hat, da deren Zielgruppe
halt hauptsächlich Einsteiger/Neulinge sind).
Bernhard schrieb:> Als Alternative zur Arduino IDE kann ich> https://github.com/arduino/arduino-cli empfehlen.
Läuft nur unter Linux. Und das habe ich vor 1/2 Jahr runter geworfen
(Slackware), da viel zu wenig verwendet. Schade....
Hallo Christian,
vielleicht zum besseren Verständnis. Deine .ino Datei mit Projektnamen
kannste dir vorstellen als wenn das deine übliche main.c / main.cpp
Datei ist. Das wird alles versteckt in
https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/main.cpp
Du siehst in der .ino statt das Übliche
1
#include ...
2
3
intmain(void)
4
{
5
while(1)
6
{
7
}
8
}
eben
1
#include ...
2
3
voidsetup()// entspricht main(void)
4
{
5
}
6
7
voidloop()// entspricht while(1)
8
{
9
}
Womit im Hintergrund Standard Libs wie Serial automatisch eingebunden
werden mittels Arduino.h was allgegenwärtig ist. Du kannst deine
weiteren/eigenen Libs ganz normal im Schema .h/.cpp schreiben und ganz
normal in der Projekt .ino inkludieren. Außer man legt in der IDE
weitere Tabs an die weitere .ino Dateien erstellen womit man Code
auslagern kann. Würde ich dir aber nicht empfehlen. Die Üblichen .h/.cpp
ist der sauberste Weg von allen.
Nochwas. Du kannst natürlich in der Projekt .ino die setup und loop
Funktion komplett löschen und das Übliche schreiben.
1
#include ...
2
3
intmain(void)
4
{
5
while(1)
6
{
7
}
8
}
Dann hat man in der Arduino IDE nichts mehr von Arduino. Je nachdem was
man möchte.
Christian J. schrieb:
Die Arduino IDE kann auch mit *.cpp und *.h Dateien im Projekt arbeiten,
einfach eine neue Datei anlegen. Du musst nur all Header welche du in
diesen Extra cpp Dateien verwendest explizit mit #include <header.h>
referenzieren (z.B. die "Arduino.h").
> Problem: Die Arduino "Projektverwaltung" ist nicht so meines. Ich muss> aber die IDE verwenden, da sie halt das Framework für diese CDU bildet.
Das stimmt nicht! Sieh dir mal Visual Studio Code zusammen mit
PlatformIO an. Damit kannst du dieselben Libraries verwenden und wenn du
möchtest kann du deinen Haupt-Sourcefile weiterhin "*.ino" nennen um es
weiterhin in der Arduino IDE bearbeiten zu können, ich würde aber
empfehlen alles in "*.cpp" Dateien zu verwenden, damit die anderen
Plugins die Datei als cpp Datei erkennen.
Langfristig hast du da viel mehr Spass damit und mit Intellisense und
direkter git Anbindung und tausenden von Plugins ist Visual Studio Code
der Arduino IDE haushoch überlegen.
Michael
Michael D. schrieb:> Das stimmt nicht! Sieh dir mal Visual Studio Code zusammen mit> PlatformIO an.
Läuft unter Windows 7 leider nicht :-((((( Python ist nicht
installierbar. Und für W10 fehlt mir absolut der Nerv meine gefühlt 1000
Einstellungen neu zu machen.
VSC erzeugt auch mal eben 89.000 Dateien im User Verzeichnis, die nicht
mit deinstalliert werden....
Christian J. schrieb:> Läuft unter Windows 7 leider nicht :-((((( Python ist nicht> installierbar.
Unsinn. Natürlich kann man Python auch auf Windows7 installieren.
> VSC erzeugt auch mal eben 89.000 Dateien im User Verzeichnis, die nicht> mit deinstalliert werden....
So what? Man will es ja nicht deinstallieren. Und wenn doch, löscht man
die entsprechenden Verzeichnisse halt manuell. Sind ja nur zwei.
Christian J. schrieb:> Läuft unter Windows 7 leider nicht :-((((( Python ist nicht> installierbar. Und für W10 fehlt mir absolut der Nerv meine gefühlt 1000> Einstellungen neu zu machen.
Einstellungen sind bei Visual Studio Code in Dateien abgelegt und
entweder Bestandteil des Projektes oder und global. Einfacher konnte man
Einstellungen noch nie auf einen anderen Rechner übertragen.
> VSC erzeugt auch mal eben 89.000 Dateien im User Verzeichnis, die nicht> mit deinstalliert werden....
Nimm die Arduino IDE und werde damit glücklich. Genau für solche Leute
wie dich wurde sie gemacht. Aber hör dann bitte auf zu jammern.
Michael
Christian J. schrieb:> Du kannst also zu jeder ino Datei (außer main) einen> Header erzeugen?
Ich habe sie *.cpp und *.h genannt. Das war für mich naheliegend, und
weil das direkt klappte, habe ich da nicht weiter nach geforscht.
Chris J. schrieb:> Kann man den wlan Overhead vom 8266 oder esp32 irgendwie> ausklammern?
Du kannst die WLAN Schnittstelle abschalten, aber die 250kB Code
schleppst du immer mit, weil darin da ganze Betriebssystem des Chips
steckt. Bare-Metal Programmierung ist vermutlich nicht mit Arduino
möglich.
Ich würde empfehlen, hier nicht parallel über die IDE zu diskutieren.
Die Frage des TO dreht sich primär um das Arduino Framework. Die
"Problematik" betrifft jede IDE, deswegen ist ein Wechsel der IDE jetzt
gerade kontraproduktiv, wenngleich ich das langfristig auch empfehlen
würde. Du hast das auf meiner Homepage vermutlich schon gesehen.
Bernhard schrieb:> Jep, das sollte eigentlich auch unter Windows laufen. Siehe auch:> https://www.youtube.com/watch?v=1jMWsFER-Bc (das Video ist aber echt> nicht sehr spannend, da die Installation eigentlich ziemlich straight> forward ist).
Hab es drauf, klappt prima. mehr als das Kompilieren und der Upload
müssen ja nicht funktionieren. Für alles andere gibt es bessere
Alternativen. Ich entwickle grad Arduino auf Embitz 1.1 Projektmanager
bzw. Editor, da das Parsen des Projektes immer funktioniert, egal welche
CPU dahinter steckt. Im cmd Fenster nur compile eintippen bzw Pfeil-Oben
und fertig. Und da Embitz mein absoluter Liebling ist bleibt das auch
erstmal so.