Страница 1 из 1
переполнение таймера
Добавлено: Пн сен 01, 2014 14:57:25
kelod
использую контроллер мега16, таймер Т0, необходимо считать тики, но тиков гораздо больше чем впемя переполнения, поэтому я придумал при переполнении тики хранить в отдельной переменной, но вот беда при переполнении в TCNT0 оказывается вместо максимального значения 0, причём вариант прибавлять при переполнении известную разрядность таймера не подходит, нужно именно считать тики
Re: переполнение таймера
Добавлено: Пн сен 01, 2014 15:04:09
pcb
Так всё верно, 255 плюс переполнение = 256 что явно в сетку 8 бит не помещается.
К своей чудесной переменной добавляй 256
Всех с началом учебного года

<- заменить на молоко )
Re: переполнение таймера
Добавлено: Пн сен 01, 2014 15:58:14
kelod
так про добавление 256 это понятно, а если узнать это из какого нить регистра?
Re: переполнение таймера
Добавлено: Пн сен 01, 2014 19:40:07
Kavka
Это же тики! Пока вы будете узнавать они уже "утикают". Вы просто не сможете синхронизировать переменную (регистры/память) и счётчик таймера. Переменная всегда будет "отставать".
Решения зависит от задачи.
Без подробностей задачи вам насоветовать могут много.

Re: переполнение таймера
Добавлено: Пн сен 01, 2014 20:00:13
НАПАЛМ
kelod писал(а):необходимо считать тики, но тиков гораздо больше чем впемя переполнения
Т.е. вам нужно посчитать, допустим, 200 тиков, а переполняется таймер за 50?
Спойлер
Если я вас правильно понял, то посмотрите эту тему, должно помочь.
Re: переполнение таймера
Добавлено: Пн сен 01, 2014 21:37:00
BOB51
При каждом прерывании от таймера к внешнему счетному регистру добавляется 1, но ее вес равен коэффициенту деления таймера.
Т.е. 1*N.
самый примитивный способ прямого подсчета без использования умножения - многобайтовый накопитель, к которому при каждом переполнении таймера прибавляется константа N и в самом конце ещё добавить содержимое самого таймера.
Естественно использовать правила многобайтового сложения (не забывать про СY).
