Taktrate/Frequenz ändern

Hallo,

ist es möglich bei einem Arduino/Atmega328 im laufenden Betrieb die Taktrate zu ändern? Vllt mit 2 Quarzen?
Die Idee dahinter ist, Strom zu sparen. Allerdings benötige ich in der Zeit in der der Chip "richtig" arbeitet die PWM Ausgänge und würde da ungern auf die Frequenz verzichten, die ja wie ich gelesen hab auch von der Frequenz des Chips abhängt.

Kann ich damit Strom sparen oder ist es den Aufwand nicht wert?

Schon mal vielen Dank :wink:

Ja!

Zum Strom sparen gibt es eigentlich verschiedene Sleep - Modi.
Nur um eine bestimmte PWM Frequenz zu haben, brauchst du auch keine 16 MHz, und keinen Quarz, sondern kannst zwischen den internen 8 und 1 MHz wechseln.

Hallo,

zum Energie einsparen nützt Dir eine Taktsenkung sehr wenig. Das ist alles nur Kosmetik. Wenn dann müßtest Du auch die Spannung dazu ändern. Zum Bsp. den µC nur mit 3,3V und 8MHz betreiben. Das wäre aber sehr aufwendig. Richtig Energie sparen kannst Du nur wenn Du den µC schlafen legst und durch externe Interrupts aufwecken kannst.

vielen Dank für die Antworten :wink:

War gestern nur so eine Schnapsidee, die mir spontan gekommen ist, ich aber nichts im Internet dazu finden konnte.
Außer natürlich bei "richtigen" Prozessoren (dann nicht Absenkung der Taktrate sondern eher Anhebung (Boost))

nicht Absenkung der Taktrate sondern eher Anhebung (Boost)

Soll auch Leute geben, die behaupten 16MHz geht auch mit 3.3V
Von 24 MHz hab ich allerdings noch nichts gesehen.

Wobei das auch keinen wirklichen Sinn macht.
Die Geschwindigkeitszunahme ist eigentlich unwesentlich. Interessanter am "Arduino Übertakten" ist eher, ob man bei Standard-Taktfrequenz auch mit geringerer Versorgungsspannung auskommt.

16Mhz geht mit 3V3 nicht zuverlässig, irgednwo nach 12-14MHz ist das ganze alles andere als zuverlässig. Wenn du wirklich Strom sparen willst, dann nehme keine Nano, Uno oder ähnliches, sondern einen nakten Atmega oder Pro Mini. Am besten direkt mit 8MHz und 3V3. Das reicht vollkommen aus, 16MHz braucht man nicht immer.

Strom sparen geht so:

  1. nackter 328er
  2. RC Oscillator statt Quarz
  3. Frequenz auf 1 MHz absenken (um mit niedriger Spannung laufen zu können)
  4. So lange wie irgend möglich schlafen legen (Stichwort Narkoleptic: https://code.google.com/p/narcoleptic/source/browse/user+guide.txt)
    4b) alles was irgendwie geht an die Hardware abdrücken, also eine Zustandsmaschine die mit Interrupts arbeitet und zur Not mit den Hardwarezählern arbeitet
    4c) unnötige Prozessorfeatures ausschalten

Mein Rekord liegt bei <1 Microampere im Schlafmodus und ~200 Mikroampere wach. Im Mittel <1 Mikroampere :wink:

Moin,
für das Einstellen der PWM-Frequenz gibt es eine Library.
Damit bist Du unabhängig von der Taktfrequenz.

Man kann es aber auch ohne Library programmieren.

Gruss
Kurti