Hi, ich habe jahrelang mit dem Studio gearbeitet und einen haufen c Dateien mit denen ich arbeite. Nun wollte ich mal dem Arduino eine Runde drehen. Wie binde ich da eine c Datei ein. Ich habe 2 Dateien (timer.h und timer.c) mit der Funktion "Sketch/Datei Hinzufügen" hinzugefügt und den Header mit include im "hauptreiter" da wo die Setup und die Loop ist bekannt gegeben. in der h sind natürlich funktionsprototypen. Es hagelt dennoch Beschwerden über nicht referenzierte Funktionen in Setup und main. Ich werde nicht schlau aus dem Konzept arduino - Rrrrr Danke Gruß DS
Und ich sehe nicht, was du falsch machst! Denn, vom Prinzip geht das. http://www.cpp-tutor.de/cpp/le07/extern_c.html
Eventuell fehlt da ein extern "C" { ... }, denn C-Aufrufkonvention und C++ Aufrufkonvention (vom Arduino) unterscheiden sich deutlich.
es dämmert, lange her - wo genau muss es hin? Wie ist die genau Notation, ewig nicht eingesetzt... arbeite eigentlich nicht in cpp Danke Gruß DS
An den Anfang der *.ino Datei. extern "C" { #include "timer.h" // wenn timer.c existiert }
...läuft, danke das war es... man man, wat ne Geburt. Toller Tip, danke! Zwei kurze Fragen noch: ich bin etwas verwundert, zeit Management zählt doch zu den grundsätzlichsten aller Funktionen, gibt es wirklich keinen Standard Timer beim Arduino, alles andere ist doch auch in "Geschenkpapier" verpackt, nur timer nicht? Da muss man dann wieder auf den Registern rumrattern oder irgendeine lib hinzufügen? Kein cli() und sei() sondern nun noInterrupts() und interrupts()? echt? Gruß DS
DS schrieb: > Kein cli() und sei() sondern nun noInterrupts() und interrupts()? echt? Unsinn... DS schrieb: > gibt es wirklich keinen Standard > Timer beim Arduino, millis(), delay() und ihre Verwandten
DS schrieb: > ...läuft, danke das war es... man man, wat ne Geburt. Ist aber völlig normal wenn man in C++ Libraries einbinden will, die in C geschrieben sind ;)
>>millis(), delay() wer damit arbeitet der frisst auch Kinder :-) >>völlig normal ich musste erstmal begreifen das dort mit C++ auf den uc geschossen wird... Dennoch ist mir noch nicht ganz klar wie diese Umgebung funktioniert, ein include muss man schon noch machen, aber wenn ich eine c-Datei hinzufüge über die o.g. Funktion dann ist sie als Reiter dort - gehört die dann zum Projekt oder ist der Sketch das Projekt? Ist halt ungewohnt...vor allem kann man die Reiter nicht entfernen ohne die Datei zu löschen !? seltsam. Dann gibt es unter den Beispielen ein fade mit einer Funktion analogWrite() - hat der atmel mittlerweile einen DA wandler - wo sieht man denn was dort getrieben wird, das wäre mal interessant - genau wie das eigentliche Main in dem Setup und Loop aufgerufen werden - wo ist das denn wohl? :-) Viele Grüße und dank bis hierher. DS
DS schrieb: > Dennoch ist mir noch nicht ganz klar wie diese Umgebung funktioniert, Manchmal hilft es, wenn man sich einliest :-)
DS schrieb: > Dennoch ist mir noch nicht ganz klar wie diese Umgebung funktioniert, > ein include muss man schon noch machen, aber wenn ich eine c-Datei > hinzufüge über die o.g. Funktion dann ist sie als Reiter dort - gehört > die dann zum Projekt oder ist der Sketch das Projekt? Ist halt > ungewohnt...vor allem kann man die Reiter nicht entfernen ohne die Datei > zu löschen !? seltsam. Alles in dem Ordner gehört zum "Projekt". "Projekt" in Anführungsstrichen, weil es in der IDE nichts gibt, was Projekt genannt wird. Wenn du deine *.h und *.c Dateien häufiger einsetzen möchtest, dann mach eine Lib draus. In Librarys sind *.h *.c *.cpp und *.S verwendbar, bzw. werden kompiliert. Ist alles kein Hexenwerk. https://www.arduino.cc/en/Hacking/LibraryTutorial https://www.arduino.cc/en/Reference/APIStyleGuide
Hi,
danke, guter Link, sehr schön. Ich komme wohl schon klar... :-)
>>Manchmal hilft es, wenn man sich einliest :-)
Jap, hatte gedacht das es noch intuitiver ist ... unterschätzt...
Ich habe gerade in einem Forum GELESEN das man die Reiter nicht wieder
entfernen kann...!?
DS
DS schrieb: > Ich habe gerade in einem Forum GELESEN das man die Reiter nicht wieder > entfernen kann...!? Falsch... Bei alten Arduino Versionen kann das Ärger machen.. z.B. bei Sonderzeichen im Dateinamen. Aber alle male kann man die IDE zu machen und die Datei im Ordner löschen. Bein nächsten öffnen ist der Reiter/Tab weg. Genauso kann man einfach Dateien in den Ordner werfen. Für jede *.h *.c *.cpp *.ino zeigt die IDE einen Reiter/Tab.
DS schrieb: > Ich habe gerade in einem Forum GELESEN das man die Reiter nicht wieder > entfernen kann...!? Nicht nur in Foren kann man Lesen - es gibt auch Bücher, ein Arduino home (in englischer Sprache) etc.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.