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
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.
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.
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
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)
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.
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
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.