Hallo, ich wollte mit der Mikrocontroller-Programmierung in C anfangen. Dafür musste ich erstmal C lernen und habe das Buch "C Programmieren von Anfang an" gekauft. Gleichzeitig lese das Tutorial auf diese Webseite. Irgendwie habe ich das Gefühl das sind total 2 unterschiedliche Welten. Das was in dem Buch erklärt wird, bringt mich nicht weiter mit dem Mikrocontroller Programmieren. Ich wollte wissen ob es ein Buch gibt, wo nur C für Mikrocontroller-Programmierung behandelt wird? oder soll ich weiter das Buch zu Ende lesen und dann mit dem Tutorial weitermachen? Danke
Erst am Computer lernen, dann auf µP umsteigen. Grund: Am PC hat man weit mehr Debugmöglichkeiten und deutlich weniger potentielle Fehlerquellen.
Johannes schrieb: > Irgendwie habe ich das Gefühl das sind total 2 unterschiedliche Welten. > Das was in dem Buch erklärt wird, bringt mich nicht weiter mit dem > Mikrocontroller Programmieren. Richtig. Trotzdem ist es empfehlenswert, die ersten SChritte (ungefähr das erste Drittel bis ca. die Hälfte) erst mal auf einem PC durchzuackern und sich dort das Grundgerüst und die Grundlagen der C-Programmierung an sich zu holen. µC Programmierung ist dann die Spezialisierung davon. Dort tauchen die gleichen Grundlagen wieder auf, aber auch spezielle Problemkreise, die es so auf einem PC nicht gibt. > Ich wollte wissen ob es ein Buch gibt, wo nur C für > Mikrocontroller-Programmierung behandelt wird? oder soll ich weiter das > Buch zu Ende lesen und dann mit dem Tutorial weitermachen? Ich würde dir raten, dir ein Entwicklungssystem für den PC zu besorgen und dort erst mal mit dem allgemeinen C-Buch die Basis von C durchzukauen. Der Umstieg auf den µC fällt danach wesentlich leichter. Der genaue Grund liegt darin, dass du am PC erst mal eine komplett funktionioerende Infrastruktur hast. Ein printf auf dem PC gibt auf der Konsole aus, ohne dass du dich darum kümmern musst. Auf einem µC hingegen fängst du bei 0 an. Da 'funktioniert' von alleine erst mal gar nichts. Selbst für das kleinste Lebenszeichen, das der µC von sich gibt, musst du schon eine Menge wissen. > > Danke
Johannes schrieb: > Irgendwie habe ich das Gefühl das sind total 2 unterschiedliche Welten. Das ist richtig. > Das was in dem Buch erklärt wird, bringt mich nicht weiter mit dem > Mikrocontroller Programmieren. Naja, ganz so extrem würde ich das nicht sehen. Die C-Syntax ist immer die gleiche. Man nutzt halt weniger Standard-Bibliothek und mehr direkte Hardware-I/O und Bitgefummel, aber die Grundlagen sind trotzdem gleich. Wenn du dir die mal am PC angeeignet hast, ist der µC-Einstieg deutlich einfacher. > Ich wollte wissen ob es ein Buch gibt, wo nur C für > Mikrocontroller-Programmierung behandelt wird? oder soll ich weiter das > Buch zu Ende lesen und dann mit dem Tutorial weitermachen? Das wäre empfehlenswert.
Empfehlen würde ich zum Start, erst einmal zu studieren, wie ein Computer funktioniert, vom Programmieren her, dabei spielt die Sprache keine Rolle, erst dann wählt man die Sprache, da ein PC und ein uC sich da gar nicht verschieden sind, wird so das Verständnis beim Programmieren von uC wesentlich einfacher. C Programmierung unter Windows für Anfänger behandelt selten die Hardwarenahe Programmierung, welche für uC wichtig ist.
Ja, bitte lern erst solides C Grundwissen am PC. Du tust dir selber und den Leuten hier im Forum damit einen grossen Gefallen. Du musst nicht bis in die exotischsten Kapitel der C Programmierung vorstossen, aber die Basics sind halt superwichtig egal was du programmierst. Danach brauchst du nur noch 15 Minuten um hier im Tutorial die Bitmanipulationen anzuschauen und du kannst µc programmieren (die eigentliche Arbeit ist dann die Infos aus den Datenblättern zu holen, aber C-technisch hast dus im Griff).
Micha Schweizek schrieb: > C Programmierung unter Windows für Anfänger behandelt selten die > Hardwarenahe Programmierung, welche für uC wichtig ist. In jedem besseren Buch stehen auch Bitmanipulationen u.ä. drin. Und dann ist C eben C, ob auf dem uC oder PC. Kann meinen Vorrednern nur zustimmen. Erst auf dem PC Grundlagen lernen, dann ein kleines Eval-Board kaufen (fertige Hardware-->keine/wenig Fehler) und damit die ersten Schritte in Richtung Embedded machen. Wenn man da dann fit ist, kann man sich auch noch mit der Hardware beschäftigen wenn man will. Typisch für den uC Einstieg sind Atmel oder Microchip. Vom Preis lohnt sich auch TI (LaunchPad). Grüße
SNR schrieb: > Micha Schweizek schrieb: >> C Programmierung unter Windows für Anfänger behandelt selten die >> Hardwarenahe Programmierung, welche für uC wichtig ist. > > In jedem besseren Buch stehen auch Bitmanipulationen u.ä. drin. > Und dann ist C eben C, ob auf dem uC oder PC. Dann versuche mal unter Windows ab 2000 den PC internen Lautsprecher direkt über die Hardware einen Ton zu entlocken, wie es unter Win98 noch ging, das ist Hardware nah, so bleibt nun nur noch Beep(); Systembits kann man nicht mehr, oder nur sehr schwer direkt manipulieren unter aktuellen Betriebssystemen, von daher würde es auch kein Author beschreiben, da keiner was erklärt, was nicht geht. Was ich damit sagen will ist, das kein Buch mehr beschreibt, wie man Systemnah Bits und Bytes setzt, da jedes Betriebssystem seine Routinen dazu liefert, also nicht mehr Systemnah. Was wiederum bei uC der Fall ist
http://books.google.de/books/about/Expert_C_programming.html?id=4vm2xK3yn34C Unbedingt zu empfehlen als Nachschlagewerk, da sind eine Unmenge Hintergründe drin erklärt.
Micha Schweizek schrieb: > Was ich damit sagen will ist, das kein Buch mehr beschreibt, wie man > Systemnah Bits und Bytes setzt, da jedes Betriebssystem seine Routinen > dazu liefert, also nicht mehr Systemnah. Um C zu lernen, kann man die Bits auch erst einmal systemfern manipulie- ren. Es gibt genügend Übungsbeispiele, die man problemlos auf dem PC programmieren kann, z.B.: Analyse von IP-Adressen: http://www2.hs-fulda.de/~klingebiel/c-uebung/ueb08/index.htm Gewinnstrategie für Nim-Spiel: http://de.wikipedia.org/wiki/Nim-Spiel Grafikroutinen (Linien, Kreise, Textzeichen usw.) für Bitmap-Grafiken: Man baut die Grafik bitweise im Speicher auf und speichert sie zu. Kontrolle als BMP-Datei ab. http://de.wikipedia.org/wiki/Windows_Bitmap Das Erfolgserlebnis ist groß, wenn diese Datei tatsächlich in einen Imageviewer geladen werden kann und das erwartete Bild angezeigt wird. ... Und ein C-Buch, das die dazu benötigten Operationen nicht beschreibt, gehört schlichtweg auf den Müll. Wenn man das alles kapiert hat, ist das Setzen und Löschen von Bits in I/O-Registern eines Mikrocontrollers überhaupt nicht mehr magisch. Der wesentliche Unterschied zu den PC-Variablen besteht darin, dass von den I/O-"Variablen" Drähte nach außen gehen, was die ganze Sache natürlich noch etwas spannender macht, aber keinesfalls schwieriger.
Yalu X. schrieb: > Wenn man das alles kapiert hat, ist das Setzen und Löschen von Bits in > I/O-Registern eines Mikrocontrollers überhaupt nicht mehr magisch. Der > wesentliche Unterschied zu den PC-Variablen besteht darin, dass von den > I/O-"Variablen" Drähte nach außen gehen, was die ganze Sache natürlich > noch etwas spannender macht, aber keinesfalls schwieriger. Danke, so hatte ich das auch gemeint. Dass der Einstieg auf dem PC geeigneter ist, haben wir ja Einstimmig festgestellt. Eben aus dem Grund weil man sich um viele Dinge nicht mehr kümmern muss (Systemlautsprecher über Bits ansteuern), sondern die fertigen Bibliotheken oder Klassen auf viel höherer Ebene verwenden kann (und sei es nur dass man die Frequenz und die Dauer angeben kann). Aber so wie Yalu schon sagte, wenn man mal die Grunddinge wie Variablendeklaration/definition, Funktionsaufrufe u.ä. Dinge beherrscht dann ist der Umstieg auf uC (zumindest aus Sicht der reinen Programierung) nicht mehr schwer. Grüße
SNR schrieb: > Aber so wie Yalu schon sagte, wenn man mal die Grunddinge wie > Variablendeklaration/definition, Funktionsaufrufe u.ä. Dinge beherrscht > dann ist der Umstieg auf uC (zumindest aus Sicht der reinen > Programierung) nicht mehr schwer. Ich würde sagen, wünschenswert wäre * Variablendefinitionen, Datentypen * zumindest grundlegende Kentnisse in Type-Promotion * die C Sprachelemente if, while, do - while, for, switch - case * Funktionen, Argumentpassing, Prototypen * Arrays * Strings * Strukturen * die wichtigsten Dinge mit dem Präprozessor: #include, #define * Casting * Basics in Pointer * Verständnis dafür, wie eigentlich der Prozess des Compilierens, Links abläuft bzw. was dabei geschieht - Projektverwaltung * arithmetische Operationen, boolsche Operationen, logische Operationen für den Umstieg nicht so wichtig (wenn dann natürlich auch in der C-Weiterbildung notwendig), die schwierigeren Themen * dynamische Allokierungen * komplexere dynamische Datenstrukturen wie Listen, Bäume, Maps, ... * dynamische Strings * Files Wenn der erste Teil so einigermassen sitzt, hat man ein ganz gutes Grundgerüst, so dass einem auf einem µC C-technisch nichts mehr so schnell erschüttert oder vor unüberwindliche Probleme stellt. So in etwa umfasst der erste aufgezählte Teil in einem durchschnittlichen C-Buch so ca. die erste Buchhälfte.
@Yalu X. und Alle, Es ging mir im Wesentlichen nicht um das Werkzeug, also das „Wie“, sondern um das, dass man auch versteht was man später tut. Das wird nicht beschrieben, daher mein erstes Posting hier, das man sich mit der Computer Architektur zunächst befassen sollte. Wie man Bits setzt und löscht kann man sogar locker so verstehen, aber das Warum sollte eine Rolle spielen. Der Beste C Programmierer unter Windows, welcher kein Plan hat wie ein Computer intern funktioniert, wird ohne Rückfragen dazu nicht klar kommen. Weiter sollte man verstehen, dass nicht alle CPU’s gleich sind, gerade uC haben einen abgespeckten RISC Befehlssatz, die meisten Bücher über C, beziehen sich auf die gängigsten Bibliotheken, welche unter nahezu jedem Betriebssystem tauglich ist, auf dem uC nicht. Um C als Grundstock zu lernen ist es natürlich OK, aber mit dem Ziel Systemnah, sollte man zunächst lernen, unabhängig von einer Programmiersprache, wie ein Computer funktioniert und Unterschiede kennen lernen. Was nützen mir Grafikoperationen im Binärbereich, wenn im Buch nur beschrieben ist, wie ich diese auf ein Win-Canvas zeichne, besser wer, wenn man sagen könnte (wie damals unter C64 oder AMIGA), ab speicher Adresse xxx abspeichern. Daher eben meine Empfehlung, nicht nur die Sprache lernen, sondern Grundlegend und unabhängig wie eine Computer Architektur aufgebaut ist, damit man auch weiß, was man da macht, wenn man an Systembits rumspielt. Im Übrigen habe ich Hunderte kennen gelernt, welche der Überzeugung waren, wenn ich C lerne, kann ich auch uC programmieren und K.I.T.T bauen. Persönlich schreibe ich lieber Assembler und bleib im Rahmen des Befehlssatz des jeweiligen uC. Daher, wie funktioniert ein 8, 16, 32 Bit Rechner, was ist ein Befehlssatz, was ist RISC, was wird Unterstützt (läuft fopen() auf ATmel) etc. etc. etc. PP Nichts für Ungut, aber nur durch eine Sprache lernt man nicht gleich die Kultur mit…
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.