Hallo Forum! Ich möchte mich in nächster Zeit in die Mikrocontrollertechnik einarbeiten. Dazu habe ich mir schon mal angeschaut, was der Markt so an "Experimentier-Kästen" anbietet. Klassisch natürlich den Arduino Uno auch zusammen mit einem Lernpaket von Franzis. Eine generelle Frage vorab: Man sieht, dass der Mikrocontroller (fast immer) auf einer Schaltung aufgesteckt ist, die zu einem Board zusammengefasst ist. Man sieht also nie einen Mikrocontrollern einfach auf einem Steckbrett aufgesteckt. Wozu dient das Board des Arduino Uno, auf das der Mikrocontroller ATmega328 aufgesteckt ist? Könnte man den ATmega328 auch auf einem normalen Steckbrett programmieren? Man müsste dann nur für eine geeignete Verbindung zum PC und eine Spannungsversorgung sorgen, korrekt? Diese wäre bei dem Board somit schon integriert? Grüße
Die MC, die beim Arduino Uno eingesetzt werden, sind normale AVR, haben aber schon einen Urlader (Bootloader) einprogrammiert, der es erlaubt, sie über die serielle (USB) Schnittstelle zu programmieren. Dafür ist auf dem Board noch ein USB-Seriell Chip extra oder es wird ein MC mit Onboard USB eingesetzt. Zur Programmierung eines 'nackten' Mikrocontrollers wirst du ein Programmiergerät benötigen, für den Arduino brauchst du das nicht. Man kann aber aus einem Arduino ein Programmiergerät machen und dann damit andere Controller flashen.
:
Bearbeitet durch User
> Wozu dient das Board des Arduino Uno, auf das der Mikrocontroller > ATmega328 aufgesteckt ist? Der Arduino Uno enthält einen Spannungsregler, einen Programmieradapter, einen Quarz oder Keramik-Resonator, und einen USB-UART Adapter. > Könnte man den ATmega328 auch auf einem normalen Steckbrett > programmieren? Ja, und das ist im Arduino Framework ebenfalls vorgesehen. Hier hast du zwei Möglichkeiten: a) Der Mikrocontroller wird mit einem ISP Programmieradapter an den USB Anschluss des PC angeschlossen. b) Der Mikrocontroller wurde (mittels ISP) mit einem seriellen Bootloader vorbereitet und ist mit einem USB-UART Adapter an den USB Anschluss des PC angeschlossen. Früher gab es noch Variante c) Der Mikrocontroller ist mit dem parallel-Port des PC verbunden. Aber das klappt mangels Parallel-Port und Blockaden durch aktuelle Betriebssysteme nicht mehr. > Man müsste dann nur für eine geeignete Verbindung zum PC > und eine Spannungsversorgung sorgen, korrekt? Richtig. Zum Beispiel einen Batteriekasten mit 3 AA Zellen. Viele Handy Ladegeräte eignen sich auch (leider nicht alle, aber das wirst du merken). Einen USB-UART braucht man auch, um zum Beispiel Log-Meldungen auszugeben und auf dem Bildschirm anzuzeigen, damit man nachvollziehen kann, was der µC gerade treibt. Die professionellere aber auch viel teurere Variante wäre ein Debugger, ist bei Arduino nicht vorgesehen. Du kannst fast jedes Arduino Board als ISP Programmieradapter "missbrauchen" indem du den ISP Sketch installierst, der in der Arduino IDE enthalten ist. Die meisten Leute kaufen sich aber einen separaten Programmieradapter. Bedenke beim kauf, dass die meisten USBASP basierten Produkte (erkennt man am Preis: < 15 Euro) zwar einen Spannungsregler für 3,3V enthalten, aber ihre Signale haben trotzdem 5V. Damit wegen abweichender Spannungen nichts kaputt geht, solltest du in die Signal-Leitungen 180 Ohm Widerstände einschleifen. besser ist, du nimmst gleich einen vernünftigen Programmieradapter dessen Ausgangsspannung sich an die Zielschaltung anpasst. Die bekommst du ab 20 Euro.
MµC-Starter schrieb: > Man sieht also nie einen Mikrocontrollern einfach auf einem > Steckbrett aufgesteckt Praktisch alle Mikrocontroller - mit Ausnahme vieler AVR - haben einen werkseitigen Bootloader und können direkt auf Steckbrett programmiert werden. Hier z.B. ein Kit mit einem DIP-8 LPC810 und einem USB-seriell Kabel: https://www.mouser.de/ProductDetail/Adafruit/1336/?qs=sGAEpiMZZMsMyYRRhGMFNiFpjjCxzEfqGqKMzL8UTNg%3d
> Man sieht also nie einen Mikrocontrollern einfach auf einem > Steckbrett aufgesteckt Doch, zum Beispiel hier https://www.google.de/search?q=avr+steckbrett&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi4wcqLq7LXAhVRDewKHYfCBjkQ_AUICygC&biw=1229&bih=614 Such Dir eins von den zahlreichen Bildern aus.
MµC-Starter schrieb: > Eine generelle Frage vorab: Man sieht, dass der Mikrocontroller (fast > immer) auf einer Schaltung aufgesteckt ist, die zu einem Board > zusammengefasst ist. Man sieht also nie einen Mikrocontrollern einfach > auf einem Steckbrett aufgesteckt. Doch, sieht man wenn man richtig schaut, sogar im hiesigen Forum https://www.mikrocontroller.net/articles/Datei:RasPi_prog_ATMega328P.JPG Raspberry Pi als Universalprogrammer
Ich habe auch völlig bei Null angefangen und mit einem attiny und Steckbrett gestartet. Als Programmierer habe ich den STK 500 genommen (ist im Nachhinein Overkill gewesen, da ich den nur als Programmierer benutze und den Rest des Boards eigentlich nicht benötige). Zusammen mit den sehr guten Tutorials hier auf der Webseite kommt man damit gut klar.
Ich programmiere schon seit einigen Jahren Mikrocontroller: Nackte Mikrocontroller von einem anderem Mikrocontroller, über die serielle Verbindung, USB, JTAG, ... Für den Anfang empfehle ich dir ein fertiges Board das alles notwendige beinhaltet. Es ist einfach ein Fallstrick weniger beim Start. Viel Erfolg!
MµC-Starter schrieb: > Wozu dient das Board des Arduino Uno, auf das der Mikrocontroller > ATmega328 aufgesteckt ist? Als erstes empfehle ich dir dazu einen Blick in den Schaltplan [1]. Da wirst du dann feststellen, dass auf dem Board zwei µCs sitzen. Neben dem ATmega328 findest du noch einen ATmega16u2 für die USB Schnittstelle, einen Haufen Steckverbinder, Spannungsregler und autom. Umschaltung, Taktgeber, diverse LEDs und, und, und ... Jetzt darfst du selber überlegen, wozu das alles gut sein könnte. Wenn dir das nicht klar ist, benutze es einfach. Nicht alle Teile davon sind unbedingt notwendig, machen aber den Einstieg leichter und die Bastelei bequemer. [1] https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Kauf dir etwas ala NodeMCU, nur am besten schon mit ESP32. Damit kannst du kinderleicht mit der Arduino IDE arbeiten und dennoch auch mal einfach auf das reguläre SDK wechseln. Mit den ATmega oder sonstigem Kram würde ich gar nicht erst mehr anfangen, das lohnt sich einfach nicht, insbesondere mit den frickeligen Programmern und dem ganzen Müll. Wenn man anständig debuggen können will empfiehlt sich gleich ein Cortex-M von z.B. Silabs. Die haben nämlich sogar einen Segger J-Link auf der Platine, sprich man kann diese später auch mal als halbwegs anständige Programmer/Debugger missbrauchen (wobei die Anzahl der Breakpoints dann eingeschränkt ist).
Hallo " Zusammen mit den sehr guten Tutorials hier auf der Webseite kommt man damit gut klar." LOL - nein das ist das AVR Tutorial genau eben nicht - jetzt wo ich tiefer in der Materie drin bin kann ich das Tutorial verstehen, benötige es aber nicht mehr... Aber als ich noch absoluter Anfänger war hatte das hiesige AVR Tutorial eigentlich nur Fragen und Verwirrung hervorgerufen - keine wirklich umfangreiche und für einen ->absoluten Laien<- verständliche Erklärung der ganzen Bitschupserei, setzen und löschen der Bits usw. Seltsame, nicht erklärte, Abkürzungen. Kaum Anfänger geeignete Erklärungen zur eingesetzten Programmiersprache C bzw. beim Assemblertutorial gar keine Anfänger taugliche Erklärungen. Keine laufende Aktualisierungen (Stand wohl irgendwo um 2008 ?)... Nein das hiesige AVR Tutorial ist absolut nicht Anfänger geeignet. Da gibt es im Netz, bei Youtube und guten dicken Arduino Büchern (welche weiter ausholen und über den Tellerrand schauen) wesentlich bessere Anfänger geeignete Kurse. Harte Worte aber so ist es meiner Meinung nach - die Tutorials hier sind von technischen Spezialisten mit zu viel Fachwissen geschrieben worden, die sich nicht mehr in Anfänger hineindenken können. Jemand
Jemand schrieb: > keine wirklich > umfangreiche und für einen ->absoluten Laien<- verständliche Erklärung > der ganzen Bitschupserei, setzen und löschen der Bits usw. > Seltsame, nicht erklärte, Abkürzungen. Kaum Anfänger geeignete > Erklärungen zur eingesetzten Programmiersprache C bzw. beim > Assemblertutorial gar keine Anfänger taugliche Erklärungen. Zu C kann ich nichts sagen, aber ich habe vorm AVR nie Assembler benutzt oder gesehen. Zwar schon jede Menge C++ programmiert (Also eben das Grundkonzept vom Programmieren verstanden), aber war alles andere als ein Profi. Und ich fand das Assembler-Tutorial wirklich gut. Wenn man natürlich mit keinerlei Basis-Programmierwissen anfängt, ist das wahrscheinlich schwieriger. Aber auf einem Mikrocontroller das Programmieren an sich lernen ist auch nicht unbedingt der beste Einstieg, egal auf welchem und egal mit welchem Tutorial. Konsolenprogramme sind da um Welten besser geeignet. Lol schrieb: > Mit den ATmega oder sonstigem Kram würde ich gar nicht erst mehr > anfangen, das lohnt sich einfach nicht, insbesondere mit den frickeligen > Programmern und dem ganzen Müll. Naja, ob ich an den Atmega 6 Leitungen von einem Programmer (Die es ja auch komplett fertig für wenige Euros gibt) anklemme oder einen USB Stecker in ein fertiges Board stecke, macht jetzt nicht den Riesen Unterschied. Würde ich nicht als Frickeln bezeichnen. Wenn man Assembler lernen möchte (Und das ist gar nicht schlecht, wenn man zumindest später grob weiß, was der Compiler tut), ist ein AVR (oder PIC) auch empfehlenswert, alle anderen Plattformen sind dafür schon wieder zu mächtig. Lol schrieb: > Wenn man anständig debuggen können will empfiehlt sich gleich ein > Cortex-M von z.B. Silabs. Das ist allerdings war, AVR Programmieren macht weniger Spaß, weil man eben keinen Debugger hat. Man muss sich halt anderweitig zu helfen wissen und ohne Oszilloskop geht bei schnelleren Sachen auch fast nichts mehr.
> Kauf dir etwas ala NodeMCU, nur am besten schon mit ESP32.
NodeMCU ja, aber nicht mit dem ESP32. Denn zu diesem jungen Chip ist die
verfügbare Dokumentation noch äußerst lückenhaft und die
Entwicklungstools sind noch lange nicht so weit wie beim ESP8266. Wobei
auch die Tools für den ESP8266 vom Status "ausgereift" noch weit
entfernt sind. Vermutlich werden sie ihn nie erreichen.
Allerdings lernt man mit einem ATtiny eher, kompakt und performant zu
programmieren. Mit über 100Mhz Taktfrequenz und mehreren Megabytes
Programmspeicher lernt man das nicht. Zum Experimentieren ist das
NodeMCU Board ein super Teil, zum Lernen eher nicht.
> AVR Programmieren macht weniger Spaß, weil man > eben keinen Debugger hat. Hmm, ich hab einen Debugger für AVR. Benutze ihn aber nur sehr selten. Wobei das wiederum vermutlich an meiner historie liegt. Ich habe programmieren gelernt, als es solche Debugger noch gar nicht gab. Ein nettes Gimmik sind sie ja. Und ich muss auch zustimmen, dass man Debugger für praktisch alle ARM Controller sehr viel billiger bekommt. Ich sehe zwei Gründe für AVR als Einstiegs-Serie: 1) Weniger Funktionen = Weniger kompliziert 2) Es gibt mehr kostenlose Anleitungen für Einsteiger Alle mir bekannten Anleitungen für ARM Controller gehen davon aus, dass der Leser bereits Erfahrung mit der Programmierung von Mikrocontrollern hat. Und ich denke, das mach so auch Sinn. Arduino betrachte ich mit zweischneidigen Gefühlen. Das Framework und die Dokumentation verbergen zahlreiche Details, die ab und zu jedoch auch für Anfänger wichtig sind. Deswegen gibt es hier immer Anfänger, die schon großartig komplexe Sachen zustande gebracht haben, aber dann an so primitiven Dingen wie Multi-Tasking oder das Entprellen von Tastern scheitern. Außerdem verleitet Arduino dazu, sich die Datenblätter und Dokus der verwendeten Teile und Software NICHT anzuschauen. Warum zum Beispiel erklärt die Arduino Webseite etwa 1/5 von C++ ohne auf weiterführende Doku zu verweisen? Verweise sind doch das, wovon das Internet lebt. Und Verweise sind so bequem geworden! Wer früher mit Schränken voll von Karteikarten in Bibliotheken lernen musste, weiß, wovon ich rede. Auf meine Homepage findest du ein ASM Tutorial für AVR, ein C Tutorial für AVR und (für Fortgeschrittene) einige Hinweise zu STM32F1 (ARM) Mikrocontrollern. Außerdem jede Menge Infos zum ESP8266 (auch NodeMCU). http://stefanfrings.de/
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.