Jump to content

Accelerometer 2.0 - Zeitdifferenz zwischen zwei Samples bei continuous_acceleration_configuration


Recommended Posts

Geschrieben (bearbeitet)

Hallo zusammen,

wenn ich das Accelerometer 2.0 Bricklet mit continuous_acceleration_configuration() einstelle, sagen wir beispielsweise 12800 mit einer Achse wie in unterem Beispiel,
führt das Cooperative multitasking des KX122 dazu, dass die Zeitdifferenz zwischen zwei Samples immer konstant ist? In dem Fall müssten es ca. 1/12800 = 78 us sein.

Dazu müsste ja das Senden der Daten zum XMC via SPI wirklich so fix sein (< 78 us), dass die nächste Wandlung rechtzeitig geschehen kann. 

Hintergrund der Frage: Ich verpasse den Samples, die über den get_continuous_acceleration_16_bit_callback_receiver() reinkommen, nachträglich ihre individuellen Zeitstempel.
Ich mache das im Moment so, aber heute beim Verbessern des Codes kam die Frage auf, ob das überhaupt technisch vertretbar ist. Habt ihr dazu vielleicht Informationen?

Beste Grüße
Claudio

let sensor = AccelerometerV2Bricklet::new(&response.uid, &request_sender);

// set data rate and full scale configuration
sensor.set_configuration(ACCELEROMETER_V2_BRICKLET_DATA_RATE_12800HZ, ACCELEROMETER_V2_BRICKLET_FULL_SCALE_4G);

frequency_sensor.set_continuous_acceleration_configuration(
	true,
	false,
	false,
	ACCELEROMETER_V2_BRICKLET_RESOLUTION_16BIT,
);

// get callback receiver
let acceleration_receiver = sensor.get_continuous_acceleration_16_bit_callback_receiver();

// spawn thread to handle received callback messages
thread::spawn(move || {
	// process acceleration data
	for acceleration in acceleration_receiver {
		// in that case, acceleration has 30 i16 values
		// what's the difference in timing between the individual samples?
		// can we assume that coop_task_tick() generates timestamps with constant timeshifts?
	}
});

 

bearbeitet von cl-
Geschrieben

Wenn du am Ende 12800 Datenpunkte nach einer Sekunde hast sind diese auch Äquidistant gemessen worden. Der KX122 misst nicht mehr als die eingestellte Frequenz und das Bricklet liest nichts doppelt.

Wenn da zwischendurch Daten fehlen da diese nicht rechtzeitig verschickt werden konnten gibt es allerdings keine Aussage dazu an welcher Stelle diese genau Fehlen im Datenstrom.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...