Forum: Mikrocontroller und Digitale Elektronik Atmega8 Mehrprozessorsystem


von vm2007 (Gast)


Lesenswert?

Hallo!

ich bin noch n00b in AVR prozessoren,

Nun meine Frage:
ist es möglich, ein echtes multiprocessor system mit mehrere AtMega8
auch mit 16Mhz zu schaffen ?

Die MCUs könnte über I/O ports kommunizieren.
Programmierer können ihre Programme in sogenannte Threads teilen. Diese
übernehmen dann die verschiedenen Aufgaben des Programms. Die
Kommunikation kann man mit Interrupts über I/O machen.

Die Aufgabe für mehr als 2 MCUs sehe ich schon nicht trivial.

von Philipp B. (philipp_burch)


Lesenswert?

Hi,

das ist relativ sinnlos. Es ist wohl möglich, seine Programme auf zwei
(oder mehr) Controller aufzuteilen, die dann z.B. mittels SPI
kommunizieren, das macht aber auch nur dann Sinn, wenn man das Programm
in zwei (oder mehr) Teile aufspalten kann, die einzelne Aufgaben
erledigen. Es wäre z.B. möglich auf einem Controller eine kleine
3D-Engine einzubauen und das Bild dann über irgendeine Schnittstelle
zum anderen Controller zu schicken, der es auf ein entsprechendes
Ausgabegerät (Display) ausgibt. Das hat den Vorteil, dass der
Controller für die Berechnungen den gesamten RAM frei hat und nicht
nebenbei noch das ganze Bild puffern muss. Selbstverständlich wäre es
für diese Aufgabe auch möglich einen Controller mit mehr RAM zu
verwenden (Sofern möglich).
Eine andere Notwendigkeit für mehrere Controller sehe ich sonst noch in
den Pins. Hat man z.B. sehr viele LEDs die einzeln angesteuert werden
müssen, ist es  möglich, mehrere Controller zu verwenden, von denen
jeder jeweils einige LEDs ansteuert.
Alles andere macht aber u.U. nicht wirklich Sinn.

von vm2007 (Gast)


Lesenswert?

@Philipp Burch

Hast du etwas über Fast-Fourier-Transformation gehört? Die kann ganz
gut auf mehrprozessorsystem funkzionieren:

SOUND =>[ADC]->MCU1_ALU->[I/O]->MCU2_ALU->[I/O]-> SPECTRUM

=> steht für Analog signal
-> steht für Digital signal

Danach, kann man z.B. im MCU3 das Spectrum analysieren und bestimmte
aufgaben lösen.

von AVRFan (Gast)


Lesenswert?

>ist es möglich, ein echtes multiprocessor system mit mehrere AtMega8
>auch mit 16Mhz zu schaffen ?

Selbstverständlich.  Selbst mit 1 Hz Taktfrequenz geht das.  Das ganze
System ist dann halt sehr langsam.

>Die MCUs könnte über I/O ports kommunizieren.

Ja.

>Programmierer können ihre Programme in sogenannte Threads teilen.

Das können sie aber auch auf nur einem einzigen Controller realisieren,
und zwar viel leichter.  Für viele Aufgabenstellungen reicht ein simples
kooperatives Multitasking völlig aus.

>Die Aufgabe für mehr als 2 MCUs sehe ich schon nicht trivial.

Wie die Erfahrung lehrt, ist die Aufgabe bereits bei 2 MCUs so
unvorstellbar knifflig, dass kein vernünftiger Mensch an einen zweiten
Controller denkt, solange er dafür nicht einen ausgesprochen guten
Grund hat.  Die Ansteuerung von 200 LEDs zählt übrigens eindeutig nicht
dazu.  Das Erweitern von Ports erledigt man üblicherweise schmerzlos und
effizient z. B. mit Schieberegistern.

von vm2007 (Gast)


Lesenswert?

@AVRFan
Mehrprozessorsystemen sind ganz popular im Roboter-technik; es gibt
manche roboter, die mehr als 10 MCUs im parallel geschaltete haben, z.B
im  Advanced Motion Control, Visual Recognition, Speech Recognition

von Gerd V. (gerald)


Lesenswert?

in meiner neuesten Entwicklung sind 4 Microcontroller vorhanden, 3 haben
etwas weniger zu tun, aber der 4. ist total ausgelastet.
Ich habe mir neuerdings angewöhnt jede Baugruppe, die ich für
Steuerungszwecke entwickel, mit Micorprozessoren auszurüsten. Kostet
kaum mehr und bin in der Anwendung sehr flexibel geworden kann so z.B.
problemlos Zeitprobleme umgehen.

von Metaller (Gast)


Lesenswert?

Kann es sein, daß Du Multi-Core/Multitasking/Multithreading mit
Outsourcing verwechselts? Selbst bei den Robotern macht man das so. Ein
Kern ist der Server, 1 bis n Positionscontroller, 1 bis n
Motorsteuercontroller, ein Protokollcontroller, ein Ausgabecontroller,
usw... Die laufen alle parallel aber nicht als Multi-Core-System. Man
hat die Aufgaben nur aufgeteilt, um die gesamt Leistung zu erhöhen.
Das mache ich auch in meinen Projekten so. Ich habe ein "Server" der
die Aufgaben an die unterschidlichen AVR's verteilt. Und selbst die
"Slaves" können sich untereinander Aufgaben zuteilen, ohne das der
"Server" damit belastet wird.

von Peter D. (peda)


Lesenswert?

Es ist heutzutage üblich, intelligente Sensoren und Aktoren zu benutzen,
die dann z.B. über den CAN-Bus mit dem Hauptprozessor kommunizieren.

Ich würde das aber mit als Multiprozessing bezeichnen, sondern als
Modularisierung.

Es geht dabei ja überhaupt nicht um bessere Auslastung, sondern um
sichere und einfachere Kommunikation (weniger Leitungen).


Peter

von Vexti (Gast)


Lesenswert?

.. wie will man das auch noch vernünftig realisieren?

Mcu1 macht ne Berechnung .. Mcu2 macht auch eine und die 3. bekommt bzw
holt sich beide Ergebnisse um die dann weiter zu verarbeiten ..
Nun ja ich glaube mal es wäre zuviel Aufwand von nöten, als das man das
nur mit einer Mcu bewerkstelligt..

Aber ich hab z.Bleistift vor mir irgendwann mal ein Mischpult (analoge
Eingänge und digitale Ansteuerung) zu bauen und denke mir, dass ich da
pro Kanal eine Mcu einsetze, die dann von einer Haupt-Mcu angesteuert
wird und die damit ganz deutlich entlastet wird

von vm2007 (Gast)


Lesenswert?

@Vexti

für Mischpult wäre es IDEAL! echte-zeit Fourier, filtern, und andere
verschiedene DSP funktionen; ein MCU pro Kanal

google mal "DSP multiprocessor mobile"

von Vexti (Gast)


Lesenswert?

KLar wäre es das .. nur würde ich dann keinen Dsp nur für einen Kanal
einsetzen und abgesehen davon wollte ich etwas einfaches bauen, mit ICs
die man auch löten und vorallem verstehen kann ;-)

l.g Vexti

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>echte-zeit Fourier

Und da haben wir sie wieder: Die Echtzeit!
Echtzeit bedeutet nur, dass das Ergebnis (welches auch immer) innerhalb
einer bestimmten Zeit vorliegt, und diese Zeit deterministisch, also
vorhersagbar, ist.
Wenn man eine FFT optisch ausgeben will, sollte das möglichst zeitnah
passieren, weil die Anzeige sonst nicht zur "Musik" passt.
Die Signalanalyse ist recht anstrengend für einen Controller, der
Flieskommaberechnung in Software nachbilden muß.
Die Anzeige ansich dagegen ist trivial...

>echte-zeit Fourier, filtern, und andere
>verschiedene DSP funktionen; ein MCU pro Kanal
Kennst du DSPIC? Das sind Mikrcontroller (von Microchip) mit
integrierter DSP. Die erschlagen sowas ganz alleine...

von Vexti (Gast)


Lesenswert?

Wozu braucht man immer gleich unbedingt ne FFT?? normal reichen auch ein
paar Algos, wie FIR/IIR Filter oder ein Dynamik Prozess aus

von Bob (Gast)


Lesenswert?

multi-MCU platform... good idea

I wonder whether it is possible to achieve a computable power comparable 
with a normal PC, like 1Ghz x86 CPU? How many MCU you need and how 
complex is circuit structure?

von Philipp B. (philipp_burch)


Lesenswert?

Well, at 200$ per "normal" PC-Processor and $2 per MC you can 
theoretically use up to 100 MCUs to save money. But it makes no sense to 
do so, because you will never have a way to move data as fast between 
multiple MCUs as a single CPU can process it.
And there's another big problem: Most MCUs can't get their program code 
from a RAM whithout programming it into their own program memory 
(flash). That costs time and is extremely inefficient.
The complexity will come near to infinity ;)

Tell me where it would be necessary to do something like this.

von Wolfgang Weinmann (Gast)


Lesenswert?

Hallo,

Also aus reiner Spielerei kann man das mit dem Multi-AVR System machen. 
Es mag auch Situationen geben, wo solch ein Mikrocontroller-Verbund 
sinnvoll eingesetzt werden kann. Zum Beispiel, wenn diese fast 
unabhängig operieren und wenig Daten austauschen. Aber sonst würde ich 
dazu raten irgendwie die Aufgaben mit einem Prozessor anzugehen - 
nofalls mit einem leistungsfähigerem. Es gibt ja auch unter den 
Controllern recht Leistungsstarke Erscheinungen.

Gruß

Wolfgang

Brushless Development Kit
http://www.ibweinmann.de/html/brushless.html

von Bob (Gast)


Lesenswert?

I wonder if it's in great demand to use a massive of MCUs on a PCI board 
as an Application Specific Board (analogues with FPGA-PCI boards). A lot 
of applications can "unabhängig operieren und wenig Daten austauschen".

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.