Forum: Mikrocontroller und Digitale Elektronik Ein µC oder mehrere


von Astro39 (Gast)


Lesenswert?

Hallo zusammen,

ich möchte ein Projekt starten und frage mich wie ich Grundlegend 
vorgehen soll. Ich möchte mehrere Verschiedene Funktionen mit einander 
verbinden. Unter anderem soll Licht gesteuert werden und Ton 
wiedergegeben.

Ich frage mich jetzt ob ich einen µC suchen soll mit dem alles zusammen 
machbar ist oder ist es besser einzelne Aufgaben mit einem eigenen µC zu 
realisieren und alles von einem Haupt Controller steuern lassen?

Kann man pauschal sagen diese oder jene Vorgehensweise ist besser? Wo 
hat die eine Methode Vor- bzw. Nachteile, wo die andere?

Über eine anregende Diskussion würde ich mich sehr freuen.


Mit freundlichen Grüßen

Astro

von Peter II (Gast)


Lesenswert?

Astro39 schrieb:
> Kann man pauschal sagen diese oder jene Vorgehensweise ist besser? Wo
> hat die eine Methode Vor- bzw. Nachteile, wo die andere?

das kommt auf die Anwendung an.

Würde es für dich sinn machen, wenn du zum anschauen von Video eine 
Datenträger + Gerät fürs Bild und ein Datenträger + Gerät für den Ton 
benutzen müsstest?


Wenn beide Geräte nichts gemeinsames haben, können sie getrennt werden. 
Wenn sie miteinander arbeiten müssen, dann macht es sinn nur ein µC zu 
verwenden.

von Georg G. (df2au)


Lesenswert?

Die Antwort ist ein entschiedenes "vielleicht".

Wenn du mehrere sehr zeitkritische Sachen machen musst, können getrennte 
Controller sinnvoll sein. Aber unterschätze nicht den Aufwand für die 
Steuerung und Kommunikation der Controller.

Mit den modernen Controllern (schnell und reichlich Speicher) wird es 
meist besser sein, die Arbeit nicht zu splitten.

von Peter D. (peda)


Lesenswert?

Der Aufwand für die zuverlässige Vernetzung mehrerer MCs wird gerne 
völlig unterschätzt.
Für die Aufteilung von Aufgaben auf mehrere MCs sollte es daher triftige 
Gründe geben, die den deutlich höheren Entwicklungsaufwand 
rechtfertigen.

von Uhrofon (Gast)


Lesenswert?

Ganz allgemein kann man sagen, dass ein Prozessor effektiver ist, als 
mehrere.
Praktisch erwägt man eine Aufteilung nur in zwei oder drei Fällen: 
Nämlich wenn einfach kein Prozessor käuflich erhältlich ist, der alles 
nötige in der zur Verfügung stehenden Zeit erledigen kann, wenn 
räumliche Anordnungen technisch erforderlich sind (z.B. EMV) oder wenn 
wirtschaftliche Gesichtspunkte hinzu kommen.

Man muss beachten, dass die Kommunikation zwischen den Prozessoren auch 
Zeit benötigt. Im allgemeinen ist die Kommunikation innerhalb eines 
Prozessors schneller als zwischen zweien. (Wenn man das Speichern von 
Daten und wieder lesen in bzw. aus dem Speicher oder Registern als 
Kommunikation auffasst).

Abgesehen davon gibt es weitere Faktoren. Z.B. Vermehren sich die 
"Fixkosten" an Strom, da gewisse Einheiten wie der Taktgenerator etc. 
dann mehrfach vorhanden sein müssen.

Eine generelle Abschätzung würde ungefähr so aussehen, dass man die Zeit 
für die Codeausführung (und elektr. Leistung, Kosten, Arbeitszeit) der 
jeweiligen Aufteilungen gegenüberstellt. Für einen Anfänger eine gute 
Übung aber schwierig.

Eine anregende Diskussion würde ich mir an Deiner Stelle nicht erwarten. 
Dazu ist die Sau nun schon zu oft durchs Dorf getrieben worden.

von Amateur (Gast)


Lesenswert?

Wenn Du das Problem von oben nach unten angehst, ergibt sich die Antwort 
fast von selbst.

Falls nicht noch dieses und jenes hinzukommt, ist top die 
Musikwiedergabe (meiste Rechenleistung). Ein µC der dies kann, kann 
meist auch noch ein paar andere Sachen nebenher erledigen.

von Jobst M. (jobstens-de)


Lesenswert?

Parallax Propeller! Hat 8 Kerne an Bord, welche separat unterschiedliche 
Aufgaben abarbeiten.

Obwohl ... mit einem Tiny13 lass ich eine LED blinken und einen 
Lautsprecher piepsen.

Du wirst also Dein Problem etwas genauer beschreiben müssen ...


Gruß

