Hi, habe hier ein Atmega-Board mit Atmega328P drauf (32 TQFP), außerdem Mikro-USB-Buchse und auf der Unterseite ein CH340G-Chip. Dazu ein Reset-Taster, ein AMS1117 und ein bisschen Hühnerfutter. Maße: ca. 43mm x 12mm Ich vermute, es ist ein Arduino-Klon. Wenn ja, weiß jemand, welcher?
Arduino Nano Mikro-USB, nicht Mini? Die Nano-Clones, die wir hier rumliegen haben, haben Mini-USB.
:
Bearbeitet durch Moderator
Du hast leider das Bild vergessen. Der Beschreibung nach kann’s ein simpler Nano(-Clon) sein.
Hier ist das Bild. Jörg W. schrieb: > Mikro-USB, nicht Mini? Die Nano-Clones, die wir hier rumliegen haben, > haben Mini-USB. Stimmt, es ist Mini-USB!
Ja, das ist ein Nano-Clon. Hab damit noch keine Probleme gehabt. Wenn man sie unter/als Arduino nutzen will, muss man ggf. noch den Bootloader drauftun. Das Hex-File findet man unterhalb des Installationsverzeichnisses der IDE.
Auf unseren Clones ist der Bootloader drauf, aber man muss in der Arduino-IDE "old Bootloader" (oder so ähnlich) auswählen.
Prima, Danke! Wenn es sich nicht aktivieren lässt, melde ich mich hier noch mal.
Wenn man da schon dran muss, ans Bootloader brennen, dann: Ich rate dazu, den Nano zum UNO umzuflashen. Dann hat man etwas mehr Flash für Programme, als in der Nano Konfiguration.
Arduino Fanboy D. schrieb: > Ich rate dazu, den Nano zum UNO umzuflashen. > Dann hat man etwas mehr Flash für Programme, als in der Nano > Konfiguration. Danke für den Tipp! :)
Arduino Fanboy D. schrieb: > Ich rate dazu, den Nano zum UNO umzuflashen. Noch besser 6-Pin-Stecker einlöten und einfach auf C. Dann hat man noch mehr Platz für Programm.
Maxim B. schrieb: > Noch besser 6-Pin-Stecker einlöten ... Natürlich hast du aus deinem Blickwinkel vermutlich recht wahr! Allerdings, bedenke: Um den Bootloader zu flashen, muss man den Stecker auch einlöten. Es ist also kein irgendwie geartetes "besser", sondern in beiden Fällen eine Notwendigkeit. Oder: Ob es in Sachen Nano ein "besser" zwischen C und C++ gibt? Abgesehen, von irgendwelchen individuellen Vorlieben....
Arduino Fanboy D. schrieb: > Ob es in Sachen Nano ein "besser" zwischen C und C++ gibt? Zumal C vs. C++ sowieso völlig unabhängig davon ist, ob man nun den Bootloader benutzen will oder einen externen Programmer. Was den Arduino-Code sicher ein Stück aufbläht ist nicht das C++, sondern die Abstraktionsschichten für die Hardware, also digitalWrite() und all sowas. Das ist halt der Preis für die einfache Portierbarkeit des Codes zwischen den diversen Hardware-Plattformen. Muss man ja aber nicht nehmen, wenn man nicht will - auch in C++ muss man das nicht. ;)
Arduino Fanboy D. schrieb: > Um den Bootloader zu flashen, muss man den Stecker auch einlöten. Das ist doch Unfug. Wozu wurden Federkontaktstifte erfunden?
Wolfgang schrieb: > Das ist doch Unfug. Könntest du ggf. in Zukunft eine freundlichere Wortwahl treffen? "Das ließe sich mit Federkontaktstifen auch anders erreichen." hätte beispielsweise das gleiche ausgedrückt, nur viel freundlicher. (Davon abgesehen, dass nicht jeder sowas zur Hand hat.)
Hi <Dann nimm sie... Die einzig sinnvolle Anwendung ist das Recyling des AVRs. Wozu den ca. achtfach größeren Platz verschwenden. Für nichts. MfG spess
spess53 schrieb: > Wozu den ca. achtfach größeren Platz verschwenden. Wozu basteln sonst Leute gern mal schnell was auf Lochraster, wenn man doch die SMD-Bauteile auch gleich auf eine viel kleinere Platine setzen könnte? Richtig: es geht einfacher für einen Prototypen. Ist ja nun nicht so, dass Arduino(-Klone) die einzigen derartigen Breakout-Boards auf der Welt wären … auch für andere Hardware ist sowas zuweilen ganz praktisch. (Der zweite Vorteil ist natürlich der Bootloader und die im Betrieb einfach angebundene serielle Schnittstelle über den CH340.)
Hi >Richtig: es geht einfacher für einen Prototypen. Und bei wie vielen bleibt es dabei? >Der zweite Vorteil ist natürlich der Bootloader Wo ist da ein Vorteil? Ich mag die freie Wahl der Taktfrequenz. MfG Spess
Arduino Fanboy D. schrieb: > Ich rate dazu, den Nano zum UNO umzuflashen. > Dann hat man etwas mehr Flash für Programme, als in der Nano > Konfiguration. oder man erweitert die boards.txt und der nano bleibt nano. Hast ja letztens was geschrieben, auch wie man das anstellt ohne die boards.txt zu ändern. Mist ich habe den Link verlegt Maxim B. schrieb: > Noch besser 6-Pin-Stecker einlöten und einfach auf C. Dann hat man noch > mehr Platz für Programm. hatte ich früher auch gemacht, aber eine 6 Pin Stiftleiste mit Druck gehalten tuts auch, die 6 Pins braucht man ja nicht oft, aber sie nerven wenn sie eingelötet sind, also es geht auch ohne einlöten.
:
Bearbeitet durch User
spess53 schrieb: >>Richtig: es geht einfacher für einen Prototypen. > > Und bei wie vielen bleibt es dabei? Selbst wenn: was ist schlimm daran? Hatten wir doch gerade „nebenan“, beim Kinderspielzeug: es braucht nur jemand eine möglichst einfache Lösung. Er will weder ausgiebig Elektronik noch Mikrocontroller lernen, noch hat er irgendeinen Fundus in der Bastelkiste, aus dem er schöpfen kann. Aber einen Arduino-Nano-Clone konnte er auftreiben, die IDE dazu installieren, und man kann ihm ohne irgendwelche großen Aufwände schnell via Forum sein Problem lösen. Nun kann er sich immer noch entscheiden, ob die Lösung so für ihn zufriedenstellend ist (Thema erledigt), oder ob er lieber einen separaten Controller nehmen will, denn man dann vielleicht noch aufgehübscht mit Sleep-Modes auf Energiesparen trimmen kann (mehr Aufwand, dafür kann das dauerhaft an der Batterie bleiben). Ich sehe keinen Sinn darin, über Leute zu richten, denen eine solche schnelle Lösung mal das einfachste ist. Das sind Leute, die man ohne derart einfache, vorgefertigte Technik überhaupt nicht hätte dazu bringen können, eine Mikrocontroller-basierte Lösung in Betracht zu ziehen. >>Der zweite Vorteil ist natürlich der Bootloader > > Wo ist da ein Vorteil? Dass man sich eben nicht erst noch einen Programmer zulegen muss. Und sei's nur, um auf diese Weise das Henne-und-Ei-Problem lösen zu können, und so'n Ding bspw. als „Ur-Programmer“ zu benutzen, um sich damit einen USBasp aufzubauen. > Ich mag die freie Wahl der Taktfrequenz. Anderen könnten halt andere Features wichtiger sein. Davon abgesehen, bist du mit dem clock prescaler ja immer noch einigermaßen frei in der Wahl der Taktfrequenz, wenn die Firmware denn erstmal läuft. Nur beim Reset läuft er mit seiner Voreinstellung, danach steht dir alles frei zwischen 62,5 kHz und 16 MHz. Natürlich funktionieren dann die Timings der Arduino-Libs nicht mehr, aber es zwingt einen ja keiner, die zu benutzen.
:
Bearbeitet durch Moderator
Joachim B. schrieb: > Hast ja letztens was geschrieben, auch wie man das anstellt ohne die > boards.txt zu ändern. > Mist ich habe den Link verlegt Ja, das habe ich getan! Eine boards.local.txt anlegen https://arduino.github.io/arduino-cli/platform-specification/ Wobei die Arduino IDE hier noch kein Thema war. Und mir somit auch noch nicht klar ist, ob das der Weg sein wird. spess53 schrieb: > <Dann nimm sie... > > Die einzig sinnvolle Anwendung ist das Recyling des AVRs. Wozu den ca. > achtfach größeren Platz verschwenden. Für nichts. Deine Grätsche, macht klar, dass dir solche Boards nicht in den Kram passen. Gut und schön... jedem das seine. Aber mit dem TE hat das nichts zu tun, denn der hat ein solches liegen, und will es auch wohl zum Einsatz bringen. Also: Deine Vorlieben sind in dem Punkt eher scheißegal. Joachim B. schrieb: > aber eine 6 Pin Stiftleiste mit Druck > gehalten tuts auch, Naja... Fehlerhafte Daten (Kontaktprobleme) an der Stelle, können einem derbe ein Beinchen stellen. Dann doch lieber die, schon genannten, Pogopins verwenden, oder eben einen Stecker einlöten. Ist beides erheblich zuverlässiger. Jörg W. schrieb: > Natürlich > funktionieren dann die Timings der Arduino-Libs nicht mehr, aber es > zwingt einen ja keiner, die zu benutzen. Wie gerade schon gesagt... Kann man über eigene Boarddefinitionen anpassen.
Arduino Fanboy D. schrieb: > Fehlerhafte Daten (Kontaktprobleme) an der Stelle, können einem derbe > ein Beinchen stellen. Das merkt man beim Verify in der Programmierung. Ist trotzdem eine wackelige Angelegenheit, die in der Regel einige Versuche braucht, bis man erfolgreich war. Habe ich mal bei einem Bausatz gemacht, den wir auf öffentlichen Veranstaltungen aufbauen lassen haben. War ganz froh, dann irgendwann die Pogo-Pins zu haben, denn damit funktioniert's im ersten Anlauf.
Jörg W. schrieb: > Das merkt man beim Verify in der Programmierung. Wenn sichs ums Programm dreht, dann ja. Wenn allerdings die Fuses plötzlich daneben stehen, wirds dann schon etwas fummeliger. Das mag ein spess53 oder Joachim B. ja noch in den Griff bekommen. Aber so mancher Anfänger wird wie ein Ochs vorm Berg stehen. Ja, ich halte das auch für machbar, aber auch für ein unnötiges/vermeidbares Risiko.
Arduino Fanboy D. schrieb: > Wenn allerdings die Fuses plötzlich daneben stehen, wirds dann schon > etwas fummeliger. Wenn man denn unbedingt an den Fuses rumfummeln muss mit so einer wackeligen Konstellation … das würde ich wohl eher nicht tun. ;-)
Jörg W. schrieb: > das würde ich wohl eher nicht tun. ;-) Ich auch nicht. Aber beim Bootloader ändern/brennen, steht man genau vor der Entscheidung.
Jörg W. schrieb: >>>Richtig: es geht einfacher für einen Prototypen. >> Und bei wie vielen bleibt es dabei? > Selbst wenn: was ist schlimm daran? Ersetze Prototyp durch Einzelstück: Beitrag "Re: Leitungsschutzschalter kommt beim Abschalten" Oben der Nano als Hirn, unten ein China-Schaltreglermodul und noch ein Stromsensormodul - besser komme ich nicht zu einem Gerät, Einzelstück Natürlich kommen noch Abdeckkappen auf die Drehknöpfe und der Deckel auf das Gehäuse :-) Oder der Ersatz einer mechanischen 14h-Schaltuhr, für die ich keinen Ersatz mehr bekomme. Die LR-Platte hat deren Außenmaße - soll ich dafür ein Layout entwickeln? Ich sehe (und habe) viele Anwendungen für Nano und andere Module, und die landen nicht lose im Schuhkarton, sondern geben fertige Geräte.
Beitrag #6401115 wurde von einem Moderator gelöscht.
Ich weiß gar nicht was euer Problem ist. So ähnlich wie in den Beitrag über mir mache ich es dauernd. Ich habe in Kicad den Footprint des Nano drin. Dann eine kleine Platine drumherum und das war's. Ich finde Leiterbahnen einfach einfacher als Drahtverhau. Wenn es wirklich eng wird habe ich hier Atiny-85 mit Beinchen. Die biegt man um 90° auf Gerade. Daran die Kabel direkt angelötet und ab ins Modellauto ;) Vorher kommt so ein Atiny einfach auf eine Steckboardschaltung um die Programmierung zu prüfen. Ist alles eine Frage des Platzes und meiner offiziell von mir anerkannten Faulheit. Und ich halte Faulheit für eine Tugend. Und wenn die Menschheit nicht so Tugendhaft wäre, würden sie immer noch zu Fuß laufen und hätte nie ein Auto erfunden. ;)
Arduino Fanboy D. schrieb: > Um den Bootloader zu flashen, muss man den Stecker auch einlöten. Nein - muss man nicht. Besser? Jörg W. schrieb: > Könntest du ggf. in Zukunft eine freundlichere Wortwahl treffen? Wenn jemand mit derartiger Bestimmtheit Mist erzählt, muss man doch das mal deutlich sagen dürfen. Arduino Fanboy D. schrieb: > Joachim B. schrieb: >> aber eine 6 Pin Stiftleiste mit Druck gehalten tuts auch, > Naja... > Fehlerhafte Daten (Kontaktprobleme) an der Stelle, können einem derbe > ein Beinchen stellen. Bei durchkontaktierten Platinen ist das überhaupt nicht wackelig, wenn die Beine lang genug sind (Federweg) und man beim Andrücken ein ausreichendes Moment senkrecht zur Bohrachse aufbringt. Bei abgewinkelten Wannensteckern bekommt man das fertige Setup inklusive Pfostenstecker und Flachbandkabel für ein paar Cent (z.B. 6-polig oder 10-polig als Doppelreihe). Einfach den Wannenstecker in die Bohrungen stecken und dann mit Gefühl am eingesteckten Pfostenstecker hochdrücken. Die Winkelform sorgt für das Moment in die richtige Richtung. https://www.reichelt.de/wannenstecker-6-polig-gewinkelt-wsl-6w-p105978.html https://www.reichelt.de/wannenstecker-10-polig-gewinkelt-wsl-10w-p22818.html Ok, das muss man auch haben - sollte aber hinzukriegen sein.
Arduino Fanboy D. schrieb: .... > Deine Grätsche, macht klar, dass dir solche Boards nicht in den Kram > passen. > Gut und schön... jedem das seine. > Aber mit dem TE hat das nichts zu tun, denn der hat ein solches liegen, > und will es auch wohl zum Einsatz bringen. > Also: Deine Vorlieben sind in dem Punkt eher scheißegal. So isses... > Naja... > Fehlerhafte Daten (Kontaktprobleme) an der Stelle, können einem derbe > ein Beinchen stellen. > Dann doch lieber die, schon genannten, Pogopins verwenden, oder eben > einen Stecker einlöten. Ist beides erheblich zuverlässiger. Ich habe alle drei Versionen durch: Etwas seitlich verklemmte Stecker, wobei ich welche mit 2x langen Pins genommen habe und auch 2x 3Pins separat. Funktionierte perfekt. Pogopins habe ich auch einen Block mit 2x3 (also speziell für ISP), die sind mir schonmal abgerutscht, weil man schon ordentlich draufdrücken muss. Das waren allerdings welche mit "Kugelkopf", die mit Spitze gehen besser. Und dann auch den Klassiker, die eingelöteten Pins. Keine Kontaktprobleme, dafür später Gewürge im Gehäuse, ich musste die etwas abknipsen. Old-Papa
Wolfgang schrieb: > Bei durchkontaktierten Platinen ist das überhaupt nicht wackelig, Naja. "überhaupt nicht" ist schon außerordentlich übertrieben. BTDT. Aber: das ist nicht das Thema des Threads.
Jörg W. schrieb: > Naja. "überhaupt nicht" ist schon außerordentlich übertrieben. Das Verfahren lebt vom wohl definierten "Abwinkel"-Druck auf den Stecker, so dass alle Pins auf Spannung sind. Ohne das ist es natürlich wackelig. Das Verfahren ersetzt keinen permanenten Stecker, sondern dient bei mir nur zum (einmaligen) Aufspielen eines Bootloaders - und das hat bisher immer fehlerfrei funktioniert. Die paar Sekunden muss man sich dann mal zusammen nehmen und vernünftig gegen den Stecker drücken. Auch die Pogo-Pin Variante ersetzt keinen permante Steckverbindung, sondern bedarf einer gewissen Sorgfalt oder alternativ einer aufwändiger konstruierten Aufnahme mit sauberer Führung und definierten Anschlägen für die Kontaktierung.
Wolfgang schrieb: > Auch die Pogo-Pin Variante ersetzt keinen permante Steckverbindung, > sondern bedarf einer gewissen Sorgfalt Ja, natürlich. Da ich aber an ein und derselben Platine beides durch habe, kann ich nur sagen: die Pogo-Pins funktionieren praktisch auf Anhieb, beim reingesetzten Stecker war es völlige Glückssache. Selbstverständlich mit Verkanten des Steckers, sonst geht gleich gar nichts. Fuses (für einen Bootloader) damit zu modifizieren, birgt da schon ein gewisses Risiko … durch AVRDUDE's "safemode"-Feature hat man natürlich im Falle des Falles noch eine letzte Chance, nach der entsprechenden Warnung den Stecker nochmal anders zu verkanten und zu hoffen, dass es dann klappt. Wenn nicht, kann es aber im dümmsten Falle gut sein, dass man den Chip danach nur durch HV-Programmierung zurück bekommt.
Wolfgang schrieb: > Das Verfahren lebt vom wohl definierten "Abwinkel"-Druck auf den > Stecker, so dass alle Pins auf Spannung sind. Ohne das ist es natürlich > wackelig. So isses. > Das Verfahren ersetzt keinen permanenten Stecker, sondern dient bei mir > nur zum (einmaligen) Aufspielen eines Bootloaders - und das hat bisher > immer fehlerfrei funktioniert. Die paar Sekunden muss man sich dann mal > zusammen nehmen und vernünftig gegen den Stecker drücken. Muss man bei Pogo-Pins auch. > Auch die Pogo-Pin Variante ersetzt keinen permante Steckverbindung, > sondern bedarf einer gewissen Sorgfalt oder alternativ einer aufwändiger > konstruierten Aufnahme mit sauberer Führung und definierten Anschlägen > für die Kontaktierung. Nun, meine "Pogo-Pinner" habe ich einfach in leere Steckergehäuse geklebt und gut ist. Wie ich schon schrieb, die Spitzen halten viel besser in den Bohrungen, die kugligen sind mir durch Doofheit schon abgerutscht. Old-Papa
:
Bearbeitet durch User
Arduino Fanboy D. schrieb: > Ob es in Sachen Nano ein "besser" zwischen C und C++ gibt? Ich würde hier eher nicht von "C oder C++" denken sondern von "C oder Assembler". Systemtimer kann man auch in Assembler machen. Dafür braucht man keine kb von RAM zu opfern wie in Arduino. Mit C geht wohl Programmieren schneller. Joachim B. schrieb: > die 6 Pins braucht man ja nicht oft, aber sie nerven > wenn sie eingelötet sind, also es geht auch ohne einlöten. Deshalb habe ich eine Übergangsplatine gemacht. Somit kann ich für manche Projekte SMD-Stiftleisten für ISP und JTAG verwenden, die ich nach dem Programm fertig wird einfach auslöten kann. Die Platine hat auch Doppelzahl von gewöhnlichen IDC-Buchsen. Das ist gemacht, um auch kleine Platinen mit gewöhnlichen IDC-Buchsen mit Strom versorgen zu können. Falls jemand Interesse hat, hier ist auch Gerber dafür.
:
Bearbeitet durch User
Maxim B. schrieb: > Dafür braucht > man keine kb von RAM zu opfern wie in Arduino. Die Arduino Timer Geschichte benötigt 9 Byte RAM. Maxim B. schrieb: > kb von RAM Ist also irrational überzogen.
Arduino Fanboy D. schrieb: > Ist also irrational überzogen. Vielleicht. Arduino mag ich aus gleichem Grund nicht wie Windows 10 oder auch Smartphone: ich mag es nicht, wenn eine Maschine mir Menschen sagt, was ich zu tun habe. Ich mag auch nicht, wenn eine Maschine etwas macht, was ich Mensch von ihr nicht verlangt habe. In Arduino gibt es zu viel verstecktes Leben drin. Nach dem ich für einfaches Programm, wo Assembler oder C mit 200 oder 300 Bytes auskommen, gleich 10 kb Maschinencode bekomme, denke ich: was macht Arduino das alles dort? Vielleicht simst es an Chinesen oder an Trump alles, was ich zu Hause spreche? Wozu sonst so viel Code? :) Es gibt auch andere Fragen zu Arduino-Erfinder. Daß man nicht alle ATMega2560-pins angeschlossen hat, habe ich Verständnis. Aber warum sind das ausgerechnet XCK-Pins von allen vier USART, die ATMega2560 hat??? Wenn es so problematisch mit Platz, dann könnte man doch mindestens von zwei oder auch von einem von vier XCK-Pin ausführen, somit Master-SPI-Modus möglich wäre? Aber alles ist da, nur XCK-Pins nicht... Für mich ist ATMega2560 gerade wegen vier USART von Wert, RAM hat sie weniger als ATMega1284, und auch 100 Pins mit 0,5 mm Schritt zu löten macht wenig Spaß... trotzdem bin ich gezwungen, das zu machen, weil Arduino mit ATMega2560 unbrauchbar ist... Hier ist meine Antwort auf Arduino :) Ich habe bei JLC 20 Stück gemacht, zuerst reicht mir das.
:
Bearbeitet durch User
Maxim B. schrieb: > Vielleicht. Nein! Ganz sicher. Ich kann mir nicht vorstellen, dass du dich, und uns, mit Unwahrheiten kommen musst, um dich selber gegen Arduino zu entscheiden. Wenn du schon gegen Arduino argumentieren möchtest, dann bitte mit Wahrheiten. Maxim B. schrieb: > ich mag es nicht, wenn eine Maschine mir Menschen sagt, > was ich zu tun habe. Wer tut das? Wie sagt dir ein Arduino was du zu tun hast? Maxim B. schrieb: > In Arduino gibt es zu viel > verstecktes Leben drin. Nach dem ich für einfaches Programm, wo > Assembler oder C mit 200 oder 300 Bytes auskommen, gleich 10 kb > Maschinencode bekomme, denke ich: was macht Arduino das alles dort? Das könntest du herausfinden, wenn du das möchtest. Gehe ich dir auch gerne zur Hand. Aber ansonsten, kann man auch auch auf die vorgefertigten Sachen verzichten, und dann ist der Unterschied zwischen handgedengeltem ASM und C++ schon längst nicht mehr so groß. Was IO Geschwindigkeit betrifft, und Flashverbrauch, liegen beide Kopf an Kopf gleichauf. Arduino besteht im Prinzip aus 3 Komponenten. -Arduino IDE -Framework (Hardwaredefinition und Libraries) -Board Alle drei lassen sich einzeln Verwenden, oder man kann sie auch weglassen, bzw. die Komponenten austauschen. Du hast also die Wahl. Maxim B. schrieb: > Vielleicht simst es an Chinesen oder an Trump alles, was ich zu Hause > spreche? Wozu sonst so viel Code? :) Irrationales Arduino bashing. ;-) Maxim B. schrieb: > Daß man nicht alle ATMega2560-pins Andere Baustelle, wir sind hier auf Nano, nicht Mega. Whataboutism? Aber ja.... Mir fehlten da bisher nicht die synchronen USART Modi, sonder eher die Zählereingänge. Alternatives Board: http://www.inhaos.com/uploadfile/otherpic/DS-Mega2560-CORE-V01-EN.pdf Mit alle Pins herausgeführt.
Arduino Fanboy D. schrieb: > Wenn du schon gegen Arduino argumentieren möchtest, dann bitte mit > Wahrheiten. Die Wahrheit: Arduino braucht deutlich mehr FLASH und RAM, als C. Es geht nicht um ein paar %, es geht um Mehrfaches. Entsprechend weniger bleibt für eigentliches Programm. Arduino Fanboy D. schrieb: > Mir fehlten da bisher nicht die synchronen USART Modi, sonder eher die > Zählereingänge. T0,T5 und ICP4, ICP5. Nicht alles, aber man kann etwas wählen. Für ein Frequenzmeter würde ich T5 und ICP4 nehmen. XCK gibt es dagegen kein einziger. Arduino Fanboy D. schrieb: > Andere Baustelle, wir sind hier auf Nano, nicht Mega. Hier hatten die Entwickler von Arduino einfach zu wenig Pins. Sonst würden sie auch hier XCK unnutzbar machen und somit die Hälfte von Controllermöglichkeiten verpfuschen, ich bin sicher. :) Arduino Fanboy D. schrieb: > Alternatives Board: > http://www.inhaos.com/uploadfile/otherpic/DS-Mega2560-CORE-V01-EN.pdf > Mit alle Pins herausgeführt. Nicht schlecht. Ich sehe hier allerdings ein Problem: die Stifte von quer stehender Leiste sind zu dicht an anderen Reihen gemacht. Es wird problematisch, die Buchsen für diese Pins auf einer Platine zu platzieren. Also nur hängende Drähtchen oder fest einlöten, für Buchsen paßt diese Platine kaum... Schade... Auch paßt diese Platine (wie auch meine übrigens) für Steckbrett nicht. Dafür sollten keine Doppelleisten stehen. Dann wird aber die Platine zu groß und schon nicht mehr je 2 € pro 5 Stück bei JLC :) Ich finde hilfreich, wenn alle Pins beschriftet werden, auch wenn dadurch die Platine etwas größer wird. Hier sehe ich deutliche Vorteil bei meiner Platine. Sie hat Beschriftung auf beiden Seiten, man kann Stiftleisten beliebig einlöten: von unten für Einsatz in einer Großplatine und von oben für Drähtchen.
:
Bearbeitet durch User
Maxim B. schrieb: > Die Wahrheit: Arduino braucht deutlich mehr FLASH und RAM, als C. Es > geht nicht um ein paar %, es geht um Mehrfaches. Entsprechend weniger > bleibt für eigentliches Programm. > Beweise? Klar ist der Code umständlicher und größer, doch wirklich ein Mehrfaches? Und ja, kein Mensch zwingt einem das Arduinogedöhns auf. Wer es nicht will, nimmt es nicht. Wo ist das Problem? Ich mag keine Pellkartoffeln mit Quark und Leinöl, andere lieben es. Muss ich die deshalb verteufeln? Nö, ich pack mir was Anderes auf den Teller, so einfach. Old-Papa
Old P. schrieb: > Beweise? Das kann jeder selber prüfen. Ein Programm in Arduino-IDE schreiben und compilieren und gleiche Funktionen auf C und auf Assembler. Daß C und Assembler kleinere und schnellere Compilate geben, das ist ein Axiom.
:
Bearbeitet durch User
Maxim B. schrieb: > Das kann jeder selber prüfen. Ein Programm in Arduino-IDE schreiben und > compilieren und gleiche Funktionen auf C und auf Assembler. Daß C und > Assembler kleinere und schnellere Compilate geben, das ist ein Axiom. Viele vielleicht, aber "Jeder" nicht. Ich kann das nicht. Du schriebst ein Mehrfaches, nur daran habe ich Zweifel. Old-Papa
Old P. schrieb: > Klar ist der Code umständlicher und größer, doch wirklich ein > Mehrfaches? Wahrscheinlich wird so ein Arduino-Programm mehr Speicher benötigen als ein vergleichbares Programm in C für den gleichen AVR aber ein Mehrfaches...das müssen IMO aber sehr überschaubare Programme gewesen sein würde ich mal sagen, bei größeren Programmen dürfte sich das Mehrfache auf die Nachkommastelle begrenzen. Kann natürlich das Zünglein an der Waage sein aber ja, ich denke es ist ein wenig übertrieben. ;)
Maxim B. schrieb: > Die Wahrheit: Arduino braucht deutlich mehr FLASH und RAM, als C. Es > geht nicht um ein paar %, es geht um Mehrfaches. Entsprechend weniger > bleibt für eigentliches Programm. Du vergleichst Äpfel mit Birnen. Erstens bezieht sich das nur aufs Framework, welches man auch locker weg lassen kann. (so wie die Libs auch) Dann ist das Framework zum größten Teil in C geschrieben. > Arduino braucht deutlich mehr FLASH und RAM, als C. Das ist absurd. Ich übersetze: > C braucht deutlich mehr FLASH und RAM, als C. Du siehst... Arduino bietet dir/allen die Möglichkeit, den angebotenen Komfort zu nutzen. Alternativ, die Möglichkeit alles selber in C++ zu bauen. Auch C, und ASM stehen zur deiner uneingeschränkten Verfügung. Wahlweise mit, oder ohne Framework. Es also kein Problem reine ASM Programme mit der Arduino IDE zu entwickeln und auf einen nahezu beliebigen AVR zu spielen. Es sind halt die Komfort "Funktionen"/Libraries, welche den Speicherverbrauch mit sich bringen. Der Verzicht darauf, würde dich davon erlösen. Deine gesamte "Speicherverbrauch" Argumentation hängt ausschließlich an dem Framework. Die beiden anderen Komponenten, IDE und Board haben da nix mit zu tun.
M. K. schrieb: > Wahrscheinlich wird so ein Arduino-Programm mehr Speicher benötigen als > ein vergleichbares Programm in C für den gleichen AVR Nein, das ist exakt identisch. Wo soll der Unterschied herkommen?
Arduino Fanboy D. schrieb: > Wo soll der Unterschied herkommen? Das ist eine gute Frage... Was macht Arduino alles mit RAM und FLASH? Ich habe ja schon vermutet: es simst unsere Daten nach China. Aber ich weiß nicht genau, ich bin kein Profi, ich kann nur vermuten. Vielleicht doch nicht nach China? So etwa wie Windows 10? Aber vielleicht einfach uneffiziente Code? Wer weiß... Selber kann ich Arduino-Quelltext nicht überprüfen, und Vertrauen an Profi habe ich schon lange nicht mehr (wer schreibt Viren? Profi natürlich, wer sonst?).
:
Bearbeitet durch User
Maxim B. schrieb: > > Das ist eine gute Frage... Was macht Arduino alles mit RAM und FLASH? > Ich habe ja schon vermutet: es simst unsere Daten nach China. Aber ich > weiß nicht genau, ich bin kein Profi, ich kann nur vermuten. Vielleicht > doch nicht nach China? So etwa wie Windows 10? Aha, der Arduino greift also schnell noch in Deine Bauteilkiste, stöpselt sich ein Interface zusammen um dann die gerade eingestellte Lötkolbentemperatur oder Ventilatordrehzahl oder was sonst er gerade auswertet und regelt an die Machthaber dieser Welt zu schicken. Wenn kein WLan vorhanden ist, stöpselt er sich sogar selber das Kabel rein.... Männeken: egal was Du nimmst, nimm weniger! > Selber kann ich Arduino-Quelltext nicht > überprüfen, und Vertrauen an Profi habe ich schon lange nicht mehr (wer > schreibt Viren? Profi natürlich, wer sonst?). Genau so wie die Verdchwörungshanseln dieser Welt, von nichts ne Ahnung, in der Schule nur Klamotten und Bonanza-Rad gezeigt, aber unglaublich viel Müll in die Welt rufen. Old-Papa
Leider differenzierst du nicht. Das ist schade.... Maxim B. schrieb: > Aber ich > weiß nicht genau, ich bin kein Profi, ich kann nur vermuten. Das ist ein Anfang. An dem Punkt, kann ich schon sagen, dass Vermutungen, hier als Behauptungen/Wahrheit, zu verkaufen, irgendwie der Sache nicht gerecht wird. Es sei denn du stützt dein Leben selber auf falschen Behauptungen, dann wäre es für dich normal so zu agieren. Vielleicht nicht klug, aber normal. Hier findest du die Fakten, zum selber nachlesen: https://github.com/arduino/ArduinoCore-avr Kein Spion Code, weit und breit nicht. --------- Das Minimalst mögliche Arduino Programm, für einen Arduino UNO oder Nano(ATMega328P):
1 | // minimal, ohne Arduino Framework
|
2 | int main() |
3 | {
|
4 | for(;;); |
5 | }
|
Verbrauch: > Der Sketch verwendet 134 Bytes (0%) des Programmspeicherplatzes. > Globale Variablen verwenden 0 Bytes (0%) des dynamischen Speichers, Davon gehen ca 122Byte für die Interruptsprungleiste drauf. Der Rest ist der übliche C/C++ Startcode, wie er beim GCC per default verwendet wird.
1 | // minimal, mit Arduino Framework
|
2 | void setup() |
3 | {
|
4 | |
5 | }
|
6 | |
7 | void loop() |
8 | {
|
9 | |
10 | }
|
> Der Sketch verwendet 444 Bytes (1%) des Programmspeicherplatzes. > Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, Was ist hinzugekommen? Die Timerabhandlung. Komfortfunktionen. millis, delay, delayMicroseconds, micros. Im Startupcode, ist die initiallisierung von allen Timern und des ADC hinzugekommen. Die Timer werden für PWM vorbereitet, und eben der Ticker Interrupt mit Zähler. Der Komfort kostet zusätzliche 310 Byte im Flash. Das ist allesamt C Code. ;-) Deinen Spioncode, mit ohne Antenne, bekommst du da nicht unter. Hier mal ein Basisprogramm mit schon etwas mehr Komfort:
1 | #include <Streaming.h> |
2 | |
3 | |
4 | void setup() |
5 | {
|
6 | Serial.begin(9600); |
7 | Serial << "Start: "<< __FILE__ << endl; |
8 | }
|
9 | |
10 | void loop() |
11 | {
|
12 | |
13 | }
|
> Der Sketch verwendet 1570 Bytes (4%) des Programmspeicherplatzes. > Globale Variablen verwenden 268 Bytes (13%) des dynamischen Speichers Das benötigt RAM. Schließlich richtet es 2 ISR ein, und ein paar Variablen, um z.B. die beiden, je 64Byte, Ringpuffer zu verwalten. Flashbedarf, ca. 1200 Byte mehr. Welchen Komfort bringt das? Ausgabe Methoden für nahezu alle üblichen Datentypen. Sorgenfreie Serialabhandlung. Zusätzlich kann es alle Instanzen ausgeben, welche das Printable Interface implementieren. https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/Printable.h Es implementiert Stream https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/Stream.h Damit auch gleich Print https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/Print.h Diese ganzen Features, kosten dich auch reichlich Platz, wenn du sie in C nachbauen wolltest. Ob du dann mit den 1200 Byte Flash auskommst? Der jeweilige User entscheidet selber, ob er das haben will, oder nicht. Sagst du "JA!" zu den Features, dann kostet dich das Platz. Welch ein Wunder .... egal wie du es drehst und wendest. Eine der Designentscheidungen war auch wohl, dieses auf allen Plattformen, mit einem identischen Interface, zu etablieren. Das waren erst eine Handvoll verschiedener AVR, dann SAM und später noch einige weitere ARMe, usw Plus die ganzen einbindbaren "Fremdprodukte" ESP, K210, usw. Auch implementieren viele der üblichen Libs genau diese Interfaces. Wire(I2C), LCD, File/SD, Netzwerk Server und Clients, usw. Die fassen sich also alle gleich/ähnlich an. Das ist der Komfort, den man bezahlen muss, welcher einen den Speicher kostet. Gerne angemäckert werden auch die IO Funktion, von wegen Speicherverbrauch und langsam. OK, wenn man digitalWrite() nutzt, dann bekommt man das Feature, dass eine evtl auf dem Pin laufende PWM abgeschaltet wird. Auch kann man die Pinnummer dynamisch halten.
1 | for(byte pin = 2; pin < 10; pin++) |
2 | digitalWrite(pin,HIGH); |
Ein recht nützliches Feature, manchmal.... Bau das selber in C, und du wirst merken, das knapper/schneller und ebenso universell, hin zu bekommen, als/wie es in dem Framework implementiert ist, ist "eine" Aufgabe. Der jeweilige User entscheidet selber, ob er das haben will, oder nicht. Niemand wird gezwungen. Ein PORTB = 0; würde u.U. das gleiche tun, nur erheblich schlanker sein. Gleichauf mit Assembler. Mach es also so, wenn dir der Überbau im Wege rum steht. Es ist nicht Arduino welches das unterbindet, oder gar einfordert.. Es ist die eigne Denke.
Arduino Fanboy D. schrieb: > #include <Streaming.h> > > void setup() > { > Serial.begin(9600); > Serial << "Start: "<< _FILE_ << endl; > } > > void loop() > { > > } >> Der Sketch verwendet 1570 Bytes (4%) des Programmspeicherplatzes. >> Globale Variablen verwenden 268 Bytes (13%) des dynamischen Speichers Das ist aber recht viel! Wozu so viele globalen Variablen? Das ist ja nicht besonders gut, besser wäre mehr static zu verwenden. Ich hoffe, du hast Recht und weder Trump noch Mao bekommen meine Gespräche im Zimmer mitgeschnitten :) Aber gut so. Wenn man auch mithört, ich habe keine besondere Geheimnisse zu Hause. Die beiden können höchstens erfahren, wie man richtig das Vaterunser spricht :) Schade, daß Arduino-IDE keine Möglichkeiten für Debug hat. Könnte man durch das Programm mit JTAG laufen, so könnte man besser verstehen, was dort alles gemacht wird...
:
Bearbeitet durch User
Arduino Fanboy D. schrieb: > Nein, das ist exakt identisch. > Wo soll der Unterschied herkommen? Von Framework und Co. schätze ich, da hab ich auch wenig Ahnung von (mangels Interesse daran). Aber mal ein kleines Beispiel: Das Blink-Beispiel in der Arduino-IDE benötigt für den Atmega328p ohne zutun des Users, also unverändert, mal eben schlanke 1030 Bytes. Das identische Beispiel (siehe unten) nur in C geschrieben benötigt aber nur 178 Bytes. Da sind wir dann in dem Bereich, in dem ein Arduino-Programm ein Vielfaches eines vergleichbaren Programms in C an Flash-Speicher benötigt aber, ich sagte es ja schon oben: Das ist ein sehr überschaubares Programm und gewiss nicht repräsentativ für die typische Anwendung von Mikrocontrollern und Co. ;) Mein Blink-Beispiel in C als Äquivalent zum Blinkbeispiel der Arduino-IDE.
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | |
4 | int main(void) |
5 | {
|
6 | DDRB = (1 << PB5); |
7 | for(;;){ |
8 | PORTB |= (1 << PB5); |
9 | _delay_ms(1000); |
10 | PORTB &= ~(1 << PB5); |
11 | _delay_ms(1000); |
12 | }
|
13 | return 0; /* wird nie erreicht */ |
14 | }
|
M. K. schrieb: > Mein Blink-Beispiel in C als Äquivalent zum Blinkbeispiel der > Arduino-IDE. Gutes Beispiel. Das kannst du in eine *.ino Datei stopfen, dann wird es von der Arduino IDE als C++ kompiliert, oder in einer *.c ooder *.cpp Datei, neben einer leeren *.ino. Oder eben auf ASM umgemogelt in einer *.S Das tuts, sofort, ohne irgendwelche Klimmzüge. Du musst das Framework nicht verwenden. Arduino sagt zu deinem Code: > Der Sketch verwendet 178 Bytes (0%) des Programmspeicherplatzes. > Globale Variablen verwenden 0 Bytes (0%) des dynamischen Speichers, Atmel Studio, o.ä, ist da sparsamer? M. K. schrieb: > Das Blink-Beispiel in der Arduino-IDE benötigt für den Atmega328p ohne > zutun des Users, also unverändert, mal eben schlanke 1030 Bytes. Ja, der Komfort! z.B. die Chance, die Laufzeiten/Blinkintervalle, Pins, zur Laufzeit auszutauschen. Die Portabilität, Lauffähigkeit auf anderen µC, ARM ESP usw... --- Es gibt dutzende von Verfahren, den Überbau abzuwenden. Unter Verzicht auf den Komfort. Der Komfort hat seinen Preis. Der Anwender trifft die Entscheidung.
Keiner hat bestritten, dass Komfort seinen Preis hat. Aber mal ehrlich: Ich schreibe das C Programm im Atmel-Studio. Ich erstelle einfach ein Projekt und schreibe das Programm runter und lade es auf den uC. Ohne sonst was zu tun. Genauso gehe ich in der Arduino-IDE vor und da ergibt sich dieser Unterschied. Und das im Atmel-Studio geschriebene C-Programm braucht 178 Bytes, das Ardiuno-Programm braucht 1030 Bytes. Ist nunmal ein Unterschied wie er oben bemängelt wurde. Niemand hat gesagt, dass man das nicht ändern kann durch entsprechende Eingriffe an der IDE aber du musst schon zugeben, dass solche Eingriffe nix für Anfänger und Rookies sind. Da muss man schon in eine Ebene in der Arduino-IDE rein gehen die eher was für Fortgeschrittene wie dich ist. Und ich finde auch so dass das Atmel-Studio etwas komfortabler als die Arduino-IDE. Das heißt aber nicht, dass ich Arduino schlecht finde, ganz im Gegenteil, ich finde das interessant und sehr gut. ;)
M. K. schrieb: > Niemand hat gesagt, dass man das nicht ändern kann > durch entsprechende Eingriffe an der IDE ... Es sind keine Eingriffe nötig! -------- > Und das im Atmel-Studio geschriebene > C-Programm braucht 178 Bytes Es ist egal, ob Arduino IDE, oder Atmel Studio. Das gleiche Programm, benötigt den gleichen Raum. Der hinkende Vergleich: Wenn du mit einem LKW in den Supermarkt zum einkaufen fährst, dann wirst du auch nicht alle Features des Fahrzeugs nutzen, und doch nicht auf den Kundenparkplatz passen. -------- M. K. schrieb: > dass solche Eingriffe nix für Anfänger und Rookies sind. Da muss man > schon in eine Ebene in der Arduino-IDE rein Wie schon gesagt... Keine Eingriffe nötig. Nicht für diese Belange. Allerdings, sollte man schon das Datenblatt gelesen habe wenn man mit PORTB und seinen Brüdern hantiert. Das bleibt einem auch nicht beim Atmel Studio erspart. M. K. schrieb: > Und ich finde auch so dass das Atmel-Studio etwas komfortabler als die > Arduino-IDE. Das sei dir ungenommen. Persönliche Vorlieben wird es immer geben. Das Atmelstudio ist schon recht komplex, mit seinen Menues... Viel Gedönse, was man selten benötigt. Und Eclipse, z.B. ist noch viel komplexer und undurchsichtiger. --- Die Arduino IDE ist bewusst schlicht gehalten. Das Framework auch Weitgehend portabel. Die niedrige Einstiegsschwelle, und die kleinen Preise. Darin dürfte die Wurzel der Arduino Bekanntheit liegen. --- Das fehlende Debugging Feature, ist zumindest schon mal auf dem Weg in die Realisierung, mit der "Arduino Pro IDE"
Jörg W. schrieb: > Mikro-USB, nicht Mini? Die Nano-Clones, die wir hier rumliegen haben, > haben Mini-USB. https://www.seeedstudio.com/Seeeduino-Nano-p-4111.html Die Chinesen haben auch Varianten mit USB Typ C. PS: Bei den Chinesen Arduino ist es meistens nicht erforderlich den Bootloader explizit umzuflashen. Es reicht in der Arduino IDE die "old Bootloader" Variante des jeweiligen Arduino auszuwählen.
Arduino Fanboy D. schrieb: > Es ist egal, ob Arduino IDE, oder Atmel Studio. > Das gleiche Programm, benötigt den gleichen Raum. Ah, jetzt verstehe ich das Problem. Du hast noch nicht verstanden, dass es um das Thema Arduino-Programm vs C-Programm geht und nicht Arduino-IDE vs Atmel-IDE. Da hab ich mich und auch der Kritiker zu schlecht ausgedrückt. ;)
Immer die gleiche unsinnige Diskussion. Und immer die gleiche Antwort von mir: "Arduino" bezeichnet das gesamte System aus einer vorgegebenen Hardware (inkl. Pinning usw), der Arduino-IDE und des Arduino-Bootloaders sowie das Software Framework (die libs). Man KANN die Teile einzeln sehen. Man kann z.B. nur die HW nutzen, also normales Controllerboard. Man kann HW + IDE nutzen aber ohne die libs. Natürlich geht das. Dann ist es aber kein Arduino mehr. Die weitere Nutzung dieser Bezeichnung ist dann nur noch irreführend. Was man daran sieht, dass kein Anfänger mehr durchblickt was man meint. Wenn man Teile aus einem Staubsauger ausbaut und damit einen Wasserkocher baucht, ist es halt auch kein Staubsauger mehr.
Maxim B. schrieb: > Schade, daß Arduino-IDE keine Möglichkeiten für Debug hat. Könnte man > durch das Programm mit JTAG laufen, so könnte man besser verstehen, was > dort alles gemacht wird... Du könntest eine Arduino IDE für Visual Studio verwenden. Dann könntest du überall rein gucken. https://www.visualmicro.com/
M. K. schrieb: > Ah, jetzt verstehe ich das Problem. Du hast noch nicht verstanden, dass > es um das Thema Arduino-Programm vs C-Programm geht und nicht Ja, nee... Es ist einfach blöd, die Komfortfunktinen zu nutzen, und sich dann über den Verbrauch aufzuregen, oder das Arduino anzukreiden. Der Komfort hat seinen Preis. Wenn man den nicht bezahlen will, muss man selber Hand anlegen. Cyblord -. schrieb: > Man KANN die Teile einzeln sehen. Ja, das kann man tun. - IDE - Builder (make Äquivalent) - Tool Chain - Framework - Boards(eine Grundmenge an Boarddefinitionen) Ja, das wird in einem Klumpen ausgeliefert. Auch wegen der so niedrigeren Einstiegsschwelle. Ja, jede der Komponenten ist einzeln verwendbar, oder gegen irgendwas anders austauschbar. Cyblord -. schrieb: > Dann ist es aber kein Arduino mehr. Das ist eine Behauptung Festsetzung, welche mir arg willkürlich erscheint. Damit sprichst du der Arduino Welt die Flexibilität ab, welche sie nachweislich hat. Einfach so.... Beispiel ESP: Von den 5 genannten Hauptkomponenten, fallen die untersten 3 weg, bzw. werden durch anderes ersetzt. Ist es dann auch kein Arduino mehr? Nee, die Verallgemeinerung, welcher du da vorführst, spielt sich nur in deinem Kopf ab. Einen strengen Bezug zur Realität hat das eher nicht. Meine Definition sieht so aus: Wenn etwas mit der Arduino IDE Kompilierbar ist, dann ist es ein Arduino Programm. Egal in welcher Sprache es geschrieben wurde. Egal mit welcher IDE, oder Editor verfasst. Unabhängig davon, in wieweit es die Komfortfunktionen nutzt. Welcher Kompiler das durchrattert. Und auch unabhängig davon ob das Programm hinterher auf einem originalen Arduino Board läuft. Das kommt der Praxis viel näher.
Arduino Fanboy D. schrieb: > Ja, nee... > > Es ist einfach blöd, die Komfortfunktinen zu nutzen, und sich dann über > den Verbrauch aufzuregen, oder das Arduino anzukreiden. > Der Komfort hat seinen Preis. > Wenn man den nicht bezahlen will, muss man selber Hand anlegen. Ist es echt so schwer mal zuzugeben, dass man jemand anderes nicht richtig verstanden hat? Meine Güte, so schwer ist das doch nicht...und schlimm ist es erst recht nicht. Komm mal runter, es ist Sonntag. Genieße den Tag.
M. K. schrieb: > Ist es echt so schwer mal zuzugeben, dass man jemand anderes nicht > richtig verstanden hat? Meine Güte, so schwer ist das doch nicht...und > schlimm ist es erst recht nicht. Komm mal runter, es ist Sonntag. > Genieße den Tag. Naja sein Name ist Programm. Auf Arduino lässt er nichts kommen, nicht mal berechtigte Einwände.
Cyblord -. schrieb: > nicht mal berechtigte Einwände. Was sind denn berechtigte Einwände? Der genante Mehrverbrauch? Ich hoffe, dass ich darlegen konnte, woher der kommt, und auch wie man ihn vermeidet, wenn man ihn nicht möchte.
Arduino Fanboy D. schrieb: > Was sind denn berechtigte Einwände? Na z.B. MEIN Einwand, dass Arduino die blödeste Idee, diesseits aller Irrenhäuser war. Diese Kritik nimmst du einfach nicht so richtig an, denke ich manchmal.
Arduino Fanboy D. schrieb: > Was sind denn berechtigte Einwände? > > Der genante Mehrverbrauch? > Ich hoffe, dass ich darlegen konnte, woher der kommt, und auch wie man > ihn vermeidet, wenn man ihn nicht möchte. warum ist digitalWrite(TEST_PIN, HIGH); so langsam? https://roboticsbackend.com/arduino-fast-digitalwrite/ jedenfalls viel langsamer als PORTB = B00000001; ich weiss ja selber das man digitalWrite nicht braucht, aber warum ist das langsamer?
Joachim B. schrieb: > Arduino Fanboy D. schrieb: >> Was sind denn berechtigte Einwände? >> >> Der genante Mehrverbrauch? >> Ich hoffe, dass ich darlegen konnte, woher der kommt, und auch wie man >> ihn vermeidet, wenn man ihn nicht möchte. > > warum ist digitalWrite(TEST_PIN, HIGH); so langsam? > > https://roboticsbackend.com/arduino-fast-digitalwrite/ > > jedenfalls viel langsamer als > > PORTB = B00000001; > > ich weiss ja selber das man digitalWrite nicht braucht, aber warum ist > das langsamer? Weil es z.B. noch prüft, ob der Pin ein PWM-Pin ist und erst mal die Verbindung zum Timer abgeschaltet werden muß. Leider macht "Arduino" das alles zur Laufzeit. C++ könnte das auch anders, aber man hat diese Möglichkeiten leider nicht genutzt.
:
Bearbeitet durch User
Carl D. schrieb: > Weil es z.B. noch prüft, ob der Pin ein PWM-Pin ist und erst mal die > Verbindung zum Timer abgeschaltet werden muß. Zudem die Pinaufschlüsselung zur Laufzeit. Dieses bedingt eine Tabelle im Flash und halt ein paar Zugriffsfunktionen. Carl D. schrieb: > C++ könnte das auch anders, Die Pin Aufschlüsselung, ja, wenn die Pins konstant sind. Aber der Kompiler kann nicht wissen, ob da gerade ein Pin mit seiner PWM wackelt, das sieht er nicht. Es ist sicherlich wahr, dass man einiges in C++ geschickter lösen könnte, ... ---------- Cyblord -. schrieb: > Arduino Fanboy D. schrieb: >> Was sind denn berechtigte Einwände? > > Na z.B. MEIN Einwand, dass Arduino die blödeste Idee, diesseits aller > Irrenhäuser war. > > Diese Kritik nimmst du einfach nicht so richtig an, denke ich manchmal. Nöö... Da hast du völlig Wahr. Diese Kritik interessiert mich wirklich nicht. Auch scheint mir das eher eine Bewertung, Urteil oder eine Abneigung zu sein, als eine Kritik. Um eine Kritik zu sein, fehlt da die Substanz.
Carl D. schrieb: > Weil es z.B. noch prüft, ob der Pin ein PWM-Pin ist und erst mal die > Verbindung zum Timer abgeschaltet werden muß. danke Carl D. schrieb: > Leider macht "Arduino" das alles zur Laufzeit. C++ könnte das auch > anders, aber man hat diese Möglichkeiten leider nicht genutzt. warum eigentlich nicht, das wäre doch ein echter Vorteil wenn mir schon immer vorgeworfen wird das im Arduino c++ steckt weil ich immer noch in c programmiere. Also Arduino nutzt c++, aber nicht dessen Vorteile in einer Funktion? Wie soll man das verstehen?
Joachim B. schrieb: > Carl D. schrieb: >> Weil es z.B. noch prüft, ob der Pin ein PWM-Pin ist und erst mal die >> Verbindung zum Timer abgeschaltet werden muß. > > danke . > Carl D. schrieb: >> Leider macht "Arduino" das alles zur Laufzeit. C++ könnte das auch >> anders, aber man hat diese Möglichkeiten leider nicht genutzt. . > warum eigentlich nicht, das wäre doch ein echter Vorteil wenn mir schon > immer vorgeworfen wird das im Arduino c++ steckt weil ich immer noch in > c programmiere. > > Also Arduino nutzt c++, aber nicht dessen Vorteile in einer Funktion? > > Wie soll man das verstehen? Ohne es genau zu wissen vermute ich daß die Macher schlicht keine Priorität auf dieses Detail gelegt haben. Zudem muß man sehen, daß sich die Möglichkeiten ab C++11 deutlich verbessert haben.
:
Bearbeitet durch User
Joachim B. schrieb: > Also Arduino nutzt c++, aber nicht dessen Vorteile in einer Funktion? Der Core ist zum großen Teil in C geschrieben. Darum sind die meisten Komfortfunktionen in C, C++ und wenn man ernstlich will auch in ASM nutzbar. Wäre diese Basisfunktionalität in C++ Klassentemplates gestopft, wäre das aus anderen Sprachen nicht (so leicht) erreichbar. Die ursprüngliche Vorlage, wahr wohl Processing.
Joachim B. schrieb: > Also Arduino nutzt c++, aber nicht dessen Vorteile in einer Funktion? Ich habe keine Ahnung was der Arduino INTERN benutzt. Programmieren / schreiben tue ich mein Code in BASIS. Genauer gesagt in B4X Basic. Wobei das X für Variante steht. B4R = Arduino / B4A = Android / B4J = Java / B4i = Ei-zeug. Meine b4R Variante übersetzt das Basic + Arduino-IDE und sendet deren Code an das Teilchen. Eine Variante die ich mir nur nebenbei angesehen habe ist BasCom. Die ist aber kostenpflichtig. Was ich damit sagen. Man muss kein C schreiben. Was den Speicherverbrauch angeht. Den kann man (getested) einfach senken. Viele Libs sind "universal" geschrieben. Wenn man die leicht modifiziert kann man viel Speicherplatz sparen. Man muss nur die leichten Modifikationen für andere Geräte die eigentlich das selbe sind, aus den Dateien löschen. Klar würde ich als Libs-Entwickler lieber eine "if-Then" Abfragen nach der Geräte-Signatur machen, als ein Grund-Code x-mal zu schreiben und die Wartung/Fehler x-mal zu kopieren. Einige Libs sind sogar keine richtigen sondern nur Subs deren Aufruf ausgelagert wurde. Davon abgesehen ist der Speicherverbrauch völlig egal. Ich sage immer so. Solange der Platz reicht, kann ich ihn nutzen ohne schlechtes Gewissen. Immerhin habe ich ihn komplett bezahlt. Ich mag die Arduino's. Sie sind preiswert (in China) einfach zu programmieren, und machen ihren Job. Wenn ich der Meinung bin ich brauch was besseres, dann nutzt ich auch was besseres. Ich finde es eine Unsitte das jeder Mist alles können muss, aber nix richtig kann. Ist bei normaler Software genauso.
Joachim B. schrieb: > warum ist digitalWrite(TEST_PIN, HIGH); so langsam? Schaue einfach in den Quelltext.
Cyblord -. schrieb: > Man kann z.B. nur die HW nutzen, also normales Controllerboard. Ja, und um mehr (als die Identifikation des Boards) ging es hier nicht. Der TE hatte nicht nach Empfehlungen für Software-Frameworks, Programmiersprachen oder IDEs gefragt sondern nur, um welche Hardware es sich handelt. Alles andere haben nur irgendwelche Fanboys auf den Plan gesetzt – und damit meine ich jetzt nicht speziell "ufuf", sondern auch alle anderen, die hier schräg kreuz und quer diskutieren, egal, ob sie Äpfel nun mit Birnen vergleichen oder den ganzen Vergleich nur dann als einen solchen akzeptieren, wenn man außer den Äpfeln auch noch die Apfelkörbe und Transportkisten einbezieht. Der Chantal schrieb: > Die Chinesen haben auch Varianten mit USB Typ C. Hier war's aber wohl wirklich eine Mini-USB-Buchse, und das wurde recht schnell geklärt.
:
Bearbeitet durch Moderator
Respekt. Da fragt einer vernünftig danach, welches Board er hat und bekommt, nach einmaligem Nachhaken, auch eine sinnvolle Antwort und gleich darauf geht das Arduino-Bashing los, welches mindestens 10 mal mehr Traffic verursacht, als das Ausgangsposting und die kurze Antwort darauf. Und dann wird sich hier dauernd übertrieben über Bildformate aufgeregt...
Wolfgang schrieb: > Du könntest eine Arduino IDE für Visual Studio verwenden. Dann könntest > du überall rein gucken. > https://www.visualmicro.com/ dafür braucht man neumodische Windows, aber die bremst zu stark, wie auch neumodische Atmel Studio. Mit von mir benutzten AVR Atudio 4.19 und Windows XP geht das leider nicht. Und neue Computer nur dafür zu kaufen habe ich wenig Lust. Mit Arduino IDE sieht alles wie eine Katze im Sack: du schreibst etwas, und IDE gibt zurück ein paar kb Code. Was, warum, wie genau - das bleibt alles versteckt.
Maxim B. schrieb: > dafür braucht man neumodische Windows, aber die bremst zu stark, wie > auch neumodische Atmel Studio. Mit von mir benutzten AVR Atudio 4.19 und > Windows XP geht das leider nicht. Und neue Computer nur dafür zu kaufen > habe ich wenig Lust. Tja, ohne Arme keine Kekse.... > Mit Arduino IDE sieht alles wie eine Katze im Sack: du schreibst etwas, > und IDE gibt zurück ein paar kb Code. Was, warum, wie genau - das bleibt > alles versteckt. Dann nutze was Anderes, niemand wird zu Arduino gezwungen. Mit etwas Übung kann man Code auch direkt als HEX zu Papier bzw. in den Flash bringen. Ich korrigiere:... mit viel Übung, sehr viel Übung.... Dann weiß Du aber auch, was der Code macht und was nicht. Wie groß er wird hängt dann neben den technischen Grenzen auch nur von Deinem Können ab. Also: Frisch ans Werk! Old-Papa
Frank B. schrieb: > Und dann wird sich hier dauernd übertrieben über Bildformate > aufgeregt... Naja, ein falsches Bildformat (mehrer Megabyte statt einige hundert Kilobyte) verursacht nun mal erheblich mehr Trafic als 100 sinnlose Posts ;)
:
Bearbeitet durch User
Maxim B. schrieb: > Mit Arduino IDE sieht alles wie eine Katze im Sack: du schreibst etwas, > und IDE gibt zurück ein paar kb Code. Was, warum, wie genau - das bleibt > alles versteckt. Wenn Du dieses für die AVR-Lib geschriebene Programm... M. K. schrieb: > Mein Blink-Beispiel in C als Äquivalent zum Blinkbeispiel der > Arduino-IDE.
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | |
4 | int main(void) |
5 | {
|
6 | DDRB = (1 << PB5); |
7 | for(;;){ |
8 | PORTB |= (1 << PB5); |
9 | _delay_ms(1000); |
10 | PORTB &= ~(1 << PB5); |
11 | _delay_ms(1000); |
12 | }
|
13 | return 0; /* wird nie erreicht */ |
14 | }
|
... exact so in eine *.ino einträgst und mit der Arduino-IDE übersetzt, dann erhälst Du dies, wie bereits geschrieben: Arduino Fanboy D. schrieb: > Arduino sagt zu deinem Code: >> Der Sketch verwendet 178 Bytes (0%) des Programmspeicherplatzes. >> Globale Variablen verwenden 0 Bytes (0%) des dynamischen Speichers, Das Ergebnis ist nicht anders, als wenn Du avr-gcc von Hand aufrufst, nichts mit Maxim B. schrieb: > IDE gibt zurück ein paar kb Code.
Nachtrag: Das Hex-File ist 525 ASCII-Byte lang und besteht zu über der Hälfte aus den Interrupt-Vektoren:
1 | :100000000C9434000C943E000C943E000C943E0082 |
2 | :100010000C943E000C943E000C943E000C943E0068 |
3 | :100020000C943E000C943E000C943E000C943E0058 |
4 | :100030000C943E000C943E000C943E000C943E0048 |
5 | :100040000C943E000C943E000C943E000C943E0038 |
6 | :100050000C943E000C943E000C943E000C943E0028 |
7 | :100060000C943E000C943E0011241FBECFEFD8E04C |
8 | :10007000DEBFCDBF0E9440000C9457000C940000DE |
9 | :1000800080E284B92D9A2FEF83ED90E321508040D8 |
10 | :100090009040E1F700C000002D982FEF83ED90E332 |
11 | :1000A000215080409040E1F700C00000EBCFF89471 |
12 | :0200B000FFCF80 |
13 | :00000001FF |
Martin H. schrieb: > Nachtrag: > > Das Hex-File ist 525 ASCII-Byte lang und besteht zu über der Hälfte aus > den Interrupt-Vektoren: > >
1 | > :100000000C9434000C943E000C943E000C943E0082 |
2 | > :100010000C943E000C943E000C943E000C943E0068 |
3 | > :100020000C943E000C943E000C943E000C943E0058 |
4 | > :100030000C943E000C943E000C943E000C943E0048 |
5 | > :100040000C943E000C943E000C943E000C943E0038 |
6 | > :100050000C943E000C943E000C943E000C943E0028 |
7 | > :100060000C943E000C943E0011241FBECFEFD8E04C |
8 | > :10007000DEBFCDBF0E9440000C9457000C940000DE |
9 | > :1000800080E284B92D9A2FEF83ED90E321508040D8 |
10 | > :100090009040E1F700C000002D982FEF83ED90E332 |
11 | > :1000A000215080409040E1F700C00000EBCFF89471 |
12 | > :0200B000FFCF80 |
13 | > :00000001FF |
14 | > |
Aha.... U d wo ist das Problem bei 32kB Flash? Old-Papa
Maxim B. schrieb: > Was, warum, wie genau - das bleibt alles versteckt. Dem kannst Du mit
1 | avr-objdump -d /tmp/arduino_build_*/blink.ino.elf |
auf den Grund gehen:
1 | /tmp/arduino_build_804693/blink.ino.elf: file format elf32-avr |
2 | |
3 | |
4 | Disassembly of section .text: |
5 | |
6 | 00000000 <__vectors>: |
7 | 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> |
8 | 4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
9 | 8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
10 | c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
11 | 10: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
12 | 14: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
13 | 18: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
14 | 1c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
15 | 20: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
16 | 24: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
17 | 28: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
18 | 2c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
19 | 30: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
20 | 34: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
21 | 38: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
22 | 3c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
23 | 40: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
24 | 44: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
25 | 48: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
26 | 4c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
27 | 50: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
28 | 54: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
29 | 58: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
30 | 5c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
31 | 60: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
32 | 64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> |
33 | |
34 | 00000068 <__ctors_end>: |
35 | 68: 11 24 eor r1, r1 |
36 | 6a: 1f be out 0x3f, r1 ; 63 |
37 | 6c: cf ef ldi r28, 0xFF ; 255 |
38 | 6e: d8 e0 ldi r29, 0x08 ; 8 |
39 | 70: de bf out 0x3e, r29 ; 62 |
40 | 72: cd bf out 0x3d, r28 ; 61 |
41 | 74: 0e 94 40 00 call 0x80 ; 0x80 <main> |
42 | 78: 0c 94 57 00 jmp 0xae ; 0xae <_exit> |
43 | |
44 | 0000007c <__bad_interrupt>: |
45 | 7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> |
46 | |
47 | 00000080 <main>: |
48 | 80: 80 e2 ldi r24, 0x20 ; 32 |
49 | 82: 84 b9 out 0x04, r24 ; 4 |
50 | 84: 2d 9a sbi 0x05, 5 ; 5 |
51 | 86: 2f ef ldi r18, 0xFF ; 255 |
52 | 88: 83 ed ldi r24, 0xD3 ; 211 |
53 | 8a: 90 e3 ldi r25, 0x30 ; 48 |
54 | 8c: 21 50 subi r18, 0x01 ; 1 |
55 | 8e: 80 40 sbci r24, 0x00 ; 0 |
56 | 90: 90 40 sbci r25, 0x00 ; 0 |
57 | 92: e1 f7 brne .-8 ; 0x8c <main+0xc> |
58 | 94: 00 c0 rjmp .+0 ; 0x96 <main+0x16> |
59 | 96: 00 00 nop |
60 | 98: 2d 98 cbi 0x05, 5 ; 5 |
61 | 9a: 2f ef ldi r18, 0xFF ; 255 |
62 | 9c: 83 ed ldi r24, 0xD3 ; 211 |
63 | 9e: 90 e3 ldi r25, 0x30 ; 48 |
64 | a0: 21 50 subi r18, 0x01 ; 1 |
65 | a2: 80 40 sbci r24, 0x00 ; 0 |
66 | a4: 90 40 sbci r25, 0x00 ; 0 |
67 | a6: e1 f7 brne .-8 ; 0xa0 <main+0x20> |
68 | a8: 00 c0 rjmp .+0 ; 0xaa <main+0x2a> |
69 | aa: 00 00 nop |
70 | ac: eb cf rjmp .-42 ; 0x84 <main+0x4> |
71 | |
72 | 000000ae <_exit>: |
73 | ae: f8 94 cli |
74 | |
75 | 000000b0 <__stop_program>: |
76 | b0: ff cf rjmp .-2 ; 0xb0 <__stop_program> |
Martin H. schrieb: > Dem kannst Du mitavr-objdump -d /tmp/arduino_build_*/blink.ino.elf auf > den Grund gehen: Das habe ich mir in den Build Prozess eingebaut. wird also bei jedem Kompilieren automatisch von der IDE mitgemacht. Wenn Interesse besteht, mag ich das "Wie" gerne hier kund tun. Schöner daran ist, dass der C/C++ Quellcode da noch mit eingeflochten wird. Da fällt einem die Zuordnung Hochsprache zu generiertem ASM etwas leichter, wenn da nicht die Optimierung wäre.... Maxim B. schrieb: > Mit Arduino IDE sieht alles wie eine Katze im Sack: du schreibst etwas, > und IDE gibt zurück ein paar kb Code. Was, warum, wie genau - das bleibt > alles versteckt. Warum sofort behaupten und beschweren, anstatt nach Möglichkeiten fragen! Alles, nahezu alles, liegt im Quellcode vor. (auf Github und/oder auch auf deinem Rechner) Von allen Komponenten . Wenn man die ausführlichen Ausgaben aktiviert, sieht man jede Datei, welche dem Kompiler zum Fraß vorgeworfen wird. Man kann den Vorgang beobachten, und analysieren. Jede dieser Dateien im Editor seiner Wahl öffnen. Und schlussendlich, wie schon gesagt wurde, kann man den generierten Code mit objdump lesbar machen Ja, du hast recht, es ist vieles erstmal verborgen. Aber wenn man will, ist der Blick möglich.
Martin H. schrieb: > ... exact so in eine *.ino einträgst und mit der Arduino-IDE übersetzt, > dann erhälst Du dies, wie bereits geschrieben Und das ändert nichts daran, dass das ein C-Programm ist und kein Arduino-Programm. Das verstehen hier anscheinend einige nicht. Man kann auch mittels C/C-Compiler ein Assemblerprogramm übersetzen, würde auch nichts daran ändern, dass das Assemblerprogramm immer noch ein Assemblerprogramm ist und dadurch nicht zu einem C-Programm wird.
Martin H. schrieb: > Das Ergebnis ist nicht anders, als wenn Du avr-gcc von Hand aufrufst Wundert auch nicht da die Arduino-IDE ja u.a. den avr-gcc benutzt da der ja Teil des Pakets ist ;)
M. K. schrieb: > Und das ändert nichts daran, dass das ein C-Programm ist und kein > Arduino-Programm. Ein C Programm wird von einem C Kompiler übersetzt. Ein C++ Programm von einem C++ Kompiler. Wenn du den Code in eine *.ino Datei stopfst, ist es C++. Fertig und aus. Es gibt keinen Arduino Kompiler. Aber es gibt den Builder. Und wenn es da erfolgreich durch geht, ist es ein Arduino Programm. So lautet meine Definition. Egal, ob C, C++ oder ASM M. K. schrieb: > Das verstehen hier anscheinend einige nicht. Nein deine Definition verstehe ich wirklich nicht. Wann ist ein Arduino Programm ein Arduino Programm?
Arduino Fanboy D. schrieb: > Wann ist ein Arduino Programm ein Arduino Programm? In meinem laienhaften Verständniss wenn es folgende Syntax hat:
1 | void setup(){ |
2 | } |
3 | void loop(){ |
4 | } |
Ich hab z.B. noch nicht am Blink-Beispiel gesehen, wo im Code die Library angegeben werden muss, damit das Arduino-Programm auch weiß, was delay(1000); heißt oder was ein pinMode() ist oder was man unter einem OUTPUT verstehen darf. Sorry, mir ist inzwischen klar warum du dieses eigentlich Problem nicht verstehst: Du willst es einfach nicht verstehen. Mir ist die Sache jetzt echt zu blöd geworden, verarschen kann ich mich alleine. Denn ich glaube nicht, dass du zu blöd bist zu verstehen was ein Arduino-Programm ist und was ein C-Programm oder Assembler-Programm ist.
Beitrag #6403485 wurde vom Autor gelöscht.
M. K. schrieb im Beitrag #6403485: > Arduino Fanboy D. schrieb: >> Wenn du den Code in eine *.ino Datei stopfst, ist es C++. > > Das ist übrigens falsch. Was ist denn richtig? M. K. schrieb: > In meinem laienhaften Verständniss wenn es folgende Syntax hat: > void setup(){ > } > void loop(){ > } Ja, der Arduino Präprozessor prüft das Vorhandensein dieser Funktionen und wählt dann seine main(), welcher die Timer initialisiert, und die genannten Funktionen aufruft. Ansonsten muss man eine eigene main() bauen.
Nachtrag: Der Bau einer eigenen main() verhindert die automatische intitialisierung von Timern/PWM und des ADC Diese Dinge sind dann im folgenden Programm nicht mehr nutzbar. Logisch, oder? Andere Dinge des Frameworks, die nicht von der Initialisierung abhängig sind funktionieren weiter. Hier so eine Mischform:
1 | #include <Arduino.h> |
2 | |
3 | |
4 | int main() |
5 | {
|
6 | pinMode(13,OUTPUT); |
7 | |
8 | |
9 | for(;;) |
10 | {
|
11 | digitalWrite(13,!digitalRead(13)); |
12 | _delay_ms(1000); |
13 | }
|
14 | }
|
Ist das jetzt ein C, C++ oder Arduino Programm? Wobei ich die Frage für unzulässig halte, denn C und C++ sind Sprachen, und Arduino ist nur eine Framework, welches in diesen Sprachen(+ASM) geschrieben ist. Die Frage setzt Äpfel und Birnen in Relation zu dem Korb. Körbe kann(sollte?) man nicht essen.
Arduino Fanboy D. schrieb: > Wobei ich die Frage für unzulässig halte, denn C und C++ sind Sprachen, > und Arduino ist nur eine Framework, welches in diesen Sprachen(+ASM) > geschrieben ist. > Die Frage setzt Äpfel und Birnen in Relation zu dem Korb. > Körbe kann(sollte?) man nicht essen. Das ist allerdings korrekt. Aber es ist Bezeichnend das nicht wenige Nutzer "Arduino" als weitere Programmiersprache nach C und C++ ansehen.
Cyblord -. schrieb: > Aber es ist Bezeichnend das nicht wenige Nutzer "Arduino" als weitere > Programmiersprache nach C und C++ ansehen. Viele wissen anfangs nicht, mit welcher Sprache sie es da überhaupt zu tun bekommen. Da liegt das Wort "Arduino Sprache" gar nicht so fern. Denen sagt man einmal, dass es in der Hauptsache C++ ist, dann geht die Kröte meist runter. Schlimmer sind die älteren Semester, welche von einer "Arduino Sprache" sprechen und darauf beharren. Die sind nerviger, als die Anfänger. Die stehen sich selber und den Anfängern mit ihren (Vor)Urteilen im Wege rum.
Arduino Fanboy D. schrieb: > Das habe ich mir in den Build Prozess eingebaut. wird also bei jedem > Kompilieren automatisch von der IDE mitgemacht. > Wenn Interesse besteht, mag ich das "Wie" gerne hier kund tun. > Schöner daran ist, dass der C/C++ Quellcode da noch mit eingeflochten > wird. Magst Du uns Deine platform.local.txt zeigen? Ich wäre interessiert (auch weil ich viel „reines“ C programmiere).
Martin H. schrieb: > Magst Du uns Deine platform.local.txt zeigen? Meine Bastelstube, soll ich zeigen, und dann auch noch die unaufgeräumte Ecke .... (ist mir auch ein kein wenig peinlich) OK. Dann auch die boards.local.txt
M. K. schrieb: > In meinem laienhaften Verständniss wenn es folgende Syntax hat: > void setup(){ > } > void loop(){ > } Das sind genau 2 Funktionen, die im Hauptprogramm aufgerufen werden. Und das Hauptprogramm main.cpp bei Arduino sieht wie folgt aus, wenn du mal gucken magst:
1 | int main(void) |
2 | {
|
3 | init(); |
4 | initVariant(); |
5 | |
6 | #if defined(USBCON)
|
7 | USBDevice.attach(); |
8 | #endif
|
9 | |
10 | setup(); |
11 | |
12 | for (;;) { |
13 | loop(); |
14 | if (serialEventRun) serialEventRun(); |
15 | }
|
16 | return 0; |
17 | }
|
Und natürlich müssen dann setup() und loop() mal irgendwo bereit gestellt werden, sonst meckert spätestens der Linker.
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.