Forum: Mikrocontroller und Digitale Elektronik mehrere µC an einem Takt?


von Wolfram Fischer (Gast)


Angehängte Dateien:

Lesenswert?

Moin,

weiss jemand von Euch, ob es problemlos funktioniert, 9 µC (Atmega328) 
mit einem einzigen 16Mhz Taktsignal zu füttern oder gibt es Probleme 
dabei?

Ich dachte an einen externen Quarzoszillator dessen Ausgang auf jeden 
der 9 Controller geht, evt. mit 74HC04 Bufferung.
Oder eine Pierce-Schaltung?

Es geht nicht um synchronen Lauf der µC eher um Bauteile und Platz zu 
sparen.

Kann man das zuverlässig machen?

Gruß,
Wolfram.

von Helmut L. (helmi1)


Lesenswert?

Warum nicht. Das geht schon.

von Sebastian R. (sebastian_r569)


Lesenswert?

Dürfte prinzipiell nichts gegen sprechen.

von Dr. Sommer (Gast)


Lesenswert?

Die Frage ist bloß, warum man mehrere kleine Mikrocontroller so nah 
beieinander hat, dass man das selbe Taktsignal nutzen kann. Da könnte 
man auch einen großen Controller nutzen, der alles macht...

von Maxim B. (max182)


Lesenswert?

Wolfram Fischer schrieb:
> Es geht nicht um synchronen Lauf der µC eher um Bauteile und Platz zu
> sparen.
>
> Kann man das zuverlässig machen?

Hallo,
es gibt mehrere Möglichkeiten.

Wolfram Fischer schrieb:
> 9 µC (Atmega328)
> mit einem einzigen 16Mhz Taktsignal zu füttern

Am einfachsten wäre: bei einem Mikrocontroller Fuse CKOUT zu 
programmieren, somit kommt F_CPU auf PB0. Von PB0 bekommen alle andere 
Mikrokontroller Takt auf PB6(XTAL1). Dabei ist auch möglich, interne 
RC-Takt zu nutzen. So kann man gar ohne Quarz arbeiten. PB0 bleibt dabei 
genau so robust wie normale Port: 25 mA.

Wird PB0 schon in der Schaltung benutzt (z.B. man braucht ICP1), dann 
kann man Eingang von schon erwähnten 74HC04 an XTAL2 eines 
Mikrocontrollers einschließen (wo Quarz steht), die anderen bekommen 
Takt von Ausgang HC04 an XTAL1. Dabei ist wichtig, daß "full swing" 
geschaltet wird, sonst wäre Amplitude auf XTAL2 für HC04 nicht 
ausreichend.

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

Wolfram Fischer schrieb:
> weiss jemand von Euch, ob es problemlos funktioniert, 9 µC (Atmega328)
> mit einem einzigen 16Mhz Taktsignal zu füttern oder gibt es Probleme
> dabei?

ich wüsste keinen Grund warum das nicht gehen sollte.
Ich sehe nur keinen Taktgenerator, IMHO ist das ein fertiges Bauteil mit 
einem anderen Symbol.

Ich kenne diese 4-Pinner nur mit VCC GND und CLK

Eagle meint so sieht das aus

Also Ja das sollte gehen, beachte die Datenblätter für die 
Treiberleistung Fan Out vom Oszillator und Fan In der Atmel, notfalls 
passende Treiber AHCT o.ä. nachschalten, ggffs. auch mehr.

74AHCT14 alle Eingänge zusammen und alle Ausgänge zusammenschalten 
sollte als Treiber reichen wenns nötig ist.

Wolfram Fischer schrieb:
> Es geht nicht um synchronen Lauf der µC eher um Bauteile und Platz zu
> sparen.

worum dann?
größerer µC mit mehr flash und mehr RAM ATmega1284p oder ESP32 oder mehr 
Ports ATmega2560 wäre ja eine Möglichkeit.

: Bearbeitet durch User
von Maxim B. (max182)


Lesenswert?

Bei Reichelt gibt es CFPS-72 - Serie. Sehr bequem: das ist eine sparsame 
5-Volt-Version in 5x7 Gehäuse (immer noch einfach zu löten).

