INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Sehr hohe CPU Auslastung bei hoher Datenerfassungsrate



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.06.2014, 11:16 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2014 11:18 von Steffen.S.)
Beitrag #3

Steffen.S Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Jun 2014

2013 Student
2014
DE



RE: Sehr hohe CPU Auslastung bei hoher Datenerfassungsrate
Erzeuger:
- Warum muss man die Anzahl der Bytes im Buffer der seriellen Schnittstelle ungebremst abfragen?

Habe eine Bremse eingebaut, bringt keine Verbesserung oder Verschlechterung

- Warum muss man die serielle Schnittstelle einzelbyteweise auslesen? Warum nicht einfach mehrere Bytes mit einmal abfragen?

An dieser Stelle suche ich den Beginn des Datenpakets. Dabei sendet der µC einmal das Byte 0x80 (128). Anschließend kommen weiter 3960 Bytes, die die Daten enthalten. Das könnte man sicherlich optimieren, allerdings weis ich nicht so recht wie...


- Wozu die Anzahl der Bytes im Buffer abfragen, wenn man hinterher doch schon weiß, wieviele Bytes man lesen möchte? Einfach nur den TimeOut groß genug setzen!

Dabei will ich nur sichergehen, dass genügend Bytes im Buffer sind. Außerdem soll der Buffer nicht vollaufen. Wenn ich das richtig sehe, dann ist der Buffer schon nach 0,01452 Sekunden voll (3MBaud Rate, 11 Bit pro Symbol und 3640 Symbole)

- Warum der CoercionDot am Wait?
Offenbar kann man der Funktion keine bruchteile von Millisekunden übergeben. Hm irgendwie schlapp... Kennst du eine Alternative?

- 3Mbaud sind nicht gerade Standard…
Ja, aber schnell Big Grin

Verbraucher1&2:
- Warum die Bytes einzeln auswerten? Warum nicht das U8-Array mittels Decimate in seine Bestandteile zerlegen und mit Arrays arbeiten?

Kannst du mir den deutschen Namen von "Decimate" nennen? Ich finde das Teil nicht in der Palette. Mit Arrays hab ich noch so meine Schwierigkeiten...

- Warum hier wandeln nach DDT?

An sich soll das Signal auf einem XY Graph angezeigt werden. Das 9. Byte enthält den Wert eines Weggebers, der allerdings aufaddiert werden muss. Hier habe ich noch eine Baustelle.

- Stop-Bedingung direkt mit dem Fehlerausgang des ReadQueue verbinden!
Okay.

Allgemein:
-2 Verbraucher, die auf eine einzige Queue schauen, geht gar nicht!

Hm, ich hätte gerne das Schreiben der Daten parallel zum Anzeigen. Da muss ich mal drüber nachdenken.

-Dein Erzeuger dürfte für die CPU-Last verantwortlich sein, deine Verbraucher sind "nur suboptimal" programmiert… Big Grin

Gut, dann werde ich mich bald an die Optimierungen setzen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: Sehr hohe CPU Auslastung bei hoher Datenerfassungsrate - Steffen.S - 25.06.2014 11:16

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  VISA open/close CPU Auslastung Scuba 4 4.727 25.07.2014 10:39
Letzter Beitrag: cb
  Sehr langsame GBIP Schnittstelle-I/O Fehler!? LanceHardwood 2 4.554 24.11.2011 12:21
Letzter Beitrag: LanceHardwood
  Frontpanel und CPU-Auslastung dany22 0 3.009 16.12.2006 11:19
Letzter Beitrag: dany22

Gehe zu: