Ich habe ein Projekt, von dem ich denke, dass es am besten für einen ATMega328P geeignet ist. In jedem einfachen Projekt, das ich gesehen habe, wird jedoch immer ein externer 16-MHz-Oszillator angeschlossen. Soweit ich sehen kann, sollte es einen internen 8-MHz-Oszillator haben. Mein Projekt erfordert weder viel Rechenleistung noch muss das Timing sehr genau sein (außer für UART und I2C). Ich habe auch einen Programmierer, so dass ich mich nicht um Bootloader kümmern muss.
Gibt es einen Grund für mich, einen externen Oszillator zu verwenden?
quelle
Da Sie einen UART verwenden, ist ein Quarzoszillator empfehlenswert. Wäre das nicht der Fall, könnten Sie den internen Oszillator verwenden. Einige MCUs verfügen über werkseitig getrimmte interne Oszillatoren, die für den UART-Betrieb geeignet sein können.
quelle
Msgstr "Nicht zeitempfindlich". UART ist sehr zeitkritisch. Sie erhalten vollständigen Müll, wenn er nicht ordnungsgemäß synchronisiert wird.
Option 1: Verwenden Sie einen normalen Kristall. Uhr ändern Sicherung entsprechend auswählen. Die Auswahl des Kristalls hängt davon ab, welchen Baud Sie verwenden möchten und wie schnell Sie möchten, dass das Ding funktioniert. Es gibt "magische Kristalle", die Ihnen 0% Fehler für Standardraten geben (wenn sie perfekt hergestellt sind). Weitere Informationen finden Sie in den Tabellen in Abschnitt 20 [USART0] (Sie haben das Datenblatt gelesen ... richtig ???) :).
Option 2: Sie können den internen Oszillator mit einem 32-kHz-Quarz kalibrieren, wenn die Stromversorgung ein Problem darstellt. Mit 32kHz können Sie uA-Ströme im Schlafmodus erhalten (ich habe sie auf ~ 2uA gesenkt). Sie müssen jedoch eine Kalibrierungsroutine einrichten, die das Starten / Stoppen von Timern und das Wechseln von Timer2 in den asynchronen Modus umfasst.
Der 328P-Code kann abweichen ... diese Funktion ist derzeit auf 48/88 (mit entsprechenden F_CPU / Baud-Definitionen) verfügbar. Es ist ein wenig hässlich / wird nicht vollständig überarbeitet, aber ich habe gelernt, besser als mit Dingen umzugehen, die funktionieren, wenn Sie sind Suchen Sie im AVRFreaks-Forum nach "tune 32khz crystal" so etwas. Dies ist nur ein Vorgeschmack auf das, worauf Sie sich einlassen ... Nicht unbedingt, was funktionieren wird.
quelle
Es sollte auch beachtet werden, dass der Start eines Kristalls lange dauert. Das liegt eigentlich an seiner Präzision: Es wird nur Energie aus einem sehr engen Frequenzband entnommen. Dies kann eine Belastung für batteriebetriebene Geräte sein, bei denen Sie die mcu von Zeit zu Zeit für eine sehr kurze Zeit aufwecken: Das Warten auf eine ms bei voller Leistungsaufnahme, bis der Kristall startet, ist ein Nettoverlust. Keramikresonatoren sind genauer als interne RC-Oszillatoren, aber weniger als ein Kristall und starten dementsprechend.
Natürlich trinkt ein 16-MHz-Atmega viel mehr Saft und benötigt eine höhere Spannung als ein 8-MHz-Atmega, aber es sind 8-MHz-Kristalle (oder niedrigere bis 32-kHz-Kristalle) verfügbar. Diese bloße Wahl kann auch ein Energiesparer sein.
quelle
Wenn Sie nicht viel oder genaues Timing benötigen, ist kein externer Oszillator erforderlich. Beim Zerlegen einiger alter Drucker sehe ich zufällig viele ICs, aber keinen einzigen Oszillator an Bord.
quelle
Ich vermute, Sie haben diese App bereits gesehen. Hinweis: AVR053: Kalibrierung des internen RC-Oszillators .
Ich vermute mal, und der App-Hinweis aus dem Kommentar von @drxzcl oben, sollte man theoretisch entscheiden können, was richtig ist.
quelle