Играюсь с DigiSpark Pro - 16.5 MHz Понадобился 1 Сек интервал прерывания по таймеру. Скачал библу и скетч. Компилируется и работает. Но интервала больше 250 мСек - не дает. При этом delay(1000) - работает четко. Желательно бы иметь интервал прерываний 0 - 10 Сек. В описании к библе не заявлено максимальных значений аргумента. //------------------------------------ #include <TimerOne.h> ... Timer1.initialize(500000); // Микросекунды. Должен срабатывать через 0,5 Сек Timer1.attachInterrupt(blinkLed); // Имеем 0,25 Сек //------------------------------------ Вопрос - какой максимальный интервал может дать эта библа с этим МК ? И есть ли библы с большими интервалами ? Понятно, что можно извратиться суммируя интервалы, но хотелось бы поиметь библиотеку, где эти извраты уже встроены. ПС. Тут Паровоз хвалился знаниями таймеров МК. Наверняка у него есть готовое решение )))))))
Я хочу чтобы все работало в "underground", то бишь - в за пределами главного цикла. Поэтому нужно решение на прерываниях. На данный момент - уже сделал. На изврате (с суммированием интервалов в прерывании). Работает нормально. Главный цикл - в простое. Спасибо. Скачал про запас. Есть вопрос - судя по комменту, библа не поддерживает ATtiny85 ?
От основной программы эти таймеры вапще не зависют. Чойта? Даже Лянарду поддерживала. Счас паматрю. Upd. Да, сорри, в этой версии Тини85 нету, 88 есть
И TimerOne, не всякий с АТтини85 работает. Тоже не сразу нашел. Работает только тот - который Стойкий болгарин переделал. Но, как я уже писал - нет толкового руководства по библе.
дурина же занимает какой-то аппаратный таймер под свои нужды (системный тик). Ты в него залезть не можешь, поэтому либо отказаться от этого либо занимать другой аппаратный таймер под абсолютно аналогичную задачу.
В вашем случае изучения документации на камень даст ответы на все вопросы и позволит конфигурировать железо гибко под ваши нужды, либы штука хорошая, но она сковывает.
А как по другому? У ATtiny85 максимальный коэфициент деления Prescaler 16384. При вашей тактовой частоте 16.5 MHz, на выходе получаем чуть-чуть более 1 кГц. Счётный регистр 8 битный. На 10 секунд он 40 раз должен переполниться. Так-что только считать переполнения в прерывании. Больше никак.
Причем ни чего особо сложного тут нет, был у меня проект на attiny10, где нужно было замерять длительность входящего сигнала с точностью 1миллисекунда, и генерировать шим в зависимости от этих значений. Хоть в моем распоряжении и был 16 битный таймер, он считал у меня до 512, а в прерывании по переполнению считал количество этих самих переполнений.
Я и не говорил, что это сложно. Это стандартное класическое решение. Просто надо знать как на прямую управлять таймером.
По большому счету тут нужно только желание разобраться))))), за то потом это поможет понят другие процессы.