Dtime( 6, 0, 0 );
serialPortOutKF(); // String print function for Telemetry Viewer
Dtime( 6, 10, "sPout" );
uint32_t Dtime( int ID, int State, const char *szID ) {
uint32_t RetVal=micros();
#ifdef XX_coutD
----- #241 (! 10) @23:53.33_-437853 >> 1== ms_65553
#242 (! 10) @23:53.33_199562218 >> 2== ms_65753
#243 (! 10) @23:53.33_399562291 >> 3== ms_65949
#244 (! 10) @23:53.33_599562364 >> 4== ms_66151
#245 (! 10) @23:53.33_799562436 >> 5== ms_66351
----- #246 (! 10) @23:53.34_-437490 >> 1== ms_66552
#247 (! 10) @23:53.34_199562581 >> 2== ms_66752
#248 (! 10) @23:53.34_399562654 >> 3== ms_66953
#249 (! 10) @23:53.34_599562726 >> 4== ms_67154
#250 (! 10) @23:53.34_799562799 >> 5== ms_67352
I was been going through that thread today, and saw the back and forth between you and tonton81. If you could get DMA working that would be really make it interesting. In the meantime I found this on Amazon that looked interesting also, https://www.amazon.com/gp/product/B00HKK4SCO/ref=ox_sc_act_title_1?smid=A20H7HZMYKP2JK&psc=1.The SPI Slave Teensy for output may soon be online thanks to tonton81.
Sorry for the confusion. The first column is the utcTime of the GPS read and stays the same for each GPS cycle. The second column of the printout is the tsIMU timestamp for when the IMU interrupt hits, and the third is the tsGPS is the timestamp for when the interrupt hits for the GPS updated. utcTime and tsIMU should not changes unless you have new data.I'm seeing five printouts at each GPS time, and the residuals are different for each of the 5 printouts with the same time, yet kfUpdate should only be called once per GPS read
Man, tonton81 has been busy. Missed the posting while I been doing this. Yes you are right of course.
defragster, sorry to hijack, but i got 106uS at 24MHz for a 100 byte payload just by F&F and dont even wait for the ACK.. this is also an option, think of it like UDP (without DMA)
dtostrf(rtk.utcTime, 10, 6, utcText);
dtostrf(IMU_RX_time*0.000001f, 10, 4, tsIMUText);
dtostrf(GPS_RX_time*0.000001f, 10, 4, tsGPSText);
dtostrf(RefLLA(0,0)*rad2deg, 10, 6, latText);
dtostrf(RefLLA(1,0)*rad2deg, 10, 6, lonText);
dtostrf(RefLLA(2,0), 10, 4, altText);
dtostrf(sqrt(pk1(0,0)), 10, 4, pk1xText);
dtostrf(sqrt(pk1(1,1)), 10, 4, pk1yText);
dtostrf(sqrt(pk1(2,2)), 10, 4, pk1zText);
dtostrf(nuk1(0,0), 10, 4, nuk1xText);
dtostrf(nuk1(1,0), 10, 4, nuk1yText);
dtostrf(nuk1(2,0), 10, 4, nuk1zText);
// Create single text parameter and print it
snprintf(text, textLength, "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s",
utcText, tsIMUText, tsGPSText,
latText, lonText, altText,
pk1xText, pk1yText, pk1zText,
nuk1xText, nuk1yText, nuk1zText);
So I retested at 24MHz a payload of 60 bytes like before, without debugging:
1) with acknowlegment by crc verification -> 69uS
2) without acknowledgement (true F&F) -> 64uS
----- #116 (! 10) @5:25.17_-210017 >> 1== ms_40228
#117 (! 10) @5:25.17_199790055 >> 2== ms_40427
#118 (! 10) @5:25.17_399790129 >> 3== ms_40628
#119 (! 10) @5:25.17_599790203 >> 4== ms_40828
#120 (! 10) @5:25.17_799790277 >> 5== ms_41028
----- #121 (! 10) @5:25.18_-209649 >> 1== ms_41228
#122 (! 10) @5:25.18_199790424 >> 2== ms_41429
#123 (! 10) @5:25.18_399790498 >> 3== ms_41629
#124 (! 10) @5:25.18_599790572 >> 4== ms_41829
#125 (! 10) @5:25.18_799790646 >> 5== ms_42028
Thank Tim. When you posted I remembered what I forgot to do - change the profile to my imu config - duh!!!!! Now all is well. Seems to be working but I do have a question for Don.
...