Первой и самой важной задачей, которую пришлось решать был выбор источника сигналов точного времени(СТВ). Варианты были разные:
Как самый надежный, доступный и, как тогда казалось, простой в реализации, был выбран вариант СПВ, т.к. DCF77 и GPS технологии вражеские, а предприятие стратегическое, поэтому первой и самой важной частью проекта была разработка фильтра, который бы распознавал эти сигналы, чтобы иметь возможность автоматически устанавливать и корректировать ПЧ.
Готовые варианты аналоговых и ТТЛ фильтров СПВ, которые применялись в промышленных ПЧ были отметены, как негодные, т.к. в условиях "нового времени" и качества эфира работали через раз и как попало, поэтому было решено разработать свой цифровой фильтр, в качестве основы которого был выбран самый простой 51-совместимый атмеловский контроллер.
Фильтр представлял из себя по сути черный ящик практически без обвязки, на входе которого был радиоэфир или проводное вещание, а на выходе данные о времени(текущем часе) и сигнал корректировки.
Изначально ПЧ было решено делать на одном микроконтроллере, который включал бы в себя и фильтр и часы, но со всё большим увеличением функционала, возникающими проблемами и открывающимися возможностями фильтр был реализован на отдельной микросхеме, чтобы иметь возможность по простому последовательному интерфейсу подключать к ПЧ разные источники информации о СТВ или несколько таковых, ибо разделяй и властвуй.
Взаимодействие между контроллерами осуществлялось посредством штатного UART, мастером был контроллер часов. По началу шестого СПВ фильтр через отдельный порт давал сигнал на корректировку времени, по которому контроллер часов осуществлял коррекцию минут, а после забирал у контроллера-фильтра данные о начавшемся часе.
Что касается программы самого фильтра, то за давностью лет я мог уже что-то подзабыть, но на сколько помню, принцип был основан на том, что настраивался таймер на период частоты 1000Гц и счетчик, который эти периоды считал. Контроллер постоянно "мониторил эфир", пытаясь выявить начало последовательности нужных периодов, и, как только такая последовательность появлялась(детектилась частота 1кГц), начинал работать другой таймер, который контролировал длительность сигала и паузы, а ещё один счетчик считал кол-во сигналов. Объяснил я конечно не точно, но принцип был такой, ничего военного.
При разработке программы пришлось столкнуться с трудностями. Дело в том, что тогда качество даже проводного вещания уже было прилично подпорчено рекламами, которые зачастую накладывались на СПВ и систематическими обрывами СПВ, поэтому программа фильтра становилась всё сложнее и сложнее, чтобы выделять полезный сигнал, отсекать некорректные сигналы и принимать решение о достоверности СПВ. Очень долго пришлось высчитывать допуски для сигналов и пауз. Всё это ещё раз подтвердило правильность решения о выделении для фильтра отдельного контроллера, а стандарт СПВ уже не казался такой твердыней, каким представлялся ранее.
Особую проблему представляло "обрезание" 6-го сигнала, в длительности которого закодирован номер часа, что могло привести к неверной автоматической установке времени. Проблема была частично решена проверкой вхождения длительности 6-го сигнала в набор нормальных длительностей, а также сравниванием полученного номера часа с текущим временем ПЧ, т.е. автоматически перевести часы "назад" было нельзя.
....