Jobst

von Lars K. (mrlaush)


Lesenswert?

Ahh da gibt es noch einen Fall :)

Wenn du ASIL D erreichen willst solltest du auch 2 unterschiedliche 
Prozessoren verwenden, die sich gegenseitige überwachen. Da nimmt man 
auch mal drei dann erhält man ein 2 von 3 System....

Aber ich glaub hier ging es nicht um eine Sicherheitskritische Anwendung 
:)

von Hmm (Gast)


Lesenswert?

Licht und Ton sind langsame Geschichten. Das packt ein einzelner µC 
vermutlich locker. Außer du redest von 200 Kanälen Licht und 6-Kanal 
HiFi Ton. Selbst DAS ließe sich vermutlich realisieren.

Schreib doch mal ein paar Deteils!

Aber selbst trotz Audio-Wiedergabe mit passabler Qualität kann man noch 
viel steuern. Hab z.B. eine Wav-Wiedergabe mit 16Bit, 2 Kanal und 
44100Hz gebaut (I2S), der PIC32 der das tut langweilt sich nur. Trotz 
Overhead wie GLCD, SD-Karte, USB und Inputs.

Mach dir ein Konzept, überlege dir, was braucht wieviel CPU/RAM/Flash 
(probiers aus, wenn es sein muss!) und dann überlege:
Geht das bequem?

Wenn nein:
Gehts mit einem dickeren µC?

Erst wenn das auch nicht so ist, kann man mal über mehrere nachdenken.

Eine Software, die über mehrere µC synchronisiert ist, ist Mist. Alleine 
das debuggen von mehreren µC gleichzeitig ist schon ein Argument 
dagegen.

von Peter D. (peda)


Lesenswert?

Jobst M. schrieb:
> Parallax Propeller! Hat 8 Kerne an Bord, welche separat unterschiedliche
> Aufgaben abarbeiten.

MP3 abspielen kann er aber trotzdem nicht.

von Astro39 (Gast)


Lesenswert?

Ich habe mir ein Wecker vorgestellt der zum einen mit Licht weckt und 
danach Musik oder Radio abspielt. Der Plan war ein Haupt µC der nur 
Aufgaben verteilt. Also er bekommt von dem RTC Modul die Weckzeit und 
schaltet dann einen Ausgang auf High, an dem der Controller für die 
Lichtsteuerung hängt und die geht nur an wenn der Eingang ein High 
liefert. Das gleiche dann für das Radio. Mit Tasten z.B: Schlummern kann 
man dann das Licht wieder ausschalten in dem Der Ausgang wieder auf Low 
gesetzt wird. Ich hab gedacht dann habe ich mehrere Übersichtliche 
Programme.

Steinigt mich mich aber bis jetzt habe ich nur Arduino Erfahrung. 
Wahrscheinlich hab ichs mir zu leicht gemacht. Dann werde ich mich 
erstmal noch tiefer in die µC Materie einarbeiten.

Vielen Dank für die hilfreichen Antworten.

Mit freundlichen Grüßen

Astro

von THOR (Gast)


Lesenswert?

Wenn du Musik/Radio an ein fertiges Modul weitergibst (wozu ich dir 
raten würde) dann kann ein Arduino den Rest alleine. Mit nem 32kHz 
Uhrenquarz bekommst du ne brauchbare Uhr, LEDs lassen sich mit den GPIO 
Pins ansteuern und ein Piepsgeräusch bekommt man mit nem kleinen 
Lautsprecher und nem PWM Pin hin.

von Teo D. (teoderix)


Lesenswert?

Ich schließ mich da Thor an.

Wie wärs mit nem klein µC der HW-Module steuert. Ich denk da 
hauptsächlich an MP3 u. Flash in einem Modul. Licht etc. is ja 
pillepalle (230V!).

von Hmm (Gast)


Lesenswert?

Astro39 schrieb:
> Steinigt mich mich aber bis jetzt habe ich nur Arduino Erfahrung.
> Wahrscheinlich hab ichs mir zu leicht gemacht. Dann werde ich mich
> erstmal noch tiefer in die µC Materie einarbeiten.

So haben wir alle mal angefangen. Also ich zumindest.
Willkommen an der Lernklippe, ich brauchte beim ersten PIC24 gleich 2 
Tage, bis die PLL richtig lief :-)

Für deinen Wecker wird es sicher auch ein 8-Bitter tun, also ein AVR 
oder PIC18 zum Beispiel, oder gleich ein kleiner STM32. Oder ein PIC24?
Nimm das, was du lernen willst!

Pieptöne kann jeder Timer (den sollten allg genannten haben), als 
Rechteck. Oder du steuerst einen Piezopfeifer über einen Port.
Als Display würde ich z.B. eines von EA nehmen, also eines mit 
Controller über I2C oder SPI.
Eine RTCC kann man extern dazutun, eine DS1337 oder so tut da ihren Job. 
Wenn der Wecker genau sein soll, denke über ein fertiges Modul nach.

