mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik verbleidende Leistung in MIPS anzeigen


Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Marc Donner (cosinus)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc Donner (cosinus)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc Donner (cosinus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:

oder du setzt den Pin beim eintritt in die ISR und loescht ihn am Ende, 
oder im Main Loop, wenn da nicht allzuviel getan wird.
Aber im Prinzip musst du fuer jeden Interrupt das implementieren.

Gruss
Marc

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht 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

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.