Hallo Pr0gm4n,
was spricht gegen C++?
MfG Mark
Hi erstmal,
da ich neben der "Mikrocontrollerei" auch noch Programmierung betreibe (C++, bald auch java), kenne ich vom C++ die Überladenen Funktionen
dabei definiert man einfach die gleiche Funktion (Name gleich) mit unterschiedlichen Parametern hintereinander und das Programm wählt dann selbstständig aus, welche Funktion davon zu den mitangegebenen Parametern passt.
Bei meinem Problem will ich eine Funktion schreiben, mit deren Hilfe der Benutzer Servos ansteuern kann
er soll dabei aber nicht eine bestimmte Anzahl an Servos angeben müssen, und auch nicht aus verschiedenen Funktionen auswählen müssen
ich möchte deshalb gerne irgendwie vom Programm erkennen lassen, wie viele Parameter die aufgerufene Funktion mitgesendet bekommen hat und daraufhinbedingt dann die verschiedenen Funktionen aufrufen, die dann die jeweilige Anzahl an Servos ansteuern
Jetzt wäre das mit Überladenen Funktionen wirklich sehr leicht zu erfüllen, doch in C stehen diese leider nicht zur Verfügung
Kann ich diese bei µCs verwenden oder kennt vielleicht jemand eine Alternative?
(Es sollen pro Servo int-Werte übergeben werden)
MfG Pr0gm4n
Hallo Pr0gm4n,
was spricht gegen C++?
MfG Mark
Hi,
nichts, ich dachte nur, man kann bei µCs nur C verwenden, oder habe ich mich da geirrt?
Wenn ja, muss ich da dann auch nur die AVR/io.h includen oder etwas anderes?
MfG Pr0gm4n
Einige Teile von C++ erzeugen ziehmlich langen Code oder benötigen viel RAM. Gerade wenn man die echt objektorientierten Teile benutzt erreicht man dann schnell die Grenzen der kleinen Controller. Auch sind nicht alle der include files für c++ geeigent.
hallo,
eine möglichkeit wäre es einen argumenten vektor (array) zu übergeben, so wie auch kommandozeilenparameter ins ('pc') programm kommen (bekannt als argv, oder args). und dann halt für jedes array element (servo stelldaten) die gewünschte(n) funktione(n) mittels schleife aufrufen. ein argc parameter äquivalent (argument count, länge des arrays) kannst du zur effizienzsteigerung natürlich auch implementieren.
ich hoffe das war verständlich genug, ich schlafe nämlich bereits zu ca 85%
gute nacht
"A robot with guns for arms shooting a plane made out of guns that fires guns" - Nelson Muntz
Das ist ein weitverbreitetes Vorurteil. Wenn man nicht gerade alle Variablen dynamisch anlegt und nicht jede Methode virtuell deklariert kann man sehr effizienten Code erzeugen, der problemlos mit C mithalten kann. Die richtig speicherfressenden Sachen wie Exceptions kann man bei AVRs sowieso nicht benutzen. Außerdem muss er jan icht gleich objektorierntiert proggen, er wollt ja nur die Möglichkeit der Funktionsübeladung.Zitat von Besserwessi
MfG Mark
Jupp, so würde ich das auch machen...
denn um Funktionen mit einer variablen Anzahl an Parametern zu realisieren muss man sie nicht überladen. Ein schönes Beispiel ist da z.B. printf, die funktioniert auch so.
So viele Treppen und so wenig Zeit!
Hi,
das mit einem Array hab ich mir auch schon überlegt:
man würde ein Array übergeben, mit sizeof() die anzahl der Elemente bestimmen und dann hätte man das gleiche Ergebnis
da ich aber nun mal dem Benutzer das ersparen will (als Array übergeben) sollen Int-Werte übergeben werden
den code von robocat verstehe ich jetzt nicht so ganz, sehe ich das richtig, dass im richtigen Programm dann kein "..." als Parameter steht?
irgendwie verwirrt mich der Code an sich schon ziemlich^^
Nun eine relativ entgültige Frage zum Überladen der Funktionen:
Was muss ich includen und kann ich das jetzt definitiv hernehmen?
wäre nett, wenn mir das noch jemand sagen könnte
MfG Pr0gm4n
Ach ja, ich hab da noch ne Frage, die Warscheinlich keines neuen Threads würdig ist, gibt es einen Delaybefehl, der so um die 1us zählen kann?
Gibt es dazu noch eine Timeransteuerung, die sowohl auf ATMega 32 als auch auf ATMega 8 (und evtl. ATMega 16) geht?
Ich würde die Timer gerne im Programm kalibrieren lassen, dazu brauche ich das
MfG Pr0gm4n
Lesezeichen