Forum: Mikrocontroller und Digitale Elektronik µC ohne "Board" programmieren, geht das?


von MµC-Starter (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von Stefan F. (Gast)


Lesenswert?

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

von Lothar (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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

von C. A. Rotwang (Gast)


Lesenswert?

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

von Matthias T. (mati123)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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!

von Wolfgang (Gast)


Lesenswert?

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

von Lol (Gast)


Lesenswert?

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

von Jemand (Gast)


Lesenswert?

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

von jz23 (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

>  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
Noch kein Account? Hier anmelden.