)
Використовується для управління виходами ШІМ для цифрових висновків 3 і 11.
Хоча всі таймери використовуються, тільки Таймер 0 має призначену таймеру ISR. Це означає, що можна захопити Таймер 1 та/або Таймер2 під свої потреби. Проте в результаті не можна буде використовувати ШІМ на деяких портах вводу-виводу. Якщо планується використовувати ШІМ, необхідно пам'ятати про це.
. 5.3 Завантаження мікроконтролера перериваннями
Щоб дати уявлення про ефект, припустимо, що таймер ISR запускався б кожні 20 мкс. Процесор, що працює на 16 МГц, може виконати близько 1 машинної команди кожні 63 мс або близько 320 машинних команд для кожного циклу переривання (20 мкс). Припустимо також, що виконання кожного рядка програми на С може зайняти багато машинних команд. Кожна інструкція, використовувана в ISR, забирає час, доступне для виконання будь-якої іншої програми. Якби ISR використала близько 150 машинних циклів, було б витрачено половина доступного процесорного часу. При активних перериваннях головна програма відкладалася б близько? часу, займаного їй в інших випадках. 150 машинних команд - не дуже велика програма на С, тому необхідно бути уважні.
Якщо буде занадто довга ISR, то головна програма буде виконуватися вкрай повільно, якщо ж ISR буде довшим, ніж тривалість циклу таймера, то практично ніколи не виконається ваша головна програма, і, крім того, в кінці кінців відбудеться збій системного стека.
. 5.4 Вимірювання завантаження перериваннями
Оскільки необхідно мати дуже швидкий таймер ISR, то потрібно виміряти, наскільки завантажені доступні ресурси. Для цього необхідний деякий метод.
Таймер ні встановлено в режим, коли він перезавантажується автоматично. Це означає, що ISR повинна перезавантажити таймер для наступного інтервалу рахунку. Було б точніше мати автоматично перезавантажуватися таймер, але, використовуючи цей режим, можна виміряти час, що проводиться в ISR, і відповідно виправити час, завантажуване в таймер. Ключ у тому, що за допомогою цієї корекції при розумній точності, також отримуємо і число, що показує, скільки часу проводимо в ISR.
Метод полягає в тому, що таймер зберігає час, навіть якщо він переповнений і перерваний. Наприкінці ISR можна захопити поточне значення лічильника таймера. Це значення той час, який він забрав у розробника до наступної точки програми. Це сумарний час, витрачений на перехід в процедуру переривання і виконання програми в ISR. Невелика помилка буде того, що не підраховується час, витрачений на команду перезавантаження таймера, але цю помилку можна виправити емпірично. Фактично саме тому використовується у формулі підрахунку завантажуваного значення 257 замість 256. Було виявлено дослідним шляхом, що це дає кращий результат. Зайвий такт компенсує команду перезавантаження таймера.
. 5.5 Використання переривань в Arduino
Часто при роботі з проектами на мікроконтролерах потрібно запускати фонову функцію через рівні проміжки часу. Це часто реалізується установкою апаратного таймера для вироблення переривання. Це переривання запускає програму обробки переривань (Interrupt Service Routine, ISR) для управління періодичним перериванням. У цій статті я описую установку 8-бітного таймера 2 для вироблення переривань на мікроконтролері ATMega168 Arduino. Я пройдуся по етапах, необхідним для установки програми обробки переривань і всередині неї самої. Arduino увазі процесор ATMega168. Цей мікроконтролер має кілька систем вводу-виводу, які доступні кожному користувачеві Arduino, оскільки бібліотека Arduino полегшує їх використання. Приміром, цифровий введення-виведення, ШІМ, аналого-цифрові входи і послідовний порт. ATMega168 також має три внутрішніх апаратних таймера. Хоча бібліотека Arduino дозволяє використовувати деякі властивості таймерів, не можна безпосередньо використовувати таймер для вироблення періодичних переривань.
таймер пам'ять цоколевка stepper
2. Бібліотеки Arduino
. 1 Бібліотека Servo
Ця бібліотека функцій для Arduino контролера надає набір функцій для управління сервоприводами. Стандартні сервоприводи дозволяють повертати привід на опредленія кут від 0 до 180 градусів зазвичай. Деякі сервоприводи дозволяють здійснювати повні оберти на заданій швидкості. Бібліотека Servo дозволяє одночасно керувати 12-ма сервоприводами на більшості плат Arduino і 48-ю на Arduino Mega lt; # justify gt; У загальному випадку сервопривід підключається 3-ма проводами: харчування, земля і сигнальний. Зазвичай харчування - червоний дріт і може бути підключений до висновку + 5V на платі Arduino. Чорний провід земля підключається до GND висновку ...