Hi! Ich habe aktuell ein Projekt mit einem Arduino in "der Entwicklung" und überlege nun von Arduino direkt auf "klassische" IC Programmierung um zu steigen. Vorher würde ich aber gerne noch ein paar Fragen beantwortet haben. Ich umreisse kurz das Projekt damit klar ist worum es geht. Prinzipiell ist es ein Controller der 3 Inputs hat und anhand dieser eine Hand voll Outputs regelt die auch die Inputs beeinflussen. Inputs: - Leitfähigkeitssensor - pH Sensor - DHT22 Outputs: - Eine Hand voll Relays - Ein 230V ~60W Lüftermotor der stufenlos gesteuert werden soll - SD Karte - Ethernet oder Bluetooth Gründe wieso ich überlege es "mir an zu tun" mich mit IC's näher auseinander zu setzen: - Ich habe aktuell den größten Arduino mit dem Atmega 2560. Der hat, soweit ich weiß, doch recht viel Platz für Code. Die Libraries und der ganze Overhead verbrauchen jedoch mehr Platz als ich dachte. Ich hatte z.B. einen simplen Code geschrieben um die Daten des DHT's mit einer Timestamp auf der SD zu loggen und die aktuellen Daten online abrufen zu können über Ethernet. Diese paar Zeilen mit 5 Libraries verbrauchen bereits rund 10% der 258kBytes. Das ist doch einiges für ein paar Zeilen Code. Meine Angst ist einfach, dass mir der Platz ausgehen wird. Ich brauche für das Projekt zwar nicht mehr deutlich mehr Libraries aber der Code wird wohl gut 10 mal so lange. - Für die EC und pH Sensoren verwende ich aktuell ein fertiges Interface. (www.atlas-scientific.com) 71$ + Zoll&MwSt ist jedoch schon mehr als meine komplette Platine wohl kosten wird. Daher würde ich es eventuell direkt mit dem großen IC lösen oder 2 kleine IC's extra programmieren die sich dieser Aufgabe annehmen. Das liegt aber wohl schon deutlich ausserhalb der Möglichkeiten von Arduino. - Ich möchte den fertigen Controller eventuell kommerziell nutzen. Hier entfällt wohl sowieso die Nutzung von Arduino. Kosten sind dann auch ein wichtiges Thema welches beim Arduino, bzw. vor allem bei den vorher erwähnten Interfaces schwierig wird. - Ich möchte das komplette System, also den IC sowie alle Teile wie Transistoren, LCD's und Relays auf einer Platine haben. Das ist mit Arduino nicht wirklich möglich. Die einzige Möglichkeit wäre es einen Arduino kompatiblen IC auf die Platine zu setzen und ihn über das Interface und der IDE mit Arduino Code und Libraries zu füttern. Somit spricht eigentlich alles dafür. Ich habe jedoch die Sorge, dass das Projekt für mich alleine nicht mehr machbar ist, wenn ich es nicht mit Arduino realisieren kann. Somit kommen wir zu meiner eigentlichen Frage ... Wie weit ist die "klassische" IC Programmierung mit C oder C++ von Arduino entfernt? Ich habe eine technische Schule absolviert und bin auf jeden Fall technikaffin. Ich hatte jedoch, gerade im Bereich Elektronik, absolut keine Ahnung bevor ich mich Arduino gewidmet habe. Elektronik, Steuer- & Regeltechnik war eigentlich immer mein ungeliebtestes Fach. :D Meine Codekenntnisse beschränkten sich auf HTML Fetzen die von früheren Zeiten noch hängen geblieben sind und einer Grundidee von VB und vielleicht C. Aber wirklich nur absolutes Basiswissen in C wie "Was ist eine Schleife?" etc. Ich habe davor noch nie mit IC's gearbeitet und meine praktische Codeerfahrung beschränkte sich auf HTML und VB in der Schule. Mittlerweile komme ich mit Arduino recht gut zurecht und traue mir auch zu ein Projekt dieser Größe mit Hilfe der entsprechenden Libraries zu realisieren. Und hier kommt der Knackpunkt ... Alleine wenn ich diese versuche zu lesen verstehe ich schon sehr wenig. Ich habe mich mal ein wenig mit dem Schreiben von Libraries auseinander gesetzt aber leider hat das nur wenig geholfen. Was meint ihr: Ist solch ein Projekt für jemanden mit Grundkenntnissen zu stemmen? Ich lerne eigentlich sehr schnell aber es hat schon einiges an Arbeit benötigt um überhaupt so weit zu kommen z.B. einen DHT auszulesen und zu loggen und diese Daten online verfügbar zu machen, trotz fertiger Libraries und fertigem Ethernet-Modul. Meine Sorge ist, dass ich anschließend aus dem Lernen nicht mehr raus komme und das Projekt nie fertig wird. Externe Hilfe ist keine Option aus persönlichen aber auch kostentechnischen Gründen. Nur gerade Dinge wie SD-Karten beschreiben, Ethernet-Funktionen, das arbeiten mit pH oder Leitfähigkeitssensoren oder das Leistungssteuern eines 60W Wechselstrommotors sind denke ich keine trivialen Dinge. Ist so etwas eurer Einschätzung nach im Alleingang von jemandem der mit viel Motivation aus der Hobby Ecke kommt machbar? Freue mich auf die Diskussion! :) Grüße, Christian
Christian E. schrieb: > - Ich habe aktuell den größten Arduino mit dem Atmega 2560. Der hat, > soweit ich weiß, doch recht viel Platz für Code. Die Libraries und der > ganze Overhead verbrauchen jedoch mehr Platz als ich dachte. Ich hatte > z.B. einen simplen Code geschrieben um die Daten des DHT's mit einer > Timestamp auf der SD zu loggen und die aktuellen Daten online abrufen zu > können über Ethernet. Diese paar Zeilen mit 5 Libraries verbrauchen > bereits rund 10% der 258kBytes. Das ist doch einiges für ein paar Zeilen > Code. 'Ein paar Zeilen' ist gut. Das was du nicht siehst, dass ist ein komplettes Filesystem und ein Ethernet-Stack, welches du einfach so "geerbt" hast ohne dich darum kümmern zu müssen. Deine paar selbstgeschriebenen Zeilen Code verbrauchen von den 25k gerade mal ein paar Byte. Der Rest ist Infrastruktur, den dir die Basis zur Verfügung stellt, damit du eben auf SD Karte und Ethernet Zugang hast. Und gerade diese beiden Themenkreise sind schon ordentliche Brocken. Di sind nicht mit ein paar Anweisungen und 30 Byte Code implementiert. > Meine Angst ist einfach, dass mir der Platz ausgehen wird. Ich > brauche für das Projekt zwar nicht mehr deutlich mehr Libraries aber der > Code wird wohl gut 10 mal so lange. Dein Code ist das, was vom Komplettprogramm am allerwenigsten Platz benötigt. 10 mal 100 Bytes sind auch erst 1 kB (über den Daumen). > Wie weit ist die "klassische" IC Programmierung mit C oder C++ von Arduino entfernt? Lass es. Alleine bis du einen Ethernet Stack am laufen hast, vergehen wahrscheinlich Monate. Überhaupt mit den Voraussetzungen > Aber wirklich nur absolutes Basiswissen in C wie "Was ist eine Schleife?" etc.
:
Bearbeitet durch User
Christian E. schrieb: > Hi! > > Ich habe aktuell ein Projekt mit einem Arduino in "der Entwicklung" und > überlege nun von Arduino direkt auf "klassische" IC Programmierung um zu Das schonmal vorweg: IC Programmierung hört sich komisch an, zumal Arduino auch ICs hat... Aber darum soll es hier ja nicht gehen. > steigen. Vorher würde ich aber gerne noch ein paar Fragen beantwortet > haben. > > Ich umreisse kurz das Projekt damit klar ist worum es geht. > > Prinzipiell ist es ein Controller der 3 Inputs hat und anhand dieser > eine Hand voll Outputs regelt die auch die Inputs beeinflussen. > > Inputs: > - Leitfähigkeitssensor > - pH Sensor > - DHT22 > > Outputs: > - Eine Hand voll Relays > - Ein 230V ~60W Lüftermotor der stufenlos gesteuert werden soll > - SD Karte > - Ethernet oder Bluetooth Das ist für den Einstieg schonmal eine Nummer... > Gründe wieso ich überlege es "mir an zu tun" mich mit IC's näher > auseinander zu setzen: > > - Ich habe aktuell den größten Arduino mit dem Atmega 2560. Der hat, > soweit ich weiß, doch recht viel Platz für Code. Die Libraries und der > ganze Overhead verbrauchen jedoch mehr Platz als ich dachte. Ich hatte > z.B. einen simplen Code geschrieben um die Daten des DHT's mit einer > Timestamp auf der SD zu loggen und die aktuellen Daten online abrufen zu > können über Ethernet. Diese paar Zeilen mit 5 Libraries verbrauchen > bereits rund 10% der 258kBytes. Das ist doch einiges für ein paar Zeilen > Code. Meine Angst ist einfach, dass mir der Platz ausgehen wird. Ich > brauche für das Projekt zwar nicht mehr deutlich mehr Libraries aber der > Code wird wohl gut 10 mal so lange. Naja, auch wenn dein Code länger wird, besteht er mit Sicherheit auch aus einer Menge sowieso schon vorhandenen Library-Funktionen, die nur einmal im Speicher stehen müssen. > - Für die EC und pH Sensoren verwende ich aktuell ein fertiges > Interface. (www.atlas-scientific.com) 71$ + Zoll&MwSt ist jedoch schon > mehr als meine komplette Platine wohl kosten wird. Daher würde ich es > eventuell direkt mit dem großen IC lösen oder 2 kleine IC's extra > programmieren die sich dieser Aufgabe annehmen. Das liegt aber wohl > schon deutlich ausserhalb der Möglichkeiten von Arduino. Das geht auch mit Arduinos, aber ist wahrscheinlich nicht wirklich notwendig; das sollte der große Mikrocontroller auch noch nebenbei hinbekommen. > - Ich möchte den fertigen Controller eventuell kommerziell nutzen. Hier > entfällt wohl sowieso die Nutzung von Arduino. Kosten sind dann auch ein > wichtiges Thema welches beim Arduino, bzw. vor allem bei den vorher > erwähnten Interfaces schwierig wird. > - Ich möchte das komplette System, also den IC sowie alle Teile wie > Transistoren, LCD's und Relays auf einer Platine haben. Das ist mit > Arduino nicht wirklich möglich. Die einzige Möglichkeit wäre es einen > Arduino kompatiblen IC auf die Platine zu setzen und ihn über das > Interface und der IDE mit Arduino Code und Libraries zu füttern. Das ist richtig; mit einer eigenen Platine ist es sehr viel eleganter, erfordert aber auch die für Einsteiger nicht einfache Fähigkeit, funktionierende Platinenlayouts in Eagle, Target... zu erstellen. > Somit spricht eigentlich alles dafür. Ich habe jedoch die Sorge, dass > das Projekt für mich alleine nicht mehr machbar ist, wenn ich es nicht > mit Arduino realisieren kann. Das kann mal schnell passieren, aber falls es fertig wird, dann hast du sicherlich eine Menge mehr verstanden. > Somit kommen wir zu meiner eigentlichen Frage ... > > Wie weit ist die "klassische" IC Programmierung mit C oder C++ von > Arduino entfernt? Prinzipiell nicht so weit, denn auch hier kannst du in C oder C++ programmieren. Allerdings stehen natürlich möglicherweise nicht so zahlreiche passende Librarys zur Verfügung. > Ich habe eine technische Schule absolviert und bin auf jeden Fall > technikaffin. Ich hatte jedoch, gerade im Bereich Elektronik, absolut > keine Ahnung bevor ich mich Arduino gewidmet habe. Elektronik, Steuer- & > Regeltechnik war eigentlich immer mein ungeliebtestes Fach. :D Meine > Codekenntnisse beschränkten sich auf HTML Fetzen die von früheren Zeiten > noch hängen geblieben sind und einer Grundidee von VB und vielleicht C. > Aber wirklich nur absolutes Basiswissen in C wie "Was ist eine > Schleife?" etc. Dann frage ich mich, wie du einen Webserver bedienen kannst? > Ich habe davor noch nie mit IC's gearbeitet und meine praktische > Codeerfahrung beschränkte sich auf HTML und VB in der Schule. > Mittlerweile komme ich mit Arduino recht gut zurecht und traue mir auch > zu ein Projekt dieser Größe mit Hilfe der entsprechenden Libraries zu > realisieren. Und hier kommt der Knackpunkt ... Alleine wenn ich diese > versuche zu lesen verstehe ich schon sehr wenig. Ich habe mich mal ein > wenig mit dem Schreiben von Libraries auseinander gesetzt aber leider > hat das nur wenig geholfen. > > Was meint ihr: Ist solch ein Projekt für jemanden mit Grundkenntnissen > zu stemmen? Wenn du C nicht kannst, und nicht weiß, wie man eine kleine Platine für einen Mikrocontroller mit allem drum und dran (Spannungsversorgung, Programmierschnittstelle, ...), dann würde ich das nicht als Grundkenntnisse bezeichnen. Hättest du welche, wäre es sicherlich machbar, wenn auch kein einfaches Unterfangen, aber nach dem was du so schreibst, glaube ich, würde es sehr sportlich. Wobei das wieder darauf ankommt, ob du dann denn selbst etwas programmieren willst, oder wieder nur fertiges etwas umbiegst, was sicherlich nicht ganz so schwer ist. > Ich lerne eigentlich sehr schnell aber es hat schon einiges > an Arbeit benötigt um überhaupt so weit zu kommen z.B. einen DHT > auszulesen und zu loggen und diese Daten online verfügbar zu machen, > trotz fertiger Libraries und fertigem Ethernet-Modul. Meine Sorge ist, > dass ich anschließend aus dem Lernen nicht mehr raus komme und das > Projekt nie fertig wird. Externe Hilfe ist keine Option aus persönlichen > aber auch kostentechnischen Gründen. Nur gerade Dinge wie SD-Karten > beschreiben, Ethernet-Funktionen, das arbeiten mit pH oder > Leitfähigkeitssensoren oder das Leistungssteuern eines 60W > Wechselstrommotors sind denke ich keine trivialen Dinge. Ist so etwas > eurer Einschätzung nach im Alleingang von jemandem der mit viel > Motivation aus der Hobby Ecke kommt machbar? Wie gesagt, machbar sicherlich, aber nur ein einem Größeren Zeitraum. Zunächst braucht es die Grundlagen, und die sollten an einem einfacheren Projekt erlernt werden. Außerdem würde ich hier im Forum niemals schreiben, dass ich irgendetwas mit Netzspannung machen möchte, wenn ich nicht gerade viel Ahnung habe. Das wirst du aber sicherlich noch merken :D > Freue mich auf die Diskussion! :) > > Grüße, > Christian
kopfkratz Also ich kenne ja nun nicht die Lizenzen für die Arduino Bibliotheken, wenn die nicht rein GPL sind sondern z.B. BSD kann man die auch kommerziell nutzen. Ansonsten hat es Karl-Heinz auf den Punkt gebracht, wenn Du nicht selber in der Lage bist FAT32 für die SD zu programmieren und "stufenlos" einen 230V Lüfter anzusteuern, solltest Du es besser lassen. Von den gesetzlichen Anforderungen bei kommerzieller Nutzung wollen wir erstmal Abstand halten :-P
Also ich bin auf C umgestiegen und das was dir vorschwebt, vielleicht, aber auch nur vielleicht und mit viel lernen, kann ich so was in fünf bis sechs Jahren. Hätte ich Zeit Vollzeit zu lernen, dann vielleicht in zwei Jahren, aber auch nur mit Vorlagen als Muster zum lernen, umschreiben oder integrieren. One wire ist in Arduino in zwei Minuten gemacht, in C sicher auch nicht so schwer (hab ich noch nicht gebraucht, bzw. mit Arduino gemacht, weil's schnell gehen musste), aber all das andere ....
Danke für die konstruktiven Antworten! Vorweg möchte ich sagen, dass ich wohl etwas tief gestapelt habe. Mir ist absolut klar, dass 99% der Größe durch die Libraries kommt. Die restlichen Libraries die ich benötige werden wohl auch noch Platz finden aber ich habe das Gefühl, dass es einfach eine Platzverschwendung ist. Wenn ich den Controller kommerziell nutzen möchte sind auch Kosten ein Faktor und ich denke ein Atmega2560 ist ein bisschen ein Overkill für mein Vorhaben. Ich bin einfach ein Fan davon Lösungen zu nutzen die der Problemstellung entsprechen und nicht einfach nach "Das reicht 5 mal - Das nehmen wir!" vor zu gehen. Dementsprechend würde ich gerne aus dem vollen IC-Angebot schöpfen können um die Geschwindigkeit und die Speichergröße an meine Anforderungen anpassen zu können. Mich stört auch, dass ich eigentlich nicht weiß, was in diesen Labraries vor sich geht und "es einfach funktioniert". Bin eher der Typ der gerne ganz genau weiß wie etwas funktioniert und genau weiß was er tut. Eagle ist kein Ding. Ich habe in einem anderen Thread ein wenig Hilfestellung bekommen unm mit diesem Layout den Arduino mit den Pumpen und den Interfaces zu verbinden um eine Idee der Funktionsweise zu bekommen. (Mit CAD Systemen kann ich recht gut sollte ich noch erwähnen. Habe einiges in AutoCAD aber vor allem Inventor gemacht.) http://abload.de/img/schaltungkgucb.jpg http://abload.de/img/boardpkkp4.jpg Also das Layout sehe ich noch als am machbarsten an um ehrlich zu sein. Mir ist klar, dass ich den Arduino auch in C programmieren kann und es dann im Prinzip die selbe Geschichte ist. Ich meinte wie weit ist die übliche Arduino Programmierung (Mit der Arduino Sprache und all den Libraries) von einer Programmierung in reinem C++ z.B. entfernt. Einen Webserver bedienen? Die paar Befehle in HTML bzw. get und send sind ja kein Kunststück. Noch dazu wo ja in der Beschreibung der ethernet library z.B. ein Beispiel dabei ist. Sind eine Hand voll get und send und ein paar Zeilen HTML. Die Platine ist sicher kein Problem. Mit ein paar Datenblättern, Beispielen und vielleicht ein wenig Hilfestellung hier bekomme ich das schon hin. Nein, ich kann kein C. Auch kein C++. Ich hab ab und an mal reingeschnüffelt aber ich würde nicht sagen, dass ich es beherrsche. Gibt es denn etwas fertiges in die Richtung, dass ich mir zurechtbiegen könnte? Ist die Auswahl an Libraries ähnlich umfangreich wie beim Arduino? Bezüglich Netzspannung mach ich mir mal keine Gedanken. Ich hatte in der Schule viel mit Netzspannung zu tun und solange man etwas Ahnung und Hausverstand hat, kann eigentlich nicht viel passieren.
> Mich stört auch, dass ich eigentlich nicht weiß, was in > diesen Labraries vor sich geht und "es einfach funktioniert". Niemand hindert dich daran, dir den Source Code anzusehen und zu studieren. > Ich meinte wie weit ist die übliche Arduino Programmierung > (Mit der Arduino Sprache und all den Libraries) von einer > Programmierung in reinem C++ z.B. entfernt Sehr weit. Der Unterschied ist ungefähr wie der, sich ein funktionierendes Auto zu kaufen und zu studieren, wie die Bedienelemente funktionieren und dem Versuch mit Blech und Nagelfeile sich selbst ein gelichwertiges Auto zu bauen. Sei froh, wenn dir jemand die wirklich schwierigen Sachen abgenommen hat und freu dich daran, dass du nicht in die Tiefen eines FAT32 bzw. eines Ethernet-Stacks absteigen musst. FAT32 ist noch etwas einfacher, aber um einen Ethernet-Stack selbst zu schreiben, heißt es erst mal büffeln, büffeln, büffeln. Und das nicht zu knapp.
Weil ichs gerade lese ... Mir ist schon klar was z.B. Phasenanschnittsteuerung ist und ich durfte sie auch schon oft in der Schule rechnen. Auch FAT32 ist mir ein Begriff. Habe mich mit der Organisation mal ein bisschen beschäftigt. Sind aber auch hier nur grobe Grundkenntnisse. Mit den gesetzlichen Anforderungen was kommerzielle Nutzung angeht musste ich mich schonmal auseinandersetzen, wenn auch in einem etwas anderem Zusammenhang. (Tablets) Aber die kommerzielle Nutzung ist ja noch in fernerer Zukunft aber halt ein Punkt den ich schon jetzt miteinbeziehen möchte. €dit: Gibt es nicht auch in C++ z.B. Libraries füt FAT32 oder Ethernet die mir den Großteil der Arbeit abnehmen?
:
Bearbeitet durch User
Christian E. schrieb: > €dit: Gibt es nicht auch in C++ z.B. Libraries füt FAT32 oder Ethernet > die mir den Großteil der Arbeit abnehmen? Sicher gibts die. Aber der Unterschied ist: die sind nicht für deine konkrete Hardware geschrieben. Und wenn doch, dann passen die Einzelteile nicht zusammen und du musst da erst mal Hand anlegen, um die soweit anzupassen, dass sie gemeinesam verwendbar sind. Bei Arduino ist dir das alles schon abgenommen. Ich hab mir vor kurzem mal den Ethernet-Server vom Ulrich Radig für den Net-IO gezogen. Und dann ein paar Stunden damit verbracht den zu studieren um machzuvollziehen, wie die einzelnen Datenpakete durch den Stack wandern, bis sie dann endlich auf der Leitung sind. Wann welcher Header hinzugefügt wird, auf welcher Ebene die Pakete bis zur Bestätigung durch die Gegenstelle zwischengelagert werden, wie sie im Fehlerfall wiedergefunden werden und erneut in den laufenden Sendevorgang eingefädelt werden, etc. etc. Und ich KANN C und C++. Und das sogar, in aller Bescheidenheit, ziemlich gut. Wenn ich das von Grund auf programmieren muss, dann sitze ich erst mal ein paar Tage an den RFC, studiere anderen Code und brauche dann ein paar Tage bis Wochen, bis ich das implementiert und zu meiner Zufriedenheit getestet und debuggt habe. Machbar ist es, keine Frage. Wie gut sind eigentlich deine Kentnisse in Bezug auf dynamische Datenstrukturen? Denn ohne die, bzw. wie man die auf einem µC so organisiert, dass sie eben nicht mehr dynamisch allokiert werden sondern sich aus einem Pool bedienen, sind das um und auf bei derartigen Dingen.
:
Bearbeitet durch User
Christian E. schrieb: > Vorweg möchte ich sagen, dass ich wohl etwas tief gestapelt habe. Mal was zu deinem Psychophänomen 'Gefühl wegen Platzverschwendung auf MC'. Ich habe über Weihnachten ein Arduinoprojekt auf einen ATtiny13 angepasst, weil ich davon noch viele rumliegen habe. Da hat mich auch die Sparmacke getroffen: "Die könnte man noch sinnvoll verwenden, 10 Stck habe ich noch, 10 brauche ich, Pinanz. passt, Programm passt darauf optmiert evt. gerade noch so rein (SPI in Software abgespeckt nur auf das was ich brauche) -> ~800 byte insgesamt - puh Glück gehabt!" Ich wusste vorher schon dass mich das Zeit kosten würde aber dass es mich nach kurzer Zeit schon dermassen anpissen würde hätte ich auch nicht erwartet, es wäre billiger gewesen die Dinger einfach wegzuwerfen, der Aufwand war grösser als das Mock-Up aufm Arduino. Der Port war eigentlich trivial, reine Codeersetzungen aber trotzdem macht man Fehler, muss testen, sucht sich nen Wolf im Code (Makrohölle).... Und wartbar sieht das jetzt alles nicht mehr sonderlich aus, in 1 Monat verstehe ich den Code garantiert nicht mehr aber die Arduinoprosa sicher noch nach einem Jahr. Eigentlich totale Zeitverschwendung, das war das letzte Projekt dieser Art um alten Schrott noch irgendwie sinnvoll einzusetzen, vorher wandert der Kram in die Tonne, Zeit ist Geld auch privat. Spar dir den Aufwand mit 'optimalem' Prozessor der gerade noch passt, billiger sind die meist eh nicht (mehr), weil sie oft am auslaufen sind und nur noch für Grossabnehmer produziert werden die darauf angewiesen sind, die zahlen aber wieder andere Preise,... Mach das Ding mit einem Arduino (ist ja eh schon fertig), flashe den Kram später auf einen nackten Proz, fertig ist der Lack. Zeit ist Geld, s.o. Bis du mal richtig fit mit nacktem C auf einem MC bist das dauert ne Weile, du kannst ja nicht mal richtig C geschweige denn C++, da sehe ich eher die Gefahr dass du gar nicht zum Ziel kommst. Oder such dir jemanden der den Kram portiert, das wird billiger sein als die Zeit die du darauf verschwendest, ausser deine Zeit ist absolut nix wert.
"Schwen" hat absolut recht. Um es noch mehr auf den Punkt zu bringen: Wieviel Arbeit musst du z.B. in die Programmierung investieren, um nacheher einen Controller verwenden zu können, der 2 EUR billiger ist? Beim Schritt von Arduino zum nackten AVR ist die Einsparung pro Gerät noch etwas größer als zwischen den einzelnen AVR-Typen, aber selbst bei 20 EUR Ersparnis musst du schon eine Menge Geräte bauen und verkaufen, damit sich das lohnt. Das übersehen viele Hobbyisten gerne. Die müssen Ihre Arbeitszeit aber auch nicht zwingend mit Geld aufrechnen, da geht es vielen eher um den Lerneffekt. Aber wenn man kommerzielle Projekte ohne solche Überlegungen angeht, lässt man es besser gleich bleiben. Mit freundlichen Grüßen Thorsten Ostermann
@ Christian E. (icfan) >aber ich habe das Gefühl, dass es einfach eine Platzverschwendung ist. Das Gefühlt täuscht des öfteren. Was kostet ein 2560er AVR? Was kostet ein 64er AVR? Was macht du mit den gesparten Euros? >Wenn ich den Controller kommerziell nutzen möchte sind auch Kosten ein >Faktor und ich denke ein Atmega2560 ist ein bisschen ein Overkill für >mein Vorhaben. Wirklich? Gerade bei kleinsten Stückzahlen sind MATERIALKOSTEN deutlich weniger wichtig als Entwicklungskosten. > Ich bin einfach ein Fan davon Lösungen zu nutzen die der >Problemstellung entsprechen und nicht einfach nach "Das reicht 5 mal - >Das nehmen wir!" vor zu gehen. Dementsprechend würde ich gerne aus dem >vollen IC-Angebot schöpfen können um die Geschwindigkeit und die >Speichergröße an meine Anforderungen anpassen zu können. Du bist auf dem Holzweg. Du willst etwas optimieren, das noch nicht mal funktioniert. Das ist Unsinn. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung >Mich stört >auch, dass ich eigentlich nicht weiß, was in diesen Labraries vor sich >geht und "es einfach funktioniert". Das ist der Sinn der Sache! Du MUSST es nicht wissen! Um Auto zu fahren, muss man nicht wissen wie das Steuergerät für die Einspritzung funktioniert! Viele Leute wissen nicht mal, warum sie schalten müssen! und sie fahren trotzdem ganz gut! > Bin eher der Typ der gerne ganz > genau weiß wie etwas funktioniert und genau weiß was er tut. Im PRINZIP ja, im Detail NEIN! Denn sonst könnte man sich die Bibliotheken spaen und immer alles selber machen. -> Sinnlos. >Nein, ich kann kein C. Wie programmierst du dann den Arduino? Das IST C, nur halt mit VIELEN Bibliotheken. > Auch kein C++. Ist ne ganz andere Liga, braucht man hier nicht. >Gibt es denn etwas fertiges in die Richtung, dass ich mir zurechtbiegen >könnte? Ist die Auswahl an Libraries ähnlich umfangreich wie beim >Arduino? Du willst ein Problem lösen, das nicht existiert! Nimm Arduino und sei glücklich. FAT32, Ethernetstack & Co programmiert man nicht selber! Man nutzt sinnvollerweise IMMER so weit wie möglich bestehende, gestestete, fertige Komponenten. DAS ist effizient! Oder willst du deinen Prozessor auch selber entwickeln? Selber Silizium schmelzen? Mein Tip. Bring das alles erstmal mit Arduino, Evalboards, Lochrasteraubau und ähnlichem zum Laufen, dann sehen wir weiter. Und dann sollte man sich immer die Frage stellen. Was kann ich optimieren? Was spare ich dadurch ein? Zeit? Geld?(Plus) Welchen Aufwand kostet die Optimierung? Zeit? Geld? (Minus) Dann stellst du fest, dass sich gerade für kleine Stückzahlen vermeintliche Optimierungen von ein paar kB Flash und ein paar Euro für ein Evalboard nicht lohnen! Extrem durchoptimierte Produkte lohnen sich erst bei großen und sehr großen Stückzahlen! Auch im Hobbybereich.
Ich habe gerade ein kleines Pojekt hier: Warten auf einen Taster. Dann soll ein bestehender I2C Kontroller geschaltet werden. Reicht eigentlich ein AtTiny (o.ä.). Ich nehme aber einen Arduino weil: Getestete, funktionierende Hardware mit Spannungsversorgung und Programmieradapter kommt für 20 Euro auf meinen Tisch. Die Entwicklungsumgebung ist innerhalb von 10 Minuten geladen und installiert. Dank der guten API wie digitalWrite() und Wire.beginTransmission() habe ich das Programm heute morgen schon fertig geschrieben. Ich will keine nackte Hardware, da müßte ich erst mal eine Schaltung aufbauen und testen. Ich müßte diverse kompliziertere Software installieren. Ich müßte mich um Bits in Registern kümmern. Damit wäre ich nicht heute morgen schon fertig geworden. Und ob das Programm nun doppelt so groß ist, interessiert mich nicht. Die Geschwindigkeit reicht.
PittyJ schrieb: > Damit wäre ich nicht heute morgen schon fertig geworden. > Und ob das Programm nun doppelt so groß ist, interessiert mich nicht. > Die Geschwindigkeit reicht. Waaas? Du hast das nicht alles von Hand in Brainf*ck implementiert? Tztztz!!! Mal im Ernst: genau aus den von Dir genannten Gründen sind Plattformen wie der Arduino so eine Bereicherung für die Hobby-Entwickler-Szene.
Also ich habs schon oft erklärt, aber ich tus auch nochmal. Deine Schlussfolgerung ist falsch, weil sie von einer komplett falschen Prämisse ausgeht: Nämlich dass die Entwicklung direkt in C langsamer wäre als das von dir beschriebene Szenario. Nur DU bist langsamer in C, weil du es nicht kannst. Somit bist du in diesem Fall schneller, was aber nicht an Arduino sondern an dir liegt. Wenn du jetzt der ASM Crack wärst, dann wärst du in ASM schneller, auch weil du da schon alles für eingerichtet hast, inkl. libs und Funktionen usw. > Damit wäre ich nicht heute morgen schon fertig geworden. Ja DU, andere hätten nicht länger gebraucht. Auch in reinem C nutzt man libs. Niemand muss für sowas hergehen und eine 1Wire lib schreiben und niemand braucht länger einen Pin direkt zu setzen, nur weil er kein digitalWrite nutzt. Wenn du damit zufrieden bist, wird es dir niemand ausreden, aber es stört einfach wenn dann immer und immer wieder behauptet wird, die Entwicklung ohne Arduino würde länger dauern. Grade von Arduino-Nutzern die ja gar nichts anderen kennen, aber natürlich in allem anderen das große Böse sehen, wo man 2 Wochen dahockt bevor eine LED blinkt. Also nochmal: Es dauert nicht länger. gruß cyblord
:
Bearbeitet durch User
cyblord ---- schrieb: >> Damit wäre ich nicht heute morgen schon fertig geworden. > Ja DU, andere hätten nicht länger gebraucht. Die Hardware dazu hast du dann aber sicher noch nicht...
cyblord ---- schrieb: > Nämlich dass die Entwicklung direkt in C langsamer > wäre als das von dir beschriebene Szenario. Äh, ist das nicht selbstverständlich? Wenn du per Lib auf dem Arduino einen Http-Request mit 10 Zeilen Code senden kannst - wie willst du das in der gleichen zeit OHNE libs in plain C hinbekommen? Ich brauche ca. 60 Sekunden um die 10 zeilen runterzutippen. Dann erklär mir doch mal wie DU in 60 Sekunden einen kompletten TCP/IP Stack implementierst (und das ist ja nur ein Teil des Problems)!
Markus schrieb: > cyblord ---- schrieb: >>> Damit wäre ich nicht heute morgen schon fertig geworden. >> Ja DU, andere hätten nicht länger gebraucht. > > Die Hardware dazu hast du dann aber sicher noch nicht... Die HW kann ich genauso kaufen. Es gibt genügend Boards. Direkt mit ISP-Anschluss versehen, ist der genauso schnell programmiert. > Äh, ist das nicht selbstverständlich? Wenn du per Lib auf dem Arduino > einen Http-Request mit 10 Zeilen Code senden kannst - wie willst du das > in der gleichen zeit OHNE libs in plain C hinbekommen? Warum muss ich ohne libs auskommen? Hat Arduino die libs erfunden und patentiert? Warum geht ihr immer von so komische Prämissen aus?
:
Bearbeitet durch User
Nur mal so als Anregung: Da Du ja selber sagst, das Du keinerlei Know-How besitzt aber schon affin bist, würde ich Dir vorschlagen Dein Projekt mit Raspberry umzusetzen. Da könntest Du sogar vieles Script basierend machen. Alles von der picke aus zu designen und zu bauen würde sehr viel Zeit benötigen und know-how voraussezen.
cyblord ---- schrieb: > Warum muss ich ohne libs auskommen? > Warum geht ihr immer von so komische Prämissen aus? Hast du doch selber geschrieben: cyblord ---- schrieb: > Nämlich dass die Entwicklung direkt in C langsamer > wäre als das von dir beschriebene Szenario. Er beschrieb ein Szenario in welchem er auf gegebene Codebausteine aufsetzt. Du hast dich davon abgegrenzt und sprichst von Entwicklung "direkt in C". Ziemlich eindeutig, wie ich finde. Außerdem benutzt so ein toller hecht wie doch kein C, oder? Ist ja schließlich Kinderkram. Du hackst den Binärcode doch sicherlich direkt runter, oder? 11010011011 ;-)
cyblord schrieb: > Mal im Ernst: genau aus den von Dir genannten Gründen sind Plattformen > wie der Arduino so eine Bereicherung für die Hobby-Entwickler-Szene. Es freut mich riesig das du diese Bereicherung anerkennst und siehst das es nicht nur schwarz und weiß gibt und Geschwindigkeit nicht alles ist.
cyblord ---- schrieb: > Warum geht ihr immer von so komische Prämissen aus? Was? Ein Falschfahrer? Es gibt ganz viele außer mir!
Ok jetzt wirds Kinderkarten. Und wenn du weiter mit mir diskutieren willst, dann nimm einen anderen Nick. Denkst du vor Arduino hat niemand libs verwendet? Natürlich werden die verwendet. Das viel zitierte "neu erfinden des Rades" findet so nicht statt. > Du hast dich davon abgegrenzt und sprichst von Entwicklung "direkt in > C". Wieso grenzt das von libs ab? Sorry auf dem Niveau gehts nicht weiter. Ich wollte nur mal kurz die Gegenseite aufzeigen. Auf der Arduino-Seite scheinen doch sehr viele falsche Vorurteile zu herrschen. Die kann man ja auch mal ausräumen. Aber mit so einem Schwachmaten wie dir tu ich das nicht mehr. Letztes Post an dich. gruß cyblord
:
Bearbeitet durch User
cyblord schrieb: >> Nämlich dass die Entwicklung direkt in C langsamer >> wäre als das von dir beschriebene Szenario. > > Er beschrieb ein Szenario in welchem er auf gegebene Codebausteine > aufsetzt. > Du hast dich davon abgegrenzt und sprichst von Entwicklung "direkt in > C". > > Ziemlich eindeutig, wie ich finde. Finde ich nicht. Auch in 'reinem C' implementiert man nicht jeden Scheiss selber aus, sondern greift auf fertiger Bausteine zurück. Speziell dann, wenn es sich um komplexe Dinge handelt. Aber ein
1 | Dank der guten API wie digitalWrite() |
2 | |
3 | .... |
4 | |
5 | Ich müßte mich um Bits in Registern kümmern. |
ist nicht wirklich ein Argument. Denn DAS ist in reinem C genauso schnell implementiert, wie du digitalWrite schreiben kannst und ist auch nicht mehr oder weniger komplex in der Verwendung. Es ist nur anders. Und ob du deine I2C Klasse einsetzt, oder ob ich mir vom P.Fleury die I2C Lib hole und einbinde, das schenkt sich nichts. > > Außerdem benutzt so ein toller hecht wie doch kein C, oder? Ist ja > schließlich Kinderkram. Du hackst den Binärcode doch sicherlich direkt > runter, oder? 11010011011 ;-) Du musst nicht polemisch werden. Wenn deine Arduino Lösung dein Problem löst, dann ist das in Ordnung. Jeder hat seine persönliche Schwelle an der er für sich selbst festlegt, bis hier her 'optimiere' ich meine Lösung noch, aber dann ist Schluss. Diese Schwelle liegt bei jedem ein wenig anders. Aber gerade Anfänger haben des öfteren eine viel zu tief angesetzte Schwelle, die aus "Ich will alles im Detail wissen" resultiert. Es spricht nichts dagegen, alles im Detail wissen zu wollen. Aber es ist das falsche Argument für eine Eigenentwicklung, vor allen Dingen dann, wenn man ganz am Anfang steht. Denn dann verliert man den Wald vor lauter Bäumen aus den Augen. Es ist eine Binsenweisheit: Die beste Programmiersprache (und dazu zähle ich auch Libraries bzw. das Umfeld in der Entwicklungsumgebung wie verfügbare Libraries), ist immer die die man beherrscht. Ob die Sprache jetzt Assembeler, C, C++, Pascal, Modula, C#, Java, Lisp, Prolog, etc. heißt oder doch ganz anders, ist dagegen komplett zweitrangig. Beherrschen muss man sie! Dann geht auch was weiter.
:
Bearbeitet durch User
Kannst du vergessen, ich hatte gehofft hier könnte man sachlich einige Vorurteile entkräften, und anhand dieses konkreten Beispiels aufzeigen wie es auch anders gehen kann. Scheint aber nicht möglich oder von der Ardu-Fraktion erwünscht zu sein. Mir auch recht.
Hi >Dann erklär mir doch mal wie DU in 60 Sekunden einen kompletten TCP/IP >Stack implementierst (und das ist ja nur ein Teil des Problems)! Die Arduinosoftware hat auch keinen TCP/IP-Stack implementiert. Der befindet sich als Hardware-Stack im W5100. MfG Spess
>Aber ein > >Dank der guten API wie digitalWrite() > >.... > >Ich müßte mich um Bits in Registern kümmern. >ist nicht wirklich ein Argument. Denn DAS ist in reinem C genauso >schnell implementiert, wie du digitalWrite schreiben kannst. Allerdings läuft das "digitalWrite()" auch auf einem Arduino Due mit Arm Prozessor. For kurzem habe ich ein Programm eines Arduino-Uno bei dem PROGMEM verwendet wurde auf einem Due laufen lassen und war ganz erstaunt, dass das ohne Änderungen lief. In größeren Projekten findet man ohnehin zunehmend Abstraktionslayer ( HAL ) für die Hardware. z.B. http://docs.lpcware.com/lpcopen/v1.03/group___group___h_a_l___l_p_c.html oder http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=AUTOSAR_CS Die meisten Poster hier scheinen diese "Abstraction Layers" nicht zu kennen und ist wahrscheinlich ein Zeichen dafür, dass sich in diesem Forum eher Bastler und Programmierer von "Ein Mann Projekten" tummeln.
Franz schrieb: > Die meisten Poster hier scheinen diese "Abstraction Layers" nicht zu > kennen Kann nur für mich sprechen: Doch, natürlich kenn ich die. Die sind auch ok und dagegen ist nichts zu sagen, wenn man die braucht oder absehbar ist, dass man sie brauchen könnte. Nur bei der überwiegenden Mehrzahl an Forumsprojekten ist eben absehbar, dass man sie NICHT brauchen wird. Es gibt nun mal kaum einen Grund eine vorhandene Lichtorgel von einem AVR auf einen ARM zu portieren. Das ist ja auch gar nicht die Aussage, auf die es hier hinauslaufen soll. Die Arduino-Jünger tun immer so, als ob wir automatische bei der Nennung des Begriffs 'Arduino' die Hände über dem Kopf zusammenschlagen. Dem ist nicht so. Das siehst du doch hier in dem Thread ganz deutlich. Der TO fragt, ob er sein Arduino System über Bord werfen soll und die üblichen Verdächtigen raten ihm dringend dazu, genau das nicht zu tun, weil die Alternative, für IHN, zu wesentlichen Konsequenzen führt, von denen wir nicht denken, dass er sie im Griff haben wird und er davon keinen Gewinn haben wird. Wenn er die so gewonnene Zeit darin investiert, ordentlich seine Programmiersprache C++ zu lernen, dann hat er viel mehr davon.
:
Bearbeitet durch User
Wow. Hier ist ja einiges los! ;) Vielen Dank für die vielen konstruktiven Beiträge. Die Richtung ist auf jeden Fall klar. Karl Heinz schrieb: > Franz schrieb: > >> Die meisten Poster hier scheinen diese "Abstraction Layers" nicht zu >> kennen > > Kann nur für mich sprechen: > Doch, natürlich kenn ich die. > Die sind auch ok und dagegen ist nichts zu sagen, wenn man die braucht > oder absehbar ist, dass man sie brauchen könnte. > Nur bei der überwiegenden Mehrzahl an Forumsprojekten ist eben absehbar, > dass man sie NICHT brauchen wird. Es gibt nun mal kaum einen Grund eine > vorhandene Lichtorgel von einem AVR auf einen ARM zu portieren. > > Das ist ja auch gar nicht die Aussage, auf die es hier hinauslaufen > soll. Die Arduino-Jünger tun immer so, als ob wir automatische bei der > Nennung des Begriffs 'Arduino' die Hände über dem Kopf zusammenschlagen. > Dem ist nicht so. Das siehst du doch hier in dem Thread ganz deutlich. > Der TO fragt, ob er sein Arduino System über Bord werfen soll und die > üblichen Verdächtigen raten ihm dringend dazu, genau das nicht zu tun, > weil die Alternative, für IHN, zu wesentlichen Konsequenzen führt, von > denen wir nicht denken, dass er sie im Griff haben wird und er davon > keinen Gewinn haben wird. Wenn er die so gewonnene Zeit darin > investiert, ordentlich seine Programmiersprache C++ zu lernen, dann hat > er viel mehr davon. Dem ist eigentlich nichts hinzu zu fügen. Ich habe eigentlich befürchtet, dass diese Diskussion hier unsachlich ausarten wird nachdem ich ein paar Threads dazu gesucht habe aber bin durchaus positiv überrascht. :) Das Platz Argument ist zugegebenermaßen kein Argument und in "Arduino" mit Libs habe ich es sicher 10 mal so schnell fertig wie in "nacktem C" mit Libs. Die Frage die sich mir aber noch stellt ... Ist der ATmega2560 in "Arduino" schnell genug um einen 1-Phasen Wechselstrommotor (Rohrlüfter) dimmen zu können? Die restlichen Aufgaben denke ich schafft er auch so, inkl. pH und EC Messung, mit ein wenig Gehirnschmalz. Am Rande noch: Ja, Arduino wird im Prinzip auch in C geschrieben. Aber ich denke es ist klar, dass es ein Unterschied ist ob ich es mit Hilfe aller Arduino Libs komplett vorgekaut und fertig schreibe oder ich, wie schon erwähnt, es komplett in C schreibe und mich erst mit all den libs auseinander setzen muss die dann eventuell noch angepasst werden müssen. Eventuell bringe ich es auch erstmal mit Arduino zum laufen und lasse es dann portieren/optimieren. Mal sehen. Grüße, Christian
:
Bearbeitet durch User
>Das ist ja auch gar nicht die Aussage, auf die es hier hinauslaufen >soll. Die Arduino-Jünger tun immer so, als ob wir automatische bei der >Nennung des Begriffs 'Arduino' die Hände über dem Kopf zusammenschlagen. >Dem ist nicht so. Gut ok, die Threads hier im MC-Netz mit "Arduino" im Namen scheinen mehr zu werden. Wenn man richtige Hardware entwickeln will, sind die vielleicht etwas störend. Mein Vorschlag: Ihr habt doch auf der MC-Netz Seite verschiedene Themen. Vielleicht wäre ein Arduino Ordner hier sinnvoll. Oder man könnte veruschen, die Arduino-Anfänger-Threads ins Arduino-Forum umzuleiten.
>Am Rande noch: Ja, Arduino wird im Prinzip auch in C geschrieben. Aber >ich denke es ist klar, dass es ein Unterschied ist ob ich es mit Hilfe >aller Arduino Libs komplett vorgekaut und fertig schreibe oder ich, wie >schon erwähnt, es komplett in C schreibe und mich erst mit all den libs >auseinander setzen muss die dann eventuell noch angepasst werden müssen. Du kannst auch die Arduino-Boards als billige Hardware benutzen und Deine eigene Software darauf laufen lassen. Hier hast Du ein einfaches Beispiel, wie das geht: Beitrag "Arduino mit Eclipse AVR-gcc Plugin programmieren"
Christian E. schrieb: > Eventuell bringe ich es auch erstmal mit Arduino zum laufen und lasse es > dann portieren/optimieren. Mal sehen. Es gibt ein paar klassische Grundaussagen bezüglich Optimierung. Donald Knuth sagt: Premature optimization is the root of all evil. (Vorzeitige Optimierung ist die Wurzel allen Übels) (Die Quelle ist mir momentan nicht geläufig): Optimization - don't do it Die Erweiterung für hartnäckige: Optimization - don't do it yet. (Optimierung - machs nicht - zumindest nicht jetzt) Gemeint ist damit: erst bringst du es zum laufen (und zwar möglichst fehlerfrei) und dann siehst du dir an, ob du Optimierungsbedarf hast und siehst nach wo es sich lohnt etwas zu optimieren. Einfach ins Blaue hinein zu optimieren geht nämlich meistens ins Auge. Ein nicht optimales Programm, welches seinen Zweck erfüllt und fehlerfrei arbeitet, ist nämlich besser als ein möglichst schnelles/kleines Programm, welches fehlerhaft arbeitet. Das bedeutet NICHT, dass man blödsinnig und stumpfsinnig die dümmste Technik einsetzt, die man finden kann. Genau deswegen beharre ich auch immer darauf, dass man sein Werkzeug, die Programmiersprache, beherrschen muss und auch auf algorithmischer Ebene fit ist. Normale und saubere Programmierung vorausgesetzt, nach den üblichen Regel der Kunst, unter Einsatz von normalen Algorithmen erhält man meistens automatisch ein Programm, welches zwar noch immer Optimierungspotential bietet, wobei wir da aber meistens von Potential im einstelligen Prozentbereich reden. Wer sein Werkzeug beherrscht steht meistens nicht vor dem Problem, auf Biegen und Brechen die Programmlaufzeiten um einen Faktor 10 verkürzen zu müssen oder obskure Tricks benutzen zu müssen. Ausnahmen bestätigen natürlich die Regel - aber das sind Ausnahmen. Wichtig ist auch die 90-10 Regel. Sie besagt, dass in üblichen Programmen rund 90% der Programmlaufzeit auf lediglich ca. 10% des Codes zurückzuführen ist. Die Kunst beim Optimieren besteht daher darin, diese 10% zu finden. Und es zeigt sich immer wieder, dass Menschen notorisch schlecht darin sind, diese 10% zu finden. Dazu braucht es Messwerte in Form von Profilerläufen. Auf einem µC sieht die Verteilung vielleicht etwas anders aus (keine Ahnung ob es da Untersuchungen gibt), das allgemeine Prinzip ist aber dasselbe.
:
Bearbeitet durch User
Wenn ich hier noch einen Buchtipp einwerfen dürfte: http://www.oreilly.de/catalog/wenschleprogger/ Ich meine den Tipp nicht ironisch, das Buch ist sehr zu empfehlen, es stehen wirklich einige gesammelte Weisheiten der Softwareentwicklung drinn.
Franz schrieb: >>Am Rande noch: Ja, Arduino wird im Prinzip auch in C geschrieben. Aber >>ich denke es ist klar, dass es ein Unterschied ist ob ich es mit Hilfe >>aller Arduino Libs komplett vorgekaut und fertig schreibe oder ich, wie >>schon erwähnt, es komplett in C schreibe und mich erst mit all den libs >>auseinander setzen muss die dann eventuell noch angepasst werden müssen. > > Du kannst auch die Arduino-Boards als billige Hardware benutzen und > Deine eigene Software darauf laufen lassen. > Hier hast Du ein einfaches Beispiel, wie das geht: > Beitrag "Arduino mit Eclipse AVR-gcc Plugin programmieren" Ich glaube ich habe das noch nicht ganz klar gemacht: Mir ist absolut klar, dass ein "Arduino" lediglich ein normaler IC ist auf einer simplen Platine und der eigentliche "Arduino" erst durch die Entwicklungsumgebung und die Libraries entsteht. Daher könnte ich auch einfach eine eigene Platine machen und darauf eben einen Arduino kompatiblen IC setzen bzw. umgekehrt eine Arduino Platine normal in C bzw. auch Assembler bearbeiten, so ich das denn will. Das ist mir schon klar! Mir gehts hier aber in erster Linie um die Zeitersparnis durch die IDE und die Libs. Die Hardware ist mir ziemlich egal da ich sowieso eine eigene Platine mache und den Arduino einfach "gerade hier hatte". Karl Heinz schrieb: > Christian E. schrieb: > >> Eventuell bringe ich es auch erstmal mit Arduino zum laufen und lasse es >> dann portieren/optimieren. Mal sehen. > > Es gibt ein paar klassische Grundaussagen bezüglich Optimierung. > > Donald Knuth sagt: > Premature optimization is the root of all evil. > (Vorzeitige Optimierung ist die Wurzel allen Übels) > > (Die Quelle ist mir momentan nicht geläufig): > Optimization - don't do it > Die Erweiterung für hartnäckige: > Optimization - don't do it yet. > (Optimierung - machs nicht - zumindest nicht jetzt) > > [...] Einer der Gründe wieso ich darüber nachgedacht habe ist jener, dass in einigen Threads hier über Arduinos bzw. den Code den die IDE in Verbindung mit den Libs ausgibt so gesprochen wird als wäre der IC bei Programmen die über eine blinkende LED hinaus gehen so langsam, dass es nicht mehr brauchbar ist. In diesem Thread bekomme ich jedoch wieder einen anderen Eindruck. chris_ schrieb: > Wenn ich hier noch einen Buchtipp einwerfen dürfte: > http://www.oreilly.de/catalog/wenschleprogger/ > Ich meine den Tipp nicht ironisch, das Buch ist sehr zu empfehlen, es > stehen wirklich einige gesammelte Weisheiten der Softwareentwicklung > drinn. Klingt interessant. Ich werde mal einen Blick rein werfen! ;) Grüße, Christian
was meinst du blos mit der Abkürzung "IC"? Vielleicht "integrated Cirquit" ? Aber das ist jeder analoge oder digitale Chip mit mehr als 3 Beine ... Mir ist für Controller eher "µC" geläufig...
cyblord ---- schrieb: > > Wenn du damit zufrieden bist, wird es dir niemand ausreden, aber es > stört einfach wenn dann immer und immer wieder behauptet wird, die > Entwicklung ohne Arduino würde länger dauern. Grade von Arduino-Nutzern > die ja gar nichts anderen kennen, aber natürlich in allem anderen das > große Böse sehen, wo man 2 Wochen dahockt bevor eine LED blinkt. > > Also nochmal: Es dauert nicht länger. > > gruß cyblord Ich muss mal meinem guten Freund hier Unterstützung geben. Sicher, Arduino ist einfach und geht schnell und, wie immer auch hier, zum reinschnuppern der richtige Weg. Bei Arduino bin ich zunächst mal an eine bestimmte Hardware gebunden, bei C kann ich die frei wählen. Dann noch die Portierbarkeit. Ich habe letztens eine kleine Schaltung gebaut mit einem Tiny13. Nur die Pinzuordnung geändert und es läuft auf einem Attiny10. In Arduino habe ich noch keine Unterstützung für einen ATTiny10 gesehen. Bin mir sicher mit nur minimalen Änderungen läuft das auf so ziemlich jeder Plattform die mit C zu programmieren ist. Da reden wir dann nicht mehr von schnell, sondern nur noch davon, ob es überhaupt möglich ist. Im Moment mache ich was ganz anderes, deshalb ruht es zur Zeit, aber ich mache das auch noch nicht so lange mit C und solche anspruchsvollen Sachen, wenn ich sie zeitnah bräuchte, würde ich dann mit Arduino machen. Und trotzdem sollte man immer versuchen davon weg zu kommen, weil es eine Einbahnstraße ist.
Christian E. schrieb: > > Einer der Gründe wieso ich darüber nachgedacht habe ist jener, dass in > einigen Threads hier über Arduinos bzw. den Code den die IDE in > Verbindung mit den Libs ausgibt so gesprochen wird als wäre der IC bei > Programmen die über eine blinkende LED hinaus gehen so langsam, dass es > nicht mehr brauchbar ist. Äh. Nein. Das hast du dann in den falschen Hals gekriegt. Natürlich hat man durch das Arduino-modulare-System einen gewissen Overhead. Aber so schlimm ist das auch wieder nicht, dass es gleich ins Unbrauchbare abdriftet. Bei jedem Unterbau hat man einen gewissen Overhead. Dein 4-Ghz getakteter PC hat auch ein Leistungsvermögen, das jenseits von gut und böse ist und durch die diversen Software-Schichten und Zusatzdinge des Betriebssystems merkt man in Relation zu einem Computer aus 1980 gar nicht mal so viel davon. Das liegt aber daran, dass da ein Rattenschwanz an Software-Schichten-Overhead zwischen dir als Benutzer und dem Silizium sitzt. Ein Mainframe aus 1980 hatte nur einen Bruchteil der Rechenleistung deines heutigen PC und schaffte es trotzdem mehr oder weniger gleichzeitig ein paar 100 Versicherungsvertretern ihre Daten aufs Terminal zu zaubern. Aber: Damals war die Softwarewelt noch einfacher und speziell GUI (die richtig Speicher- und Rechenzeitfresser sind) gab es noch nicht. Klar liegen in deinem Arduino Schichten dazwischen. Das bereits angesprochene digitalWrite ist fast um einen Faktor 70 langsamer als eine reine C Lösung sein müsste. Aber die wenigsten Programm dieser Welt bestehten nur aus digitalWrite und das dann auch noch im µs Takt.
Hallo, F. Fo schrieb: > Bei Arduino bin ich zunächst mal an eine bestimmte Hardware gebunden, > bei C kann ich die frei wählen. Bitte wie? Ein Arduino-Programm läuft unter Umständen sogar ohne Änderung auf einem ARM! Mit C kannst du die Hardware frei wählen? Wenn du das Programm änderst, klar. Arduino ist auch nicht portabel, aber definitiv um Größenordnungen portabler als reines C. > Dann noch die Portierbarkeit. > Ich habe letztens eine kleine Schaltung gebaut mit einem Tiny13. Nur die > Pinzuordnung geändert und es läuft auf einem Attiny10. ja aber auch nur, weil du nicht den 10 Bit A/D benutzt hast oder den 16 Bit Timer und halt auch kaum Pins. So what?
chris_ schrieb: > Wenn ich hier noch einen Buchtipp einwerfen dürfte: > http://www.oreilly.de/catalog/wenschleprogger/ > Ich meine den Tipp nicht ironisch, das Buch ist sehr zu empfehlen, es > stehen wirklich einige gesammelte Weisheiten der Softwareentwicklung > drinn. Danke für den Tipp! Klingt cool, ich glaub das kauf ich mir. :-)
Timm Reinisch schrieb im Beitrag # > > Bitte wie? Ein Arduino-Programm läuft unter Umständen sogar ohne > Änderung auf einem ARM! > Mit C kannst du die Hardware frei wählen? Wenn du das Programm änderst, > klar. Arduino ist auch nicht portabel, aber definitiv um Größenordnungen > portabler als reines C. > >> Dann noch die Portierbarkeit. >> Ich habe letztens eine kleine Schaltung gebaut mit einem Tiny13. Nur die >> Pinzuordnung geändert und es läuft auf einem Attiny10. > > ja aber auch nur, weil du nicht den 10 Bit A/D benutzt hast oder den 16 > Bit Timer und halt auch kaum Pins. So what? Und wie wähle ich beispielsweise einen ATtiny10 in der IDE aus?
:
Bearbeitet durch User
chris_ schrieb: > Wenn ich hier noch einen Buchtipp einwerfen dürfte: > http://www.oreilly.de/catalog/wenschleprogger/ > Ich meine den Tipp nicht ironisch, das Buch ist sehr zu empfehlen, es > stehen wirklich einige gesammelte Weisheiten der Softwareentwicklung > drinn. Hm, wirklich eine kurze zeitliche Überschneidung mit dem Post von Karl-Heinz oder eine pösartige Zusammenfassung der bisherigen Posts? Evtl. hast Du gar schon die Illumination vom simplen Zyniker zum Kyniker vollbracht? Ich würde alles gut finden! Bei dem Buch sollte man halt dazu sagen, dass es sicherlich nicht um das Programmieren an sich geht. Sondern um die ganz normalen menschlichen Probleme und Unzulänglichkeiten. Die Verfasser wollen halt hier einen gewissen Bezug zu IT-Leuten herstellen. Aber wie das halt mit Ratgebern so ist, wenn man glaubt sie wirklich notwendig zu haben, findet man keine passenden Vorschläge.
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.