verbleidende Leistung in MIPS anzeigen

Gast #1563234
Lesenswert?

Hallo, ich habe letztens ein microcontroller demo gesehen, in dem 
angezeigt wird wieviel Restleisung in MIPS noch verfügbar ist. Mein 
mega644 erzeugt ein BAS signal, RAM ist noch massig da, flash auch. 
Jetzt interessiert mich wieviel Rechenleistung ich noch vorhanden. Wie 
berechnet man soetwas?
#1563248
Lesenswert?

Einen Task erzeugen der immer dann laeuft, wenn nichts Anderes getan 
wird und schauen wie oft innerhalb des Tasks eine bestimmte Anzahl von 
Instructions, innerhalb einer bestimmten Zeit, abgearbeitet werden.

Oder immer wenn dein Programm nichts zu tun hat die clockticks zaehlen 
bis dein Programm wieder was zu tun hat. Ueber z.B. eine Sekunde 
aufsummieren und dann ausgeben und den counter resetten.

Ist aber alles nicht so einfach, solange du kein Multitasking OS 
verwendest. Aber machbar.

Gruss
Marc
Gast #1563595
Lesenswert?

hmmm gefällt mir alles nicht so richtig. Könnte man nicht einfach noch 
etwas berechnen lassen um zu bestimmen wieviel rechenleistung noch da 
ist? Beispiel mein Interrupt macht das Signal etc. und ich berechne im 
Main loop PI oder irgendwas anderes und sammle die benötigten Ticks, 
habe daher ein Rückschluss wieviel Rechenleistung allein für die 
Signalerzeugung draufgeht und kann damit zumidestens schonmal 
einschätzen was ich noch im hintergrund machen darf/kann.
Gast #1563604
Lesenswert?

Die PWM-Ausgabe ist genial, da kann man direkt eine Drehspulanzeige 
anschließen.

Ich setze auch oft ein Pin beim Aufruf einer Funktion und setze ihn beim 
Ende zurück. Damit lässt sich die "Bearbeitungsdauer" leicht messen.
#1563608
Lesenswert?

PI berechnen brauchst bestimmt nicht. da reicht auch einfach eine 
while(1). dort die Ticks zaehlen und einmal pro Sekunde ueber einen 
interrupt ausgeben und zuruecksetzen.

EDIT:
schreib die schleife in ASM und du weisst genau wie viel ticks benoetigt 
werden. Dann einfach jedesmal in der Schleife das zu einer Variablen 
hinzuaddieren und dann wie oben ausgeben und zuruecksetzen.

Gruss

Marc
Gast #1563625
Lesenswert?

@Klaus Wachtler (mfgkw)
> Relativ gängige Alternative: Immer wenn etwas getan wird einen
> Pin setzen sonst löschen.
> Das ergibt eine PWM-Ausgabe, z.B. für ein Oszi
wie geht das genau, wenn ich der in main den Pin setze dann muss ich ihn 
ja in jeder Interupt der kommen kann löschen? Sonst wird ja die Zeit in 
der ISR als Idle Zeit berechnet.
#1563662
Lesenswert?

wenn vorhanden, kannst Du den VSYNC nutzen. Am einfachsten ist es, die 
freien Takte während der LOW-Zeit und dann die waährend der HIGH-Zeit zu 
messen und schliesslich beides zu addieren. Es muss ja nicht auf 3 
Kommastellen genau sein.

Bei 20MHz Takt und 50Hz (PAL) könnte es so gehen:

-X Register auf 0 setzen
- auf H-> L Flanke des VSYNC-Pins warten
- während der L-Zeit alle 156 Takte X um eins hochzählen
- während der H-Zeit alle 156 Takte X um eins hochzählen
- im XH Resister steht dann die Rechenleistung in 1/10 MIPS

Jörg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren