Taskdauer feststellen

  • 1
  • 2
  • Page 1 of 2
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Taskdauer feststellen

 · 
Posted: 20.05.2014 - 18:34  ·  #1
Hallo Leute,

wie kann ich am einfachsten feststellen, ob mein Task innerhalb eines Systicks abläuft?
Gibt es eine Art TaskTime?

Gruss
PVS-Deck
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Taskdauer feststellen

 · 
Posted: 20.05.2014 - 19:59  ·  #2
Hallo Thorsten,

lass das Projekt eine zeitlang im Simulator laufen und schau in im "Process State"
die Spalten "Entries" und "Time" an!
Z.B. 100 Entries, 0.0050s ==> ca. 0,5msek Tasklaufzeit.
(Entries=Scheduler Aufrufe, Time=kumulierte Prozessorzeit)

Schönen Gruß
Gunter
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Taskdauer feststellen

 · 
Posted: 31.07.2014 - 20:46  ·  #3
Hallo Gunter,

kann ich irgendwie die Reihenfolge festlegen wie Processe abgearbeitet werden? Oder geht das nur über die Prio?

Beispiel:
1. Process Kommunikation
2. Process lesen der Eingänge
3. Process Verarbeitung
4. Process Schreiben der Ausgänge
5. Process SDCARD

und dann wieder zu 1 usw.

Gruss
Thorsten
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Taskdauer feststellen

 · 
Posted: 31.07.2014 - 22:05  ·  #4
Hi,

ja - einfach die Prozesse in dieser Reihenfolge in der Source aufführen!

Gunter

Edit:
und liese mal nach, was die Prio bei Prozessen aussagt !!!!!
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Taskdauer feststellen

 · 
Posted: 01.08.2014 - 07:22  ·  #5
Quote by Gunter

Z.B. 100 Entries, 0.0050s ==> ca. 0,5msek Tasklaufzeit.


0.0050s = 5ms

falls man das durch die 100 Entries teilen muß dann 0.05ms

Gruss
Harry
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Taskdauer feststellen

 · 
Posted: 01.08.2014 - 10:04  ·  #6
Quote by Gunter

Hi,

ja - einfach die Prozesse in dieser Reihenfolge in der Source aufführen!

Gunter

Edit:
und liese mal nach, was die Prio bei Prozessen aussagt !!!!!

Hallo Gunter,

so in der Richtung hatte ich mir das schon gedacht.

Die main-Loop wird ja dann auch zum Process. Wo wird dann die Main eingeordnet?
Wahrscheinlich als 1. Aufruf oder?

Da ich die Reihenfolge strickt einhalten muss, damit die Verarbeitung sauber läuft, haben die Processe bzw. Tasks aktuell alle die gleiche Prio. Das Lesen und Schreiben der Ausgänge werde ich auf Tasks umstellen. Die brauchen pro Aufruf nicht mehrmals zu durchlaufen oder sollte man hier besser auf Process bleiben und mit "Schedule" den Process beenden?
Ich glaube das wäre wahrscheinlich besser, weil:

Wenn ich die Schedule (Grafik von Dir) richtig verstanden habe, können Processe von Tasks (je nach Prio) unterbrochen werden, dass kann ich aber gerade bei dem schreiben von Ausgängen und lesen von Eingängen nicht gebrauchen. Da die Eingänge vor Verarbeitung noch entprellt werden und ich für meine Verarbeitung steigende und fallende Flanken benötige.

Wie ist das aber bei der Verwendung der AVRco Treiber, wenn mich nicht alles täuscht laufen diese teilweise auch als Processe (Modbus, WizTina usw.), wo reihen die sich ein? Und kann ich das bei der Verwendung der Treiber erkennen ob diese Tasks oder Processe beinhalten?

Trotz Deiner sehr guten Anleitung, ist das Thema recht komplex :)

Gruß
Thorsten
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Taskdauer feststellen

 · 
Posted: 01.08.2014 - 10:53  ·  #7
Hi Thorsten,

Quote by pvs-deck
Die main-Loop wird ja dann auch zum Process. Wo wird dann die Main eingeordnet?
Wahrscheinlich als 1. Aufruf oder?

ja
Quote by pvs-deck
Da ich die Reihenfolge strickt einhalten muss, damit die Verarbeitung sauber läuft, haben die Processe bzw. Tasks aktuell alle die gleiche Prio.

das garantiert die Reihenfolge Task1 - Task2 - Task3 - ... - Task1 - ...
Was an Zeit dann übrig bleibt teilen sich die Prozesse in der Reihenfolge
Main - Proc1 - Proc2 - Proc3 ... - Main - Proc1 - ...
Es gilt aber NICHT:
vor Proc1 läuft immer Task1
vor Proc2 läuft immer Task2
vor Proc3 ................
Quote by pvs-deck
Das Lesen und Schreiben der Ausgänge werde ich auf Tasks umstellen. Die brauchen pro Aufruf nicht mehrmals zu durchlaufen
oder sollte man hier besser auf Process bleiben und mit "Schedule" den Process beenden?
Ich glaube das wäre wahrscheinlich besser

Schedule ist immer gut, sobald ein Prozess weiss, dass er die nächste Zeit sowieso nichts zutun kriegt
Quote by pvs-deck
Wenn ich die Schedule (Grafik von Dir) richtig verstanden habe, können Processe von Tasks (je nach Prio) unterbrochen werden,

Naja. Genauer werden die Prozesse vom Scheduler unterbrochen und der schaut als Allererstes ob ein Task anliegt. Die sollen ja in festem zeitlichen Raster laufen.

Quote by pvs-deck
dass kann ich aber gerade bei dem schreiben von Ausgängen und lesen von Eingängen nicht gebrauchen. Da die Eingänge vor Verarbeitung noch entprellt werden und ich für meine Verarbeitung steigende und fallende Flanken benötige.

würde ich mit einem (möglichst kurzen) [SchedulerOFF .... Scheduler_ON]-Block machen.
Quote by pvs-deck
Wie ist das aber bei der Verwendung der AVRco Treiber, wenn mich nicht alles täuscht laufen diese teilweise auch als Processe (Modbus, WizTina usw.), wo reihen die sich ein? Und kann ich das bei der Verwendung der Treiber erkennen ob diese Tasks oder Processe beinhalten?

Rolf - wie ist das ?

Gunter
robert
Benutzer
Avatar
Gender: n/a
Location: Hildesheim / Deutschland
Posts: 249
Registered: 04 / 2006
Subject:

Re: Taskdauer feststellen

 · 
Posted: 01.08.2014 - 11:48  ·  #8
Hallo Thorsten,
wenn mehrere Tasks voneinander abhängig sind, solltest Du die mittels Semaphoren synchronisieren! Dann ist es egal in welcher Reihenfolge die Tasks abgearbeitet werden.

Robert
  • 1
  • 2
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   140   154 · Page-Gen-Time: 0.034595s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI