Forum: Offtopic Allgemeine Frage im Bezug auf die Arbeitswelt


von Johannes H. (Gast)


Lesenswert?

Hallo liebe Forenmitglieder :)

Als ein derzeitiger Student könnte ich es mir gut vorstellen, als 
Software-Entwickler speziell im Bereich Mikrocontroller-Programmierung 
zu arbeiten.

Jedoch haben wir das erste Semester wirklich ziemlich auf Registerebene 
gearbeitet, also wirklich Bit für Bit in den jeweiligen Register 
gesetzt, was ziemlich frustrierend war, da der verwendete 
Mikrocontroller ziemlich komplex war und alleine schon der ADC mehr als 
100 Register hatte. Leider habe ich auch schon die Erfahrung gemacht, 
dass wenn man ein Register nicht setzt oder zumindest "falsch", dass 
dann der uC entweder nichts macht oder nicht das macht was man braucht.

Meine Frage wäre jetzt, (speziell an die Leute, welche auch in diesem 
Bereich arbeiten) ob man in der Berufswelt wirklich auf Registerebene 
arbeitet oder auch API's verwendet? Weil ich kann mir nicht vorstellen, 
dass das für eine Firma rentabel ist, wenn man soviel Zeit rein 
investiert oder sehe ich das falsch?

Ich hoffe ihr könnt mir diesbezüglich paar Ratschläge geben.

Mit freundlichen Grüßen
Johannes H.

: Verschoben durch User
von Thorsten (Gast)


Lesenswert?

Du kannst es Dir aussuchen.

Es gibt auch Firmen, die schreiben die API.

Und es gibt Firmen, die benutzen nur die API.

Oder es gibt Firmen, die abstrahieren selbst das und sprechen nur noch 
von Steuergeräten und die Implementierung ist dann das Problem eines 
Zulieferer.

Viele Grüße
 Thorsten

von Dumdi D. (dumdidum)


Lesenswert?

Es gibt auch Firmen, die (zurecht) der Meinung sind wenn sie 10 Cent 
Produktionskosten sparen, dann ist das einen großen Entwicklungsaufwand 
wert. D.h. sollte es durch nicht Verwendung der Api möglich sein auf 
einen kleineren (in Sinne von Einkaufspreis) Chip umzusteigen, dann wird 
das gemacht.

von Curby23523 N. (Gast)


Lesenswert?

Schreib dir deine eigene Api. Sauber getrennt in Bibliotheken kannst du 
nacher deine Quellen auch sehr schnell auf einen anderen µC portieren.

von Peter D. (peda)


Lesenswert?

Johannes H. schrieb:
> da der verwendete
> Mikrocontroller ziemlich komplex war und alleine schon der ADC mehr als
> 100 Register hatte

Welcher MC ist das denn?
Ich vermute mal, da sind die Register für jeden MUX-Input separat, d.h. 
sie haben die gleiche Funktion. Also nichts kompliziertes.

Für komplexere MCs gibt es oft ne HAL-Lib, aber in meinen Augen ist das 
nur ne zusätzliche Zwischenschicht, d.h. das Datenblatt muß man trotzdem 
lesen, um das HAL zu verstehen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Johannes H. schrieb:
> Weil ich kann mir nicht vorstellen,
> dass das für eine Firma rentabel ist, wenn man soviel Zeit rein
> investiert oder sehe ich das falsch?

Es wäre noch weniger rentabel, die Zeit nicht zu investieren und dann 
überhaupt kein funktionsfähiges Produkt zu haben.

In der Tat gibt es aber mittlerweile für sehr viele Microcontroller auch 
schon funktionsfähigen Beispielcode und auch Bibliotheken. Zudem bieten 
einige Hersteller auch Konfiguratoren an, in denen man die gewünschten 
Peripheriefunktionen zusammenklickt und die dann entsprechende 
C-Quelltexte oder zumindest Includedateien generieren. Insbesondere wenn 
man mehrere Peripherieblöcke hat, deren benötigte Takte nicht durch 
einfaches Teilen voneinander abgeleitet werden können, sondern bei denen 
ggf. iterativ die Einstellungen für verschiedene PPLs und Frequenzteiler 
bestimmt werden müssen, sind solche Konfiguratoren sinnvoll.

In der Praxis stellt sich aber heraus, dass die mitgelieferten oder 
generierten Quelltexte und Bibliotheken manchmal auch ziemlich 
fehlerhaft sind und nur als Anregung verwendet werden können.

Alternativ kann man natürlich auch bei kommerziellen Anbietern für 
Bibliotheken, Betriebssystemen und Protokollstacks das erforderliche 
Kleingeld einwerfen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Nils H. schrieb:
> Schreib dir deine eigene Api. Sauber getrennt in Bibliotheken kannst du
> nacher deine Quellen auch sehr schnell auf einen anderen µC portieren.

Ich bezweifele, dass dieser Hinweis für den TE zielführend ist, denn zum 
einen hat er schon mit den Registern seine Probleme, und als Anfänger 
wird es ihm sicherlich nicht gelingen, wohlstrukturierte und gut 
wartbare Bibliotheken und APIs zu definieren. Das große Problem besteht 
ja in den Abhängigkeiten der Hardwareressourcen voneinander. Kaum hat 
man nämlich eine passable Struktur für die prozessorinternen Ressourcen 
gefunden, kommt dann die Einsatzumgebung, d.h. die umgebende Hardware, 
hinzu. Wenn die Pins knapp werden, werden ggf. Pins anderer 
Funktionsblöcke zweckentfremdet. Dann hängt plötzlich die 
Hintergrundbeleuchtung des LCD an einer freien Handshakeleitung des 
UARTs, so das man zusehen darf, wie man diese Abhängigkeit in seinen 
APIs und Treibern darstellt. Manche Hardwareentwickler sind da auch 
gnadenlos, insbesondere dann, wenn sie nicht einsehen, dass man bei der 
wenigstens Microcontrollern die Peripherieblöcke frei den Pins zuordnen 
kann. Im schlimmsten Fall muss man dann in Software einige 
Schnittstellen per Bitbanging bedienen.

Allerdings kann man bei einem solchen Versuch auch sehr viel lernen.

Wenn es hingegen schnell gehen soll und man naiverweise hofft, auf keine 
Probleme zu stoßen, kann man sich natürlich an den erwähnten frei 
zugänglichen Beispielquellen und Bibliotheken bedienen.

von Johannes H. (Gast)


Lesenswert?

Vielen Dank für die zahlreichen Antworten. Die einzige Möglichkeit, in 
diesen Gebiet bisschen Sattelfest zu sein, ist glaube ich auf 
registerebene programmieren, programmieren, programmieren oder habt ihr 
einen anderen Tipp für mich? Weil liege ich richtig wenn ich sage, dass 
wenn ich das progarmmieren auf Registerebene gut beherrsche, dann sollte 
die Benutzung der Bibliotheken kein problem sein oder?

von Peter (Gast)


Lesenswert?

Johannes H. schrieb:
> Weil liege ich richtig wenn ich sage, dass
> wenn ich das progarmmieren auf Registerebene gut beherrsche, dann sollte
> die Benutzung der Bibliotheken kein problem sein oder?
Das stimmt. Allerdings haben einige APIs Besonderheiten an die man sich 
erstmal gewöhnen muss. APIs helfen einem aber gut dabei, wenn zum 
Beispiel die Reihenfolge der Registereinstellungen wichtig ist.

Johannes H. schrieb:
> oder habt ihr
> einen anderen Tipp für mich?
Das Einstellen der Register muss man sich erst mal verinnerlichen. Wenn 
man es an ein paar Mikrocontrollern gemacht, geht es leichter.

von Dumdi D. (dumdidum)


Lesenswert?

Johannes H. schrieb:
> oder habt ihr einen anderen Tipp für mich

Guten Code lesen und versuchen zu verstehen. Wenn man immer nur selber 
programmiert merkt man ja nicht wo man besser werden könnte .

: Bearbeitet durch User
von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

Wer mit Z80-CPU, Z80-PIO, Z80-SIO und Z80-DMA gross geworden ist,
findet ueberhaupt nichts dabei, mal in ein "paar" Register
Werte zu schreiben um das Zeug in Betrieb zu setzen und zu halten.

Nur weichgespuelte Weicheier von heute schreien gleich nach einer API
die ihrem faulen/igen Hirn das bisschen Denken abnimmt.

von Wühlhase (Gast)


Lesenswert?

Aktuelles Beispiel bei uns (Studium Elektrotechnik):
Wir müssen für ein Fach einen Prüfplatz entwerfen.

Ich bin in einer etwas größeren Gruppe. Es ist einfach frustrierend 
wenn, wenn ein Teil der Leute keine Ahnung von Mikrocontrollern hat und 
ein paar andere sind der Meinung, mit einem Arduino könne man nur Zeiten 
im Millisekundenbereich auflösen. Nicht daß ich einen Arduino nehmen 
würde, aber manche kennen leider nix anderes. Und Mikrocontroller im 
Speziellen war kein Thema in unserem Studium.

Und nun überzeug die Leute mal daß da weitaus mehr geht, mit Timern und 
externen Interrupts und so...und "mehr" ist für unsere Aufgabe 
notwendig...ich hab (schon vor meinem Studium) AVRs in ASM programmiert. 
Und daher weiß ich wie das ein oder andere funktioniert. Und bin nicht 
auf APIs angewiesen. Selbst wenn ich diese nutze und nie wieder in ASM 
programmiere, so profitiere ich noch jahrelang von diesen Erfahrungen.


Grundsätzlich gilt: Du kannst dein Studium auf zwei Arten bewältigen.
1.) Durch Auswendiglernen.
Eigentlich läuft es in der Regel auf das sog. Bolemielernen raus. Bis 
zur Klausur alles rein in den Kopf, und nach der Klausur alles wieder 
vergessen, weil ja noch mehr Klausuren kommen.

