Forum

Einloggen | Registrieren | RSS  

Zahnlos72(R)

23.04.2023,
22:11
 

Wer misst misst Mist (Elektronik)

Hallo !

Kurze Beschreibung meines Verständnisproblems......

Es geht darum, dass in einer ISR eine Schleife alle Sekunden durchlaufen wird und deren Durchlaufszeit in Mikrosekunden gemessen werden soll..
Das Messergebnis soll dann alle Sekunden nach Durchlauf im seriellen Monitor ausgegeben werden.
Anbei der Code und einige Messergebnisse.


Wie man sehen kann, werden manchmal aber auch nur 244 µSekunden zurückgegeben, wobei die Zeiten generell nicht stimmig sind !
Erstens müsste das Ergebnis ja zumindest immer gleich sein, weil sich die Schleife ja nicht ändert ( so dachte ich zumindest )
und zweitens ist auch die größere gemessene Zeit in keiner Relation zu der Messung mit dem Oszilloskop....



Wer weiß des Rätsels Lösung ?

lG

xy(R)

E-Mail

23.04.2023,
23:17

@ Zahnlos72

Wer misst misst Mist

Da wird noch ein weiterer periodischer Interrupt laufen.

Pitsch

24.04.2023,
07:49

@ Zahnlos72

Wer misst misst Mist

» Wie man sehen kann, werden manchmal aber auch nur 244 µSekunden
» zurückgegeben, wobei die Zeiten generell nicht stimmig sind !
» Erstens müsste das Ergebnis ja zumindest immer gleich sein, weil sich die
» Schleife ja nicht ändert ( so dachte ich zumindest )
» und zweitens ist auch die größere gemessene Zeit in keiner Relation zu der
» Messung mit dem Oszilloskop....

» Wer weiß des Rätsels Lösung ?

Hallo
So wie ich das sehe, generierst Du in C++ einen Timer und benutzst den als Zeitgeber. Das wird so nicht funktionieren. Den das Programm, läuft ja auf einem System, das auch noch andere Aufgaben so nebenbei erledigt. Und so programmierte Timer, sind natürlich sehr Interrupt-abhängig. Heisst also sie stimmen nie, wenns genauer sein soll.
Etwas genauer, wird's, wenn Du den eingebauten Uhrenship abfragst. Der läuft ziemlich unabhängig vom laufenden Programm und den sonstigen Aufgaben. Aber auch dort, kannst Du ab und zu ein paar Tackte daneben liegen.

Mit freundlichen Grüssen! Pitsch

Zahnlos72(R)

24.04.2023,
08:34

@ xy

Wer misst misst Mist

» Da wird noch ein weiterer periodischer Interrupt laufen.

Hallo xy !

Ja...welcher ? die Loop ist noch leer und sonst ist da ja nichts !
wollte das so messen um zu sehen wie lange die Schleife braucht, damit ich das stinkende Oszi nicht immer ranmachen muss.

lG

Mikee

24.04.2023,
08:39

@ Pitsch

Wer misst misst Mist

» Etwas genauer, wird's, wenn Du den eingebauten Uhrenship abfragst.

Hallo!
ja, das ist der einzig gangbare Weg.

Also ich Mitte der 1990er Jahre eine zeitlich konstante Schleife brauchte,
war das der einzig gangbare Weg, eine Grafik unabhängig von der Taktrate
der einzelnen PCs (damals 10MHz bis 100MHz) immer gleich schnell
ablaufen zu lassen (Betriebssystem DOS, Sprache Pascal.)
Das geht bis heute mit Win 10 und 3,4Ghz im DOS-Fenster.

Mikee

Zahnlos72(R)

24.04.2023,
08:56
(editiert von Zahnlos72
am 24.04.2023 um 11:02)


@ Pitsch

Wer misst misst Mist

» Hallo Pitsch !

» So wie ich das sehe, generierst Du in C++ einen Timer und benutzst den als
» Zeitgeber. Das wird so nicht funktionieren. Den das Programm, läuft ja auf
» einem System, das auch noch andere Aufgaben so nebenbei erledigt. Und so
» programmierte Timer, sind natürlich sehr Interrupt-abhängig.

