Forum: Mikrocontroller und Digitale Elektronik CPU Auslastung messen


von Karsten (Gast)


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

von Gast (Gast)


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.

von Tim (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


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...

von 1334 (Gast)


Lesenswert?

Das alles vorausgesetzt, dass die CPU nirgendwo wartet ausser in diesem 
Loop ...

von Karsten (Gast)


Lesenswert?

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

von Falk B. (falk)


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

von Karsten (Gast)


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?

von Karsten (Gast)


Lesenswert?

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

von 1351 (Gast)


Lesenswert?

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

von Rolf Magnus (Gast)


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.

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
Noch kein Account? Hier anmelden.