Hallo, im K(r)ampf mit dem STM32F4 möchte ich eine Technik nutzen, die ich bei PIC und AVR oft gemacht habe, das Runtertakten wenn sich das Programm in der Schleife befindet und kein Trigger aktiv ist auf etwas zu reagieren. Das spart ne Menge Strom bei Batteriebetrieb. Der M4 ist nun erheblich komplexer, was sein Clocking System angeht: http://www.st.com/web/en/resource/technical/document/application_note/DM00039457.pdf Ist es überhaupt sinnvoll so etwas zu machen? Es muss ja nicht nur der Haupttakt geändert werden sondern auch die Bustakte dann direkt mit auf "richtige Werte". Ich benutze die USART, daher müssen zb die Stndardbadrate passen und ich habe keine Ahnung welche Grenzen zb für den Bustakt gelten, bisher nur mit den Standardeinstellungen gearbeitet. Hta da jeamnd schon mal was gemacht, zb fertige Routinen?
Hey Cristian, verwendest du denn die Standard-Lib: http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257901# ? Da sollte es doch die entsprechenden Routinen geben den Haupttakt zu ändern... Dabei musst du natürlich alle anderen Taktquellen berücksichtigen. beste grüße public
Hi, ich habe die StdPeriph Libs und noch welche drüber von Tilen Majerle. In den Libs ändert man die Freq im Header, da stehen auch die Zahlen für die ganzen Register drin. Muss man sich vorher berechnen und dann eintragen. Routinen wie Set_clock(100 MHZ) gibt es nicht. Was ich so sehe ist, dass man sich mit dem Clock Tool von ST so einige Freqs herrauspicken kann und diese dann in eine Routine packt, so dass zb der HSCK zwar runter geht aber die AHB und APB Clocks durch Anpassung ihrer Prescaler gleich bleiben, damit kein Murks entsteht. Wenn man die PLL ändert muss sicherlich einiges mehr beachten werden aber soweit bin ich noch nicht. Blöd, dass man das alle nicht nachmessen kann...
Hallo, du kannst dir ja eine definierte frequenz per timer/pwm ausgeben und mittels oszi überprüfen, dann den takt runterregeln und den timer nachziehen. am ende solltest du dann natürlich wieder bei deiner ausgangsfrequenz ankommen... gibt es nicht sogar einen pin der den internen takt direkt nach außen abgibt? beste grüße public
Christian J. schrieb: > Wenn man die PLL ändert muss sicherlich einiges mehr beachten werden zum Beispiel hat man dann eine Zeit lang (bis die die PLL eingeschwungen ist) einen ziemlich undefinierten, auch höheren, Takt. > Blöd, dass man das alle nicht nachmessen kann... Immerhin gibt's die Alternate Function "MCO". Damit kann man diverse interne Taktquellen auf einen Ausgangspin schalten.
Christian J. schrieb: > Hallo, > > im K(r)ampf mit dem STM32F4 möchte ich eine Technik nutzen, die ich bei > PIC und AVR oft gemacht habe, das Runtertakten wenn sich das Programm in > der Schleife befindet und kein Trigger aktiv ist auf etwas zu reagieren. > Das spart ne Menge Strom bei Batteriebetrieb. > Wie lange sind den die Zeiten der Aktivitaet un des Schlafens? > Der M4 ist nun erheblich komplexer, was sein Clocking System angeht: > > http://www.st.com/web/en/resource/technical/document/application_note/DM00039457.pdf > > Ist es überhaupt sinnvoll so etwas zu machen? Es muss ja nicht nur der > Haupttakt geändert werden sondern auch die Bustakte dann direkt mit auf > "richtige Werte". Ich benutze die USART, daher müssen zb die > Stndardbadrate passen und ich habe keine Ahnung welche Grenzen zb für > den Bustakt gelten, bisher nur mit den Standardeinstellungen gearbeitet. > > Hat da jeamnd schon mal was gemacht, zb fertige Routinen? Ich habe das gemacht, um mit dem F411 einen batteriebetriebenen Datenlogger fuer One-Wire zu machen. Ich benutze allerdings den RTC. Wenn der uC nichts zu tun hat, legt er sich schlafen, allerdings mit aktivierten RTC Ereignis. Mit dem RTC Ereigniss geht es dann weiter. Im Mittel brauche ich weniger als ein Milliampere. Inzwischen wuerde ich das mit dem STM32L476 machen, der mit seinem MSI noch einfacher zu handbaben ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.