2.) Durch Verstehen.
Du wirst die eine spezielle Anwendung mit hoher Wahrscheinlichkeit nie 
wieder sehen. Uralter Controller, veraltete Sprache, was auch immer. 
Aber du hast einige grundlegene Dinge und Mechanismen kennengelernt, die 
in gewisser Abwandlung immer wiederkommen. Neuere Techniken und deren 
Vorteile verstehst du weitaus besser als die, die nur auswendiggelernt 
haben.


Meines Erachtens ist jemand, der nur auswendig lernt, des Studiums nicht 
würdig. Was man auswendig wissen muß, steht in Büchern. Oder im 
Internet. Aber Verständnis-das findest du in deinem eigenen Kopf.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5009574:
> Wer mit Z80-CPU, Z80-PIO, Z80-SIO und Z80-DMA gross geworden ist,
> findet ueberhaupt nichts dabei, mal in ein "paar" Register
> Werte zu schreiben um das Zeug in Betrieb zu setzen und zu halten.

Ich bin genau mit diesen Bausteinen groß geworden und habe auch schon 
etliche Mikroprozessoren und Microcontroller auf dieser Registerebene 
programmiert. Und dabei habe ich festgestellt, dass die korrekten 
Einstellungen für PLLs, Taktgeneratoren usw. bei etlichen Prozessoren 
der letzten ca. 10 Jahre ein Ausmaß angenommen haben, dass eine rein 
händische Abschätzung der korrekten Konfiguration zu lästig und 
fehlerträchtig geworden ist.

> Nur weichgespuelte Weicheier von heute schreien gleich nach einer API
> die ihrem faulen/igen Hirn das bisschen Denken abnimmt.

Nur weichgespuelte Weicheier von heute verwenden so kleine 
Microcontroller, dass sie noch den Überblick über alle Register 
behalten. :-)

von Claus M. (energy)


Lesenswert?

Andreas S. schrieb:
> In der Praxis stellt sich aber heraus, dass die mitgelieferten oder
> generierten Quelltexte und Bibliotheken manchmal auch ziemlich
> fehlerhaft sind und nur als Anregung verwendet werden können.

jo

Andreas S. schrieb:
> Ich bezweifele, dass dieser Hinweis für den TE zielführend ist, denn zum
> einen hat er schon mit den Registern seine Probleme, und als Anfänger
> wird es ihm sicherlich nicht gelingen, wohlstrukturierte und gut
> wartbare Bibliotheken und APIs zu definieren.

Das gelingt den mir bekannten Herstellern aber auch nicht. Möchte 
wirklich mal wissen, wer das Zeug da zusammenfrickelt. Wahrscheinlich 
gelernte Informatiker aus Bangalore. Brrr, Ressourcenverschwendung und 
übler Code ohne Ende.

von Purzel H. (hacky)


Lesenswert?

Also ich finde es megaspannend mich in einen einzelnen chip 
einzuarbeiten. Es gibt Chips die haben so eine Funktionsvielfalt... wow. 
Irgendwann habe ich dann herausgefunden welcher mode fuer meine 
Anwendung passt, und welche Moden in der Zukunft allenfalls interessant 
sein koennten. Wenn ich diesen Chip die naechsten 10 Jahre verbaue hat 
es sich sicher gelohnt ein Tag darin zu investieren.

Sonst bin ich moeglicherweise falsch in meinem Beruf, resp. sollte mich 
langsam um orientieren.

von Bernd G. (Gast)


Lesenswert?

Protestantische Arbeitsethik: wenn schon arbeiten, dann muss es richtig 
wehtun :-)

von Michael E. (Firma: irgendeine) (nodalek)


Lesenswert?

Claus M. schrieb:
> Andreas S. schrieb:
>> In der Praxis stellt sich aber heraus, dass die mitgelieferten oder
>> generierten Quelltexte und Bibliotheken manchmal auch ziemlich
>> fehlerhaft sind und nur als Anregung verwendet werden können.
>
> jo
>
> Andreas S. schrieb:
>> Ich bezweifele, dass dieser Hinweis für den TE zielführend ist, denn zum
>> einen hat er schon mit den Registern seine Probleme, und als Anfänger
>> wird es ihm sicherlich nicht gelingen, wohlstrukturierte und gut
>> wartbare Bibliotheken und APIs zu definieren.
>
> Das gelingt den mir bekannten Herstellern aber auch nicht. Möchte
> wirklich mal wissen, wer das Zeug da zusammenfrickelt. Wahrscheinlich
> gelernte Informatiker aus Bangalore. Brrr, Ressourcenverschwendung und
> übler Code ohne Ende.

Was für Hersteller und Produkte sind das?
Leider hab ich noch nicht ganz die Erfahrung, um immer zu erkennen, ob 
es jetzt ein abschrekendes Beispiel ist, oder ob man es sich zum Vorbild 
nehemen soll. Oft frage ich mich, warum ist das jetzt so umgesetzt, 
obwohl ich es anders machen würde, manchmal erkennt man denn Sinn, und 
man lernt wieder ein Stückchen dazu, aber manchmal hat man einfach 
zuwenig Erfahrung in einem Bereich, um die Qualität beurteilen zu 
können.

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.