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.
> 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.
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/