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
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.
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...
Das alles vorausgesetzt, dass die CPU nirgendwo wartet ausser in diesem Loop ...
Wie muss denn das RC-glied dimensioniert sein? Das klingt mir irgendwie nach nen Tiefpass ist das richtig?
@ 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
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?
Was heisst denn das in konkreten Zahlen wenn man mal von 20MHz Taktfrequenz ausgeht?
Vergiss die 20MHz. Die PWM Frequenz ist irgendwas in den 10-100kHz. Ein RC Tiefpass duerfte dann eine Zeitkonstante von 1ms haben
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.