Forum: Mikrocontroller und Digitale Elektronik Ersten Schritte bei Mikrocontroller


von Daniel T. (eraserhead)


Lesenswert?

Hallo,

Ich möchte mich an die Mikrocontroller Programmierung wagen.

Ich weiß leider nicht, wo ich am besten ansetzen soll und welche 
Lektüren und Internet Quellen, die besten Startpunkte sind für einen 
Anfänger.

Beim Googlen werden zu viele Ergebnisse angezeigt, die mich nur mehr 
verwirren.

Ich besitze einen Arduino und einen Raspberry Pi mit dem nötigen 
Starter-Set, um damit grob einzusteigen und bisher habe ich nur ein kurz 
mit LED's und Button Interrupts gespielt. Habe irgendwie nicht viel 
verstanden und seitdem liegt alles in der Ecke rum.

Jetzt möchte ich es erneut versuchen und hatte gelesen, es macht mehr 
Sinn sich einen Mikrocontroller rauszupicken anstelle eines Boardes, um 
die Konzepte besser zu lernen und zu verstehen.

Gibt es bei der Auswahl der Mikrocontroller Unterschiede, auf die man 
als Anfänger achten muss? Gibt es welche, die nicht einsteigerfreundlich 
sind?

Gibt es eventuell Online Video Kurse, die den Anfang erleichtern und 
Schrittweise die ersten Basics näher bringen?

von Einer K. (Gast)


Lesenswert?

Daniel T. schrieb:
> es macht mehr
> Sinn sich einen Mikrocontroller rauszupicken anstelle eines Boardes, um
> die Konzepte besser zu lernen und zu verstehen.
Mag sein ....

Daniel T. schrieb:
> Arduino und einen Raspberry Pi
Sollte man nicht in einen Topf werfen.

Für den Pi gibts alle Sprachen, zumindest die wichtigsten Hundert.
Auch hat es in der Regel ein OS.
Arduino üblicher weise nicht.

Und wenn die beiden schon in einem Pof landen, dann ist die Schnittmenge 
über alle möglichen Sprachen C und C++.

Ich rate dir zu einem schönen dicken modernen C++ Buch. Das deckt beide 
Welten einigermaßen ab.

Daniel T. schrieb:
> Gibt es bei der Auswahl der Mikrocontroller Unterschiede, auf die man
> als Anfänger achten muss? Gibt es welche, die nicht einsteigerfreundlich
> sind?
Ja, und ja.

von Jack V. (jackv)


Lesenswert?

Daniel T. schrieb:
> Jetzt möchte ich es erneut versuchen und hatte gelesen, es macht mehr
> Sinn sich einen Mikrocontroller rauszupicken anstelle eines Boardes, um
> die Konzepte besser zu lernen und zu verstehen.

Du kannst den Arduino (welchen eigentlich?) so behandeln, als wär’s ein 
nackter μC.

Daniel T. schrieb:
> Gibt es eventuell Online Video Kurse, die den Anfang erleichtern und
> Schrittweise die ersten Basics näher bringen?

Bestimmt gibt’s Videokurse, die’s versprechen. Sinnvoller wäre 
eigentlich textbasiertes Material. Tatsächlich gibt’s ein uraltes 
Medium, das für den Zweck des Lernens immer noch ungeschlagen ist: Das 
Buch. Und das Datenblatt des betreffenden Controllers – praktischerweise 
ist der im Falle eines ATmega328p (bekannt von Arduino Uno R3, Arduino 
Nano) ebenfalls: Ein Buch

von Nino K.L. (Gast)


Lesenswert?

Ich wundere mich soeben darüber, daß noch niemand das hauseigene 
Tutorial https://www.mikrocontroller.net/articles/AVR-Tutorial 
vorgeschlagen hat.

Ich habe selbst damit begonnen und zu Beginn Assembler gelernt. Obwohl 
ich nun fast alles mit Arduino programmiere, hilft mir das Basiswissen 
aus diesem Tutorial enorm. Ich kann es nur empfehlen!

Gruß, Nino.

von Ich (Gast)