Als Spannungsquelle kann man ein Steckernetzteil nehmen (also eines, das 
Schutzkleinspannung liefert).

von R. R. (elec-lisper)


Lesenswert?

Alternativ kann man auch einfach einen RaspberryPi mit
RTCC modul nehmen. Fürs Display oder die Bedienung nimmt
man entweder die GPIOs oder verlegt die über UART auf ein
kleines Controller Modul.

von Max M. (maxmicr)


Lesenswert?

Hmm schrieb:
> . eines von EA nehmen, also eines mit Controller über I2C oder SPI.

Haben die auch preiswerte Displays?

von Hmm (Gast)


Lesenswert?

Max M. schrieb:
> Hmm schrieb:
>> . eines von EA nehmen, also eines mit Controller über I2C oder SPI.
>
> Haben die auch preiswerte Displays?

Ja, die sind alle preiswert! Finde ich zumindest. Begründung:
- Brauchbare Libs vorhanden
- Datenblätter vorhanden
- Sparsam
- Praktische Bauform
- Laufen mit 3V
Für Anfänger also keine schlechte Empfehlung, denn das spart Frust.

Wenn du billig meinst, dann vielleicht nicht. Ich finde sie nicht 
übermässig teuer.

Ist halt eine Frage, was man will. Ich arbeite lieber 15 min für das 
Display, statt viele Stunden in das debuggen einer (für das Projekt) 
Nebensache zu investieren.

Die EA-Dinger laufen halt sofort und problemlos, und wenn nicht, dann 
wird man hier im Forum  sehr schnell fündig.

von Astro39 (Gast)


Lesenswert?

Braucht man für die EA Displays denn dieses Testboard oder braucht man 
nur das Display der Wahl und macht den Rest über das Programm im µC?

von Hmm (Gast)


Lesenswert?

Astro39 schrieb:
> Braucht man für die EA Displays denn dieses Testboard oder braucht
> man
> nur das Display der Wahl und macht den Rest über das Programm im µC?

Man braucht nur das Display seiner Wahl, das Testboard hatte ich nie. 
Ich habe die sogar am Breadboard getestet, aber hier muss man vorsichtig 
sein (mechanisch empfindlich).

Generell gibts zwei Varianten:
- Alphanumerisch
- grafisch (wie das DOGXL)
Anfängern würde ich zur alphanumerischen Variante raten, denn bei der 
grafischen muss man sich um die Erzeugung der Pixelmuster selber 
kümmern. Die Alphanumerischen füttert man nur mit Text. Deutlich 
einfacher...

Der Vorteil der DOG... Serie ist halt, dass man sie auf die Platine mit 
drauflöten kann, und sie auch mit 3V3 laufen, und mit oft nur <1mA 
Stromverbrauch.

Eine kostengünstige Alternative wäre:
Beliebige HD44780-kompatibles Displays sind auch relativ 
anfängerfreundlich, weil sie sehr verbreitet sind.
Die haben den Nachteil dass sie mehr Pins brauchen und 5V benötigen und 
fallweise Pegelshifter.

von Jobst M. (jobstens-de)


Lesenswert?

Peter D. schrieb:
> MP3 abspielen kann er aber trotzdem nicht.

Hmmm ... alle 8 COGs zusammen machen 160 Mips.
Hat das schon mal jemand probiert?

Dann eben ein 'langsamer' Controller, welcher die Daten von einer 
SD-Card holt und sie dann an einen mp3 Decoder (z.B. VS 10xx, MAS3507, 
STA013) weiter gibt, oder einen Prozessor mit Wumms, wie ein ARM oder 
PIC32MZ, welcher das dann in SW macht.

Vielleicht bekommt er ja auch noch irgendwoher diesen 8051 mit 
integriertem mp3 Decoder von Atmel. (AT89C51SND1C)


Gruß

Jobst

von Falk B. (falk)


Lesenswert?

@ Jobst M. (jobstens-de)

>Dann eben ein 'langsamer' Controller, welcher die Daten von einer
>SD-Card holt und sie dann an einen mp3 Decoder (z.B. VS 10xx, MAS3507,
>STA013) weiter gibt,

Dafür gibt es auch schon fertige Shields für den Arduino, damit kann man 
recht gut arbeiten, ohne den Heldentod zu sterben. Dann kann auch EIN 
Arduino verdammt viele Sachen quasi paralle machen.

von µC-Blubb (Gast)


Lesenswert?

Wenn sich die Funktionalitäten räumlich voneinander getrennt befinden 
(zB. übers Haus verteilt) dann macht die Aufteilung auf viele µC 
desöfteren sehr viel Sinn.

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.