On May 16, 2018, at 13:58, Peter Monta <[email protected]> wrote:
>
> "Code phase" represents where you are along the 1023-bit C/A code (each bit
> or "chip" of this code lasts ~1 microsecond or ~300 meters). The
> scaled-by-16 code phase will thus range from 0 to 16*1023. To get the full
> pseudorange, though, suitable for placing into a RINEX file for example, you
> need to also add in the integer number of code periods from the satellite to
> you.
...
> If you know your position to within 150 kilometers (0.5 ms), you can dispense
> with the pseudorange-assembly arithmetic
To put that in code, the assembly of collected Observations might look like
this:
raw_time = nav_ms_of_frame(sv);
raw_time +=
((double)(1023<<PHASE_BITS)-(double)nd[c].phase)/(double)(1023<<PHASE_BITS);
raw_time += nav_subframe_of_week(sv)*6000.0;
raw_time /= 1000.0;
That pulls all the Observation pieces together to give you a (still
uncorrected) transmit time in seconds (taken from working code).
> and just use the code phase directly, after adding in the appropriate integer
> number of milliseconds, only one of which will put you within your known
> 300-kilometer-diameter (1 ms) sphere.
Oh... that is a very useful simplification when in Over Determined Clock. So
long as your time is already accurate to better than 0.5ms, which is no big
trick. Seems obvious now, but I hadn't thought of calculating or validating
psudoranges that way before, thanks!
J.
> Cheers,
> Peter
> _______________________________________________
> time-nuts mailing list -- [email protected]
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.
_______________________________________________
time-nuts mailing list -- [email protected]
To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
and follow the instructions there.