Lesenswert?

Kannst Du eine Programmiersprache?
Wenn nein, würde ich mich erst einmal da einarbeiten. Dafür brauchst Du 
noch keinen µC, sondern das geht am PC m.M. nach sogar besser.
Und danach würde ich mich - wie schon erwähnt - nach einem guten Buch 
umsehen. Gerade für Grundlagenvermittlung finde ich ein Buch nach wie 
vor das Mittel der Wahl. Auch wenn die Volltextsuche nicht so performant 
ist ;)
Aber darin kann ich auch mal Notizen reinschreiben, oder was markieren.
Wenn die groben Grundlagen (µC + Sprache) einmal vorhanden sind, geht 
die Vertiefung der Kenntnisse quasi von selbst.

von Daniel T. (eraserhead)


Lesenswert?

Ich bedanke mich für die Antworten.

Der Arduino, den ich besitze, ist ein Arduino Uno R3.

Ich bin schon mit den Grundlagen der Programmiersprachen C, Python, 
Javascript vertraut und mit Java habe ich auch Kenntnisse im Bereich der 
Objektorientierten Programmierung.

Wenn ich die bisherigen Information richtig verwertet haben sollte, 
würde es also Sinn machen mit dem AVR Tutorial zu beginnen, dann 
anschließend mit Hilfe von Büchern und dem Datenblatt zum Arduino in die 
nächsten Schritte gehen?

von Jack V. (jackv)


Lesenswert?

Wenn du schon C kannst, und einen Uno da hast, böte sich 
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial an. Es ist 
zwar bestimmt nicht verkehrt, auch den Assembler-Kram durchzugehen, aber 
wenn man schon Kenntnisse hat, an die man anknüpfen kann, wäre das wohl 
der sinnvollste Einstieg.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Wenn man schon C kann, würde ich auch nicht mit Assembler anfangen.
Viel wichtiger ist es zu lernen, wie man komplexe Aufgaben in einzelne 
Abläufe zerlegt (Top-down).

von Jon H. (jonh)


Lesenswert?

Daniel T. schrieb:
> Habe irgendwie nicht viel
> verstanden und seitdem liegt alles in der Ecke rum.

Daran wird sich vermutlich nichts ändern wenn Du kein konkretes Ziel 
damit verfolgst. Tutorials oder dicke Lehrbücher motivieren selten. Also 
überlege Dir doch bitte zunächst mal was Du gerne bauen möchtest. 
Anregungen finden sich, nicht nur in diesem Forum, genug!

von Franz M. (elmo64)


Lesenswert?

Jack V. schrieb:
> Wenn du schon C kannst, und einen Uno da hast, böte sich
> https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial an.

Kann ich auch empfehlen. Nachdem du das gelesen hast, kennst du die 
Grundlagen der uC, insbesondere AVR Programmierung mit C. Das Datenblatt 
des Controllers liefert dann nurnoch weitere Register/Bit Bezeichnungen 
und Beschreibungen, sowie Hardwaredetails.
-> Atmel Studio installieren, kompatiblen Programmer beschaffen. 
Tutorial, Datenblatt bereitlegen und beginnen.

: Bearbeitet durch User
von Joachim (Gast)


Lesenswert?

Daniel T. schrieb:
> Ich besitze einen Arduino und einen Raspberry Pi mit dem nötigen
> Starter-Set, um damit grob einzusteigen und bisher habe ich nur ein kurz
> mit LED's und Button Interrupts gespielt. Habe irgendwie nicht viel
> verstanden und seitdem liegt alles in der Ecke rum.
>
> Jetzt möchte ich es erneut versuchen und hatte gelesen, es macht mehr
> Sinn sich einen Mikrocontroller rauszupicken anstelle eines Boardes, um
> die Konzepte besser zu lernen und zu verstehen.

Die Aussage, dass es mehr Sinn macht "sich einen Mikrocontroller 
rauszupicken anstelle eines Boardes" erscheint mir fragwürdig. Wo genau 
hast Du das gelesen?

