переполнение таймера

Обсуждаем контроллеры компании Atmel.
Ответить
Опытный кот
Сообщения: 884
Зарегистрирован: Пн июл 08, 2013 22:59:45

Сообщение kelod »

использую контроллер мега16, таймер Т0, необходимо считать тики, но тиков гораздо больше чем впемя переполнения, поэтому я придумал при переполнении тики хранить в отдельной переменной, но вот беда при переполнении в TCNT0 оказывается вместо максимального значения 0, причём вариант прибавлять при переполнении известную разрядность таймера не подходит, нужно именно считать тики
Реклама
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

Так всё верно, 255 плюс переполнение = 256 что явно в сетку 8 бит не помещается.

К своей чудесной переменной добавляй 256 :)

Всех с началом учебного года :beer: <- заменить на молоко )
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Реклама
Опытный кот
Сообщения: 884
Зарегистрирован: Пн июл 08, 2013 22:59:45

Сообщение kelod »

так про добавление 256 это понятно, а если узнать это из какого нить регистра?
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Это же тики! Пока вы будете узнавать они уже "утикают". Вы просто не сможете синхронизировать переменную (регистры/память) и счётчик таймера. Переменная всегда будет "отставать".

Решения зависит от задачи.
Без подробностей задачи вам насоветовать могут много. :)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1315
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

kelod писал(а):необходимо считать тики, но тиков гораздо больше чем впемя переполнения
Т.е. вам нужно посчитать, допустим, 200 тиков, а переполняется таймер за 50?
СпойлерЕсли я вас правильно понял, то посмотрите эту тему, должно помочь.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15752
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

При каждом прерывании от таймера к внешнему счетному регистру добавляется 1, но ее вес равен коэффициенту деления таймера.
Т.е. 1*N.
самый примитивный способ прямого подсчета без использования умножения - многобайтовый накопитель, к которому при каждом переполнении таймера прибавляется константа N и в самом конце ещё добавить содержимое самого таймера.
Естественно использовать правила многобайтового сложения (не забывать про СY).
:roll:
Реклама
Ответить

Вернуться в «AVR»