Re: Помогите с алгоритмом!
Добавлено: 12 апр 2011, 19:44
8-битный таймер, 16-битный предделитель, 16-битный постделитель.
Итого, 16*2^8*16*4/Fosc=13,1 мс максимум, но можно выделить для этого пользовательский регистр, записать в него какое-то значение и декрементировать при установке флага TMR2IF (ага этот флаг говорит о том, что отсчитано "предделитель*PR2*постделитель*4/Fosc" секунд) и так до нуля. Получим возможность отсчитать до 256 интервалов таймера, т.е. максимально свыше 3-х секунд. Но в этом случае во первых надо будет учитывать время, затрачиваемое на операции декремента и сравнения, а во вторых контроллер в это время не сможет ничем другим заниматься.
P.S. Хотя, нет. Это же всё можно оформить в подпрограмме прерывания, тогда проц будет свободен.
Итого, 16*2^8*16*4/Fosc=13,1 мс максимум, но можно выделить для этого пользовательский регистр, записать в него какое-то значение и декрементировать при установке флага TMR2IF (ага этот флаг говорит о том, что отсчитано "предделитель*PR2*постделитель*4/Fosc" секунд) и так до нуля. Получим возможность отсчитать до 256 интервалов таймера, т.е. максимально свыше 3-х секунд. Но в этом случае во первых надо будет учитывать время, затрачиваемое на операции декремента и сравнения, а во вторых контроллер в это время не сможет ничем другим заниматься.
P.S. Хотя, нет. Это же всё можно оформить в подпрограмме прерывания, тогда проц будет свободен.