von Wolfram Fischer (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Da könnte
> man auch einen großen Controller nutzen, der alles macht...

Es soll modular bleiben und erweiterbar sein, daher mehrere kleine µC..

Maxim B. schrieb:
> Am einfachsten wäre: bei einem Mikrocontroller Fuse CKOUT zu
> programmieren, somit kommt F_CPU auf PB0. Von PB0 bekommen alle andere
> Mikrokontroller Takt auf PB6(XTAL1). Dabei ist auch möglich, interne
> RC-Takt zu nutzen. So kann man gar ohne Quarz arbeiten. PB0 bleibt dabei
> genau so robust wie normale Port: 25 mA.

Das klingt gut, dann könnte man doch auch jeden µC mit CKOUT 
programmieren und von PB0 zum nächsten µC gehen um nicht so lange 
Leiterbahnen mit 16Mhz zu haben, oder? Nicht das das Signal nach ca. 
15cm schlechter ankommt... (Kapazitäten..)

von Helmut L. (helmi1)


Lesenswert?

Joachim B. schrieb:
> 74AHCT14 alle Eingänge zusammen und alle Ausgänge zusammenschalten
> sollte als Treiber reichen wenns nötig ist.

Das funktioniert nicht. Durch unterschiede in den Schaltschwellen der 
Schmitt-Trigger kommt der eine Ausgang etwas frueher und der andere 
spaeter.
Da die alle parallel geschaltet sind kommt es dadurch zu Kurzschluessen.

von Pong (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Die Frage ist bloß, warum man mehrere kleine Mikrocontroller so nah
> beieinander hat, dass man das selbe Taktsignal nutzen kann. Da könnte
> man auch einen großen Controller nutzen, der alles macht...

Multicore und Multi-uC

von Peter D. (peda)


Lesenswert?

Die spannendste Frage ist allerdings, warum man nicht gleich einen 
größeren MC nimmt, z.B ATmega1284, ATmega2560.

Mehrere MCs bringen immer massive Probleme mit sich, da sie ja irgendwie 
kommunizieren müssen, d.h. auf jeden Fall ein komplexes und 
fehlertolerantes Protokoll nötig ist.

Sind alle Tasks aber in einem MC, dann können sie sich Variablen ganz 
einfach im gemeinsamen SRAM übergeben. Es lassen sich so auch viel 
einfacher Deadlocks vermeiden.

von Wolfram Fischer (Gast)


Lesenswert?

kann es durch die leichte Taktverschiebung eigentlich zu Problemen beim 
I2C Bus führen? (Alle 9 sind per I2C miteinander verbunden)
Müsste doch eigentlich nix ausmachen, oder?

von Dr. Sommer (Gast)


Lesenswert?

Wolfram Fischer schrieb:
> Es soll modular bleiben und erweiterbar sein, daher mehrere kleine µC..

Modular auf einer Platine? Lötet man da dann bei bedarf mehr uCs ein?

Peter D. schrieb:
> Mehrere MCs bringen immer massive Probleme mit sich

Da kann ich nur zustimmen.

von Joachim B. (jar)


Lesenswert?

Helmut L. schrieb:
> Das funktioniert nicht. Durch unterschiede in den Schaltschwellen der
> Schmitt-Trigger kommt der eine Ausgang etwas frueher und der andere
> spaeter.
> Da die alle parallel geschaltet sind kommt es dadurch zu Kurzschluessen.

OK dann ohne Schmitt-trigger, es liest sich vielleicht unsauberer als es 
ist,
normmalerweise soll man Ausgänge aus  Chips NICHT parallel schalten, 
aber auf gleichem Substrat sind die Eigenschaften nahezu identisch, 
große Abweichungen sind nicht zu erwarten und funktionierten in der 
Praxis immer.

Mehr Sorge macht mir nicht abgeschlossener Ausgang nach der Verteilung 
wenn kein weiter µC dran hängt.
Das ganze Konzept erscheint mir eher fragwürdig.
Soll die Ausgangs 16MHz irgendwo stumpf enden ohne Last bei 
Teilbestückung?
Programmiert er die Ausgänge nur für jeden weiterführenden µC extra?

von Wolfram Fischer (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Modular auf einer Platine? Lötet man da dann bei bedarf mehr uCs ein?

:-) Nein, nicht ganz.
Die 8 µC sind jeweils auf einer schmalen PCB mit BNC Buchse und werden 
per Stiftleisten in die Hauptplatine gesteckt. Wenn mehr Kanäle 
gebraucht werden, kann man nachstecken...

Daher wäre die PB0->PB6 Methode geradezu ideal.
Durch die interne Pufferung entfallen dann auch externe 74HC14 und man 
hat kurze Wege der CLK Signale

von Peter D. (peda)


Lesenswert?

Wolfram Fischer schrieb:
> Es soll modular bleiben und erweiterbar sein, daher mehrere kleine µC..

Man kann auch im selben MC Programme modular entwickeln.
Das ist sogar deutlich einfacher, da die externe Kommunikation wegfällt.

Mit MCs ist das wie mit Menschen. Einer allein kann ein Projekt gut 
bearbeiten. Sind aber 2 Mitarbeiter nötig, dann entfällt eine 3. Stelle 
allein für die Planung und Kommunikation zwischen den beiden, d.h. die 
Produktivität nimmt drastisch ab und die Fehlerquellen nehmen zu.

von Wolfram Fischer (Gast)


Lesenswert?

eben, wie bei Menschen:
der Erste µC entscheidet was wer machen soll und die 8 Sklaven (I2C) 
machen was sie sollen, wie in jeder Fa. :-)

ob nun mehrere kleine oder ein großer µC... es geht hier um den Takt.

von Dr. Sommer (Gast)


Lesenswert?

Wolfram Fischer schrieb:
> wie in jeder Fa. :-)

