Alex B. (14.06.2008 02:53, просмотров: 167) ответил Evgeny_CD на Техника точных засечек времени в малоразрядных системах. Вроде сложилось.
опять сущности умножаете... а кто вам сказал, что прерывание не произойдет между:
1) читаем эту переменную timer_limit, и читаем таймер
2) проверкой таймера на timer_limit и прочиткой U32 из системной области
Если таймер >= timer_limit, то системная переменная пока не валидна, и надо подождать, пока не изменится timer_limit. Как только она изменилась - все, прерывание отработало, можно "идти" за системной переменной U32.
ну и где это ждать, а?
Вообще тема как организовывать аппаратно-программный таймер тут поднималась и не один раз. Самый тупой способ - запрет прерываний при чтении "софтовой части таймера" никак не повлияет на "высокую равномерность его работы". Да, значение таймера будет на такт отличаться от валидного, да и фиг с ним.
Опять же - ну нахера вам таймер с периодом в год и точностью в системный тик? Если это короткий процесс, то для измерения его длительности хватит и короткого аппаратного таймера (в современных контроллерах остались еще 8-битный таймеры? ущипните себя...). Если это длительный процесс (минута-две) - да клал я с пробором на эти микросекунды, никакой погоды они там не делают. Тем более, что 16-битный таймер такой процесс покроет на указанных вами частотах.
Кроме того - разве еще остались контроллеры с таймерами у которых нет предделителей? да что вы, не может быть...
В общем надуманная проблема
Согласуйте импеданс!