Hallo, ich bin neu hier und habe eine Frage. Ich programmiere seit ca. einem Jahr mit Arduino, einfache Sachen. Jetzt möchte ich weiter einsteigen und direkt ICs programmieren. Klar geht das auch mit Arduino aber ich würde gerne mit einem eigenen Programmer auf C programmieren. Da ich dies für sinnvoll erachte. Was sagt ihr dazu? Was würdet ihr mir raten? Welchen programmer welche Software oder ganz was anderes? AVR?
@ Michael Fasser (sixtus80) >Ich programmiere seit ca. einem Jahr mit Arduino, einfache Sachen. >Jetzt möchte ich weiter einsteigen und direkt ICs programmieren. ICs? Soso. >Klar geht das auch mit Arduino aber ich würde gerne mit einem eigenen >Programmer auf C programmieren. >Da ich dies für sinnvoll erachte. Ich nicht. >Was sagt ihr dazu? Lern erstmal auf dem Arduino weiter. >Welchen programmer welche Software oder ganz was anderes? >AVR? Die meisten Arduinos SIND AVRs. Klar kann man auch einen einzelnen AVR ohne Arduinoboard programmieren, das unterscheidet sich aus Softwaresicht aber nicht vom Arduino. Arduinos werden in C++ programmiert, wobei aber nur ein kleiner Teil von C++ genutzt wird. Praktisch ist es eher C.
Ok also findest du dass Arduino gut geeignet ist dazu. Aber wenn Arduino in C++ ist und ja C sinnvoller wäre also praktisch. Sollte man nicht zuerst C lernen?
wenn du vom Arduino weg willst, aber weiter mit AVR deine Projekte machen möchtest, dann lade dir die kostenlose Atmel Studio 7 runter und besorge dir einen ordentlichen ISP Programmer. Aber bei dem ISP Programmer gibt es schon die erste große Entscheidungshürde. Das Forum hier ist voll von Anfragen dazu, was wohl der bessere Programmer ist. Bevor aber auch diese Anfrage überläuft mit jeder Menge an verschiedenster Vorschläge für Programmer, gebe ich hierzu mal keine Anregung. Du kannst gerne hier im Forum selber deine Meinung bilden, welcher von den vielen Programmer der richtige für dich ist. Gruß Tom.
Falk B. schrieb: > Klar kann man auch einen einzelnen AVR > ohne Arduinoboard programmieren, das unterscheidet sich aus > Softwaresicht aber nicht vom Arduino. Arduinos werden in C++ > programmiert, wobei aber nur ein kleiner Teil von C++ genutzt wird. > Praktisch ist es eher C. Über Vor- / Nach-teile sollte von Ardunio sollten wir lieber nicht wieder diskutieren. Ich kann dem TO nur zustimmen, um einen µC verstehen zu lernen ist der Weg zu C die richtige Alternative. Da lernt er ein wenig mehr Hintergrundwissen des eingesetzten µCs, begreift das es nicht nur Pin1-20 gibt sondern das dies Portgebunden ist, lernt und versteht warum es sich überhaupt um 8 oder 32 Bit handelt. Und er ließt das Datenblatt! Versteht die Unterschiede der einzelnen µCs usw... Das lernt man überall, nur eben nicht bei Arduino. Lade dir wie oben schon gesagt Atmel Studio kostenlos, besorge dir einen Programmer und nutze deine vorhanden Arduino Boards und bespiele sie per ISP aus Atmel Studio heraus. Ich wünsche dir viel Spaß und du wirst sehen, die Lernkurve ist extrem steil und es macht Spaß das eine oder andere neu zu finden. Ich persönlich nutze für meine AVRs gerne die Programmer von Diamex, funktionieren und tun das was sie sollen: https://www.diamex.de/dxshop/Programmiergeraete Willst du etwas gescheites, dann schau dich nach einem AVR-ICE um. Der kommt direkt von Atmel. Ist aber ein bisschen Preisintensiver.
@DraconiX (Gast) >Über Vor- / Nach-teile sollte von Ardunio sollten wir lieber nicht >wieder diskutieren. Oooooch, büüüteeee ;-) >Ich kann dem TO nur zustimmen, um einen µC verstehen zu lernen ist der >Weg zu C die richtige Alternative. Arduino NUTZT C und ein wenig C++. Also muss man nicht Arduino verlassen, um C zu lernen. > Da lernt er ein wenig mehr >Hintergrundwissen des eingesetzten µCs, begreift das es nicht nur >Pin1-20 gibt sondern das dies Portgebunden ist, lernt und versteht warum >es sich überhaupt um 8 oder 32 Bit handelt. Und er ließt das Datenblatt! Niemand vermbeitet es einem Arduino-Nutzer das Datenblatt zu lesen und die diversen Funktionen des uC direkt per Register zu benutzen. >Versteht die Unterschiede der einzelnen µCs usw... Das ist im Moment gar nicht das Ziel des OPs. > Das lernt man überall, nur eben nicht bei Arduino. Quark. >Lade dir wie oben schon gesagt Atmel Studio kostenlos, besorge dir einen >Programmer und nutze deine vorhanden Arduino Boards und bespiele sie per >ISP aus Atmel Studio heraus. Und was kann er dann besser als beim Arduino? Fast nichts, denn man kann den Arduino auch vollkommen ohne die Arduino-Bibliotheken nutzen! Ob das immer sinnvoll ist, ist eine ganz andere Frage. Wenn man für schnelles Bitwackeln an den Pin den direkten Registerzugriff wählt, ist das sinnvoll. Die manuelle Ansteuerung einer SD-Karte oder eines TFT-Displays nimmt man mal sicher die Arduino-Libs.
Aha, also erstmals danke für eure Antworten, nun habe ich mal eine ungefähre Vorstellung wie und was man tun könnte! Klar gehen die Meinungen auseinander. Mir geht es ja auch um C selbst.
Falk B. schrieb: > Niemand vermbeitet es einem Arduino-Nutzer das Datenblatt zu lesen und > die diversen Funktionen des uC direkt per Register zu benutzen. Welcher Arduino Nutzer studiert denn bitte die Datenblätter? Ihm genügt in den meisten Fällen der Blick Blick auf das Pinout und es reicht. Das hat ganz gewaltig etwas mit Faulheit zu tun. Und deshalb: Falk B. schrieb: > Das ist im Moment gar nicht das Ziel des OPs. ... überschätzen oder wissen viele Ardunio Nutzer garnicht das Potential des eingesetzten µC. Falk B. schrieb: > Arduino NUTZT C und ein wenig C++. Also muss man nicht Arduino > verlassen, um C zu lernen. Das ist allerdings richtig. Aber es ist eben C++ und kein C. Falk B. schrieb: > Und was kann er dann besser als beim Arduino? Er versteht was er da macht! Ganz einfach, er versteht was er da macht. Dazu zählt auch: Falk B. schrieb: > Die manuelle Ansteuerung einer SD-Karte oder eines > TFT-Displays nimmt man mal sicher die Arduino-Libs. Wenn er sich nie selbst darüber Gedanken macht, wegen des "WIE, WARUM, WIESO" das funktioniert. So lernt man das auch nicht, wenn er ausschließlich vorgekaute Libs nutzt. Was ist wenn er mal ein anderen LCD Controller erwischt und muss mal was ändern? Wenn die Init-Routine mal anders ist? Wenn der I2S Bus eines Sensor mal eben eine andere Byte-Order braucht? (Gerade bei einem OLED mitgemacht) Was macht er dann wenn er nicht versteht wie genau das eigentlich funktioniert? Und ohne Umwege kann man nichtmal direkt schauen WAS diese Lib eigentlich macht. Wo diese Lib steht, welche Querverweise genutzt werden etc... Bei AS ist das mit einem einzigsten Klick auf die Funktion erledigt... usw... Lass ihn doch, wenn er sich dahin näher vertiefen will ist das doch was gutes. Mehr als einen günstigen ISP Programmer, etwas Zeit und Nerven braucht er dazu nicht, alles andere ist ebenfalls umsonst. Ich finde das einen guten Schritt für ihn in die richtige Richtung... Und wenn er später auf einen größeren Boliden umsteigen will, ist dann der Umstieg umso einfacher. (Ja ich weiß, es gibt ein paar wenige mindergute Unterstützungen von 32 Bittern. Ich hab mal, aus Interesse, ein STM Nucleo in Ardunio genutzt - und war weitestgehend erschrocken davon!)
Hallo, vielleicht sollte man sich mal kurzzeitig von der Bezeichnung "Arduino" verabschieden. Damit sind die Boards gute Entwicklungsboards mit AVR µC drauf. Wenn man in reinem C programmieren möchte, muss man auch nichts neues kaufen. Man programmiert einfach in der IDE klassisch C und gut ist. Vorteil, man benötigt keinen extra Programmer. Funktioniert weiterhin über USB. Die IDE nutzt ja den gcc Compiler. Und wer unbedingt das Softwaregedöhns Atmel Studio haben muss, der installiert noch das visualmicro Plugin und kann immer noch über USB flashen. Wenn man klar kommt, kann man immer noch einen Programmer kaufen. Ihr seht man muss nichts überstürzen und kommt trotzdem zu seinem klassischen C. Wünsche viel Spass beim programmieren.
Falls du mit Programmer den ISP Programmieradapter meisnt, der zwischen PC und µC gehört: In der Arduino IDE gibt es einen ISP Sketch, damit kannst du "nackte" AVR Mikrocontroller programmieren. In diesem Fall ist dein Arduino Modul der Programmer. Ansonsten findest du unter dem Stichwort USBASP sehr billige Programmieradapter. Zum Programmieren in der Zielschaltung eignen diese Geräte sich allerdings nur, wenn die zeilschaltugn mit 5V versorgt wird. Kostengünstig und qualitativ wesentlich besser sind die ISP Programmieradapter von Diamex. Sie passen sich an die Versorgungsspannugn der Zielschaltung an. Und das aktuelle offizielle "Original" ist der ATmel ICE. Der ist robuster und hat merh features, kostet allerding auch dementsprechend. Mit dem Atmel ICE kannst du ATmega Controller debuggen. Das können die drei anderen genannten Alternativen nicht. Der Atmel ICE wird mit dem AVR Studio 7 bedient, die anderen Programmer mit dem Kommandozeileprogramm avrdude über das du auf Wunsch eine grafische Oberfläche stülpen kannst. Zumm Beispiel AVR-Burn-O-Mat. Hier ein par Tips für den Einstieg: http://stefanfrings.de/avr_hello_world/index.html
DraconiX schrieb: > Welcher Arduino Nutzer studiert denn bitte die Datenblätter? Jeder Arduino Nutzer, der ohne nicht weiterkommt, aber nicht gleich aufgibt. DraconiX schrieb: > Das > hat ganz gewaltig etwas mit Faulheit zu tun. Wenn der Blick in die Arduino Reference schneller das Problem löst, als der Blick ins Datenblatt, ist es Effizienz. DraconiX schrieb: > Aber es ist eben C++ und kein C. Es hält einen keiner davon ab, einen Sketch in 100% C zu schreiben oder eine andere Programmierumgebung zu verwenden Das Arduino-Ökosystem kann einem viel Arbeit abnehmen, aber - und das ist der Grund, warum ich die häufige Ablehnung von Arduino nicht verstehe - man kanns auch selber machen.
Ok danke das wusste ich nicht! Es ist doch sinnvoll zuerst C zu können oder? Da Arduino ja kein reines C ist. Habe Bücher über programmieren mit C und da ist es zwar ähnlich wie C aber eben nur ähnlich.
Du kannst ein Arduino-Board genauso programmieren, wie ein selbstgebautes AVR-Board. Wirf einfach die Arduino-Umgebung weg (also kein setup() und loop(), stattdessen ein main()) und du hast die stinknormale AVR-GCC-Umgebung. Flashen kannst du mit avrdude, wie auch jeden anderen AVR. Der "Programmer" ist ja auf den Arduinos bereits eingebaut (Bootloader), und du weißt, dass die Hardware funktioniert.
DraconiX schrieb: > Ich kann dem TO nur zustimmen, um einen µC verstehen zu lernen ist der > Weg zu C die richtige Alternative. Ich nicht. Um einen µC zu verstehen, hat es noch niemandem geschadet, mal eine Weile Assembler zu machen und mit dem Debugger wirklich auf die Register und den Stack zu gucken. Bei Nutzung von C findet da schon vieles unter der Haube statt und ist unsichtbar. Dann kommen wieder so Fragen wie: "Mein Compiler sagt mir, dass noch 30 Byte im RAM frei ist und trotzdem stürzt der µC ab"
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.