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.
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...
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.
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.
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..)
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.
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
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.
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?
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.
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?
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
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.
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.
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...?
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.
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.
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.
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.
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.
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
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.
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.
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 :)
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.
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.
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.
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
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.
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?