T-n-T: Борьба с переполнением регистра
Задача
Требуется выполнить подсчет интервалов времени, длительностью более 65535мс, т.е. больше максимальной размерности переменных и констант, принятых в контроллерах CANNY.
Решение
![Решение (диаграмма №1)](/img/docs/ru/tips_tricks/register_overflow/tnt_register_overflow_1.png)
Счетчик секунд выполняет подсчет истекших секунд (блоки №№1 и 2) и при истечении 60 секунд (блок №3) передает выдает импульс на счетчик минут.
![Решение (диаграмма №2)](/img/docs/ru/tips_tricks/register_overflow/tnt_register_overflow_2.png)
Счетчик секунд выполняет подсчет истекших секунд (блоки №№1 и 2) и при истечении 3600 секунд (блок №3), т.е. 1 часа, передает выдает импульс на счетчик часов.
С помощью приведенного подхода, меняя значение периода блока «Генератор ШИМ» (блок №1) и значения Y блока «Больше», можно выполнять замеры необходимых временных интервалов в широком диапазоне значений (смотри пример ниже).
![Решение (диаграмма №3)](/img/docs/ru/tips_tricks/register_overflow/tnt_register_overflow_3.png)
Решение можно использовать и в других областях для подсчета количества различных событий.
Увеличивая каскад из счетчиков можно получить возможность подсчета практически неограниченно больших значений.