In AVR-Datenblättern im Abschnitt Elektrische Eigenschaften finden Sie normalerweise ein Diagramm wie dieses (dieses ist vom ATMega328):
Ich habe Designs gesehen, die zu "funktionieren" scheinen, aber außerhalb der schattierten Hülle funktionieren. Insbesondere habe ich 3,3-V-Designs (Arduino) gesehen, bei denen die Uhr von einem externen 16-MHz-Quarz ausgeführt wird. Das ist eindeutig außerhalb der Spezifikation. Was sind die praktischen negativen Folgen des Laufens außerhalb dieses Rahmens?
Wie man das Leben interessanter macht 101:
dass Ihre Ergebnisse manchmal falsch sein können,
dass Ihr System manchmal abstürzen kann,
dass Ihr Leben interessanter sein kann,
dass Ihr Segway-Klon nur gelegentlich ohne ersichtlichen Grund Gesicht-Pflanzen macht,
dass ...
Dann das Teil auf jeden Fall außerhalb der Herstellerspezifikation laufen lassen.
Sie bekommen, wofür Sie nicht bezahlen.
Wenn Sie einen 10-Dollar-Kopf haben, kaufen Sie einen 10-Dollar-Helm.
Oder nicht
Bei diesen Geschwindigkeiten berechnen die meisten Prozessoren alle Signale, die bei einem bestimmten Taktzyklus benötigt werden, warten auf die nächste Taktflanke, während sie sich stabilisieren, speichern alle diese Signale und berechnen die Signale, die beim nächsten Taktzyklus benötigt werden , Warten auf diese Flanke, während sich diese Signale stabilisieren usw. Wenn eine Taktflanke ankommt, bevor sich die erforderlichen Signale stabilisiert haben, besteht die Wirkung darin, dass die nicht stabilisierten Signale möglicherweise nicht sauber zwischengespeichert werden. Wenn dies in einem Mikrocontroller auftritt, können die Auswirkungen unvorhersehbar sein – aus mindestens zwei Gründen:
uint32_t eep_checksum, eep_addr, eep_data; #define EEPROM_WRITE(Adresse, Daten, Prädikat) \ eep_checksum = 0xC0DEFACE, eep_addr = (Adresse), eep_data = (Daten), \ eep_checksum += eep_addr + eep_data, ((prädikat) || HARD_CRASH()), \ eep_checksum += (0xCAFEBABE - C0DEFACE), eep_do_write() void eep_do_write(void) { ENABLE_EEPROM_WRITE_HARDWARE(); if (eep_checksum != eep_addr + eep_data + 0xCAFEBABE) { DISABLE_EEPROM_WRITE_HARDWARE(); HARD_CRASH(); } DO_EEPROM_WRITE(); DISABLE_EEPROM_WRITE_HARDWARE(); }Es ist sehr unwahrscheinlich, dass eine eeprom_write-Routine versucht, Daten zu schreiben, es sei denn, "eep_checksum = 0xC0DEFACE" wird ausgeführt, bevor die Adresse und die Daten geladen werden. Nach dessen Ausführung wird das Prädikat auf Gültigkeit geprüft, bevor die Prüfsumme auf den richtigen Wert eingestellt und die Routine eeprom_store aufgerufen wird.
Hersteller spezifizieren Betriebsparameter für Prozessoren, sodass die Prozessoren innerhalb dieser Parameter einfach funktionieren. Wenn Sie Dinge außerhalb dieses Bereichs verschieben, kann der Prozessor auf nur 99,9999999 zuverlässig reduziert werden. Das mag nicht allzu böse klingen, aber der Versuch, einen Prozessor zu diagnostizieren, der etwa einmal pro Minute etwas willkürlich falsch macht (mit 16 MHz), macht keinen Spaß.
Vereinfachte Antwort auf Ihre Frage:
Das Arbeiten außerhalb des "sicheren Geschwindigkeitsbereichs" kann dazu führen, dass Ihr System instabil arbeitet. Was das bedeutet? Falsche Berechnungsergebnisse, Mikrocontroller-Resets etc.
Wenn Sie das nur aus Spaß tun möchten, sollten Sie sich diese Seiten/Artikel ansehen:
Übertaktung von Arduino mit Flüssigstickstoffkühlung. 20⇒65,3 MHz bei -196 °C/-320 °F
Eine noch nicht erwähnte Überlegung, die weniger mit dem Betrieb bei gültigen Frequenzen in ungültigen Spannungsbereichen (16 MHz bei 3,3 V), sondern mehr mit dem Betrieb bei ungültigen Frequenzen in gültigen Spannungsbereichen (24 MHz bei 5 V) zu tun hat, ist die Wärmeableitung.
Jedes Mal, wenn ein Gate im Chip ein- oder ausgeschaltet wird, wird Wärme abgeführt. Das Gate, das aus MOSFETs besteht, wirkt in der Zeit zwischen EIN und AUS oder AUS und EIN wie ein variabler Widerstand. Dieser Widerstand leitet natürlich Wärme ab. Je häufiger es schaltet, desto weniger Zeit bleibt zwischen den Schaltvorgängen, damit diese Wärme aus dem Chip abgeführt werden kann, und Sie riskieren einen Wärmestau.
Ergo, je schneller du läufst, desto mehr Hitze kann sich aufbauen. Aus diesem Grund haben PC-CPUs große Lüfter - sie schalten so schnell, dass sie die Wärme nicht schnell genug aus dem Chip bekommen können, also brauchen sie Hilfe.
Die maximale Nenndrehzahl des Chips ist so gewählt, dass der Chip unter den gültigen Betriebsbedingungen (dh Umgebungstemperatur, typischerweise max. 85°C oder 105°C zum Beispiel) seine Wärmeentwicklung zuverlässig abführen kann. Eine Überschreitung dieser Frequenz kann zu einer Überhitzung des Chips führen.
Ja, es kann möglich sein, den Chip schneller als beabsichtigt zu betreiben, wenn Sie etwas Unterstützung bereitstellen - dh einen Kühlkörper und vielleicht einen Lüfter, und sicherstellen, dass eine gute Luftzirkulation um ihn herum vorhanden ist. Aber natürlich kann es an einem warmen Tag im Sommer vorkommen, dass ein Gerät, das den ganzen Winter über ein perfekt funktionierendes Gerät war, plötzlich seltsame Dinge tut.
Eine andere zu berücksichtigende Sache sind die Anstiegsgeschwindigkeiten. Taktsignale (und auch andere Signale) brauchen Zeit, um auf ihren gewünschten Pegel anzusteigen oder abzufallen. Wenn die Interna des Chips bedeuten, dass das Taktsignal beispielsweise 15 ns benötigt, um von einem LOW auf ein HIGH zu steigen, und Sie versuchen, es mit einer Frequenz zu takten, bei der eine HIGH-Periode beispielsweise 42 ns (24 MHz) beträgt, verbleiben nur 27 ns gültiger Takt Zeitraum übrig. Das sind nur 64% der Uhr, die tatsächlich ein Taktsignal sind - der Rest ist Müll. Dasselbe gilt für IO-Pins. Dinge wie SPI-Taktausgänge werden durch die Anstiegsgeschwindigkeit des IO-Pins begrenzt. Wenn Sie also Ihren Chip übertakten, um schnelleres SPI zu erhalten, werden Sie feststellen, dass die Dinge nicht immer wie geplant laufen, da die schöne Rechteckwelle, die Sie vom Taktausgang erwarten ist nicht mehr quadratisch.
Das Gerät funktioniert möglicherweise bei einigen Spannungs-/Temperaturkombinationen nicht.
Olin Lathrop
Hossein
Benutzer34920
nitro2k01
Jules
Vicatcu
Oldtimer