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
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.
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.
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.
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.
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.
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
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 :)
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.
Jobst M. schrieb: > Parallax Propeller! Hat 8 Kerne an Bord, welche separat unterschiedliche > Aufgaben abarbeiten. MP3 abspielen kann er aber trotzdem nicht.
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
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.
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!).
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).
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.
Hmm schrieb: > . eines von EA nehmen, also eines mit Controller über I2C oder SPI. Haben die auch preiswerte Displays?
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.
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?
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.
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
@ 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.