Kann ich mit ATTINY85 Frequenzen schneller als 32 MHz erzeugen?

Ich glaube, ich kann den 64-MHz-PLL-Takt mit PWM verwenden, um jeden Zyklus umzuschalten und dadurch einen 32-MHz-Rechteckwellenausgang an einem IO-Pin zu erzeugen, richtig?

Gibt es einen Trick, um eine noch höhere Frequenz (mit mindestens 1 V Hub) zu erzeugen, ohne externe Komponenten zu benötigen? Kann ich zum Beispiel den 64-MHz-PLL-Ausgang selbst aus dem Chip herausholen?

Beachten Sie, dass die 64-MHz-PLL nur auf den internen RC-Oszillator und nicht auf einen externen Quarz referenziert werden kann. Alles, was Sie auf diese Weise tun, ist also nur ungefähr frequenzgenau.

Antworten (2)

Es ist nicht möglich, eine höhere Frequenz als die Systemtaktfrequenz oder die halbe Timertaktfrequenz ( PCLK/2) einzuspeisen.

CLKODer Systemtakt kann über den Pin durch Setzen der entsprechenden Sicherung wie in Abschnitt 6.4 angegeben ausgegeben werden . Die höchstmögliche Systemtaktfrequenz (während sie innerhalb der Spezifikation bleibt) beträgt 16 MHz , die entweder von einer externen Single-Ended-Quelle oder im Fall des ATTiny85 von abgeleitet werden kann PCLK/4- die Division durch 4 für die PLL kann niemals umgangen werden als in Abschnitt 6.1.5 angegeben. Wie im Datenblatt besprochen, ist die Verwendung CLKObei Verwendung eines externen Kristalls nicht möglich.

Alternativ ist es möglich, den Timer zu verwenden, um eine Frequenz von der Hälfte des Timertakts auszugeben – indem der Ausgang bei jedem Taktzyklus umgeschaltet wird. Die höchste spezifizierte Frequenz für den Timer-Takt beträgt 64 MHz bei Verwendung der 8x PLL von einer 8-MHz-Taktquelle (eine 16-MHz-Quelle kann auch verwendet werden, indem der /2-Vorteiler aktiviert wird). Das bedeutet, dass die maximale Frequenz mit Timer 1 32 MHz beträgt .

Es ist nicht möglich, eine höhere Frequenz als diese zu erreichen, ohne externe Komponenten zu verwenden oder die MCU außerhalb ihrer Nennspezifikationen zu betreiben.

Sie könnten eine kleine externe Taktverdopplungsschaltung (z. B. XOR-Gatter und Verzögerungskette) verwenden, je nachdem, wie stabil ein Takt ist, den Sie benötigen. Alternativ kann es einfacher sein, eine externe Taktquelle mit der gewünschten Frequenz bereitzustellen. Wenn Sie irgendeine Form der Synchronisierung benötigen, können Sie diesen höherfrequenten Takt auf eine Frequenz herunterteilen, die zum Ansteuern des MCU-Pins geeignet ist CLKI.

Ups, verpasst, wie alt diese Frage war. Es wurde vom "Community"-Bot an die Spitze gestoßen.

Laut Datenblatt:

6.4 Taktausgangspuffer

Das Gerät kann den Systemtakt auf dem CLKO-Pin ausgeben (wenn es nicht als XTAL2-Pin verwendet wird). Um den Ausgang zu aktivieren, CKOUTmuss die Sicherung programmiert werden. Dieser Modus ist geeignet, wenn der Chiptakt verwendet wird, um andere Schaltungen im System anzusteuern. Beachten Sie, dass die Uhr während des Zurücksetzens nicht ausgegeben wird und dass der normale Betrieb des I/O-Pins außer Kraft gesetzt wird, wenn die Sicherung programmiert wird. Interner RC-Oszillator, WDT-Oszillator, PLL und externer Takt ( CLKI) können ausgewählt werden, wenn der Takt auf ausgegeben wird CLKO. Quarzoszillatoren ( XTAL1, XTAL2) können nicht für die Taktausgabe an verwendet werden CLKO. Bei Verwendung des System Clock Prescaler wird der geteilte Systemtakt ausgegeben.

Solange Sie also keinen Quarzoszillator verwenden, der sowohl die Pins CLKIals auch verbrauchen würde CLKO, sollten Sie in der Lage sein, den Taktausgang der PLL direkt über den Pin auszugeben CLKO.

Aber das Datenblatt sagt auch, dass der Chip den PLL-Takt immer durch 4 teilt, wenn er für den Systemtakt verwendet wird, also denke ich, dass diese Technik mich auf 16 MHz begrenzen würde, oder? "Es gibt eine interne PLL, die eine nominelle Taktrate von 64 MHz bereitstellt, die an den RC-Oszillator für die Verwendung des peripheren Timers/Zählers1 und für die Systemtaktquelle gekoppelt ist. Bei Auswahl als Systemtaktquelle durch Programmierung der CKSEL-Sicherungen auf '0001 ', es wird durch vier geteilt, wie in Tabelle 6-4 gezeigt."
Ich habe Atmel-Datenblätter noch nie gemocht. Es ist sehr unklar, da an einer Stelle steht, dass Sie die PLL (als eines aus einer Auswahl von Elementen) ausgeben können, und an anderen heißt es, dass es die Systemuhr ist, die sie ausgibt. Das macht keinen Sinn. Probieren Sie es einfach aus und sehen Sie, was Sie bekommen, denke ich, da das Datenblatt Mist ist.
Ich verwende Digispark (und habe bereits 2 meiner 4 Einheiten gemauert) ohne den normalen seriellen Programmierer, daher möchte ich keine Sicherungen durchbrennen, es sei denn, ich bin mir sicher, dass es funktioniert ... aber ich könnte dies tun, wenn Antworten hier lass mich im Ungewissen. Außerdem habe ich keine Ausrüstung, um die Frequenz der Ausgangswellenform zu überprüfen.
in one place it says you can output the PLL (as one of a selection of items)- In diesem Auszug steht das nicht, es besagt, dass der Systemtakt auf dem CLKO ausgegeben wird und wenn aktiviert, nur RC, WDT, PLL und CLKI als Quelle für den MCU-Takt verwendet werden können. Wenn die PLL die Quelle des Systemtakts ist, ist sie immer die PLL-Frequenz /4, wie in Abschnitt 6.1.5 gezeigt.