1. Ja es ist ein Mega 2560
2. Andere Aufgaben sind da derzeit keine, da die Loop noch leer ist.
( ist ja nur ein Test, ob ich das so messen kann, weil ich nicht immer mein stinkendes Oszi dranmachen möchte )
3. ich sehe eigentlich keinen Grund für einen weiteren Interrupt ... wodurch wäre der gegeben ?


» Heisst also sie stimmen nie, wenns genauer sein soll.

Nachtrag: Der Timerintervall von einer Sekunde stimmt ja, nur die Messung der verstrichenen Zeit nach dem Schleifendurchlauf nicht !!!

» Etwas genauer, wird's, wenn Du den eingebauten Uhrenship abfragst.
» Der läuft ziemlich unabhängig vom laufenden Programm und den sonstigen Aufgaben.

eingebauter Uhrenchip ? Klingt gut und wie macht man das ?

lG

xy(R)

E-Mail

24.04.2023,
09:16

@ Zahnlos72

Wer misst misst Mist

» » Da wird noch ein weiterer periodischer Interrupt laufen.
»
» Hallo xy !
»
» Ja...welcher ?

Arduino halt. Da läuft so manches im Hintergrund...

Zahnlos72(R)

24.04.2023,
11:04

@ xy

Wer misst misst Mist

» » » Da wird noch ein weiterer periodischer Interrupt laufen.
» »
» » Hallo xy !
» »
» » Ja...welcher ?
»
» Arduino halt. Da läuft so manches im Hintergrund...


Wenn ich die Schleife entferne und dann die Zeit messe, werden regelmäßig 4 µS zurückgegeben....werd mal das stinkende Oszi dranmachen und sehen, ob diese Zeit stimmt ...

lG

Pitsch

24.04.2023,
11:54

@ Zahnlos72

Wer misst misst Mist

» eingebauter Uhrenchip ? Klingt gut und wie macht man das ?

Hallo Zahnlos72

Ich kenne dein System nicht. Also kann ich Dir da auch nicht die passende Antwort geben.
Wie Du auf den Uhrenship zugreifst, ist je nach Programmiersprache anders. In C++ wird das wohl der Aufruf von Date.Now der DateTime-Klasse sein. Ich kenne mich in C++ nicht so gut aus. Da gibt es in der Hilfe sicher einige Hinweise dazu.
Die Nachrichtenschleife eines jeden Computers arbeitet natürlich jede Menge Subroutinen ab. Das ist auch bei vielen SPS-Steuerung so. Daraus ergeben sich Zeitfehler, wenn Du auf Betriebssystembasis irgend welche Zeitkonstanten generieren willst.

Mit freundlichen Grüssen! Pitsch

Zahnlos72(R)

24.04.2023,
13:25

@ Pitsch

Wer misst misst Mist

» » eingebauter Uhrenchip ? Klingt gut und wie macht man das ?
»
» Hallo Zahnlos72
»
» Ich kenne dein System nicht. Also kann ich Dir da auch nicht die passende
» Antwort geben.
» Wie Du auf den Uhrenship zugreifst, ist je nach Programmiersprache anders.
» In C++ wird das wohl der Aufruf von Date.Now der DateTime-Klasse sein. Ich
» kenne mich in C++ nicht so gut aus. Da gibt es in der Hilfe sicher einige
» Hinweise dazu.
» Die Nachrichtenschleife eines jeden Computers arbeitet natürlich jede Menge
» Subroutinen ab. Das ist auch bei vielen SPS-Steuerung so. Daraus ergeben
» sich Zeitfehler, wenn Du auf Betriebssystembasis irgend welche
» Zeitkonstanten generieren willst.
»
» Mit freundlichen Grüssen! Pitsch

Ich denke es gibt auf dem Mega2560 keinen Solchen !
lG

matzi682015(R)

E-Mail

Aachen,
07.05.2023,
23:53

@ Zahnlos72

Wer misst misst Mist

» » » eingebauter Uhrenchip ? Klingt gut und wie macht man das ?
» »
» » Hallo Zahnlos72
» »
Hies das nicht "wer (zu-) viel misst misst Mist"?

--
greets from aix-la-chapelle

Matthes :hungry: