XMega Get Clock Speed

Ich debugge gerade mein Projekt und muss überprüfen, ob ich meinen externen Quarz richtig einstelle. Ich habe die Möglichkeit, über USB auf einen seriellen Monitor auszudrucken. Ist es möglich, die Taktgeschwindigkeit abzurufen und ob die CPU von der internen Uhr oder einem externen Kristall läuft oder nicht, damit ich das ausdrucken kann?

Hast du ein Oszilloskop? Sie könnten einen I / O-Pin umschalten und auf diese Weise die Taktrate messen.
Ich nicht. Ich muss Code einchecken können.

Antworten (2)

Sie können die aktuelle CPU-Taktgeschwindigkeit messen, indem Sie die interne Echtzeituhr verwenden, die vom lokalen 32,76-kHz-Oszillator angetrieben wird. Ich habe im Moment kein XMEGA zur Hand, daher kann ich kein genaues Verfahren angeben, aber die allgemeine Idee besteht darin, die RTC so einzurichten, dass sie eine feste Zeitdauer (z. B. 1 ms) misst und dann misst, wie viele Takte währenddessen auftreten diesen Zeitraum mit einem der 16-Bit-Zähler/Timer. Wenn Sie beispielsweise 8.044 Ticks während eines einzelnen 1-ms-RTC-Zyklus zählen, beträgt Ihre CPU-Taktrate 8044/1 ms = ~8 MHz .

Sie können überprüfen, ob Ihnen ein interner oder externer Takt ausgeht, indem Sie sich die Bits für die Auswahl des Systemtakts (SCLKSEL) im Taktsteuerregister (CTRL) ansehen.

Dies erfordert keinen Umfang. Benötigt einen I/O-Pin.

Schreiben Sie basierend auf Ihrer Meinung nach die Quarzfrequenz eine Routine, die Ihrer Meinung nach jede Sekunde einen I/O-Pin umschalten sollte (500 ms an, 500 ms aus), schließen Sie dann eine LED an den Pin an und zählen Sie die Anzahl der Impulse in a Minute. Je nachdem, ob die Zahl 60 oder etwas anderes kommt, können Sie dann einen Hinweis darauf bekommen, was los ist.

Ich habe dies die ganze Zeit getan, um meine Uhreinstellungen zu überprüfen.

Das funktioniert. Ich habe 60 Impulse in einer Minute, aber ich weiß nicht, mit welcher Frequenz es tatsächlich läuft oder ob es auf der internen Uhr oder der externen Uhr läuft.
@bwoogie Ich würde ein paar Experimente machen. Zuerst wäre es einfach, die externe Uhr zu trennen und zu sehen, ob sie noch läuft. Nehmen Sie zweitens eine Änderung an Ihrem Code vor, von der Sie glauben, dass sie einen messbaren Unterschied bewirken sollte, und sehen Sie, was tatsächlich passiert. Je nachdem, wie Sie Ihren Code geschrieben haben (ob es sich um eine einfache Schleife handelt oder Sie einen Timer verwendet haben), sollte es möglich sein, rückwärts zu arbeiten und die Frequenz herauszufinden.