Mein persönlicher Einstieg in die Welt der Mikrocontroller war vor der 
Arduino-Zeit. Zum Einstieg habe ich mir einen AVR-Mikrocontroller 
herausgesucht, mir ein Arduino-ähnliches Board selbst geätzt und 
hergestellt, habe mich dann wie hier im Thread empfohlen zuerst mit dem 
AVR-Tutorial und später mit dem AVR-GCC-Tutorial beschäftigt.

In der heutigen Zeit würde ich dieses Vorgehen einem Einsteiger in die 
Welt der Mikrocontroller aber nicht mehr empfehlen. Ich würde für den 
Einstieg stattdessen zu einem günstigen Arduino-Board und der 
Arduino-IDE raten - also im Prinzip genau das, was Du auch getan hast...
Mit Assembler würde ich  mich erst beschäftigen, wenn es wirklich 
nötig/sinnvoll ist; für den Einstieg macht C/C++ imho viel mehr Sinn. 
Und alle für eine Mikrocontroller-Schaltung benötigten Teile auf einem 
Breadboard selbst zusammenzustecken o.Ä., statt ein fertiges Board zu 
benutzen, würde ich nicht ganz am Anfang machen, sondern erst, wenn man 
die ersten Schritte bereits hinter sich und bis dahin alles gut 
verstanden hat.

Kurzum: Ich glaube nicht so recht, dass Dein eigentliches Problem daran 
lag, dass Du ein fertiges Arduino-Board hast und vermutlich die 
Arduino-IDE nutzt. Ich denke, Dein Problem liegt eher woanders...

von Hans-Georg L. (h-g-l)


Lesenswert?

Nimm das Arduino Board.
In das Arduino Framework oder Assembler würde ich mich an deiner Stelle 
nicht einarbeiten, sondern den MC mit Atmel Studio in C programmieren.
Wichtig ist das Datenblatt und wie die Peripherie über die Register 
gesteuert werden zu verstehen.
Fange einfach mit dem blinken einer Led mit einer Warteschleife an.
Dann den Taster in Betrieb nehmen mit kurz drücken die Blinkfrequenz 
erhöhen und mit lang drücken erniedrigen. Dann hast schon mal die 
IO-Ports verstanden.
Der nächste Schritt wäre dann einen Timer für die Blinkzeit zu 
verwenden.
Dann die Serielle Verbindung zum PC und vom PC aus Blinkfrequenz ändern.
Dann ein I2c oder SPI Display besorgen und Blinkfrequenz anzeigen.
Den ADC in Betrieb nehmen und Werte anzeigen.
usw bis du die ganze Peripherie durch hast.

Stell dir Aufgaben die nicht einfach abtippen oder kopieren aus dem 
Internet bedeuten da lernst du nichts.

von oldmax (Gast)


Lesenswert?

Hi
Nino K.L. schrieb:
> Ich wundere mich soeben darüber, daß noch niemand das hauseigene
> Tutorial https://www.mikrocontroller.net/articles/AVR-Tutorial
> vorgeschlagen hat.

Ja, mit dem hauseigenen Tutorial habe ich auch angefangen. Doch wenn du 
(Daniel) kein Ziel hast, wird es sehr schwer, in eine Programmierung 
einzusteigen. Daher habe ich mein Buch mit dem Aufbau eines Programms 
geschrieben. Ganz klare Zielsetzung, ein Programm, welches die Arbeit 
mit einem Controller erleichtern soll. Damit mann erst einmal kostenlos 
ausprobieren kann, ob programmieren überhaupt liegt, hab ich das ganze 
mit Visual Basic begonnen. Da sind einige Versionen kostenlos im 
Download und damit bekommst du erst mal ein Gefühl für eine 
Programmiersprache und das daraus entstandene Programm.  Erst der zweite 
Teil befaßt sich dann mit der Programmierung eines Atmega8. Es sind alle 
möglichen Übungen beschrieben, aber auch hier gibt es ein Ziel. Auch 
wenns vielleicht etwas abgegriffen ist, am Ende hat man eine Digitaluhr 
mit 7-Segmentanzeigen. Mit ein wenig Fleiß und Phantasie sind auch 
andere Ziele möglich. Und wenn andere Controller verwendet werden muß 
man halt ein wenig anpassen und in die Datenblätter schauen. Vielleicht 
schaust du dir das Buch mal an, kostet nix. Da es bei mir sowieso nur 
verstaubt ist, hab ich es zur Verfügung gestellt.
 https://www.makerconnect.de/media/user/oldmax/PC%20und%20Mikrocontroller%20Teil%201%20und%202%20Stand%2026.07.2019.pdf
Unter diesem Link kannst du dir das runterladen. Viel Spaß
Gruß oldmax

von Harald W. (wilhelms)


Lesenswert?

oldmax schrieb:

> 
https://www.makerconnect.de/media/user/oldmax/PC%20und%20Mikrocontroller%20Teil%201%20und%202%20Stand%2026.07.2019.pdf
> Unter diesem Link kannst du dir das runterladen. Viel Spaß
> Gruß oldmax

Ich hab nur mal kurz reingeschaut. Sehe ich das richtig? Du kannst
mit Deinem Tutorial den AVR mit Visual-Basic programmieren? Da ins-
besondere ältere schon Erfahrung mit Basic haben, könnte das den
Einstieg sehr erleichtern.

von oldmax (Gast)


Lesenswert?

Hi
Nein, mit VB kannst du keinen Controller Programmieren, zumindest nicht 
mit dem Programm aus dem Buch. Aber du kannst dir die Inhalte der 
Variablen im Controller zur Laufzeit anzeigen lassen, um Fehler zu 
erkennen oder aber für andere Zwecke. Dafür sollte das Buch die 
Anleitung sein, um eigene Anwendungen zu schreiben, um bzw. Daten von 
einem Controller zu bearbeiten. Das steht aber alles im Buch. Lies 
einfach Mal im Inhaltsverzeichnis.
Gruß oldmax

von Stefan F. (Gast)


Lesenswert?

Daniel T. schrieb:
> Jetzt möchte ich es erneut versuchen und hatte gelesen, es macht mehr
> Sinn sich einen Mikrocontroller rauszupicken anstelle eines Boardes, um
> die Konzepte besser zu lernen und zu verstehen.

Ich empfehle, mit einem fertigen Board anzufangen. Diese Chips sind 
nicht gerade einfach zu löten und erfordern so oder so eine Platine. Man 
sollte nicht zu viele Baustellen gleichzeitig aufmachen.

> Gibt es bei der Auswahl der Mikrocontroller Unterschiede, auf die man
> als Anfänger achten muss? Gibt es welche, die nicht einsteigerfreundlich
> sind?

STM hat eine sehr breite Palette von Mikrocontrollern mit mehr oder 
weniger Funktionen. Je mehr Funktionen die Dinger haben, umso komplexer 
ist ihre Programmierung - insbesondere weil es dort mehr zu 
konfigurieren gibt und mehr Wechselwirkungen zwischen den 
Funktionseinheiten bestehen.

Wenn du unbedingt mit einem STM32 anfangen willst, dann würde ich Dir zu 
den Serien STM32L0 oder STM32F3 raten. Die sind in der Liga der relativ 
einfachen Modelle einzuordnen - aber immer noch erheblich komplexer als 
die allermeisten 8bit Mikrocontroller.

Ich würde Dir allerdings eher dazu raten, dich mit dem Arduino Uno 
weiter zu beschäftigen. Denn der ist durchaus überschaubar und im 
Internet extrem gut dokumentiert - auch bei Youtube. Mann muss es sich 
nur anschauen und ausprobieren.

Schau Dir dazu diese Seiten an:
http://stefanfrings.de/mikrocontroller_buch/index.html
http://stefanfrings.de/stm32/index.html

von Daniel T. (eraserhead)


Lesenswert?

So viele neue Beiträge, für die ich mich an dieser Stelle ebenfalls 
bedanken möchte.

Ich werde alle eure Ratschläge beherzigen und mir die genannten Quellen 
anschauen und durcharbeiten.

Dankeschön :)

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.