Цитата(VladimirB @ Jul 27 2009, 12:47)

ИМХО основная проблема в том что у вас потоки данных и времени передаются по двум независимым асинхронным каналам.
С момента принятия микроконтроллером сигнала PPS и обнаружения данных программой в WinXP проходит некоторое время, состоящее из времени реакции МК, времени передачи данных по RS-232, времени реакции драйвера COM порта в WinXP и времени передачи управления вашей программе. Аналогичная ситуация и с потоком времени.
Если время передачи по RS-232 можно считать стабильным, то задержки в ОС WinXP (и возможно в ПО GPS приёмника и МК) можно считать случайными. Поэтому можно долго плясать с бубном, выясняя почему в одном случае работает а в другом нет.
Правильным решением будет объединение потока данных и времени в один: подмешивать время в пакет с данными от МК и передавать их по одному COM-порту.
Предлагаемое Вами решение еще усложнит задачу.
Хотя решение уже получено:
1. Основная ошибка : не установка числа микросекунд в структуре (оставляли как есть) - поэтому и результат плохой, поставили =0 - все резко улучшилось.
2. ОС которую применяюEmbedded - основное отличие - убрано все что нам не нужно ( еще производителем), плюс сам убрал еще часть, в результате в памяти мин. процессов и выполняемых задача ( точнее задача 1 - моя программа и все), больше нечего не делаеться (все запрещенно). Поэтому задержку можно примерно подсчитать (у меня получилось где-то 30 мс) и ее учесть.
Самое главное: уже проверил - все работает, точность выставления интервалов времени ( т.е. часовых файлов) - один в один.
3. В вашем решение есть ошибка (возможно не знаете порядок прихода байтов от GPS) - сначала идет время, потом число спутников (точнее можно или нельзя применять данные) - их разрезать нельзя, а подругому не получиться: скорость данных 115200 бит/с, данные с GPS - 9600 бит/с.