Forum: Mikrocontroller und Digitale Elektronik Datenverbindung von µCs


von Markus Neubauuer (Gast)


Lesenswert?

Hi.
Wie macht ihr das eigentlich wenn ihr mehrere µCs in einer Schaltung
habt also z.B. einen der das LCD Modul ansteuert, ein weitere für die
Ansteuerung von z.B. Schrittmotoren und ein letzter mit Sensoren und
dieser soll auch die ganze Steuerung übernehmen.
Wie verbindet ihr die miteinander?
Per UART, oder entwerft ihr dafür ein neues Protokoll?


Noch eine zweite Frage zu Quarzen.
Wenn ich mehrere µCs in einer Schaltung hab kann ich dann einen Quarz
für alle nehmen so das sie exakt im gleichen Takt laufen oder brauch
ich für jeden µC einen separaten? Ich weiß leider nicht genau wie das
mit Quarzen am µC technisch gesehen genau funktioniert.

Gruß Markus.

von Uwe Große-Wortmann (Gast)


Lesenswert?

Zum Vernetzen ist auch i2c recht verbreitet...

Ein gewöhnlicher Quarz (Zweibeiner) kann normaelerweise nur einem µC
als Taktquelle dienen, weil ein Teil der Oszillatorschaltung sich im µC
befindet. Wenn man aber einen Quarzoszillator (Vierbeiner, braucht auch
Vcc und Gnd) nimmt, kann man damit mehrere ICs parallel betreiben, weil
der Oszillator ein fertiges Taktsignal erzeugt. Die normaler Methode ist
jedoch, jedem µC eine eigene Taktquelle zu gönnen...

von Robert Teufel (Gast)


Lesenswert?

Viele der kleineren micros, die als Slaves benuetzt werden haben interne
Oszillatoren. Je nach Qualitaet dieser internen Oszillatoren kann man
sie fuer einen UART verwenden (ueber den gewuenschten Temperatur und
Spannungsbereich besser als 2.5% Genauigkeit, oder noch lieber besser
als 2%) oder fuer synchrone Schnittstellen. Bei sync. Schnittstellen
wie z.B. I2C sind die Abweichungen der Osz. nicht so wichtig. Eine
Angabe wie "besser als 1% bei Raumtemperatur und einer vorgegebenen
Spannung" ist nicht ausreichend, ja, sogar irrefuehrend denn eine
reale Anwendung befindet sich nicht immer im Raumtemperaturbereich und
die Spannung schwankt manchmal auch.
Hab auch schon viele kleine Inter-Microcontroller Netzwerke mit SPI
gesehen. I2C wurde ja schon genannt aber CAN waere auch noch was. Dann
allerdings sind die Anforderungen an die Genauigkeit des Taktes sehr
hoch, nichts fuer integrierte Oszillatoren.

Robert

von Markus Neubauuer (Gast)


Lesenswert?

Vielen Dank an euch beide.
Also ich denke das es wohl am Sinnvollsten ist mit einem Protokoll das
auch ein Taktsignal schickt damit man die internen Oszilatoren
verwenden kann, oder lieg ich da falsch?

Wie baut ihr dann so etwas auf?
Angenommen das Sensormodul soll zum "main CPU" übermitteln das der
Taster 1 gedrückt wurde.
Würdet ihr dann nur eine 8bit Zeichenfolge übermitteln so das man weiß
welcher Taster gedrückt wurde, oder würdet ihr das die ganze Zeit also
kontinuierlich übermitteln lassen was ich  mir aber schlecht vorstelle
da ja sonst immer ein interrupt Event auftritt.
Also vielleicht wisst ihr jetzt worum es mir geht.
Wäre hier um jede Info dankbar da ich das noch nicht so recht
verstanden habe wie es die Hersteller so machen und es mich aber
interessiert.

von Ralf (Gast)


Lesenswert?

Du könntest die Slave-CPUs periodisch anpollen, ob Daten vorhanden
sind... ähnlich wie USB, der Master (= PC) fragt in bestimmten
Zeitabständen nach, ob was da ist...

Ich würde als Grundlage für Multiprozessor-Kommunikation ein eigenes
Protokoll erstellen. Das macht es einfacher.
Wenn du z.B. drei Slaves hast, die die Daten alle verschieden schicken,
musst du für jeden Slave eine andere Auswertung der Daten vornehmen.
Bei einem festen Protokoll hast du diesen Nachteil nicht.

Allerdings müsstest du dir vorher schon Gedanken machen, wie das
Protokoll aussehen soll...

Ralf

von marc989 (Gast)


Lesenswert?

HI,
am einfachsten bei der Vernetzung von mehreren Controllern ist I2C.
Ich bin grad an einem Board auf dem 5 MCU verbaut sind. Da ist das am
einfachsten. Man muss ja das Rad nicht neu erfinden, wenn man mit drei
befehlen bereits ein fast fertiges Protokoll ansteuern kann.

Die Quarze lassen sich auch von mehreren nutzen. Aber hier ist der
richtige Pin anzuschliessen. Man verwendet hiefür einen Widerstand zum
koppeln des einen Quarzeingangs des einen Controllers mit dem
Quarzeingang anderen. Die grösse des Widerstands weiss ich grad nicht
auswendig, ist aber relativ klein. (denke im Internet findet da man was
dazu)
Ich verwende trotzdem (wenn der platz es zulässt) lieber zwei quarze.

Gruß Marc

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.