Hallo, da ich derzeit doch hobbymässig viel C Code produziere möchte ich mal fragen wo ich Sammlungen von "Programmiertechniken" finde? Sowas nützliches wie das hier (Bit Twddling Hacks) http://graphics.stanford.edu/~seander/bithacks.html#OperationCounting IM Konkreten Fall geht es darum eine größere Menge voneinander abhängiger "Aktionen" zeitgesteuert durch eine RTC durchzuführen, wobei Techniken wie Blockierung von Routinen nach Durchlauf und eine größere Menge logischer Verknüpfungen auftreten bei denen man wahnsinnig werden würde, wenn man die in if then else verpacken würde. Zur klass. Statemachine kommt noch der Zeitfaktor hinzu aber es ist und bleibt schon eine Finite Statemachine. Nur eben mit Zählern darin. Aktuell arbeite ich mit einem ganzen Struct an globalen Flags und nahezu 10 Softwaretimern, die von der RTC abgeleitet werden, die mir 1HZ ausspuckt für den Interrupt, der die Timer hochzählt. Jeder Timer kann durch ein Bit gestartet, gestoppt und resettet werden durch die Statemachine. Der Interrupt fegt durch die Routine und führt das dann aus. Habt ihr da vielleicht Empfehlungen? Ich meine das wurde ja alles schon mal gemacht und davon würde ich gern profitieren.
Da sind die uralten Wälzer von Donald Knuth und Niklaus Wirth immer noch das beste.
Man kann auch parallele und ineinander geschachtelte Statemaschinen haben... Und ich wuerd dann mal eine PC Simulation schreiben, um zu pruefen ob alle Zustaende, und wie errecht werden koennen. Das Geniale an Statemaschinen ist das Debuggen. Man weiss wo der Code garantiert vorbeikommt, und muss sich dort nur die Variablen rausschreiben lassen. Desgleichen wartet man nur an einem Ort im ganzen Code. Und dort kann man auch nachsehen, wie kritisch das Timing ist, wieviel Zeit jeweils uebrig ist.
Noch einer schrieb: > Donald Knuth und Niklaus Wirth Niklaus Wirth hat nur 2 Bücher herausgebracht, eines über Pascal (was ich habe) und eines über Datenstrukturen. Knuth, der auch den Turing Award (Nobelpreis für IT) mal erhielt ist auf einer Ebene unterwegs auf die ich ihm nicht folgen kann und es ist alles Englisch, was bei Fachbüchern nicht grad gut zu lesen ist. Komplexe Statemaschines mit Timern, wie zb das Schalten von Ampeln an Kreuzungen würde ich auch als Zustände in einer Art Matrix als "array of struct" (Zustand, Bedingung, Aktion, naechster Zustand) implementieren, so dass keine endlose Folge von switch case Anweisungen dabei herauskommt. Es wird nur noch ein Pointer bewegt auf den jeweiligen Zustand.
Christian J. schrieb: > und es ist alles Englisch, was bei > Fachbüchern nicht grad gut zu lesen ist. Englische Fachbücher sind im allgemeinen deutlich besser zu lesen als deutsche. Ganz ohne Grundkenntnisse des Angelsächsischen geht es natürlich nicht, das ist dann aber kein Problem der Fachbücher. Oliver
Christian J. schrieb: > Noch einer schrieb: >> Donald Knuth und Niklaus Wirth > > Niklaus Wirth hat nur 2 Bücher herausgebracht, eines über Pascal (was > ich habe) und eines über Datenstrukturen. Hmm, von den zweien habe ich dann wohl das dritte, den meins handelt von keinem dieser beiden Dinge.
Hallo Fpga Kuechle. Fpga Kuechle schrieb: > http://www.oreilly.de/catalog/wenschleprogger/ Das kenne ich. Gibt gerade Anfängern wertvolle Tipps, und der Schreibstil von Frau Passig und Herrn Jander ist einfach genial! Es geht aber doch mehr ums allgemeine des Programmierens und weniger um eine Algorithmensammlung, was ich vermute der TO sucht. Trozdem würde ich dieses Bucht dem TO anraten. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.l02.de
:
Bearbeitet durch User
Christian J. schrieb: > Komplexe Statemaschines mit Timern, wie zb das Schalten von > Ampeln an Kreuzungen würde ich auch als Zustände in einer Art > Matrix als "array of struct" (Zustand, Bedingung, Aktion, > naechster Zustand) implementieren, so dass keine endlose > Folge von switch case Anweisungen dabei herauskommt. Glückwunsch! Du stehst kurz vor der Erfindung der Schrittkette. Die von den "richtigen" PC-Anwendungsprogrammierern im Allgemeinen verachteten Steuerungs-Fritzen machen so etwas seit ca. 30 Jahren auf ihren SPS...
>Sowas nützliches wie das hier (Bit Twddling Hacks) >http://graphics.stanford.edu/~seander/bithacks.html#OperationCounting Nützlich? Die Beispiele aus der Website erscheinen mir als Beispiele, wie man einfache Sache (unnötig) kompliziert machen kann: Compute the sign of an integer Detect if two integers have opposite signs Compute the integer absolute value (abs) without branching Compute the minimum (min) or maximum (max) of two integers without branching Es mag Fälle geben, wo man bei C das branching vermeiden muss, aber wie oft kommt das in der Praxis vor?
Softwerker schrieb: > Es mag Fälle geben, wo man bei C das branching vermeiden muss, aber wie > oft kommt das in der Praxis vor? Und nur weil man im C-Quellcode kein if oder ?: hat, bedeutet das noch lange nicht, daß der Compiler daraus keine Branch macht, genausowenig wie deren Vorhandensein bedeutet, daß eine Branch gemacht wird. Es gilt also damit nur für ganz spezifische Kombinationen aus Compiler und Prozessor, bei denen man ermittelt hat, daß der Compiler trotz Optimizer ineffizienten Code erzeugt.
Softwerker schrieb: > Es mag Fälle geben, wo man bei C das branching vermeiden muss, aber wie > oft kommt das in der Praxis vor? Für DSPs in rechenintensiven schleifen, kann das hilfreich sein. Ein falsch vorhergesagte Branches kann das ganze significant verlangsamen.
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.