Datenverbindung von µCs

Gast #307947
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.
Gast #307948
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...
Gast #307949
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
Gast #307950
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.
Gast #307951
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
Gast #307952
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.