Kann ein Mikrocontroller mit einem Oszillator arbeiten, wenn er einen Quarz erwartet?

Ich entwerfe eine Schaltung, die verschiedene Mikrocontroller akzeptiert und programmiert, zB Atmels ATmega328P .

Diese Mikrocontroller verfügen in der Regel über sogenannte „Sicherungen“ zur Konfiguration ihrer Taktquellen und bieten im Allgemeinen die folgenden Optionen:

  1. Interner Oszillator
  2. Externer Kristall
  3. Externer Oszillator

Meine Frage ist einfach: Wenn der Mikrocontroller so konfiguriert ist, dass er einen Kristall erwartet, funktioniert er dann richtig, wenn Sie ihn stattdessen mit einem externen Oszillator versehen?

Für zusätzliche Anerkennung: Was passiert, wenn Sie ihm einen langsameren Oszillator geben? Wird es nur langsamer ausgeführt?

Ja, wenn Sie ihm einen langsameren Oszillator geben, wird er langsam laufen. Ex - wenn Sie 16 MHz angeben und einen 8-MHz-Oszillator liefern, gibt delay(500) in arduino Ihnen eine Verzögerung von 1 Sekunde.
@Whiskeyjack Bitte beantworten Sie keine Fragen in Kommentaren. Ihre Antwort ist im Allgemeinen nicht wahr, obwohl dies für dieses spezielle Beispiel der Fall sein kann.
Was hat das Datenblatt für das Teil gesagt, als Sie es gelesen haben?
@old_timer es hat nichts gesagt, weshalb ich die verdammte Frage stelle. Warum verpisst du dich nicht mit deinen abfälligen Bemerkungen?

Antworten (1)

Nahezu jeder Mikrocontroller, der einen Kristall verwenden kann, ist für einen Pierce-Oszillator ausgelegt . Weitere Details finden Sie hier AN2049 (nicht nur auf Freescale beschränkt). Ihre MCU hat XTAL1- und XTAL2-Pins, einer ist der "Eingang", der andere der "Ausgang" des Oszillators.

Ich bin mir nicht sicher, was Sie mit "externem Oszillator" meinen. ATmegas kann normalerweise von einem internen Oszillator, einem externen Quarzoszillator, einem externen Keramikoszillator und einem externen Taktsignal betrieben werden .

Ich denke, dass Sie unabhängig von den Sicherungseinstellungen immer ein externes Taktsignal (stark genug, um das Gate im Inneren anzusteuern) an den XTAL-Eingangspin liefern können. Verwenden Sie zum Beispiel einen Kristallgenerator (den rechts): https://upload.wikimedia.org/wikipedia/commons/6/6e/18MHZ_12MHZ_Crystal_110.jpghttps://upload.wikimedia.org/wikipedia/commons/6/6e/18MHZ_12MHZ_Crystal_110.jpg

ATmegas haben einen statischen Speicher, daher kann die Taktrate so langsam wie DC oder 1Hz sein . Die MCU wird nur langsamer laufen. Denken Sie daran, dass es eine Beziehung zwischen der MCU-Geschwindigkeit und der maximalen ISP-Programmiergeschwindigkeit gibt, sodass Ihr USBasp oder ein anderer Programmierer möglicherweise keine Verbindung zu einer MCU herstellen kann, die mit 1 Hz läuft.

Wenn Sie auf jeden AVR zugreifen möchten, unabhängig von den Sicherungseinstellungen (Uhrtyp ist nur einer von vielen), benötigen Sie sowieso einen Hochspannungs-Parallel- (oder seriellen für einige Tinys) Programmierer wie den AVR Dragon

Können Sie bitte näher darauf eingehen: "ATmegas haben einen statischen Speicher, sodass die Taktrate so langsam wie DC oder 1 Hz sein kann." Danke :)
Ein Hochspannungs-Parallelprogrammierer ist so ziemlich das, was ich versuche zu machen. Übrigens habe ich einmal versucht, einen Pierce-Oszillator zu bauen, und es hat nicht funktioniert. Ich habe keine Idee warum.