Forum: Mikrocontroller und Digitale Elektronik Einstieg in C


von Dominik W. (dominik_w)


Lesenswert?

Hallo,
möchte gerne selber Mikrocontroller programmieren in C.
Ist es besser wenn ich rein C lerne und dann auf Mikrocontroller 
übergehe?
Oder sollte ich mir gleich ein Buch über C in verbindung mit 
Mikrocontroller kaufen?

Wenn man C beherscht kann man dann automatisch auch Mikrocontroller 
programmieren oder ist da noch ein kleiner unterschied?

Danke

mfg
Dominik

: Verschoben durch User
von der mechatroniker (Gast)


Lesenswert?

Ich sag mal, wenn man das Handwerkzeug (sprich: die Programmiersprache) 
beherrscht, stochert man bei den mikrocontrollerspezifischen Sachen 
nicht so im Nebel. Zumal man auf Mikrocontrollern auch nicht so gut 
debuggen kann (mal eben im Einzelschritt durcchgehen ist da nicht).

Mein Tip: Besorg dir ein C-Buch (allgemein), lad dir Visual C++ 2010 
Express runter, ist kostenlos und du bekommst eine IDE und einen 
durchaus brauchbaren Debugger, und spiel erstmal mit der Sprache an sich 
rum.

von Klaus W. (mfgkw)


Lesenswert?

Dominik W. schrieb:
> Ist es besser wenn ich rein C lerne und dann auf Mikrocontroller
> übergehe?

ja, wesentlich besser.

Grund:
1. In C alleine kann man viel falsch machen, bei MCs ebenfalls.
   Wenn man an allen Fronten gleichzeitig kämpfen will, tut
   man sich keinen Gefallen.
2. Die Fehlersuche ist auf PCs drastisch einfacher.

Dominik W. schrieb:
> Wenn man C beherscht kann man dann automatisch auch Mikrocontroller
> programmieren oder ist da noch ein kleiner unterschied?

Es gibt schon Unterschiede.
Die sind allerdings deutlich kleiner, wenn man sich beim C-Lernen
darum kümmert STANDARD zu lernen und nicht ein spezielles C.
Insbesondere die MS-Doku drängt einen nicht dazu, sich an ANSI-C
zu halten (vorsichtig ausgedrückt); dann ist der Umstieg schwerer.

von Yalu X. (yalu) (Moderator)


Lesenswert?

LKW fahren (C programmieren) kann man kann ganz gewöhnlich auf einer
Straße (PC) oder im Chaos einer Großbaustelle (Mikrocontroller). Kaum
ein LKW-Fahrer wird seinen Führerschein auf der Großbaustelle machen,
obwohl die Bedienung des Gefährts in beiden Fällen die gleiche ist :)

von Dominik W. (dominik_w)


Lesenswert?

Ok danke für eure Antworten. Werde es so machen wie ihr sagt.

mfg
Dominik

von Mike (Gast)


Lesenswert?

Junge, Junge große Worte gelassen ausgesprochen. Ihr hättet Dominik 
sagen sollen das er auf diesem Weg vielleicht zu Weihnachten mit 
Controllern anfangen kann. Was zum Teufel soll das debuggen bei Visual C 
mit der Controllerwelt zu tun haben?
Bits setzen und löschen, Inputs abfragen und Interrupts kommen da ja 
wohl selten vor...

Leider hat Dominik nicht geschrieben welche Controller er programmieren 
möchte.
Ich kenne nur die AVR und 8051 Umgebungen, kein PIC.
Viel wichtiger beim Einstieg in C ist die Compilerauswahl. Die 
Kommerziellen sind da viel einfacher zu erlernen als z.B. gcc. Die 
kostenlosen Testversionen gehen meistens bis 2 oder sogar 4 KB Code, das 
reicht für den Anfang. Danach kann man immer noch auf gcc umsteigen, 
wenn man kein Geld aisgeben möchte.
Der Code Wizard, den Codevision und auch IAR anbieten ist für Einsteiger 
eigentlich nicht mit Gold aufzuwiegen ;-)

