Forum: Mikrocontroller und Digitale Elektronik Alles für C lernen


von Pierre G. (bqube)


Lesenswert?

Hallo Leute,

Nun hab ich mich entschlossen für meine Uc's C zu lernen da die 
Programme größer und unübersichtlicher werden... jetzt meine Frage muss 
ich wie es in den Tutorials steht C Standart komplett lernen oder nur 
die Wichtigsten Grundfunktionen..... welches Tutorial wäre denn am 
besten geeignet damit ich mit GCC anfangen könnte.

Mfg Bqube

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Kauf Dir ein C-Buch, wie z.B. den K&R in der zweiten Ausgabe.

Vergiss "Tutorials".

von ET_Stud (Gast)


Lesenswert?

Wenn du einen schnellen Einstieg willst, schau mal "C von A bis Z" vom 
Galileo Verlag - gibt's auch gratis und legal online. Wie ich finde, ein 
sehr anwendungsorientiertes Buch.

Falls du Student bist und Zugang zu SpringerLink hast (oder jemanden 
kennst) gibt's von Selberherr "Programmieren in C" gratis im 
SpringerLink.   Im Gegensatz zur sonstigen Springer-Literatur ist das 
Buch durchaus auch ausserhalb der Uni zu gebrauchen.  Du lernst hier C 
sehr genau, wenn du willst auf Experten-Niveau, aber es ist kein 
Crash-Kurs.

Diese Bücher sind allerdings nicht Mikrocontroller-spezifisch, das 
bedeutet, du lernst ganz normal und allgemein ANSI-C programmieren am PC 
in der Konsole (Textmode).  Das würde ich dir aber auch empfehlen, denn 
oft sind in den "C für AVR/PIC/..."-Stil-Bücher nur die notwendigsten 
Dinge oder und wenn du es am PC lernst, weisst du was ANSI-kompatibel 
ist und was nicht (also, z.b. dass es den sbit-Datentyp nicht in jedem 
Compiler gibt, obwohl Keil und MikroC ihn anbieten)

von Thomas E. (thomase)


Lesenswert?

Pierre Gnauck schrieb:
> oder nur die Wichtigsten Grundfunktionen.....
Na klar, das reicht völlig:
1
int main(void)
2
{
3
   while(1)
4
   {
5
     printf("Ich kann jetzt C\n");
6
   }
7
}
Wird aber schnell langweilig.

Was glaubst du eigentlich? Natürlich alles.

mfg.

von Pierre G. (bqube)


Lesenswert?

Mir geht es nur darum das ich nicht alles über C lerne und am ende davon 
nur die Hälfte für meine Uc's brauche... zur Zeit bin ich mit diesem 
Tutorial beschäftigt

http://www.tutorials.at/c/compiler-installieren.html

klar sind Tutorials nicht immer das Beste aber nen Anfang..

Mfg Bqube

von Helmut L. (helmi1)


Lesenswert?

Pierre Gnauck schrieb:
> Mir geht es nur darum das ich nicht alles über C lerne und am ende davon
> nur die Hälfte für meine Uc's brauche...

Das meiste wirst du davon brauchen.

von UR-Schmitt (Gast)


Lesenswert?

Du kannst für den Anfang die dynamische Speicherverwaltung weglassen.
Zumindest für 8 Bitter.
Und am besten auch floating point.

von Thomas E. (thomase)


Lesenswert?

Pierre Gnauck schrieb:
> Mir geht es nur darum das ich nicht alles über C lerne und am ende davon
> nur die Hälfte für meine Uc's brauche...
Das Forum ist voll mit Fragen von Leuten, die das auch glauben und ganz 
schnell mit irgendeinem Pillepallekram nicht weiterkommen.
Was willst du hören? Lern dies, lern das, lass das weg und das brauchst 
du auch nicht?
OK. Dynamische Speicherverwaltung kannst du wirklich weglassen.

mfg.

von Pierre G. (bqube)


Lesenswert?

Nene was ich lernen will wollt ich ja garnicht Wissen nur ob es nötig 
wär aber das hat sich nun alles geklärt .... also weiter mit c und wenn 
das sitzt dann zu GCC ...

Mfg Bqube

von Helmut L. (helmi1)


Lesenswert?

Pierre Gnauck schrieb:
> also weiter mit c und wenn
> das sitzt dann zu GCC ...

c ist die Sprache
gcc ist ein Compiler unter vielen.

von Cyblord -. (cyblord)


Lesenswert?

Wer so eine Frage stellt, hat noch nicht verstanden, dass programmieren 
nichts mit dem Erlernen einer Programmiersprache zu tun hat.
Diese Erkentniss wird aber noch kommen ;-) ANSI-C hat gerade mal 32 
Schlüsselwörter, deren Bedeutung kann jeder an einem Nachmittag lernen. 
Kann derjenige danach C programmieren? Wohl kaum.
Eine Programmiersprache ich wie der Hammer für einen Zimmermann. Kannst 
du ein Haus bauen wenn ich dir einen Hammer gebe?

gruß cyblord

von TheOnly (Gast)


Lesenswert?

Also ich habe C damls hiermit 
http://home.arcor.de/rp.nerlich/images/lit/book-kernighan-ritchie.jpg
gelernt.

Das ist der Klassiker, gibts auch in neuer bei amazon.

von Helmut L. (helmi1)


Lesenswert?

cyblord ---- schrieb:
> Kannst
> du ein Haus bauen wenn ich dir einen Hammer gebe?

Ne, aber ein Haus damit abbrechen :=)

von Pierre G. (bqube)


Lesenswert?

So nun hab ih mir von Pearson C Programmierung für knapp 10€ gekauft ... 
ich hab mich für das Buch entschieden weil ich finde das es sich am 
besten liest ... die anderen Bücher waren mir einfach zu trocken 
geschrieben..

Mfg Bqube

von Bernhard S. (b_spitzer)


Lesenswert?

Beim Mikrocontroller läuft in C aber einiges etwas anders ab, als beim 
PC-Programm. Daher finde ich die üblichen Bücher und (Uni-)Skripte nur 
bedingt brauchbar. Es gibt die Bücher "Mikrorechner mit Mikrocontrollern 
der XXX-Familie". Da sind dann auch Mikrocontroller-Taugliche Beispiele 
drin.
Für die 8051 gibt es zum Beispiel von Hitex ein knapp 100-Seitiges 
Dokument "C51 Primer". Das beschreibt nur Unterschiede bei der 
Programmierung in C auf einem Mikrocontroller...
Meinen Technikern gebe ich eine C-Kurzeinführung für den Controller mit 
(12 Seiten, dazu einige Beispielprogramme zum ausprobieren), für 
Grundlagen der Syntax gibt es von der FH Regensburg ein recht schönes 
Skript von Prof. Jobst, von dem die ersten paar Kapitel so allgemein 
sind, dass man sie auch für den uC nutzen kann. Ansonsten findet man 
allgemeine C-Einführungen an allen Ecken und Enden, so auch bei 
Wikibooks:
http://de.wikibooks.org/wiki/C-Programmierung

von Tim R. (mugen)


Lesenswert?

Ich selber programmiere nur gelegentlich und wenn, dann nur C oder C#. 
Für C verwende ich allerdings nur ein Buch, den Rest lese ich mir im 
Internet an. Da ich nur gelegentlich programmiere reicht mir meist 
dieses Nachschlagewerk:

http://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenk%C3%B6tter/dp/3499600749/ref=sr_1_1?ie=UTF8&qid=1348170881&sr=8-1


Ich mag diese kompakten Bücher und wenn ich nur die ASCII Tabelle 
nachschaue ;), dieses Buch hat sich bei mir bewährt.

von Meisenmann (Gast)


Lesenswert?

Die Fragestellung kann ich irgendwie nachvollziehen. Mein Problem ist 
auch nicht der Umgang mit der Programmiersprache, sondern die 
Algorithmik. Selbst wenn ich genau weiß, was die Sprache leistet, kenne 
ich noch lange nicht die notwendigen Algorithmen zur Lösung bestimmter 
Probleme. Und dass wird in KEINEM mir bekannten Buch über C oder eine 
andere Programmiersprache ausreichend erklärt. Ob es von Herrn 
Erlenkötter geschrieben ist oder von K&S. Das Lernen der Sprache ist 
nicht schwer, sondern das Finden und Nachvollziehen von Lösungsansätzen, 
was in jeder Programmiersprache fast immer gleich oder zumindest ähnlich 
abläuft. Z.B. die logische Zerlegung aller Aufgaben des Programms in 
nicht weiter zerlegbare Einheiten ist, finde ich, eine echte 
Herausforderung, welche das Programmieren ausmacht. Insbesondere die 
"Narrensicherheit" und Fehlerbehandlung kommen in fast allen Büchern zu 
kurz. Da habe auch ich noch arge Probleme. Ich kann zwar C-Programme 
nach gegebenem Struktogramm mit vorgegebenen Algorithmen schreiben, ohne 
großartige Fehler zu machen, aber das Nachvollziehen oder das 
selbständige Entwickeln fällt mir sehr schwer.

von Irgendeiner (Gast)


Lesenswert?

Naja, erinnerst Du Dich noch an die Grundschule? Ich hoffe Du hast sie 
besucht? Wie war das da mit dem Lesen und Schreiben? Haben eine handvoll 
Buchstaben gereicht, oder hat es erst mit allen Buchstaben gut 
funktioniert?

Und mit dem Rechnen? War der Zahlenraum bis 10 und "Plus" und "Minus" 
ausreichend? Oder braucht man mehr um irgendetwas sinnvolles zu rechnen?

von Irgendeiner (Gast)


Lesenswert?

> aber das Nachvollziehen oder das
> selbständige Entwickeln fällt mir sehr schwer.

Ist reine Übungssache. So wie eine Fremdsprache. Vokabeln pauken und 
Grammatik auswendig lernen reicht nicht. Am besten mal einige Monate 
sich im Fremdsprachen-Land aufhalten, das bringt sehr viel.

Mit der Übung kommt die Erfahrung. Mit der Erfahrung die Erkenntnis. Das 
dauert halt.

von Cyblord -. (cyblord)


Lesenswert?

Meisenmann schrieb:
> Die Fragestellung kann ich irgendwie nachvollziehen. Mein Problem ist
> auch nicht der Umgang mit der Programmiersprache, sondern die
> Algorithmik. Selbst wenn ich genau weiß, was die Sprache leistet, kenne
> ich noch lange nicht die notwendigen Algorithmen zur Lösung bestimmter
> Probleme. Und dass wird in KEINEM mir bekannten Buch über C oder eine
> andere Programmiersprache ausreichend erklärt.
Es gibt Bücher (und ganze Vorlesungsreihen(!) ) die sich allein mit 
Algorithmen beschäftigen. Das ist völlig unabhängig von der Sprache. 
Grundsätzlich kann jede Turing-Vollständige Programmiersprache jeden 
Algorithmus ablaufen.

> Z.B. die logische Zerlegung aller Aufgaben des Programms in
> nicht weiter zerlegbare Einheiten ist, finde ich, eine echte
> Herausforderung, welche das Programmieren ausmacht.
Genau, hier liegt die eigentliche Kunst. Und da kommt man mit keinem 
C-Buch hin. Da muss man a.) ein Händchen für haben und braucht b.) viel 
Erfahrung.

gruß cyblord

von Meisenmann (Gast)


Lesenswert?

cyblord ---- schrieb:
> Es gibt Bücher (und ganze Vorlesungsreihen(!) ) die sich allein mit
> Algorithmen beschäftigen.

Ich mich in gerne intensiver und konkreter mit dieser Thematik befassen. 
hast Du gute Erfahrungen mit irgendeinem Buch gemacht? Diese Art 
Fachbücher ist leider nicht gerade billig und ich möchte mir den Griff 
ins Klo gerne ersparen.

von Heinz (Gast)


Lesenswert?

Ich kann dir das Buch
C von A bis Z ebenfalls
empfehlen. Ist sogar
als OpenBook verfügbar.
Einfach bei Google suchen.

Mir hat es super geholfen.

Viele Grüße

von Cyblord -. (cyblord)


Lesenswert?

Meisenmann schrieb:
> cyblord ---- schrieb:
>> Es gibt Bücher (und ganze Vorlesungsreihen(!) ) die sich allein mit
>> Algorithmen beschäftigen.
>
> Ich mich in gerne intensiver und konkreter mit dieser Thematik befassen.
> hast Du gute Erfahrungen mit irgendeinem Buch gemacht? Diese Art
> Fachbücher ist leider nicht gerade billig und ich möchte mir den Griff
> ins Klo gerne ersparen.

Gibts bei dir in der nähe keine Uni? In der Regel kann jeder einen UB 
Ausweis bekommen und von dort Bücher ausleihen. Kaufen würde ich mir da 
erstmal keins. Und dann schauchst mal was die an Algo Büchern da haben.

gruß cyblord

von ET_Stud (Gast)


Lesenswert?

Irgendeiner schrieb:

> Ist reine Übungssache. So wie eine Fremdsprache. Vokabeln pauken und
> Grammatik auswendig lernen reicht nicht. Am besten mal einige Monate
> sich im Fremdsprachen-Land aufhalten, das bringt sehr viel.
>
> Mit der Übung kommt die Erfahrung. Mit der Erfahrung die Erkenntnis. Das
> dauert halt.

Da gebe ich dir vollkommen Recht. Ich habe Programmieren nie auf eine 
systematische Weise, sondern durch anfangs abkupfern und anschliessendes 
modifizieren von Code aus Beispielen gelernt.  Solches Learning-by-doing 
geht aber nur, wenn man ein enormes Interesse aufbringt. Und man braucht 
viel Übung, nicht paar Tage sondern Jahre um es wirklich zu können.

Bernhard Spitzer schrieb:
> Beim Mikrocontroller läuft in C aber einiges etwas anders ab, als beim
> PC-Programm. Daher finde ich die üblichen Bücher und (Uni-)Skripte nur
> bedingt brauchbar. Es gibt die Bücher "Mikrorechner mit Mikrocontrollern
> der XXX-Familie". Da sind dann auch Mikrocontroller-Taugliche Beispiele
> drin.

Ja, aber da besteht die Gefahr, dass man z.b. Pointer nicht komplett 
versteht, oder dass man strukturierte Programmierung nicht lernt.

Ich habe zuerst normales C am PC gelernt, und die Umstellung auf 
Mikrocontroller dauerte genau 10 Minuten (OK, ich hatte davor schon 
Mikrocontroller in ASM programmiert)

Auch wenn manche sagen, malloc/calloc braucht man nicht.   Das stimmt 
zwar heute garantiert, aber was, wenn in einigen Jahren ARM9/11-artige 
MCUs mit viel RAM der Standard werden und so wie der Cortex-M3 auch im 
44-Pin-TQFP verfügbar und leicht anzuwenden sind?

von Hannes (Gast)


Lesenswert?

Hi,

na wie immer sind wir hier ja mal wieder sehr freundlich...

Ein Buch zu dem Thema ist eine gute Grundlage und gehört dazu.

Eine Möglichkeit ist es das Zielorientiert zu machen. Du kannst das zwar 
alles  auswendig lernen, aber damit umzugehen lernt man dann gerade am 
uC eher mit der Praxis.

Ich würde mir Ziele setzen:

LED blinken lassen
LED nur blinken lassen wenn Schalter geschlossen

wären die ersten beiden Aufgaben.

Dann bist du bei den Kontrollstrukturen:

while und if

und den Bit- und Vergleichsoperatoren

Zudem lerst du parallel etwas zur Praxis (Verkabelung/Stromversorgung 
etc..), zur Programmierumgebung, zum Compiler, zur Installation und 
Zusammenspiel dieser, zum Programmer und dem ganzen drum rum.

Anschließend höhere Ziele stellen und mit dem c-Buch, diesem Forum, 
Tutorials und google weiter ausbauen. Je nach Programmierstiel 
kristallisieren sich dann bevorzugte Vorgehensweisen heraus. Das kann 
sehr unterschiedlich ausfallen und ist nicht mit JA oder NEIN zu 
beantworten.

Gruß,
Hannes

von Gert (Gast)


Lesenswert?

Ich würde erst einmal die Grundlagen lernen und dann bei Bedarf das, was 
man
braucht.
Mir hat dieser Video-Kurs geholfen:

http://et-tutorials.de/mikrocontroller/

von Willi L. (wilials)


Lesenswert?

Hallo Pierre,

sieh Dir mal et-tutorials.de an, das fand ich für den Anfang am besten.

Gruß
Wilials

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.