Krautkanal.com

Veröffentlicht am 2015-12-05 23:28:13 in /prog/

/prog/ 8153: Suppe, Bernd. Ich arbeite neben dem Studium bei einer k...

ajaxy_ru Avatar
ajaxy_ru:#8153

Suppe, Bernd. Ich arbeite neben dem Studium bei einer kleinen Klitsche und programmiere Kleinkontrolleure in C. Neben mir gibt es 2 fertige Ingenieure, die sich mit ähnlichen Projekten beschäftigen. Leider verwenden wir einen Fertigbausatz von Standardbibliothek. Und die Projekte sind recht simpel gehalten. Meist gehts darum irgendwelche Kommunikationsmodule per Bus anzusprechen oder irgendwas zu signalisieren. Alles kleine Brötchen. Was mich nervt ist aber, dass alles vorgekaut ist und man nichts lernt.

Du willst ins Flash schreiben?... Flash_Program_Halfword(...)

ADC-Wert auslesen? GetADCvalue(...)

Irgendwie ist alles schon fertig. Klar kriegt man damit schnell was gebacken, aber das funktioniert auch nur solange wie alles schnurstracks geradeaus geht. Ich hab keine Ahnung von Flags, ich hab wenig Ahnung von Interrupts, ich hab keine Ahnung vom Stack.

Wo kann man C-Projekte begutachten von denen man etwas lernen kann? Bevorzugt C für Mikrokontrolleure.

shoaib253 Avatar
shoaib253:#8155

Schau dir halt mal den Kwellkot der Standardbibliothek an. Schaue dir diverse Projekte von mikrocontroller.net an. Versuche eine bislang noch nicht von der Bibliothek unterstützte HW-Komponente eines Kontrolleurs in Betrieb zu nehmen. Bonuspunkte wenn du das noch schön in ein evtl. verwendetes Rahmenwerk oder OS einbaust.
Allgemein ist es aber keine Schande, etwas aus fertigen Legosteinen zusammenzustecken anstatt diese selbst zu gießen. Nur so wird man in endlicher Zeit mit komplexeren Projekten fertig.

llun Avatar
llun:#8160

Ich will dir nicht deinen Lernwunsch madig reden, denn ich finde es immer gut, wenn man sich in einem Gebiet weiterbilden will und für Grundlagen interessiert.

Aber was ich so aus meiner Mikrocontrollervorlesung mitgenommen habe, ist, dass hinter vielen Bibliotheksfunktionen für Microcontroller eigentlich keine Magie stecken, sondern sie einfach nur das Programm komfortabler und lesbarer machen. Zum Beispiel gibt es vermutlich ein festaddressiertes Byte im Arbeitsspeicher des Microcontrollers, wo immer der Wert des ADC steht. Anstatt dir den Inhalt dieses Bytes zu holen, rufst du halt die entsprechende Funktion auf, weil du dann
uint_8 wert = GetADCvalue(...);
schreibst, anstatt dem Pointer, der auf den entsprechenden Speicherbereich zeigt, nachzugehen. Letzteres wäre nämlich für Menschen deutlich schlechter lesbar.

Also nur, damit du dich nicht darauf versteifst, dass dir wichtiges Wissen vorenthalten wird.

wahidanggara Avatar
wahidanggara:#8168

Diese Funktion ist dann auch mal eben ersetzbar.

Was OP will wäre eigentlich eine Jugend in den 90ern mit nem 68k oder sowas.
Flägs gehn schon weit über C hinaus, Stack muß es standard-technisch auch nicht geben.
Wenn OP mit dem C geschlagen ist sollte er lieber dessen schwachsinnige Fußangeln erkunden.

vikashpathak18 Avatar
vikashpathak18:#8169

Oh und es gibt auch ganz alte Kontrolettis wo er noch jedes Bit schnüffeln kann, 8051 oder wie die Dinger heißen.

chris_frees Avatar
chris_frees:#8174

>>8169
> 8051
Spaßfakt: Der 8051-Kern wird heute immer noch gern in andere Systeme integriert wenn man noch irgendwo eine kleinen stromsparenden Prozessronny braucht:
https://en.wikipedia.org/wiki/Intel_MCS-51#Use_as_intellectual_property
Beispielsweise hat dieser Bernd mal diesen BLE-Chip anfassen dürfen:
http://www.ti.com/product/cc2541
Das Nervige in dem Fall war nur das Problem, dass der damit ausgelieferte BLE-Protokollstapel nur als Binärblob geliefert wird und nur mit einem kommerziellen Kompiler linkt. IAR war es glaube ich, Schafsweide musste es extra dafür kaufen. Kann sein dass das heute nicht meer nötig ist. Jedenfalls sind mir von dem Standpunkt die ARM*-Dinger lieber weil es meist mit gcc funktioniert. Sonst merkt man natürlich nicht viel von einem 8051 wenn man in C schreibt und eh nur ein paar Bibliotheksfunktionen aufruft und Rufzurücks implementiert.
Nutze gerne die Zange, schlimm?

cat_audi Avatar
cat_audi:#8177

Die Dinger sind doch so langsam und der Assembler so schön, daß C meh.
Gab auch schon vor 10..15 Jahren Z80 bei 40 MHz und erweitertem Befehlssatz und alles auf Schipp. Spieljunge war ja wohl auch ein abgefuckter (warum eigentlich?) Z80.