Forum: Mikrocontroller und Digitale Elektronik Effektiv arbeiten ?


von Robert I. (robert_i39)


Lesenswert?

Hallo,

Ich würde gerne wissen ob es sinnvoll bzw besser wäre einen eigenen 
uController für eine Anzeige die im Multiplex betrieb läuft zu haben?

Wenn ich zb von einem Sensor einen Wert einlese und davon den Mittelwert 
bilde dauert das alles ja eine gewisse Zeit und diese Zeit wird dann an 
der Anzeige sichtbar, so dass sie flackert bzw ein Element kurz gar 
nicht leuchtet.

Da ich gerade am lernen bin weiss ich nicht ob mein Gedanke richtig bzw 
sinnvoll ist einen Controller für die Anzeige und einen separaten 
Controller für die Auswertung zu haben?

Danke euch

von Karl H. (kbuchegg)


Lesenswert?

Robert I. schrieb:
> Hallo,
>
> Ich würde gerne wissen ob es sinnvoll bzw besser wäre einen eigenen
> uController für eine Anzeige die im Multiplex betrieb läuft zu haben?

Kommt drauf an.
Mit einem eigene Controller handelt man sich eine weitere 
Software-Schicht ein, die man ansonsten nicht bräuchte. Denn dieser 
eigene Cotroller ist ja kein Hellseher. D.h man braucht eine 
Kommunikationsschicht vom Hauptprozessor zum Controller.

> Wenn ich zb von einem Sensor einen Wert einlese und davon den Mittelwert
> bilde dauert das alles ja eine gewisse Zeit und diese Zeit wird dann an
> der Anzeige sichtbar, so dass sie flackert bzw ein Element kurz gar
> nicht leuchtet.

Dann machst du etwas falsch.
Multiplexing macht man mit Interrupt. D.h. die Mittelwertrechnerei etc. 
wird von einem regelmässigen INterrupt unterbrochen, die Anzeige auf den 
neuen Stand gebracht und erst wenn dann die nächsten Segmente leuchten, 
darf die Mittelwertrechnerei zu Ende rechnen.

Sensorauslesen könnte zu einem kleinen Problem werden, wenn das 
Protokoll dergestalt ist, dass es zeitkritisch wird. Ein naives Auslesen 
eines DS1820 durch Protokollimplementierung mittels delays könnte da zb 
darunterfallen, wenn sich die Zeitfehler im Laufe der Übertragung eines 
Bytes zu sehr akkumulieren, wenn die Multiplexfrequenz sehr hoch ist.

> sinnvoll ist einen Controller für die Anzeige und einen separaten
> Controller für die Auswertung zu haben?

Es ist NIE sinnvoll, mehrere Controller für eine Arbeit einzusetzen, die 
einer alleine problemlos schaffen kann. Ehe man diese Option ins Auge 
fasst, sollte man erst mal in sich gehen und sich fragen, ob man 
tatsächlich ein reales technologisches Problem hat oder ob nur die 
eigenen Fähigkeiten in der Programmierung nicht ausreichen. Leider 
überschätzen sich gerade Neulinge bzw. Anfänger gerne in letzterem 
Punkt. Und so kommt es dann, dass sie Mehrprozessorsysteme planen, die 
erstens unnötig sind und zweitens ihre Fähigkeiten immer noch 
übersteigen, weil sie es komplett unterschätzen, was nötig ist, damit 
die Prozessoren untereinander geordnet kommunizieren können.


Krassestes Beispiel aus der letzten Zeit war wohl ein Schüler, der eine 
LED Matrix auf 2 µC aufgeteilt hat, weil er nicht wusste, wie er die 
ganzen Anschlüsse der Matrix auf einem µC bedienen solle. Das sieht auf 
den ersten Blick einfach aus, womit er aber nicht gerechnet hat war die 
Kommunikation und das sich seine Spiellogik jetzt extrem verkompliziert, 
weil er unterscheiden muss, auf welchem µC jetzt eigentlich welche LED 
(die den Ball anzeigen soll) leuchten soll, bzw. wie Bewegungen des 
Tennisschlägers je nachdem auf die unterschiedlichen Matrixteile 
verteilt werden müssen. Was bei lediglich einem µC trivial ist, artete 
sich für ihn zum Albtraum aus.
Dabei wäre sein eigentliches Problem mit nur 1 µC und ein paar 
Schieberegister leicht zu lösen gewesen.


interrupt-getriebenes Multiplexing für ca. 4 bis 6 Anzeigen, zwackt 
weniger als 0.1% der Rechenzeit ab (hängt natürlich auch von der 
Multiplexfrequenz ab), so dass in einem normalen Programm (mit Ausnahme 
von zeitkritischen delays, deren Fehler sich akkumulieren können) ein 
Multiplexing für den Rest des Programms keinerlei großartige Bedeutung 
hat.

: Bearbeitet durch User
von Peter R. (pnu)


Lesenswert?

Solch eine Auftrennung in Bausteine wäre ein Luxus für kommerzielle 
Anwendung. Da ist jeder zusätzliche Baustein ein erheblicher 
Kostenfaktor.

Schön für den Bastler ist jedoch, dass durch die Auftrennung einzelne, 
besser beherrschbare Einheiten entstehen.

Warum soll man eine Display-Software mit mit passender LED- oder 
LCD-Hardware in jedes Projekt neu integrieren oder sich Gedanken drüber 
machen, obs beim neuen Projekt am Display oder am neuen Programm liegt?

Ich selbst habe z.B. mehrere LED-Einheiten herumliegen: 4-stellig, rot 
3stellig grün, LCD zweistellig, die bei verschiedenen Projekten 
entstanden sind und auch mehrfach eingesetzt werden.

Die Einheiten sind mit I2C- Schnittstelle ausgestattet und wie ein 
I2C-Baustein anwendbar.

Das Timing der I2C-Schnittstelle belastet den Ablauf im 
"Projektkontroller" kaum, sodass die Software einfacher strukturiert 
ist.

So gemacht wird es ja eigentlich bei den Punktmatrix-LCDs:

Der LCD-Baustein ist getrennt vom eigentlichen Projekt und hat seinen 
eigenen Kontroller.

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.