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
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
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.
Schreib dir deine eigene Api. Sauber getrennt in Bibliotheken kannst du nacher deine Quellen auch sehr schnell auf einen anderen µC portieren.
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.
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.
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.
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?
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.
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
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.
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.
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· 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. :-)
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.
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.
Protestantische Arbeitsethik: wenn schon arbeiten, dann muss es richtig wehtun :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.