Guten Abend,
mich würde es mal interessieren, was die 10 wichtigsten Faustformeln aus
dem Bereich der Mikrocontroller sind, die man im Alltag beim Entwickeln
der Hard- und Software ständig benötigt (aus technischer Sicht) ?
0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
MobyDick schrieb:> mich würde es mal interessieren, was die 10 Wichtigsten-Faustformeln aus> dem Bereich der Mikrocontroller sind, die man im Alltag beim Entwickeln> der Hard- und Software ständig benötigt (aus technischer Sicht) ?>> 0.
Das Datenblatt.
> 1.
Gute Kenntnisse in der verwendeten Programmiersprache, am besten auch
ein Buch dafür.
> 2.
Wissen, was man machen will.
> 3.
Keep it simple, stupid an short.
> 4.
Optimiert wird erst ganz zum Schluss.
> 5.
Der Fehler steckt im Detail.
> 6.
Den Fehler immer erst bei sich selbst suchen.
> 7.
Für die banalen Fehler sucht man am längsten.
> 8.
Glückssteigernde Mittel sind gut gegen Frust (z.B. Schokolade).
> 9.
Mit guter Musik arbeitet es sich besser.
:-)
4) Wenn der µC nicht das macht, was du willst, dann ist nicht der µC
defekt, sondern du hast deine Wünsche in Form des Programmes falsch
formuliert.
Der µC bzw. der Compiler hat immer recht.
Und selbst wenn tatsächlich der Tausend-Gulden-Schuss eintritt, das
der Compiler nicht recht hat, hilft es dir nichts darüber zu
lametieren.
Binsenweisheit
Erfahrungen sind das unbestimmte Zeitintgral über die
eigenen Fehlschläge + Integrationskonstante C.
C= die Erfahrungen der Anderen.
C ist manchmal mehr wert.
11 1/2. Wenn gcc merkwürdige Fehlermeldungen oder Warnungen wirft, den
Code kurz mit Dummy-Funktionen versehen und in LLVM compilieren. Clang
bietet um den Faktor 100 besser aufbereitete Fehlermeldungen
(http://clang.llvm.org/diagnostics.html).
Mit Formeln kommt man nicht weit. Es gibt fürs Programmieren keine
Superformel und alles gelingt.
Aber es gibt Schritte, die das Programmieren einfacher und vor allem
zuverlässiger machen:
0. PC ausschalten
1. Pflichtenheft erstellen
2. überlegen
3. Ablaufplan erstellen
4. Ablaufplan überprüfen, ob logisch korrekt
5. dann erst PC wieder anschalten und PAP in Code umsetzen
6. Keine kryptischen Hexwerte im Programm
7. Laß den Compiler Konstanten ausrechnen, der kann das besser als Du.
8. Daten vom Interrupt im Main immer volatile casten
9. In Unterfunktionen aufteilen, es gibt keine untere Grenze dafür
10. nichts vermuten oder hoffen, sondern nachschlagen und prüfen (worst
case)
Peter
sei clever - aber nicht zu clever.
Dein Compiler ist viel smarter als du denkst (auch wenn einige das
bestreiten)
Zuerst machs richtig, und dann erst machs schnell.
Du hast nichts von einem Programm, welches alles rasend schnell
berechnet - wenn alles was es berechnet falsch ist.
Hallo,
um Karl heinz Buchegger von 23.12.2010 16:53 noch etwas zu verkürzen:
Ein µC macht nicht immer, was er soll.
Er macht aber IMMER, was man ihm sagt...
Gruß aus Berlin
Michael
Auch wenn es schon inhaltlich kam.
1. Irren ist menschlich.
2. Der Compiler irrt nie.
und
§1 Der Compiler hat immer recht.
§2 Sollte der Compiler mal nicht recht haben, so tritt automatisch §1 in
kraft.
> Ein µC macht nicht immer, was er soll.> Er macht aber IMMER, was man ihm sagt...
Es sei denn der Hersteller hats verbockt und es gibt ein ellenlanges
Errata Blättchen.
Dann macht er manchmal auch einfach was er will :-)
pöse pöse schrieb:> Es sei denn der Hersteller hats verbockt und es gibt ein ellenlanges>> Errata Blättchen.>> Dann macht er manchmal auch einfach was er will :-)
Trotzdem sitzt das größte Problem meistens vor dem Computer und nicht in
der Schaltung.
mfg.
Karl heinz Buchegger schrieb:> 7) Programmieren wäre so schön, wenn es keinen quengelnden Kunden>> gäbe
Wer seinem Kunden erzählt, was das Ding noch alles könnte, ist selber
schuld.
mfg.
Karl heinz Buchegger schrieb:> In einer ISR macht man keine Ausgabe auf UART oder LCD> Eventuell ein einzelnes Zeichen aber auf keinen Fall Strings
warum das?
Dokumentiere gut!
Präventiver Code: Wenn dir an irgendeiner Stelle bewusst wird, dass
bestimmte Umstände zu Katastrophen führen würden, sichere es so ab, dass
diese Fehler abgefangen und gemeldet werden.
Wenn Software irgendwo Mist macht, ignoriere es nicht, sondern lasse es
sofort sichtbar werden. Wenn nicht für den Benutzer, dann zumindest im
Logfile.
Benutze eine Versionsverwaltung für den Code, so das du immer auf eine
bestimmte Release zurückgreifen kannst.
1. Wenn etwas schiefgehen kann, dann geht es schief.
2. Wenn etwas auf verschiedene Arten schiefgehen kann, dann geht es
immer auf die Art schief, die am meisten Schaden verursacht.
3. Hat man alle Möglichkeiten ausgeschlossen, bei denen etwas
schiefgehen kann, eröffnet sich sofort eine neue Möglichkeit.
4. Die Wahrscheinlichkeit, dass ein bestimmtes Ereignis eintritt, ist
umgekehrt proportional zu seiner Erwünschtheit.
5. Früher oder später wird die schlimmstmögliche Verkettung von
Umständen eintreten.
6. Wenn etwas zu gut erscheint, um wahr zu sein, ist es das
wahrscheinlich auch.
7. Wenn etwas nicht schiefgegangen zu sein scheint, dann wurde der
Fehler lediglich noch nicht entdeckt, wodurch alles nur noch schlimmer
wird.
8. Geht etwas nicht schief, so tritt sofort Regel 1 in Kraft.
(Murphy's law, nach Wikipedia)
Ich kenne noch:
- Toleranzen addieren sich unabhängig vom Vorzeichen immer zur
ungünstigsten Seite.
- Das Butterbrot fällt immer auf die bestrichene Seite.
Ich hatte noch kein Projekt, bei dem nicht eine gehörige Portion Murphy
drin war.
Hc Zimmerer schrieb:> - Das Butterbrot fällt immer auf die bestrichene Seite.
Wie erst gestern in Wissen vor 8 bewiesen:
Das ist nur aufgrund der genormten Toastbrote-Abmessungen und der
durchschnittlichen, mitteleuropaeischen Tischhoehe so!
Karl heinz Buchegger schrieb:> sei clever - aber nicht zu clever.> Dein Compiler ist viel smarter als du denkst (auch wenn einige das> bestreiten)
Das bringt uns zu einer weiteren Standard-Regel:
"Assumptions are the root of all evil."
Darunter gehört auch die Annahme, der Compiler sei nicht smart genug,
aber auch die, der Compiler sei smart genug. Es gibt tatsächlich extrem
viel Code, wo nicht in einer Doku (von Compiler, Bibliothek oder
sonstwas) nachgelesen wurde, wie's richtig geht, sondern man einfach
irgendwas angenommen hat, das dann meistens nur zum Teil richtig ist.
Ich halte das für eine der größten Fehlerursachen überhaupt in der
Programmierung.
Thomas Eckmann schrieb:>> Dann macht er manchmal auch einfach was er will :-)>> Trotzdem sitzt das größte Problem meistens vor dem Computer und nicht in> der Schaltung.
Das kann korrelieren, wenn die Schaltung im Kopf vor dem Computer
entstanden ist ;-)
Thomas Eckmann schrieb:> Karl heinz Buchegger schrieb:>> 7) Programmieren wäre so schön, wenn es keinen quengelnden Kunden>>>> gäbe>> Wer seinem Kunden erzählt, was das Ding noch alles könnte, ist selber> schuld.
Meistens läuft es doch eher umgekehrt. Der Kunde kommt mit seinen ganzen
utopischen Forderungen und akzeptiert nicht, wenn man ihm sagt, daß das
Ding das nicht kann.
Floh schrieb:> Hc Zimmerer schrieb:>> - Das Butterbrot fällt immer auf die bestrichene Seite.>> Außer man bindet das Butterbrot auf eine Katzenrücken. Da die Katze> immer auf die Füße fällt, ist die Lösung nicht definiert :-)>> http://www.nichtlustig.de/comics/full/010712.jpg> :-)
Hoffentlich probiert das nie einer real aus. Wahrscheinlich fällt uns
dann der Himmel auf den Kopf, oder es gibt eine Raumfaltung, damit auf
beiden Seiten Boden sein kann.
- LEDs benötigen Vorwiderstand und können gut mit PWM (Interrupts)
programmiert werden
- Treiber hinter IC-Baustein
- Moore-Automat hängt nuuuur vom inneren Zustand ab
- Multimeter und Batterien haben Innenwiderstand
Rolf Magnus schrieb:> Meistens läuft es doch eher umgekehrt. Der Kunde kommt mit seinen ganzen>> utopischen Forderungen und akzeptiert nicht, wenn man ihm sagt, daß das>> Ding das nicht kann.
Dem kann man allerdings auch nicht widersprechen.
mfg.
11. Wenn man länger als 2 Tage erfolglos einen Programmierfehler in der
Firmware sucht, liegt das Problem mit großer Wahrscheinlichkeit in der
Hardware.
14. Müssen zwei Platinen über einen Stecker verbunden werden, dann wird
sicher einer falsch gezeichnet. (gespiegelt)
14.a Das garantiert bei jedem Projekt
14.b Auch nach 10 Jahren Berufserfahrung
Eine der wichtigsten: Vertraue keiner Faustformel!
Fausformeln beinhalten meistens starke Vereinfachungen. In 99.9% der
Fälle sind diese Vereinfachungen zwar zulässig und verändern das
Ergebnis nicht gravierend, trotzdem sollte man die Schwächen der
genutzten Faustformel kennen.
Dazu braucht man dummerweise genau das theoretische Wissen, das einem
die Faustformel ersparen möchte.