µC "normal" mit Maximal-Frequenz betreiben ?

Begonnen von picass, 31.07.2025, 11:42:08 CEST

Vorheriges Thema - Nächstes Thema

picass

Das Thema ist schon an verschiedenen Stellen in unseren Beiträgen aufgetaucht, aber nie vom Grundsatz aus beleuchet worden. Es scheint beim Schreiben der Programme "normal" zu sein, einen µC mit seiner maximal möglichen Frequenz zu betreiben. Darüber scheint niemand oder kaum jemand überhaupt zu reflektieren...., was mich persönlich verwundert. Selbst hatte ich mir schon vor langem angewöhnt - im Grunde seit meinen ersten Programmerstellungen überhaupt dunnemals für den berühmten PIC16F84 - , jedesmal über die sinnvolle Betriebsfrequenz zu grübeln und das auch umzusezten. So laufen fast alle PICs in meinen Steuerprogrammen nicht mit dem Maximum, sondern dem exakten Gegenteil, dem Minimum, und das liegt bei 31.250 Herz.
Meine Überlegung dabei: warum sollte der µC schneller laufen, als es für die Steuerung im Programm sinnvoll und notwendig ist? Es ist mir bewusst, dass dies statistisch eine Minderheitenmeinung ist. Aber gerade deswegen bin ich an einer Debatte interessiert und würde gerne hören, mit welchen Argumenten denn ein Betrieb am Maximum unterstützt wird.
Grüße, picass

PICkel

Also ich bevorzuge für allgemeine Aufgaben Taktfrequenzen von 1 bis 4 MHz. Das ist ein Taktbereich, der für Ausgaben auf Text-LCD, I²C und zügige Interrupt- Abarbeitung ausreichend ist.
4MHz haben zudem den angenehmen Effekt, dass jeder Befehl 1us dauert und Zeitberechnungen mit Timeranwendungen übersichtlich macht.

Es muss manchmal auch schneller gehen:
- Viele umfangreiche Rechenoperationen (Winkelfunktionen, Wurzelziehen usw.): Meine CNC-Steuerung mit PIC18F6722 arbeitet z.B. mit 32MHz.
- Zeitkritische Anwendungen: Die Ansteuerung von WS2812 erfordert ein präzises Timing: Auch hier sind 32MHz (=125ns/Takt) sinnvoll, die exakte Ansteuerung musste dabei in Assembler geschrieben werden.

Es muss manchmal auch langsamer gehen:
- Batteriebetriebene Geräte erfordern bei Langzeitbetrieb eine möglichst geringe Leistungsaufnahme: Ich arbeite gerade an einer batteriebetriebenen Uhr, die per Induktion gebremst wird. Dazu werden 10Hz-Impulse einer Magnetscheibe mit einem 32768Hz- Takt verrechnet.
Hier benutze ich:
Warten bei 31kHz, bis die Magnetscheibe läuft
Danach: Impulse zählen 0,8s bei 125kHz
Umschalten auf 2MHz, 0,2s  Impulse auswerten bei 2MHz, zurückschalten auf 125kHz.

31kHz entsprechen 7750 Befehlen/sec (0,129ms Takt), das mag manchmal genügen, ist mir aber zu langsam, wenn nicht auf geringstmögliche Stromaufnahme geachtet werden muss. Vor Allem, wenn Interrupts möglich sind und der Programmablauf nicht zuuu lange unterbrochen werden darf.

Gruß
PICkel
   

Ottmar

Hallo,
gerade habe ich einen Beitrag  im Forum untergebracht, zur Einstellung eines Interrupt-Intervalls, abhängig von fosc, Timer und Prescaler (siehe "ruptus").

Zum aktuellen Thema: Meine Meinung ist, es gibt keine feste  Regel für die Wahl der optimalen fosc. Einzig alleine sind die Anforderungne der Software, der Pheripherie und des Mikroprozessors maßgeblich.
Ich stimme da PICkel voll zu.

Vor einigen Jahren habe ich mit der Aufnahme von Morsesignalen und der Wiedergabe in Klartext im LCD experimentiert. bei fosc 31khz hätten bestimmt die Morsezeichen, das Ablesen aus der LUT und die Ausgabe im LCD überholt, sprich: hätte nicht funktioniert.

Baut man einen kleinen Frequenzzähler - wie bei SPRUT - kommt man mit 31kHz nicht weit, denn das kleine Ding mit PIC16F628 zählt mit seinem Comparator am Eingang bis gegen 50MHz (fosc = 4MHz)!

Z.B findet man im Datenblatt HD44780 LCD Angaben zum Timing:
CPU bus timing 1 MHz 1 MHz (when VCC = 3V)
2 MHz (when VCC = 5V)
Auf Seite 191 des HD44780-Datenblattes findet man auch Angaben zur Ausführungszeit der einzelnen
Instruktionen, wonach mach seine fosc ausrichten kann.
Wird z.B. bei der Instruktion "Return Home" ein Delay von => 1,52ms eingebaut - falls man das Busyflag
nicht abliest, werden alle anderen Instruktionen in 37us ausgeführt. So kann man auch optimieren.

Ok, ich experimentiere ja nur, baue selten ein fertiges Gerät, kann da bei richtigen Bastlern  wohl nicht mithalten, welche mit Ergebnissen aufwarten,  die man auch nach längerer Zeit noch in der Hand halten kann.

mfG Ottmar

pic18

Ich fahre immer mit 40MHz bzw. 48Mhz. Meine Programme sind aber komplexer als nur ein paar LED's ein und auszuschalten. Die Frequenz wird auch benötigt um die Baudrate für die verschiedenen Schnittstellen einzustellen. Irgendwelche Warteschleifen versuche ich auch zu vermeiden. Das steuere ich alles über Interrupt. Also wenn eine gewisse Zeit abgelaufen ist, dann starte ich die einzelnen Unterprogramme. 

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

🡱 🡳