www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CPU Auslastung messen


Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Allerseits,
ich würde gerne mal wissen wie man feststellen kann ob ein 
Microcontroller noch genuegend Rechenpower hat, bzw. wie hoch die cpu 
auslastung ist.

Speicher und Flash bedarf laesst sich ja relativ leicht ermitteln, aber 
woher weiss ich das die CPU das dann auch immer noch schafft was ich 
will?

Mein naiver Ansatz dazu wäre jetzt einfach in der main() funktion eine 
variable in einer endlossschleife zu inkrementieren und in nen interrupt 
z.b. jede sekunde zu schauen wieviel increments der hauptthread geschaft 
hat. Da alle meine eigentlichen Aufgaben die der uc zu bewaeltigen hat 
in irgendwelchen interrupts abgearbeitet werden sollte das doch 
eigentlich klappen oder?

Beim uc handelt es bei mir um einen atmega8 aber das sollte man ja 
eigentlich auf so ziemlich jeden uc uebertragen koennen oder?

Habt ihr Anregungen oder weiterere Gedanken diesbezueglich, bin mir 
nicht sicher ob ich da vl. voll aufm Holfzweg bin oder nicht?


Gruss,
Karsten

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn nichts zu tun ist schalte ich immer eine LED ein, bei einem 
Interrupt schalte ich sie dann während der Abarbeitung aus. An der 
Helligkeit schätze ich dann die Auslastung ab.

Autor: Tim (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Anstatt der LED hänge ich ein OSZI dran. Da kann man dann der CPU schön 
bei der arbeit zugucken :-)

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch besser: Anstelle des Oszi, hänge ein RC Glied dran: 0V entsprechen 
0%, 5V (oder bei was auch immer die Betriebsspannung liegt) entsprechen 
100%. Wenn man jetzt noch einen Spannungsteiler verwendet, dann kann man 
das ganze so kalibrieren, dass 0% 0mV entsprechen und 100% 100mV. Somit 
hat man direkt eine % Skala...

Autor: 1334 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das alles vorausgesetzt, dass die CPU nirgendwo wartet ausser in diesem 
Loop ...

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie muss denn das RC-glied dimensioniert sein? Das klingt mir irgendwie 
nach nen Tiefpass ist das richtig?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karsten (Gast)

>Wie muss denn das RC-glied dimensioniert sein? Das klingt mir irgendwie
>nach nen Tiefpass ist das richtig?

Ja. Die Zeitkonstante sollte um den Faktor 100..1000 grösser sein, als 
die Periodendauer der Pulse, die gemessen werden.

MfG
Falk

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Koennte man mit mehreren verschiedene RC Gliedern sowas machen wie im pc 
wo die load fuer kurze, mittlere und lange zeit angezeigt wird?
Quasi 1sec, 30sec, 5min oder sowas?

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was heisst denn das in konkreten Zahlen wenn man mal von 20MHz 
Taktfrequenz ausgeht?

Autor: 1351 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergiss die 20MHz. Die PWM Frequenz ist irgendwas in den 10-100kHz. Ein 
RC Tiefpass duerfte dann eine Zeitkonstante von 1ms haben

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mein naiver Ansatz dazu wäre jetzt einfach in der main() funktion eine
> variable in einer endlossschleife zu inkrementieren und in nen
> interrupt z.b. jede sekunde zu schauen wieviel increments der
> hauptthread geschaft hat.

In der Regel hat man beim µC ja eher gewisse Echtzeitanforderungen. Da 
spielt es meistens keine Rolle, wieviel Prozent der Gesamtrechenzeit 
wirklich genutzt werden, sondern eher, daß bestimmte Code-Abschnitte in 
definierter Maximalzeit fertig sind, während andere Code-Abschnitte 
unkritisch sind.

> Da alle meine eigentlichen Aufgaben die der uc zu bewaeltigen hat
> in irgendwelchen interrupts abgearbeitet werden sollte das doch
> eigentlich klappen oder?

Wenn einer dieser Interrupts zu lange braucht, bringt es dir nichts, 
wenn dann noch 80% der "Rechenzeit" ungenutzt sind. Es tut dann trotzdem 
nicht.

> Habt ihr Anregungen oder weiterere Gedanken diesbezueglich, bin mir
> nicht sicher ob ich da vl. voll aufm Holfzweg bin oder nicht?

Wie du sicher schon gemerkt hast, halte ich die Idee für die meisten 
µC-Anwendungen für mäßig sinnvoll.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.