Nur dass in Firmen die Arbeitsleistung eines MA ziemlich fix ist. Du 
hast dir einen ganz kleinen Controller ausgesucht, und könntest die 
Aufgaben von 20 davon in einen Großen umlagern. Oder würdest du sperrige 
Güter lieber mit 20 Smarts als mit einem LKW transportieren...?

von Maxim B. (max182)


Lesenswert?

Helmut L. schrieb:
> Joachim B. schrieb:
>> 74AHCT14 alle Eingänge zusammen und alle Ausgänge zusammenschalten
>> sollte als Treiber reichen wenns nötig ist.
>
> Das funktioniert nicht. Durch unterschiede in den Schaltschwellen der
> Schmitt-Trigger kommt der eine Ausgang etwas frueher und der andere
> spaeter.

Hier ist ganz einfach: erste Inverter kommt alleine zu XTAL2, alle 
anderen parallel zu dem ersten.

Wolfram Fischer schrieb:
> der Erste µC entscheidet was wer machen soll und die 8 Sklaven (I2C)
> machen was sie sollen, wie in jeder Fa. :-)

Wenn Takt gemeinsam ist, dann statt I2C lieber USART in 9-bit-Mode. Das 
geht deutlich schneller.

Ich kann mir, zum Unterschied von anderen, eine solche MC-Struktur gut 
vorstellen. Als Beispiel:
Haupt-MC scannt die Tastatur und verteilt die Aufgaben. Andere MC machen 
in Hauptschleife jeder je eine Klangstimme, in ISR von USART nehmen sie 
auch Befehle von Haupt-MC. Dabei kann man je nach Version 4 Stimmen 
machen, oder 6, oder 24. Es ändert sich wenig, nur neue Module kommen.
Dann würde ich allerdings nicht F_CPU verteilen (Mikrocontroller können 
von internen RC getaktet werden) sondern F_D, so ca. 40 kHz, Signal 
kommt dann zu Ext-ISR und gewährleistet gleiche Tonhöhe bei allen 
Stimmen. F_D könnte man auch variabel machen, so mit AD9833, z.B. für 
Transponieren... Ja, aber das ist schon eine ganz andere Geschichte.

: Bearbeitet durch User
von Wolfram Fischer (Gast)


Lesenswert?

Ich habe mich für die CKOUT-Methode entschieden, dies scheint von Atmel 
ja sogar genau für diesen Zweck vorgesehen zu sein.

Da sowie eine Prototyp-PCB gemacht wird, werde ich zusätzlich Plätze für 
Quarze und Ziehkondensatoren mit einbinden, so kann man beides testen,
sollte die CKOUT Methode Probleme machen, kann man dann immernoch auf 
Quarze umrüsten.

Vielen Dank Euch allen, besonders aber Maxim B.!

Schönen Tag noch,
Gruß, Wolfram.

von MaWin (Gast)


Lesenswert?