Mein Tipp: lese hier mal das avr gcc Tutorial, schaue Dir die 
Testversionen der genannten Compiler an (wenn Du an AVR Controllern 
interessiert bist) und befasse Dich mit den einschlägigen Büchern der 
Zielarchitektur. Danach Try + Error, und nie die Geduld verleren, das 
schafft man auf keinem genannten Weg in ein paar Wochenenden.
Viel Glück,
Mike

von Dominik W. (dominik_w)


Lesenswert?

Also hab ich das jetzt richtig verstanden?
Ich sollte doch C gleich Praxisbezogen auf Mikrocontroller lernen.
Tut mir leid hab ich vergessen zu erwähnen das ich avr Mikrocontroller 
von atmel mit C programmieren möchte.
Unter Complierauswahl meinst du die Software die mir mein Programm für 
meinen Mikrocontroller übersetzt, oder?
Kannst du mir vielleicht noch kurz den Unterschied zu gcc erklären?

Danke

von Mike (Gast)


Lesenswert?

Dominik,

hast Du die Artikel hier auf der Seite mal durchgesehen?
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC

Codevision und IAR Compiler haben eine komplette Editorumgebung gleich 
mit dabei, und vieles integriert, was beim gcc erst noch zusammengesucht 
und integriert werden muss. (z.B. serielle Schnittstelle, LCD 
ansteuerung und vieles mehr.

Ach ja, hatte ich noch vergessen, Codevision und IAR laufen nur unter 
Windows...
Du findest die Testversionen unter www.iar.com bzw. www.hpinfotech.ro
Anschauen und ausprobieren lohnt sich. Danach kannst Du Dich immer noch 
für gcc entscheiden. Wenn Du schon ein bischen programmiert hast, fällt 
das auch leichter.
Grüße,
Mike

von Karl H. (kbuchegg)


Lesenswert?

@Mike

Du vergisst, dass er noch gar kein C kann!

Das Tutorial ist nicht hilfreich, weil es schon C-Kentnisse voraussetzt. 
Und von "Weihnachten" kann keine Rede sein. Seine ersten Schritte in C 
auf einem PC zu machen, ist vor allen Dingen deshalb vorteilhaft, weil 
er rund die Hälfte eines normalen C-Lehrbuches damit erst mal ohne 
Probleme auf dem PC bewältigen kann. Dort funktioniert ein printf erst 
mal aus dem Stand und er kann sich Zwischenergebnisse ausgeben lassen 
und muss nicht, wie auf dem µC erst mal Ratestunde spielen, was denn nun 
ein i++ wirklich macht und wo der Unterschied zu einem ++i liegt. Er 
kann sich das mit einem printf ganz leicht ganz einfach ausgeben lassen.

Darum geht es. Kein Mensch sagt, dass er auf dem PC auch durch 
Filehandling und dynamisches Memory-Handling durch muss. Dann wären wir 
wirklich bei Allerheiligen. Die erste Hälfte eines C-Buches hat er auf 
einem PC in ein paar Wochen durch, wenn er einigermassen fleissig ist. 
Auf dem µC braucht er durch die erst mal eingeschränkte Peripherie 
Monate und viele Nachfragen im Forum dazu, bis er für sich selber die 
Techniken entwickelt hat, wie man einem Programm entlockt, was es denn 
wirklich macht und wo der Unterschied zu dem liegt, was man eigentlich 
machen wollte.

von Sam .. (sam1994)


Lesenswert?

Mike schrieb:
> hast Du die Artikel hier auf der Seite mal durchgesehen?

Bevor man damit anfängt sollte man grundlegende KEntnisse von C haben.
z.b. Wie man eine Variable definiert, was sind pointer, wie sehen 
Funktionen aus. Schon mal überlegt, dass der TE davon noch überhautp 
nichts wissen könnte?

Beim PC-Programmieren bekommt man zudem noch Erfahrung in C. Man macht 
weniger Leichtsinnfehler.

Mike schrieb:
> Codevision und IAR Compiler haben eine komplette Editorumgebung gleich
> mit dabei, und vieles integriert, was beim gcc erst noch zusammengesucht
> und integriert werden muss.

Ich wüsste nicht was an WinAvr + DevC++ + Standardmakefile runterladen 
so schwer wäre.


PS: Die Syntaxkenntnis und ein bisschen Programmierehrfahrung reicht im 
Prinzip. Als ich angefangen habe konnte ich c# und halbwegs c++ 
programmieren.

von Mine Fields (Gast)


Lesenswert?

Visual Studio würde ich zum Einstieg in C jetzt auch nicht gerade 
nehmen, das ist dafür ein bisschen überladen und man wir vielleicht auch 
schnell auf die Idee kommen irgendwelchen .NET-Kram zu programmieren. 
Dann lieber Codeblocks+GCC oder etwas ähnlich schlankes. Und man sollte 
wirklich mit C einsteigen und nicht C++. Manche Dinge wie Bitoperationen 
muss man sich dann vielleicht genauer anschauen als es für PC-Programme 
nötig wäre. Dann klappt das schon.

Parallel kann man sich ja trotzdem schon einmal in die Grundzüge eines 
Mikrocontrollers einarbeiten.

von Vlad T. (vlad_tepesch)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Die erste Hälfte eines C-Buches hat er auf
> einem PC in ein paar Wochen durch, wenn er einigermassen fleissig ist.

ja, aber bis man das wirklich drauf hat und Lösungen für neue Probleme 
erarbeiten kann brauchts sehr viel Übung und Wissen.

das beste ist, sich immer kleine Probleme zu suchen und diese zu lösen.
Tip:
http://projecteuler.net

von Karl H. (kbuchegg)


Lesenswert?

Samuel K. schrieb:

> PS: Die Syntaxkenntnis und ein bisschen Programmierehrfahrung reicht im
> Prinzip.

Ich würde sagen (in wachsendem Scheirigkeitsgrad)

  Variablen
  Einfache Datentypen
  Vergleiche
  Schleifenkonstrukte
  Promotion Regeln
  Arrays
  Funktionen samt Argumentpassing
  Variablen Scope
  Strings
  Standardfunktionen
  Strukturen

Das sehe ich so in etwa als sinnvolles Grundgerüst an, dass man auf 
einem PC erwerben sollte, ehe man auf einen µC wechselt und die µC 
spezifischen Dinge mit dazunimmt. Die ersten Punkte sollten 100% sitzen, 
die letzteren sind vor allen Dingen Übungssache.

von Karl H. (kbuchegg)


Lesenswert?

Vlad Tepesch schrieb:
> Karl Heinz Buchegger schrieb:
>> Die erste Hälfte eines C-Buches hat er auf
>> einem PC in ein paar Wochen durch, wenn er einigermassen fleissig ist.
>
> ja, aber bis man das wirklich drauf hat und Lösungen für neue Probleme
> erarbeiten kann brauchts sehr viel Übung und Wissen.

Natürlich braucht es das.
Aber das wird nicht einfacher, indem man sich auf einem µC mit 
Notbehelfen wie strategisch aufblinkenden LED behelfen muss, weil man 
sonst keine Möglichkeit für Ausgaben hat.

von Klaus W. (mfgkw)


Lesenswert?

Exakt.

Mit C auf so etwas komischen wie einem MC anzufangen, ist Masochismus
und produziert nur Frust.

Ich setze mich ja auch nicht in China in eine Vorlesung für
Philosophie, ohne ein Wort chinesisch zu verstehen.

von Mike (Gast)


Lesenswert?

Ok, was Karl Heinz schreibt ist nicht von der Hand zu weisen. So wie es 
aussieht hat Dominik auch noch keine Erfahrung mit Controllern, oder 
Dominik? Dann wäre C in der Tat erst der 2. Schritt nach der Hardware. 
Und die alleine braucht schon eine Menge Zeit.

von Dennis (Gast)


Lesenswert?

Also ich sehe das eigentlich ein wenig anders. Ich habe mit C vorher 
nichts zu tun gehabt und fand programmieren immer scheisse und hab die 
Nerds belächelt, die sich mit so einem Scheiß abgegeben haben. Dann 
musste ich im Studium mit Mikrocontrollern anfangen...durch die Prüfung 
musste ich ja auch durch, also was solls. Die Praktikumsaufgaben gemacht 
und Schritt für Schritt immer ein bischen mehr auf dem uC geschrieben 
(hatte ja auch keine andere Wahl). Also dann die Prüfung und doch gut 
mit ner 1 weggekommen ;-)

