Moin Freunde :-) Genügt eigentlich das K&R C um Mikrocontroller programmieren zu können oder muss es darüber hinausgehen? Irgendwelche guten Turorials die Ihr empfehlen könnt?
Hallo, nun alle die notwendigen Datenblätter und Application Notes zu deinem µC. C ansich ist nur die Sprache, basierend auf C Bibliotheken und Libraries kann man dann die Hardware auch einfacher ansprechen. Dabei muss man sich auch in Bits-Manipulation, logischen Verknüpfungen und Programmdesign auskennen.
Im Buch wirst Du wohl keine Beispiele finden, wie man bei einem AVR ein Pin auf 1 oder 0 setzt, mit einem Sensor kommuniziert usw. Diese Information findet man in den Datenblättern. Wenn Du noch keine Programmiererfahrung hast, wäre das eine mögliche Vorgehensweise: - mit K&R C auf einem Computer erlernen (auch Aufgaben bearbeiten) - mit Datenblatt Mikrocontroller erlernen
K&R reicht prinzipiell aus. Formell veraltet (mindestens C89 sollte es schon sein, mit Warnungen an) Zudem hast Du meist keine Shell (Tastatur, Textausgabe) sondern Taster, LEDs oder LCDs. Dafür braucht es meist HW-Kenntnisse und/oder Compiler-Erweiterungen (#pragma, HAL, Libraries fürs Board).
Gibt es denn ein "C für Embedded Systeme" kostenfrei welches Ihr inhaltlich empfehlen könnt? Auf Google findet man jede Menge, aber woher soll ich als lerneder wissen was jetzt ok ist und was nicht :-)
Ich will mir nicht ausmalen, daß es tatsächlich noch Leute gibt, die mit K&R-C arbeiten wollen. Das ist ... schrecklich. Und massiv fehlerträchtig.
1 | int funktion() |
2 | int bla; |
3 | int fusel; |
4 | {
|
5 | machwas(bla, fusel); |
6 | return bla; |
7 | }
|
K&R-C kennt keine Funktionsprototypen mit Argumenten, der Protoyp obiger Funktion sieht so aus:
1 | int funktion(); |
Der Compiler kann also nicht überprüfen, wie viele Argumente die Funktion übergeben haben möchte oder welchen Typ sie haben sollen, denn von der Funktion sind nur der Typ ihres Rückgabewerts und ihr Name bekannt. C89, wie in der zweiten Ausgabe des K&R beschrieben, war ein riesiger und vor allem dringend nötiger Fortschritt. Auch wenn das Buch in der zweiten Ausgabe immer noch "K&R" genannt wird, die darin beschriebene Sprache ist nicht K&R-C, sondern "ANSI-C" resp. C89. Damit kann man auch heutzutage etwas anfangen. Zwar sind mit C99 und C11 mittlerweile neuere Standards herausgekommen, die auch nach und nach von verschiedenen Compilern umgesetzt werden, die Neuerungen aber dienen im Wesentlichen der Bequemlichkeit.
Rufus Τ. F. schrieb: > die darin beschriebene > Sprache ist nicht K&R-C, sondern "ANSI-C" Würde bedeuten, dass die zweite Ausgabe durchaus nützlich ist. Aber ich suche auch noch etwas mit Schwerpunkt auf Mikrocontroller.
Prinzipiell geht das schon aber interessanterweise sollte es aber Probleme geben, eine solche Antiquität zu besorgen und dann auch noch zum Laufen zu bekommen. Also kein Problem. Die meisten Hersteller liefern zu ihren Bauteilen auch eine Entwicklungsumgebung mit, die minimal einen C-Compiler beinhaltet. Also auch hier kein Problem. Viele Umgebungen haben ein GNU auf der Wiese. Dieser Compiler ist an die meisten Zielplattformen angepasst. Also Arbeiten unter Windows oder Linux (Intel bzw. AMD) und programmieren für XXX.
Definitif NEIN K&R entstand auf und für PDP Rechner. Mikrocontroller haben heute viel mehr Taktrate und Speicher als die damaligen Minicomputer
matschikopfi schrieb: > Moin Freunde :-) Genügt eigentlich das K&R C um Mikrocontroller > programmieren zu können oder muss es darüber hinausgehen? Irgendwelche > guten Turorials die Ihr empfehlen könnt? Grundsätzlich gilt: Kenntnis einer Programmiersprache allein, egal welcher, genügt nicht um Software zu entwickeln. Man braucht auch Domänenwissen. Man braucht Verständnis um die Anforderungen, die es zu erfüllen gilt. Man braucht ein Verständnis der Hardware, die anzusteuern ist. Nur programmieren alleine reicht nicht.
Programmiersprachentheaterintendant schrieb: > Definitif NEIN > > K&R entstand auf und für PDP Rechner. > Mikrocontroller haben heute viel mehr Taktrate und Speicher als die > damaligen Minicomputer Was hat die Dokumentation der Sprache C mit der Taktrate zu tun? Das wirst du uns sicherlich noch erläutern, oder?
matschikopfi schrieb: > Würde bedeuten, dass die zweite Ausgabe durchaus nützlich ist. So habe ich das gemeint. > Aber ich suche auch noch etwas mit Schwerpunkt auf Mikrocontroller. Das hat dann aber nichts mehr mit der Sprache an sich zu tun. Und da es sehr unterschiedliche Microcontroller gibt, lässt sich deren Programmierung in C auch nicht allgemein zusammenfassen; wer beispielsweise auf einem Atmel AVR in C unterwegs ist, muss an ganz andere Dinge denken als jemand, der Programme in C für einen ARM oder einen MSP430 schreibt. Allgemein kann man nur sagen, daß ein Betriebssystem im eigentlichen Sinne nicht vorhanden ist, also auch nicht auf dessen Dienste zurückgegriffen werden kann (Dateisystem, Benutzerverwaltung, Speicherverwaltung, Devicetreiberverwaltung etc.), sondern daß die benötigten Funktionen jeweils auf anderem Wege nachzubilden sind. Ein Grenzgebiet ist da die Anwendung von "embedded linux", da hier ein Betriebssystem mit all' den Annehmlichkeiten eingesetzt wird, aber hier kann man auch nicht mehr unbedingt von Microcontrollern reden.
> Aber ich suche auch noch etwas mit Schwerpunkt auf Mikrocontroller.
Ganz allgemein wird es das wohl kaum geben.
Das liegt aber nicht an der mangelnden Nachfrage, sondern weil "hinter"
dem C-Compiler die µP Hardware steht und hier wiederum jeder Hersteller
sein eigenes Süppchen kocht.
Anders ausgedrückt: Was für einen TI ST32 gilt sind für einen Atmel
Atmega böhmische Dörfer.
Eine Hilfe sind aber die (oft ausführlichen) Manuals zu den einzelnen
Chips. Viele Hersteller publizieren Codefragmente, die die einzelnen
Funktionen aktivieren.
Nachteil: Oft sind die Handbücher zum µP "dicker" wie die eigentliche
C-Referenz.
Eine mögliche Vorgehensweise: Guck Dir einen Hersteller und einen Chip
aus; besorg Dir die Entwicklungsumgebung des Herstellers, und Richte ein
Projekt mit Deinem Wunsch-Chip ein.
Nach dem Start steht meist ein C-Compiler zur Verfügung mit vielen, vom
Hersteller gelieferten Bibliotheken und Makros. Natürlich könnten dann
ein C-Handbuch oder ein funktionierender Internetanschluss helfen, und
eine Kopie des Handbuchs zu Deinem Liebling.
Manchmal ist sogar ein Softwaresimulator im System, so dass Du völlig
ohne den eigentlichen Chip (zu kaufen), erste Schritte machen kannst.
und auch mal daran denken: Man kann bei seiner Google Suchfrage z.B. nach „C Programmierung“ oder „C Programming“ oder „C Tutorial“ oder … auch mal ein „filetype:pdf“ oder „filetype:ps“ anhängen. An vielen Unis werden Vorlesungsskripte veröffentlicht. Die findet man z.B. vorzugsweise mit dem Filetype pdf oder ps als Filter. Und wenn man dann z.B. noch AVR in die Suchfrage einbaut, bekommt man auch die PDFs der freundlichen Leute angezeigt, die bei ihrem C-Tutorial an Mikrocontroller Programmierung gedacht haben. Für den Einstieg nimmt man davon einfach das, was gefällt. Dann fällt der Einstieg auch leichter. :-)
ISO/IEC 9899:201x "Programming languages — C" Mehr braucht Mann nicht.
Arduino und C++ wäre ein einfacherer und besser dokumentierter Einstieg in die Welt der Mikrocontroller. Einfach der Masse hinterlaufen, individual-Lösungen kosten zuviel Zeit.
matschikopfi schrieb: > Genügt eigentlich das K&R C um Mikrocontroller > programmieren zu können oder muss es darüber hinausgehen Genügen würde es (eine PDP war leistungsmässig auch nichts anderes als ein aktueller uC, was user Programmiersprachentheaterintendant wohl nicht weiss) aber niemand tut sich das an. Die Frage ist eher: Normales C im Sinne von C99 oder C++ im Sinne von Stroustrup. Da muss man sagen, daß normales C reicht (aber mit allen Nützlichkieten gegenüber K&R, die der Compiler im Vorfeld an deinen Flüchtigkeitsfehlern abfangen kann). Bei C++ mag man zwar manches vorgefertigtes (STL etc.) gerne nutzen, aber C++ verschleiert doch sehr den Aufwand der dahinter steckt. Es hat schon seinen Grund, warum es auf der PDP kein C++ gab.
matschikopfi schrieb: > Irgendwelche > guten Turorials die Ihr empfehlen könnt? matschikopfi schrieb: > Gibt es denn ein "C für Embedded Systeme" kostenfrei welches Ihr > inhaltlich empfehlen könnt? Tutorial: Hier auf mikrocontroller.net: links oben auf "AVR", dann auf "AVR-GCC-Tutorial" https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Buch (für AVR Assembler und C) Schmitt, Günter Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie Programmierung in Assembler und C - Schaltungen und Anwendungen https://www.degruyter.com/view/product/221318
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.