Timerone.h + attiny85 = трабл с интервалами

Тема в разделе "Микроконтроллеры AVR", создана пользователем Ariadna-on-Line, 24 ноя 2023.

  1. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Играюсь с DigiSpark Pro - 16.5 MHz
    Понадобился 1 Сек интервал прерывания по таймеру. Скачал библу и скетч. Компилируется и работает. Но интервала больше 250 мСек - не дает. При этом delay(1000) - работает четко. Желательно бы иметь интервал прерываний 0 - 10 Сек.
    В описании к библе не заявлено максимальных значений аргумента.
    //------------------------------------
    #include <TimerOne.h>
    ...
    Timer1.initialize(500000); // Микросекунды. Должен срабатывать через 0,5 Сек
    Timer1.attachInterrupt(blinkLed); // Имеем 0,25 Сек
    //------------------------------------
    Вопрос - какой максимальный интервал может дать эта библа с этим МК ? И есть ли библы с большими интервалами ? Понятно, что можно извратиться суммируя интервалы, но хотелось бы поиметь библиотеку, где эти извраты уже встроены.
    ПС. Тут Паровоз хвалился знаниями таймеров МК. Наверняка у него есть готовое решение )))))))
     
    Последнее редактирование: 24 ноя 2023
  2. parovoZZ

    parovoZZ Гуру

    там же есть миллис? На его основе создаёшь таймер со всеми необходимыми функциями-методами...
     
  3. DetSimen

    DetSimen Гуру

    TTimerList
     
    Ariadna-on-Line нравится это.
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Я хочу чтобы все работало в "underground", то бишь - в за пределами главного цикла. Поэтому нужно решение на прерываниях. На данный момент - уже сделал. На изврате (с суммированием интервалов в прерывании). Работает нормально. Главный цикл - в простое.
    Спасибо. Скачал про запас. Есть вопрос - судя по комменту, библа не поддерживает ATtiny85 ?
     
    Последнее редактирование: 24 ноя 2023
  5. DetSimen

    DetSimen Гуру

    От основной программы эти таймеры вапще не зависют.

    Чойта? Даже Лянарду поддерживала. Счас паматрю.
    Upd. Да, сорри, в этой версии Тини85 нету, 88 есть
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    И TimerOne, не всякий с АТтини85 работает. Тоже не сразу нашел. Работает только тот - который Стойкий болгарин переделал. Но, как я уже писал - нет толкового руководства по библе.
     
  7. parovoZZ

    parovoZZ Гуру

    в дурине про это забудь. Либо плоди одинаковые сущности.
     
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Что вы понимаете под "" под одинаковыми сущностями ?
     
  9. parovoZZ

    parovoZZ Гуру

    дурина же занимает какой-то аппаратный таймер под свои нужды (системный тик). Ты в него залезть не можешь, поэтому либо отказаться от этого
    либо занимать другой аппаратный таймер под абсолютно аналогичную задачу.
     
  10. Антон336699

    Антон336699 Нерд

    В вашем случае изучения документации на камень даст ответы на все вопросы и позволит конфигурировать железо гибко под ваши нужды, либы штука хорошая, но она сковывает.
     
  11. a1000

    a1000 Гуру

    А как по другому? У ATtiny85 максимальный коэфициент деления Prescaler 16384. При вашей тактовой частоте 16.5 MHz, на выходе получаем чуть-чуть более 1 кГц. Счётный регистр 8 битный. На 10 секунд он 40 раз должен переполниться. Так-что только считать переполнения в прерывании. Больше никак.
     
  12. Антон336699

    Антон336699 Нерд

    Причем ни чего особо сложного тут нет, был у меня проект на attiny10, где нужно было замерять длительность входящего сигнала с точностью 1миллисекунда, и генерировать шим в зависимости от этих значений. Хоть в моем распоряжении и был 16 битный таймер, он считал у меня до 512, а в прерывании по переполнению считал количество этих самих переполнений.
     
  13. a1000

    a1000 Гуру

    Я и не говорил, что это сложно. Это стандартное класическое решение. Просто надо знать как на прямую управлять таймером.
     
    Антон336699 нравится это.
  14. Антон336699

    Антон336699 Нерд

    По большому счету тут нужно только желание разобраться))))), за то потом это поможет понят другие процессы.
     
    a1000 нравится это.