Wolfram Fischer schrieb:
> weiss jemand von Euch, ob es problemlos funktioniert, 9 µC (Atmega328)
> mit einem einzigen 16Mhz Taktsignal zu füttern

Geht, auch einfacher drekt den Quartzoszillator des einen an den anderen 
koppeln, mit Koppelkondensator:

Siehe http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm

> Ich habe 2 Controller an einem Quartz angeschlossen, d.h. XOUT von
> Controller 1 an XIN von Controller 2, aber es schwingt nicht.
> Gibt es eine zuverlässige Lösung ?

Ja. Verbinde XOUT und XIN des zweiten Controllers über 1MOhm, und XOUT 
des ersten Controllers über 100pF mit XIN des zweiten Controllers. Und 
schliesse den Quartz wie gehabt an den ersten Controller an. Die Ursache 
und Begründung für diese kapazitive Kopplung liegt im eventuell 
unterschiedlichen Gleichspannungspegel der Oszillatoren.

Wolfram Fischer schrieb:
> Es geht nicht um synchronen Lauf der µC eher um Bauteile und Platz zu
> sparen.

Das ist gut, denn die start-up Zeit der verschiedenen uC kann 
unterschiedlich sein.

von Sebastian S. (amateur)


Lesenswert?

Ich hoffe nur, dass Du nicht mit dem Gedanken spielst, dass die dann 
synchron laufen würden.
Winzige dolle Ranzen bei den Reset-Kondensatoren; ein anderer "Pfad" 
nach einer Abfrage und schon laufen die Teile asynchron.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Sebastian S. schrieb:
> Ich hoffe nur, dass Du nicht mit dem Gedanken spielst, dass die dann
> synchron laufen würden.

Wolfram Fischer schrieb:
> Es geht nicht um synchronen Lauf der µC eher um Bauteile und Platz zu
> sparen.

von Old P. (Gast)


Lesenswert?

Joachim B. schrieb:

> ich wüsste keinen Grund warum das nicht gehen sollte.
> Ich sehe nur keinen Taktgenerator, IMHO ist das ein fertiges Bauteil mit
> einem anderen Symbol.

Ich sehen einen! Was hast Du denn gedacht, was der TE da gezeigt hat?
Einen Taktgenerator mit Quarz in einer millionenfach bewährten 
Standardschaltung.

> Ich kenne diese 4-Pinner nur mit VCC GND und CLK

Tja, es gibt noch etwas mehr zwischen Himmel und Hölle... ;-)

> Eagle meint so sieht das aus

Was immer Eagle meint, wenn der TE einen so wie er zeigt bauen möchte, 
dann kann er das machen.
(ein Standard-Vierpinner wäre aber einfacher, ja)

Old-Papa

von Bernd K. (prof7bit)


Lesenswert?

Dr. Sommer schrieb:
> Die Frage ist bloß, warum man mehrere kleine Mikrocontroller so nah
> beieinander hat, dass man das selbe Taktsignal nutzen kann. Da könnte
> man auch einen großen Controller nutzen, der alles macht...

Ich hab hier 18 Stück EFM8BB10, auf jedem läuft der ADC und eine 
Software-PLL (non-uniform, quad-sampling) für 70kHz und noch ein 
bisschen Auswertung, 90% Vollgas, hart am Limit. Raus kommt je ein 
Schaltsignal das verodert wird. Den µC der gleichzeitig(!) 18 ADC-Kanäle 
sampelt und weniger kostet als 18 BusyBees und dann noch auf die schmale 
Platine passt will ich sehen.

Die hängen bei mir auch alle an einem gemeinsamen 24MHz-Takt der vom 
Hauptprozessor erzeugt wird.

von Dr. Sommer (Gast)


Lesenswert?

Bernd K. schrieb:
> Den µC der gleichzeitig(!) 18 ADC-Kanäle
> sampelt

Mit welcher Geschwindigkeit? Wenn man von einem bestimmten Peripherietyp 
sehr viel braucht könnte man mit einzelnen, großen Controllern in der 
Tat nicht hinkommen, weil da meistens "von allem etwas" gegeben wird. 
Ich würde aber nicht ausschließen, dass es da durchaus einen Controller 
gibt, der das kann. Habe jetzt aber keine Lust, zu suchen.

von Joachim B. (jar)


Lesenswert?

