Forum: Mikrocontroller und Digitale Elektronik K&R C ausreichend für Mikrocontrollerprogrammierung?


von matschikopfi (Gast)


Lesenswert?

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?

von Karl M. (Gast)


Lesenswert?

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.

von Ja (Gast)


Lesenswert?

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

von A. S. (Gast)


Lesenswert?

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).

von matschikopfi (Gast)


Lesenswert?

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 :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von matschikopfi (Gast)


Lesenswert?

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.

von Amateur (Gast)


Lesenswert?

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.

von Programmiersprachentheaterintendant (Gast)


Lesenswert?

Definitif NEIN

K&R entstand auf und für PDP Rechner.
Mikrocontroller haben heute viel mehr Taktrate und Speicher als die 
damaligen Minicomputer

von Mark B. (markbrandis)


Lesenswert?

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.

von npn (Gast)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Amateur (Gast)


Lesenswert?

> 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.

von GoogleNutzer (Gast)


Lesenswert?

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. :-)

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

ISO/IEC 9899:201x "Programming languages — C"

Mehr braucht Mann nicht.

von J. W. (nuernberger)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Alexander S. (alesi)


Lesenswert?

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
Noch kein Account? Hier anmelden.