Hallo, mittlerweile gibt es für den Propeller-Chip von Parallax eine IDE mit der auch in C programmiert werden kann. Diese IDE heißt SimpleIDE gibt es für Windows, Linux und Mac download der neuesten beta hier http://code.google.com/p/propside/downloads/list Wer hat Erfahrung mit SimpleIDE? Ich selbst benutze bis jetzt nur das Propeller-Tool und bst und programmiere in SPIN bzw. in Assembler. Auch an die AVR-, ARM-, MSP430-, STM32-Programmierer: Mich würde auch interessieren bei welchen Projekten habt ihr wirklich Datentypen wie float, strings oder noch komplexere Sachen gebraucht? Darüber würde ich gerne abschätzen ob es sich für mich lohnt in die Programmierung mit C einzusteigen. Was ich am Propeller so klasse finde ist die Flexibilität. Wenn man vier verschiedene SPI-schnittstellen braucht kein Problem. Vier UARTS auch kein Problem SPIN-object einbinden = eine Codezeile - fertig Geht das in C genauso einfach. Ein include-Befehl und fertig oder ist das komplizierter? viele Grüße Stefan
Ich habe aus Zeitgründen bisher nur mal kurz reinschauen können, aber ich empfand es schon als Fortschritt von diesem SPIN wegzukommen. Doof ist allerdings, dass man die SPIN Objekte aus dem OBEX nicht direkt verwenden kann (da gibt es ja sonst auch fast nix), allerdings gibt es einen Konverter, von SPIN nach C++/C: http://code.google.com/p/spin2cpp/ Wie gut das funktioniert weiss ich nicht, allerdings tut sich da ja auch ein Tätigkeitsfeld auf: nämlich native PropGCC Objekte-Ports, die auch an C++ angepasst sind. Mir ist aber aufgefallen, dass es platzmäßig schneller eng werden könnte, weil der Spin Bytecode in der Regel dichter war. Da wäre es dann interessant zu erfahren, wie man die verschiedenen Speichermodelle mixen und erweitern kann, damit man z.B. der Code für einen COG auf einem externen Speicherbaustein lassen kann. Die Frage ob es sich lohnt in C einzusteigen ist leicht beantwortet: C ist die am meisten nachgefragte Programmiersprache überhaupt: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html von den Sprachen die danach kommen sind Objective-C und C++ direkte Obermengen von C. Im Mikrocontrollerbereich ist C King und du wirst mit fortgeschrittenen C Kenntnissen keine Probleme haben, in die gemanageden Sprachen (Java,C#) einzusteigen, besonders bei C# wird es dir helfen, da es hardwarenahe Konstrukte hat die C sehr ähnlich sind. Viele Programmierbuden haben nur noch Hochschulabsolventen die nur Java können und auch nichts anderes mehr lernen. Mit C bist du für die derjenige, der zaubern kann. Ich sags mal so: Du kannst mit C für jedes existierende Computersystem brauchbare effizient ablaufende Programme schreiben, von marginalen Ausnahmen (6502 basierte Controller oder sowas).
Hallo Marco, vielen Dank für Deine Antwort. Schon richtig C ist der industrielle Standard. Die steigendnen Berufschancen sind für mich persönlich nicht wichtig. Ich benutze den Propeller-Chip nur hobbymäßig. Trotzdem interessiert mich bei was für einer Art Embedded Systeme, die in C programmiert werden Floatingpoint, Strings sinnvoll usw. zum Einsatz kommen. Ich vermute mal die Steuerung einer Waschmaschine mit LED-anzeige kommt ganz locker ohne FP und strings aus. Ebenso eine Fuzzy-Logic-Heizungssteuerung. Also C-Programmierer: Bei welchen Hobbyprojekten habt ihr denn wirklich SINNVOLL Fließkomma, strings und sonstige Spezialkapriolen wie callbackfunktionen, pointer auf methoden usw. von C eingesetzt? viele Grüße Stefan Ludwig
Stefan Ludwig schrieb: > Also C-Programmierer: Bei welchen Hobbyprojekten habt ihr denn wirklich > SINNVOLL Fließkomma, strings und sonstige Spezialkapriolen wie > callbackfunktionen, pointer auf methoden usw. von C eingesetzt? bei quasi allen sobald es einigermaßen vernünftig+komplex wird.. welche sprache kannst du denn bisher ? c/c++ ist ein ABSOLUTES must to have als embedded entwickler... wenn du es abe rnicht magst wäre evtl arduino mit dem pseusocode und fertigen gerätetreibern was für dich, solltest du es nur als hobby machen mit einfachen anwendungsfällen
Hallo Andi, Du schreibst "bei quasi allen sobald es einigermaßen vernünftig+komplex wird" Ich gehe davon aus das im professionellen Bereich IMMER vernünftige Sachen gemacht werden. ich möchte selbst mal ein Beispiel geben: Es gibt eine Quad/Hex/Octocoptersteuerung inclusive Kamerastabilisierung und GPS die auf zwei Propeller-Chips basiert. Da wurde garantiert kein C verwendet. Kannst Du bitte mal ein paar wirklich ganz KONKRETE beim NAMEN genannte Beispiele machen wo Du bei einem embdedd-system einen variant-record oder was auch immer verwendet hast und das ohne die entsprechend komplexe Datenstruktur ganz fürchterlich umständlich gewesen wäre die Aufgabe zu lösen? Ich habe früher selbst Industriesteuerungen in Delphi programmiert. (Da mögen die C-programmier jetzt so viel lachen wie sie wollen) Ich war meistens schneller fertig als die lieben C-Kollegen an der Maschine nebenan und hatte auch weniger BUG-Beseitigungseinsätze) Für diese Art Steuerungen waren MCUs nun wirklich zu klein. Da habe ich mehrere threads am laufen gehabt, Callbackfunktionen und was weiß ich noch alles benutzt aber komplexe Datenstrukturen die über einen Array hinausgingen habe ich NICHT gebraucht. Also nochmal: bitte nennt mir K O N K R E T E Beispiele Mikrocontroller verwendet komplexe Datenstrukturen, Pointer auf Methoden etc. Vielen Dank schon im Voraus viele Grüße Stefan
Ein Einsazubereich für float ist Audio/Signal-Verarbeitung. Wenn du FP-Hardware hast und Energieverbrauch nicht das Problem ist, dann ist es idR. einfacher und geht schneller die Algorithmen unter Nutzung von float zu kodieren, weil du viele Probleme die du bei Nutzung von Fixpunktzahlen (Überläufe usw.) gar nicht erst bekommst. Was dann die Effizienz betrifft, so kann float idR. spezialisierte DSP Routinen (mit Integer-Vektor Instruktionen) natürlich nicht schlagen, aber die sind auch normalerweise etwas kniffliger.
Stefan Ludwig schrieb: > Also nochmal: bitte nennt mir K O N K R E T E Beispiele > Mikrocontroller verwendet komplexe Datenstrukturen, Pointer auf Methoden > etc. Die meisten Microcontroller Projekte sind etwas kleiner, aber hier ist eines mit 200 Mhz CPU, 256 MB Ram und 2GB flash - Hardware auf nicht mal ein Android-Telefon vernünftig laufen würde: http://programmers.stackexchange.com/questions/159637/what-is-the-mars-curiosity-rovers-software-built-in
OK ich habe meine Frage wohl zu unpräzise gestellt. Ich bitte um Verzeihung das ich die Frage nicht gleich so präzise gestellt habe. Ich hätte gerne ein paar Beispiele benannt wo der Antworter auf dieses Posting höchstpersönlich: - Audiosignalverarbeitung - ein grafisches Menü - .... realisiert hat. Beispiel: Eine Heizungssteuerung mit umfangreichen Datenlogfunktionen die den zeitlichen Verlauf der Meßdaten grafisch darstellen kann. Ich meine also die GLOBALE Beschreibung des GESAMTprojekts und ausdrücklich nicht bestimmte Details wie "Audiosignalverarbeitung" "grafisches Menü" Die ursprüngliche Frage von mir ist ja: macht es für MICH, der ich eher kleine Projekte baut, Sinn C zu lernen weil C mehr Möglichkeiten bietet. Diese Frage möchte ich Anhand der genannten Beispiele selbst beantworten, da weder ich noch die "Comunity" noch nicht weiß welche Art Projekte ich zukünftig bauen werde. Es geht mir darum aus anderen SCHON REALISIERTEN Projekten ABZUSCHÄTZEN ab welcher Projektgröße / Projektkomplexität der größere Sprachumfang von C ggü. SPIN ein wirklicher Vorteil ist. Zum Blinken lassem einer LED oder dem Anzeigen von kleinen Texten auf einem LCD braucht man C sicher nicht. Da genügt MIR persönlich SPIN vollkommen. Vielen Dank schon im Voraus an diejenigen die den Thread geduldig gelesen haben und sich die Mühe machen eine entsprechende Antwort zu schreiben viele Grüße Stefan
Stefan Ludwig schrieb: > Es geht mir darum aus anderen SCHON REALISIERTEN Projekten ABZUSCHÄTZEN > ab welcher Projektgröße / Projektkomplexität der größere Sprachumfang > von C ggü. SPIN ein wirklicher Vorteil ist. Das ist irgendwie falsch gefragt. Die Antwort kann für dich so nur lauten: Nur bei einem großen Projekt, weil du ja erst noch C lernen müsstest und darum die dreifache Mühe hast. Bei mir ist es aber so, daß ich auch für die allerkleinsten Vorhaben *C++* benutze, weil ich es sehr gut kann und einen Plan davon habe wie die Sprache in Code umgesetzt werden muß. Ich habe daher praktisch keine Mühe damit effizienten Code zu schreiben. Und dann packe ich natürlich auch die Ansteuerung eines Temperatursensors in eine Klasse und freue mich dann später, daß ich jetzt den Sensor mit dem gleichen Code auf einem Atmega und einem MSP430 ansteuern kann. Es käme mir gar nicht in den Sinn, das anders zu machen oder erst bei einer bestimmten Projektgröße damit anzufangen. Das Paradebeispiel für "kleine Projekte" ist ja gerade der Arduino, bei dem man in C++ mit objektorientierten Framework Tüdelkram ansteuert. Da sind viele Leute sehr glücklich mit. Es ist ja keine Eigenschaft eines Problems Funktionszeiger zu benötigen, sondern die Eigenschaft einer Lösung. Und wenn du eine mächtigere Sprache hast, dann hast du eine größere Auswahl an möglichen Lösungen, die aller ihre eigenen Parameter haben (Speicherbedarf, Performance, Wartbarkeit usw.). So hast du auf dem Propeller jetzt die Wahl zwischen C/C++ (mächtige Sprachen, portabel, schnell, hoher Platzverbrauch) und SPIN (große Objektbibliothek, platzsparend, schnarchlangsam).
> So hast du auf dem Propeller jetzt die > Wahl zwischen C/C++ (mächtige Sprachen, portabel, schnell, hoher > Platzverbrauch) und SPIN (große Objektbibliothek, platzsparend, > schnarchlangsam). Integraler Bestandteil für zeitkritsche Fläschenhälse in Spin ist PASM: Schneller geht auf dem Propellerchip nicht, auch nicht in C. Die Eigenschaft "schnarchlangsam" erfasst also nicht ganz die Realität. In meinen Augen wäre die Eigenschaft "sehr gut an den Chip anepasst" als Beschreibung für Spin/PASM wesentlich besser geeignet.
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.