cl- Posted April 28, 2020 at 05:31 PM Posted April 28, 2020 at 05:31 PM (edited) 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? } }); Edited April 28, 2020 at 05:32 PM by cl- Quote
borg Posted April 29, 2020 at 10:52 AM Posted April 29, 2020 at 10:52 AM 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. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.