Forum: Mikrocontroller und Digitale Elektronik Bücher über Assembler und C für µC


von Masterofeye (Gast)


Lesenswert?

Hallo an alle,

ich Studiere gerade Elektrotechnik und bin im 3. Semester. Wir lernen 
zur Zeit in Assembler zu programmieren am AVR 8-Bit µP. Leider brauchen 
wir im 4. Semester im Vertiefungsstudium Austomatesierung die 
Programmierung mit C. Zudem ist der Untericht sehr schlecht und man 
versteht nicht wirlich viel(C++ habe ich sehr gut verstanden). Meine 
Frage, gibt es Bücher für den Einstieg und den darüber hinaus zum Thema 
Assembler und C die sich nicht direkt auf etwas, ausser natürlich den 
µP, speziealieren?

Vielen dank

von Lehrmann M. (ubimbo)


Lesenswert?

Also Assembler allgemein ergibt in meinen Augen keinen Sinn. Die 
Hersteller haben alle ihre eigenen Befehle / Sythax.

Für Microcontroller C im Allgemeinen kann man nur Standart ANSI-C 
empfehlen. Dazu gibt's von Galileo ein schönes Buch.

Das Problem am Programmieren bei Microcontrollern ist nicht die 
Programmiersprache sondern WIE das Programm umgesetzt wird. Man muss die 
Methoden und Möglichkeiten kennen wie man Hardware und Software so 
kombiniert, dass das gewünsche Resultat rauskommt. Die 
Programmiersprache C ist hier nur wie ein (fundamentaler) 
Schraubenzieher in deinem Werkzeugkoffer.

Um zielführend arbeiten zu können muss man die Kombination aus Hardware 
(die stellt jeder µC individuell zu Verfügung) und Software beherrschen. 
Für C braucht du nur das normale ANSI-C und dann das Hardwarespezifische 
was man nicht generalisieren kann.

Noch eine Sache:

Masterofeye schrieb:
> AVR 8-Bit µP

Ein Microcontroller ist nicht mit einem Microprozessor zu verwechseln! 
Das ist etwas sehr elementares das zu verstehen.

von Masterofeye (Gast)


Lesenswert?

Hallo Michael,

Es ist mir klar das die Syntax von Prozessor zu Prozessor anders sind. 
Das hab ich auch geschrieben. Mann muss es schon auf eine Familie 
beziehen wie AVR.

Zitat
"
Das Problem am Programmieren bei Microcontrollern ist nicht die
Programmiersprache sondern WIE das Programm umgesetzt wird. Man muss die
Methoden und Möglichkeiten kennen wie man Hardware und Software so
kombiniert, dass das gewünsche Resultat rauskommt.
"

Ja so ein Buch such ich :)

"Um zielführend arbeiten zu können muss man die Kombination aus Hardware
(die stellt jeder µC individuell zu Verfügung) und Software beherrschen.
"
Ja die 385 Seiten von dem µC hab ich vormir. Was mir fehlt und was du 
beschreibst ist der Zusammenhang zwischen z.b. dem Timer und dem Code. 
Dieser erschließt sich mir aus der Vorlesung nicht (glaub so geht es 90% 
im Studiengang bei diesem Professor). Die Klausur wird mit meinem 
Halbwissen zu bestehen seien aber ich brauch es ja auch im 4. Semester 
und darüber Hinaus.

Was ich mir vorstelle wäre ein Buch wo von LED bis ka AD Wandlung, Timer 
usw. alles erklärt wird und das Anhand einer kongreten Familie oder 
eines µC. Das dann natürlich Befehle anders sind ist klar aber der 
Generelle ablauf fehlt mir.

Vielen Dank

Ps: Uns wurde gesagt des es HEUTE kaum noch einen unterschied zwischen 
µC u. µP gibt.

von Peter R. (gelb)


Lesenswert?

Masterofeye schrieb:
> Ps: Uns wurde gesagt des es HEUTE kaum noch einen unterschied zwischen
> µC u. µP gibt.

Hoffentlich stammt diese Aussage nicht von einem Prof, denn sie ist 
falsch.

Zitat aus Wikipedia:

"Als Mikrocontroller (auch µController, µC, MCU) werden Halbleiterchips 
bezeichnet, die mit dem Prozessor mindestens Peripheriefunktionen auf 
einem Chip vereinen. In vielen Fällen befindet sich der Arbeits- und 
Programmspeicher ebenfalls teilweise oder komplett auf dem gleichen 
Chip. Ein Mikrocontroller ist praktisch ein Ein-Chip-Computersystem."

Besser kann ich es auch nicht beschreiben.

Grüße, Peter

von Sepp (Gast)


Lesenswert?

Hallo Masterofeye,

Beispiel Timer, man muß schon wissen was man tun möchte.

Ein Timer kann z.B. aller 100ms einen Interrupt auslösen.
Im Interrupt wird ein Zähler heruntergezählt, und bei
Erreichen der Null wird ein Flag gesetzt, das dann
im Hauptprogramm abgefragt wird. Z.B für einen Timeout.

Ober der Timer steuert eine PWM an.

Oder....

Im Assembler -Totorial sind diese Funktionen, meiner
Meinung nach sehr gut beschrieben, auch das Atmel-DB ist
brauchbar.

Schönen Sonntag noch!

P.S. Ob Unterricht/Vorlesung "schlecht" ist möchte ich nicht
weiter untersuchen. Manche Profs können gut erklären, manche
nicht. Manche verstehen auch nicht, daß ein anderer ihre
Erklärungen nicht versteht, da hilft dann nur nachfragen.
(Nachfragen war bei uns z.T. ausdrücklich erwünscht)

von Thomas E. (thomase)


Lesenswert?

Masterofeye schrieb:
> Zudem ist der Untericht sehr schlecht und man
>
> versteht nicht wirlich viel(C++ habe ich sehr gut verstanden).

C++ ist doch schon mal eine Basis. C ist ja gewissermassen eine 
Untermenge von C++. Das war's dann aber auch schon.
Entscheidend sind, wie Lehrmann Michael schon richtig bemerkte, die 
Konzepte mit denen man etwas umsetzt.
Vielleicht solltest du mal das sehr gute Tutorial in diesem Forum von 
Anfang bis Ende durcharbeiten. Eigentlich ist da alles drin, was du 
suchst.
Nur du darfst das nicht mit einem PC vergleichen. Du Hast kein 
Betriebssystem. Du musst jede Kleinigkeit selbst entwickeln, damit du 
einen Durchblick für die gesamte Technik bekommst. Du musst Datenblätter 
lesen und umsetzen können. "Hat mal einer ein Script?" hilft dir keinen 
Schritt weiter.

Masterofeye schrieb:
> Ps: Uns wurde gesagt des es HEUTE kaum noch einen unterschied zwischen
>
> µC u. µP gibt.
Naja.
Früher, als man noch deutsch und nicht denglish sprach, hiessen die 
Controller noch Ein-Chip-Mikrocomputer. Und genau das sind sie heute 
mehr denn je. Auf den Dingern ist alles drauf, was man braucht: ROM, 
RAM, Ports, Timer...
Auf einem Core i7 ist das nicht alles drauf, genauso wie bei dessen 
Urvater dem 8086.
An einen AVR kannst du eine Batterie und eine Leuchtdiode anschliessen 
und die Leuchtdiode bis die Batterie leer ist blinken lassen. Versuch 
das mal mit einem PC-Prozessor.

Diesen Unterschied würde ich nicht als kaum bezeichnen.

Du solltest wirklich jede Funktion des Controllers anhand des Tutorials 
durcharbeiten. Und dir ein möglichst einfaches C-Buch zur Hand nehmen, 
das nicht ständig mit Beispielen kommt, die nur auf einem PC laufen. Es 
nützt dir nichts am Beispiel einer Lagerverwaltung, war bei Pascal mal 
ein beliebtes Thema, die Prgrammiersprache zu lernen.

Ausprobieren kann man natürlich vieles auf dem PC. Das gleiche muß dann 
auch auf dem AVR laufen. Da zeigen sich dann aber auch ganz schnell die 
Unterschiede zwischen 8-Bit und 32-Bit Rechnern.

Fange Schritt für Schritt an.
So eine Art "Hello World". Taster anschliessen, LED anschliessen, Taster 
drücken, LED geht an, Taster los lassen LED geht aus.
Nächster Schritt: Taster einmal drücken LED geht an, Taster zweimal 
drücken LED geht aus. Wenn das läuft hast du einen Port gelesen, etwas 
auf einem Port ausgegeben, einen Taster entprellt und dafür einen Timer 
benutzt.
usw. usw.
Irgendwann bist du dann beim AD-Wandler, PWM, E²PROM, UART ...
Was du dazu brauchst findest du alles im Tutorial.

mfg.

von Masterofeye (Gast)


Lesenswert?

Ah das Tutorial sieht gut aus, wir arbeiten auch mit einem Amtel den 
ATmega 128 . Leider ist die Seite nach meinem empfinden etwas 
unübersichtlich aber das gibt sich mit der Zeit.

An Sepp.:

Ich kann ja nicht jeden Punkt nachfragen. Ausserdem haben wir es schon 
über den Studiendekan versucht und er macht genauso weiter... .

An Thomas Eckmann:

Ja mit LED blicken usw. haben wir schon hinter uns. Haben einen 
Schrittmotor angesteuert sind letztes mal beim ADC stehen geblieben und 
jetzt kommen Interrupts. Leider ist es in den Praktikas so das man sich 
von Schritt zu schritt hangeln muss, wo oft das Hardware wissen fehlt 
und man den Laboring. fragen muss.

Werde jetzt mal das Tutorial durchlesen.

Vielen dank an alle

LG Masterofeye

von Bernhard S. (b_spitzer)


Lesenswert?

Die Ursprüngliche Frage war ja nach Büchern:
http://www.amazon.de/dp/3895761761/

Heir geht es ziemlich ans Eingemachte:
http://www.amazon.de/dp/3895762180/
http://www.amazon.de/dp/3895762008/

Davon habe ich 8051-Version, die ist recht anschaulich:
http://www.amazon.de/dp/3486589881/

Einfach mal bei Amazon oder Google-Books reinblättern, oder in der UB 
ausleihen.

tschuessle
Bernhard

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.