Mittlerweile bin ich mit dem Studium fertig und programmiere nurnoch 
Mikrocontroller, mache also eigentlich genau das, was ich nie machen 
wollte. Aber der Mikrocontroller hats mit angetan. Studiert habe ich 
E-Technik - wollte immer Schaltungen entwickeln...hier trifft nun beides 
zusammen.

Was ich sagen will: Meiner Meinung nach sollte man direkt mit dem uC 
anfangen und auf ihm lernen. Ich bin jetzt nicht der 
Super-Programmierer, das ist klar, aber ich komme sehr gut zurecht mit 
dem, was man bei Mikrocontrollern so machen kann - klar geht da noch 
wesentlich mehr, aber ich denke, der Bezug zum Zielthema sollte von 
Anfang mit dabei sein, dann macht der eher dröge Stoff auch Spaß, 
obgleich man natürlich nur diese schrittweisen kleinen Erfolge von LEDs 
zu externer Peripherie, usw... hat. Aber es wird halt immer mehr und ich 
finde, die Eigenschaften von C und das "Was passiert, wenn..." kann man 
auch recht gut in der IDE für einen uC nachvollziehen. Ich weiß jetzt 
nicht, wie es bei den AVR GCC usw. ist, ich habe von Anfang an mit IAR 
gearbeitet, konnte mich aber nie darüber beschweren, irgendwas nicht zu 
sehen. Single-Stepping gibt es hier ja ebenfalls, auch wenn man hier und 
da mal dumm guckt, weil auf einmal ein Interrupt kommt, aber das ist ja 
irgendwann auch alles klar.

