Hallo, würde gern 3 ATM8 auf einer Leiterplatte mit nur einem Quarz betreiben. Reicht es, einen Quarz an einen ATM8 mit den beiden 22pF zu hängen und dann alle 3 XTAL1 zu verbinden? Hat jemand Erfahrung?
nimm einen fertigen oszillator, damit gehts und du brauchst keine lastkapazitäten seb
Kannst du so machen: Der erste Atm8 bekommt einen Quarz und die CKOPT-Fuse muss gesetzt sein. Von XTAL2 dieses Atm8 gehst du dann jeweils auf XTAL1 der beiden anderen Atm8.
CKOPT muß auf jeden Fall programmiert sein. Einen zweiten ATMEGA kann man dann ziemlich sicher mitversorgen, Bei dreien kommt es auf den Versuch an. Vielleicht läßt sich mit einem 74HC14 als Puffer etwas machen.
siehe Datenblatt: When CKOPT is programmed, the Oscillator output will oscillate a full rail-torail swing on the output. This mode is suitable when operating in a very noisy environment or when the output from XTAL2 drives a second clock buffer.
oder du gehst in XTAL1 des nächsten Atm8 und von XTAL2 dieses Atm8 zum nächsten XTAL1
> oder du gehst in XTAL1 des nächsten Atm8 und von XTAL2 > dieses Atm8 zum nächsten XTAL1 Nicht direkt, nur mit kapazitiver Kopplung. Siehe: http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.7 suche "Verbinde XOUT und XIN"
MaWin schrieb: > Nicht direkt, nur mit kapazitiver Kopplung. Das war vielleicht vor 10 Jahren so. Stell den Haupt-ATmega so ein, dass sein XOUT maximalen Pegel liefert. XIN schalten heutzutage bei VCC/2.
Nimm die moderneren ATmega88 und setze beim Master die CLKOUT-Fuse. Peter
Peter Dannegger schrieb: > Nimm die moderneren ATmega88 und setze beim Master die CLKOUT-Fuse. Das braucht allerdings einen zusätzlichen Pin.
> Das war vielleicht vor 10 Jahren so.
Nope.
Es ist auch heute so, daß
die von dir vorgeschlagene Methode
nur funktioniert, wenn der Zufall dir gnädig ist,
und die Schaltschwelle der Oszillatoreingänge beider Chips
zufällig ausreichend gleich ist.
Schaltungen nach dem Prinzip Hoffnung aufzubauen,
mögen dien Stil sien, meiner ist es nicht.
MaWin schrieb: > Es ist auch heute so, daß > die von dir vorgeschlagene Methode > nur funktioniert, wenn der Zufall dir gnädig ist, > und die Schaltschwelle der Oszillatoreingänge beider Chips > zufällig ausreichend gleich ist. Nicht, wenn man beim Treiber CKOPT gesetzt hat (was man ohnehin tun sollte). Dann ist die Schaltschwelle des 2. Controllers wurscht.
Jörg Wunsch schrieb: > Peter Dannegger schrieb: >> Nimm die moderneren ATmega88 und setze beim Master die CLKOUT-Fuse. > > Das braucht allerdings einen zusätzlichen Pin. Dafür funktioniert es aber zuverlässig. Ich hatte auch mal in einem Projekt diese Edelbastlerschaltung mit Abgriff direkt am Quarz gemacht. Ich hatte damit signifikant höhere Rückläufer wegen Quarzproblemen. Die lange Leitung bis zu den anderen ICs verändert völlig das Schwingverhalten. Es ist ja ein unabgeglichener Serienschwingreis (Leitungsinduktivität + Schaltungskapazität) direkt am Quarz. Peter
> Nicht, wenn man beim Treiber CKOPT gesetzt hat
Doch, auch dann, schliesslich macht CKOPT aus dem Oszillator nur einen
normalen Oszillator, so wie ihn alle anderen uC auch haben, also gelten
auch dann alle beachtenswerten Dinge anderer uC.
Die CKOPT erhöht nur die Amplitude, sie macht aber nicht aus dem Oszillatorausgang einen echten TTL-Ausgang. Damit die Schaltung schwingt, braucht der Ausgang einen Innenwiderstand von einigen kOhm. Wenn es ein TTL-Ausgang von wenigen Ohm wäre, ist ja der Kondensator dazu parallel witzlos und es entsteht auch nicht die notwendige Phasendrehung von 180°. Peter
Jörg Wunsch schrieb: > Peter Dannegger schrieb: >> Nimm die moderneren ATmega88 und setze beim Master die CLKOUT-Fuse. > Das braucht allerdings einen zusätzlichen Pin. Wer 3 uCs in nächster Nähe zueinander platziert (denn nur dann funktioniert das Ganze), der fragt nicht nach Ressourcen... :-/
>Damit die Schaltung schwingt, braucht der Ausgang einen Innenwiderstand >von einigen kOhm. >Wenn es ein TTL-Ausgang von wenigen Ohm wäre, ist ja der Kondensator >dazu parallel witzlos und es entsteht auch nicht die notwendige >Phasendrehung von 180°. Ah, endlich mal jemand, der das checkt! Am besten hängt man garnichts Zusätzliches an die Komponenten eines Pierce-Oszillators. Es gibt zwar Hersteller, die am Ausgang des internen Pierce-Inverters ein CMOS-Gatter-Eingang mit weniger als 5pF Lastkapazität erlauben, aber die Realität zeigt, daß bei einem realen Aufbau deutlich mehr Streukapazität zustande kommt und das Teil nicht mehr so richtig will. Wundert mich sowieso, daß diese Pierce-Oszillatoren überhaupt so zuverlässig arbeiten. Wenn die drei µC denn wirklich EINEN synchronen Takt brauchen, würde ich das mit einem zusätzlichen Quarzoszillatorchip machen und alle Takteingänge der µC damit parallel versorgen. Dabei muß man aber auf peinlichst kurze Leiterbahnwege und ein Routen über einer durchgehenden Massefläche achten, sonst kann man sich die EMV ganz gründlich versauen.
Danke an alle, habe jetzt das alles mal aufgebaut. Die 3 uC sind auf einer Leiterplatte. Ich brauche keinen synchronen Takt, ich brauch drei USART, deshalb das Gebastle. Also CKOPT muss gesetzt werden. Dann XTAL2 vom 1. uC zu XTAL1 des nächsten uC usw.. Das geht sehr gut. Auf dem Oszi ist die Amplitude abgegriffen direkt am Quarz fast 2V und bricht kaum zusammen, wenn ich an den 2. uC gehe. Allerdings habe ich einen PC-Oszi, der nur bis 3MHz geht, deshalb auch ein Sinus -- glaube ich??? Aber die Amplitude bleibt bestehen. Nehme ich CKOPT raus, bricht die Amplitude zusammen.
Jens schrieb: > Allerdings habe ich einen PC-Oszi, der nur bis 3MHz geht, deshalb auch > ein Sinus -- glaube ich??? Ist auch auf besseren Scopes einer. > Nehme ich CKOPT raus, bricht die Amplitude zusammen. So ist CKOPT definiert. Ohne reduziert sich die Amplitude zwecks sparsameren Schwingens.
Jens schrieb: > ich brauch drei USART, deshalb das Gebastle. Das allein ist noch kein Grund. Wie schnell müssen die UARTs sein?
Lothar Miller schrieb: > Wie schnell müssen die UARTs sein? Geschwindigkeit ist keine Hexerei. ;-) Der relative Fehler ist das einzige, was für eine UART-Kommunikation zählt, der darf nicht mehr als 2 % sein. Wenn man den RC-Oszillator auf eine "baudratenfreundliche" Frequenz abstimmt und ansonsten mit dessen Toleranzen leben kann, dann sind auch 230400 Bd mit dem RC-Oszillator kein Problem. Wenn man allerdings mit dem Standardwert von 8 MHz arbeitet, dann hat man einen zusätzlichen Baudratenfehler bedingt durch den realisierbaren Teilerfaktor, und der addiert sich zu den Toleranzen des Oszillators dazu, sodass manche Baudraten aus dem Raster fallen.
Die Baudrate ist 31250 = Midi und ich nehme einen 8MHz-Quarz. Es ist eigentlich auch kein Problem 3 Quarze zu nehmen -- wollte nur mal wissen, ob jemand schon Erfahrung mit dieser Reihenschaltung gemacht hat. Dann könnte man faul sein und sich die 2 Quarze sparen. Übrigens habe ich auch schon verschiedene Versuche mit internem RC-Oszi bei dieser Baudrate gemacht. Das lief sehr gut -- erstaunlich -- habe den uC erhitzt (ca. 70°) und im Gefrierfach laufen lassen. Die Abweichungen waren immer noch im "grünen" Bereich bei 31250 ...
Jens schrieb: > Also CKOPT muss gesetzt werden. Dann XTAL2 vom 1. uC zu XTAL1 des > nächsten uC usw.. Das geht sehr gut. Na bitte!
Jens schrieb: > Das lief sehr gut -- erstaunlich -- habe den uC erhitzt (ca. 70°) und im > Gefrierfach laufen lassen. Die Abweichungen waren immer noch im "grünen" > Bereich bei 31250 ... Wenn das selbst mit dem ältlichen ATmega8 schon geht, dann könntest du durch Umstieg auf ATmega88 den/die Quarz(e) wohl komplett einsparen und gleich mit dem RC-Oszillator arbeiten. Der ist dort nochmal ein Stück stabiler geworden gegenüber den älteren AVRs.
Wenn es was ernsthaftes sein soll, würde ich es sein lassen mit dem Abgriff an XTALx. Nimm CLKOUT und fertig. Das ist sauber und richtig. Aber um mal weiter zu fragen: Brauchst du die 3 Mikrocontroller nur um 3 UARTs zu haben? Wie schon oben gesagt, nimm Software-UART für die beiden langsamsten UARTs.
Simon K. schrieb: > nimm Software-UART für die beiden > langsamsten UARTs. Wird wohl bei 31250 Bd (MIDI) nichts werden ... aber er hat ja schon den Tipp bekommen, welche Controller 3 (und mehr) UARTs haben.
Wieso nich 31250 Baud -> 320 µS Bitzeit (Da geht was mit Timerinterrupt) und ob 3 oder eine emulierte UART is nich SO viel hin/her...
Auch gut :-) Sollen alles 3 MIDI Schnittstellen sein? Habe das anders verstanden oder falsch gelesen.
Peter Dannegger schrieb: > Nimm die moderneren ATmega88 und setze beim Master die CLKOUT-Fuse. > > > Peter Ja also so kannst es doch machen. Du musst dann die beiden anderen Controller halt auf "external clock" fusen (und dann den Takt von CLKOUT an XTAL1), nicht auf Quarz und das Signal "durchschleifen". Solltest halt sehen dass die Abstaende unter den Controllern kurz sind. Mit dem alten Mega8 geht das allerdings nicht, wie schon gesagt. Greets, Michael
Danke -- ich werde eine ATM168 nehmen und über CLKO die anderen speißen.
hm.. mich würde dennoch interessieren ob das mit einem quarz und zwei atmegas funktionieren würde - auch wenn was anderes empfohlen wird. also sturr beide atmegas auf externes quarz stellen, und dann sehen was passiert, hat das schon mal jemand versucht? konkret schwebt mit eine stapelung von einem dip40 atmega über einem dip28 atmega vor - würde gut passen. zweite idee, die auch nicht so ganz sinnvoll ist: ein oder mehrere baugleiche atmegas stapel, um multicore zu haben.
stru_aus schrieb: > mich würde dennoch interessieren ob das mit einem quarz und zwei atmegas > funktionieren würde - auch wenn was anderes empfohlen wird. Man muss nicht unbedingt päpstlicher sein als der Papst. Soll heissen: Die beiden Controller von Atmels eigenem STK500 arbeiten höchstselbst mit einem einzigen Keramikschwinger, und XTAL2 vom oszillierenden Controller hängt an XTAL1 vom Kollegen. Klar ist aber auch, dass solche Verbindungen in Aufbau/Layout etwas kritisch sind. Und es kann auch sein, dass Quarze dabei empfindlicher sind als Keramikschwinger.
stru_aus schrieb: > konkret schwebt mit eine stapelung von einem dip40 atmega über einem > dip28 atmega vor - würde gut passen. Wenn du die beiden im QFP-Gehäuse nähmest, kommst du fast mit dem halben Platzbedarf aus.
mir ist klar: -smd-gehäuse machen weniger platzverbrauch, aber ich liebe lochraster, hab hier nix zum belichten/ätzen zur hand -es geht wie von atmel empfohlen mit der xtal1/xtal2-kopplung -mit nem quarzoszi könnte man mehrere antreiben, braucht nur eine leitung -mit internem 8mhz rc stellt sich die frage auch nicht dennoch die theoretische frage: ginge das überhaupt, zwei (oder mehr) atmegas, kurze wege zum selben quarz, und beide auf externes quarz gefust. ist zwar ausserhalb der specs, dennoch wollte ich da man nachfrgen, is ja nicht verboten :) mfg
stru_aus schrieb: > ginge das überhaupt, zwei (oder mehr) atmegas, kurze wege zum selben > quarz, und beide auf externes quarz gefust. Falls du XTAL1 mit XTAL1 und XTAL2 mit XTAL2 verbinden willst: nein, so funktioniert das nicht. Wenn schon, musst du von XTAL2 nach XTAL1 des Slave-Controllers gehen. Ob letzterer nun auf Quarzoszillator oder externen Takt eingestellt wird, spielt keine große Rolle.
Max schrieb: > Wieso nich 31250 Baud -> 320 µS Bitzeit (Da geht was mit Timerinterrupt) > und ob 3 oder eine emulierte UART is nich SO viel hin/her... Wieso kriege ich hier immer 32 µs raus? ;-) Bei dieser Bitrate ist nicht mehr viel mit Timerinterrupts zu machen. Und wenn der Controller (neben dem Einlesen der Werte) noch was nebenbei machen soll, dann wird die Zeit recht knapp. Auf der anderen Seite wäre es eine schöne Programmierübung, die drei seriellen Datenströme (interruptgesteuert und parallel) einzulesen. Ich würde hier eher versuchen, das Ganze in Hardware auszulagern, sprich die drei Schnittstellen in einem CPLD oder FPGA auszugliedern. Der Controller passt dann gegebenfalls auch noch mit ins FPGA. Aber ich denke, dies ist für den Threadersteller zu aufwändig. Gruß, Thomas
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.