Old P. schrieb:
> Ich sehen einen! Was hast Du denn gedacht, was der TE da gezeigt hat?
> Einen Taktgenerator mit Quarz in einer millionenfach bewährten
> Standardschaltung.

was schrieb der TO noch mal?

Wolfram Fischer schrieb:
> Bauteile und Platz zu
> sparen.

also:

Old P. schrieb:
> ein Standard-Vierpinner wäre aber einfacher, ja

siehste :)

von A reflecion of death (Gast)


Lesenswert?

Tut de Terminierung nicht an jedem der vielen Endpunkte passen, kriegste 
Reflexionen.
Kriegste Reflexionen, haste mehr aktive Taktflanken im Systen als der 
Taktgenerator losgetreten hat.

Haste das, haste Trouble wegen Übertaktung.

von Maxim B. (max182)


Lesenswert?

A reflecion of death schrieb:
> Kriegste Reflexionen, haste mehr aktive Taktflanken im Systen als der
> Taktgenerator losgetreten hat.

Man darf Reflexionen bei 16 MHz keine zu große Bedeutung zuschreiben - 
wenn es nicht um Hunderte Meter Einzeldtaht geht. Wellenlänge 12,5 
Meter, so bis Viertel, d.h. bis 3 Meter, kann eigentlich wenig 
passieren. Wenn man aber unsicher ist, kann Widerstand 22 Ohm seriell 
helfen.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Dr. Sommer schrieb:
> Bernd K. schrieb:
>> Den µC der gleichzeitig(!) 18 ADC-Kanäle
>> sampelt
>
> Mit welcher Geschwindigkeit?

Mit je 280 kilosamples/s.

Und ich habe die Option das beliebig zu skalieren, es gab ursprünglich 
einen Prototypen mit 10 Kanälen, dann wurde einer mit 18 gebaut und im 
Prinzip ließe es sich weiter vergrößern und es ist schon einer mit 24 
angedacht.

Für diese spezielle Anwendung von mir ist das optimal. Für 23 Cent 
bekomm ich nen 12 Bit-ADC der selbsständig sein Programm abspult, sogar 
noch ein bisschen rechnen und auswerten kann und genau so mit der 
Haupt-CPU (oder seinen Nebenmännern) sprechen kann wie es für die 
Anwendung günstig ist.

Beitrag #5990226 wurde von einem Moderator gelöscht.
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ich persoenlich wuerd' sowas nicht mehr machen.
Hab' da mal Palaver erlebt wegen einer "zentralen" 4MHz Takterzeugung 
und Verteilung auf mehrere Chips. Als da mal der Quarzhersteller 
gewechselt wurde, war manchmal der Jitter einer PLL zu gross, wenn die 
aus 4MHz 2092MHz gemacht hat. Mit geaendertem Arbeitspunkt des 
Oszillators ging das zwar auch wieder, aber so teuer/gross, dass sich 
das lohnt, sind Quarze schon lange nicht mehr, denk ich mir seither.
Die Rueckwirkungen - also was einzelne Chips an zusaetzlichen Stoerungen 
aus ihrem "Oszillatorausgang" rauskotzen - und wie stark das dann andere 
Chips beeinflusst, sind schwer einzuschaetzen.

Gruss
WK

Beitrag #5990240 wurde von einem Moderator gelöscht.
Beitrag #5990246 wurde von einem Moderator gelöscht.
Beitrag #5990248 wurde von einem Moderator gelöscht.
von Wolfgang (Gast)


Lesenswert?

Joachim B. schrieb:
> Ich kenne diese 4-Pinner nur mit VCC GND und CLK
>
> Eagle meint so sieht das aus

Eagle hat da gar nichts zu melden. Entscheidend ist das Datenblatt des 
Herstellers. Wie das Symbol in Eagle aussieht, ist für die Funktion 
völlig egal. Das Package und die Anschlüsse müssen stimmen.

Beitrag #5990259 wurde von einem Moderator gelöscht.
von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Entscheidend ist das Datenblatt des
> Herstellers

ach seit wann bestimmen Datenblätter Normen?
Wobei ich nur Gatter genormt kenne.

aber ich weiss ja wer das schreibt ;)
Sonst hast du ja nichts zum Thread beizutragen oder?

: Bearbeitet durch User
Beitrag #5990727 wurde von einem Moderator gelöscht.
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.