von Mike (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Exakt.
>
> Mit C auf so etwas komischen wie einem MC anzufangen, ist Masochismus
> und produziert nur Frust.
>
> Ich setze mich ja auch nicht in China in eine Vorlesung für
> Philosophie, ohne ein Wort chinesisch zu verstehen.

Ja, da ist was dran, wie hatte man noch mal früher mit MCs angefangen 
als es noch keine PCs gab? Das war mühsam.
Oder wie fängt man jetzt damit an, wenn man kein C, kein Assembler und 
kein Basic kann?

Vielleicht ist dafür dann doch eine Empfehlung für so was wie myAVR 
angebracht um nicht mit asm anfangen zu müssen? Was meint Ihr?

von vogler (Gast)


Lesenswert?

Bei den Controllern muss man im wahrsten Sinne des Wortes die richtigen 
Register ziehen.
Mit welcher Programmiersprache man das bewerkstelligt, ist fast schon 
Nebensache.
Die Register für die einzelnen Funktionen sind im jeweiligen Controller- 
Datenblatt aufgeführt.

Ich würde mir ein einfaches C-Buch für PC (z.B. "C Programmierung mit 
einfachen Beispielen" von Jürgen Wolf) besorgen, mal die ersten Kapitel 
querlesen, um zu wissen, wie C "gesprochen" wird und dazu ein C-Lehrbuch 
für den entsprechenden µController-Typ besorgen.

Damit solltest Du schnell einsteigen können. Bei auftauchenden Fragen 
dieses Forum nutzen (Suchfunktion benutzen, das meiste haben schon zig 
Leute vor dir gefragt oder eben neuen Beitrag erstellen).

von Dominik W. (dominik_w)


Lesenswert?

Nein habe auch noch keine Ahnung von Mikrocontrollern. Aber wie 
auch...ohne Programmieren kann mam da ja nicht wirklich was machen :-) 
Habe mir erst letzte Woche meinen eigenen Programmer gebaut.

Habe mir schon vor einigen Tagen dieses Buch bestellt.
"C: Programmieren von Anfang an"
Was haltet ihr von dem?

Könnt ihr mir ein Buch C Programmierung mit verbindung zu 
Mikrocontrollern empfehlen.
Hab dieses hier im Forum gefunden.
http://www.amazon.de/s?ie=UTF8&keywords=3778529439&index=blended

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.