Hallo, ich soll ein Gerät entwickeln, daß USB hat und dessen Mikrocontroller extern von einem Oszillator mit bestimmter Frequenz (12,288MHz oder 4194304Hz) getaktet wird. Ich würde gerne einen Atmel-Mikrocontroller verwenden, habe aber bisher mit diesen noch nicht gearbeitet. Nun habe ich mir das Datenblatt vom AT90USB1287 angeschaut und verstehe vielleicht ein paar Sachen noch nicht ganz: ------------------------ Wie es scheint, hat dieser Mikrocontroller keinen internen separaten Oszillator, nur für USB. -> [S.40: This clock is generated with an on-chip PLL running at 48MHz. The PLL always multiply its input frequency by 24.] i.V.m. -> Figure 6-1 "Clock Distribution", auf dem gezeigt wird, daß der PLL seinen Eingangstakt über den Clock-Mulitplexer- vom externen Oszillator abzweigt.) Ähnliches habe ich auch im Datenblatt des ATmega32U4 gesehen. Fragen: - Welchen Oszillatortakt kann ich extern anschließen und welche Auswirkungen hat dies auf den für USB notwendigen Takt? - Gibt es solche Nebenwirkungen oder muß ich mir darum keine Gedanken machen? - Gibt es Atmel mit separatem integrierten USB-Oszillator? - Ich habe nur Angaben zum maximalen Takt für Atmels gefunden, wo ist die untere Taktgrenze? (scheinbar abhängig von der Versorgungsspannung) Vielen Dank im Vorraus! Gruß Boris
Die haben natürlich einen integrierten Oszillator, sogar mehrere. ;-) Allerdings kannst du für USB aus Genauigkeitsgründen nicht den internen RC-Oszillator benutzen, bliebe also nur der interne Quarz- oszillator (mit externem Quarz) oder ein externer Takt, und da du für den USB-Betrieb die 64-MHz-PLL benötigst, bist du für die Wahl der Taktfrequenz auf deren mögliche Vorteiler angewiesen, sprich, es müssen entweder 8 oder 16 MHz Takt sein. Die kannst du nun über irgendeinen Taktversorgungsbaustein aus deinem TCXO ableiten, aber einfacher ist es vermutlich, wenn du USB und den Rest deiner Logik komplett entkoppelst und dem USB-Controller gleich einen eigenen Quarz von 8 MHz spendierst. Eventuell genügt ja auch einer der kleineren USB-AVRs dann für die Aufgabe, wenn du für den Rest der Aufgabe einen separaten AVR benutzt, der dann von deinem dedizierten Takt getrieben wird. Alternativ (ich weiß ja nicht, was du mit dem genauen externen Takt machen musst) kannst du auch überlegen, den Controller mit 16 MHz zu takten und die 4,nochwas MHz extern in einem Timer einzuspeisen.
Boris schrieb: > ich soll ein Gerät entwickeln, daß USB hat und dessen Mikrocontroller > extern von einem Oszillator mit bestimmter Frequenz (12,288MHz oder > 4194304Hz) getaktet wird. Auch wenn Du nen MC mit nem bestimmten Takt betreibst, hast Du keinen Einfluß darauf, daß Code zu einem bestimmten Taktzyklus ausgeführt wird. Bedingte Ausführung und Interrupts hauen Dir dazwischen. Wenn Du aber willst, daß der externe Takt gezählt wird und dazu synchron was ausgeführt wird, führe in in einen Timer. Für 4,2MHz muß dann der CPU-Takt >8,4MHz sein, z.B. 16MHz. Peter
Jörg Wunsch schrieb: > ber einfacher ist es vermutlich, wenn du USB und den > Rest deiner Logik komplett entkoppelst und dem USB-Controller gleich > einen eigenen Quarz von 8 MHz spendierst. Zur Alles-In-Einem-Variante: D.h. ich muß einen Quarz (8Mhz) und meinen TCXO an den Mikrocontroller anschließen. Quarz an XTAL1 und XTAL2,... und wohin der TCXO? - Kann ich den per Konfiguration an irgend einem Pin legen? Gibst Du mir bitte einen Hinweis wo ich im Datenblatt nachlesen kann? -------------------- Jörg Wunsch schrieb: >Alternativ (ich weiß ja nicht, was du mit dem genauen externen Takt >machen musst) kannst du auch überlegen, den Controller mit 16 MHz >zu takten und die 4,nochwas MHz extern in einem Timer einzuspeisen. Diese Möglichkeit scheidet für mich aus. -------------------- Vielen Dank, Jörg!
Peter Dannegger schrieb: > Auch wenn Du nen MC mit nem bestimmten Takt betreibst, hast Du keinen > Einfluß darauf, daß Code zu einem bestimmten Taktzyklus ausgeführt wird. > Bedingte Ausführung und Interrupts hauen Dir dazwischen. Vielen Dank für die klaren Worte. Sie lassen mich noch einmal genau nachdenken. Mir geht es im Wesentlichen darum, ein digitales Signal zu erzeugen, welches auf den 2^22MHz-Takt baut. Es ist für mich ungewöhnlich, daß für eine Aufgabe relativ wenig Text in einer ISR für einen Timer stehen kann, die nur einzelne Nullen oder Einser erzeugt. Ich muß mich wohl damit anfreunden. Damit wäre auch das Problem gleichzeitiges anschließen von Quarz und TCXO geklärt. ---------------- Nur aus reiner Neugier: Wäre es wirklich möglich Quarz und TCXO gleichzeitig zu verwenden?
Boris schrieb: > Mir geht es im Wesentlichen darum, ein digitales Signal zu erzeugen, > welches auf den 2^22MHz-Takt baut. Vielleicht solltest du dafür ein Stück Hardware spendieren, ein CPLD oder ein kleines FPGA? Ich verstehe nicht so ganz recht, warum man das unbedingt mit einer eierlegenden Wollmilchsau verwurschteln muss. Boris schrieb: [externer 2^22 Hz Takt an Timer] > Diese Möglichkeit scheidet für mich aus. Und warum? Je nachdem, was für ein Signal du erzeugen musst, kann das durchaus Sinn haben, das genau damit zu machen, zumal du dann mit einer mit 16 MHz tickenden CPU deine ISRs fast viermal schneller runtergerattert bekommst.
Solange die Fragen nicht klar definiert gestellt werden und im Notfall auch das dahinterstehende kommt, wird das nix. Die silabs USB-Teile haben einen internen USB-Clock. PLL oder so.
Abdul K. schrieb: > Die silabs USB-Teile haben einen internen USB-Clock. PLL oder so. Hallo Abdul, ja, ich weiß, ich habe schon mit dem C8051F320 von Silab gearbeitet. Daher war ich bei den Atmels mit der voran gegangenen Problemstellung auch etwas verwundert. Aber ich denke ich habe nun endlich verstanden, daß ich auch für meinen Fall einen Timer verwenden kann. Sollte es wider Erwarten anders sein, melde ich mich an dieser Stelle wieder, damit auch andere von so einem seltenen Fall erfahren, bei dem der Mikrocontroller in einem bestimmten Takt arbeiten muß. - Oder kennt Ihr so einen Fall? Mir fällt im Moment keiner ein. Der Groschen ist gefallen. Vielen Dank!
Nur aus reinem Interesse: Gibt es so einen Fall?
silabs ist technisch weit voraus. Nicht alle Hersteller können da mithalten.
Abdul K. schrieb: > silabs ist technisch weit voraus. Naja, eine interne PLL für den USB-Takt haben die USB-AVRs auch, allerdings kann man deren Teilerfaktor nicht einstellen. Die will von 2 MHz auf 48 MHz gehen, und die 2 MHz Referenz kann man nur per Vorteiler 4 oder 8 aus dem CPU-Takt ableiten.
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.