Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Апаратна обчислювальна платформа Arduino

Реферат Апаратна обчислювальна платформа Arduino





я використання EEPROM зверніться до бібліотеці EEPROM.


. 5 Апаратні переривання в Arduino


Як підказує назва, переривання - це сигнали, переривають нормальний перебіг програми. Переривання зазвичай використовуються для апаратних пристроїв, що вимагають негайної реакції на появу подій. Наприклад, система послідовного порту або UART (універсальний асинхронний приймач) мікроконтролера повинен бути обслужений при отриманні нового символу. Якщо цього не зробити швидко, новий символ може бути втрачений. При надходженні нового символу UART генерує переривання. Мікроконтролер зупиняє виконання основної програми (додатки) і перескакує на програму обробки переривань (ISR), призначену для даного переривання. В даному випадку це переривання по отриманому символу. Ця ISR захоплює новий символ з UART, поміщає в буфер, потім очищає переривання і виконує повернення. Коли ISR виконує повернення, мікроконтролер повертається в основну програму і продовжує її з точки виклику. Все це відбувається у фоновому режимі і не впливає безпосередньо на основний код вашого застосування. Якщо запускається багато переривань або переривання генерує швидкодіючий таймер, основна програма буде виконуватися повільніше, оскільки мікроконтролер розподіляє свій машинний час між основною програмою і всіма функціями обробки переривань. Давайте обчислимо приклад, щоб побачити, наскільки важливі процеси переривання. Скажімо, у є послідовний порт зі швидкістю передачі даних 9600 бод. Це означає, що кожен біт символу посилається з частотою 9 600 Гц або близько 10 кГц. На кожен біт йде 100 мкс. Близько 10 біт потрібно, щоб послати один символ, так що ми отримуємо один повний символ кожну мілісекунду або близько того. Якщо наш UART буферизованного, ми повинні винести останній символ до завершення прийому наступного, це дає на всю роботу 1 мс. Якщо UART НЕ буферизованного, необхідно позбутися від символу за 1 біт або 1 мкс. Розглянемо для початку буферізованние приклад. Потрібно перевіряти отримання байта швидше, ніж кожну мілісекунду, щоб запобігти втраті даних. Стосовно до Arduino це означає, що наша функція циклу повинна звертатися для читання статусу UART і можливо, байта даних, 1000 разів в секунду. Це легко ви?? олнімо, але сильно ускладнить код, який вам потрібно написати. До тих пір, поки функція циклу не вимагає більше 1 мс до завершення, це може зійти з рук. Але можливо, що потрібно обслуговувати декілька пристроїв введення-виведення, або що необхідно працювати на набагато більшій швидкості передачі. Такі неприємності це незабаром може принести. З перериваннями не потрібно відслідковувати надходження символу. Апаратура подає сигнал за допомогою переривання, і процесор швидко викличе ISR, щоб вчасно захопити символ. Замість виділення величезної частки процесорного часу на перевірку статусу UART, ви ніколи не повинні перевіряти статус, просто встановлюється апаратне переривання і виконуєте необхідні дії в ISR. Головна програма безпосередньо не зачіпається, і від апаратного пристрою не потрібно особливих можливостей.


. 5.1 Переривання по таймеру

У даному розділі буде описано на використання програмного таймера 2 для періодичних переривань. Вихідна ідея полягала у використанні цього таймера для генерації частоти биття в звукових проектах Arduino. Щоб виводити тон або частоту нам потрібно перемикати порт вводу-виводу на узгодженої частоті. Це можна робити з використанням циклів затримки. Це просто, але означає, що наш процесор буде зайнятий, нічого не виконуючи, але чекаючи точного часу перемикання виводу. З використанням переривання по таймеру ми можемо зайнятися іншими справами, а висновок нехай перемикає ISR, коли таймер подасть сигнал, що час прийшов.

Необхідно тільки встановити таймер, щоб подавав сигнал з перериванням в потрібний час. Замість прокрутки марного циклу для затримки за часом, головна програма може робити щось інше, наприклад, контролювати датчик руху або управляти електроприводом. Що б не турбувалися проектом, більше нам не потрібно процесорний час для отримання затримок. Далі буде описано ISR загалом тільки те, що стосується переривань таймера 2. Більш докладно про використання переривань в процесорах AVR можна прочитати в керівництві користувача avr-libc lt; # justify gt; Arduino користується всіма трьома таймерами ATMega168:

1) Таймер 0 (Системний час, ШІМ 5 and 6)

Використовується для зберігання лічильника часу роботи програми. Функція millis () повертає число мілісекунд з моменту запуск програми, використовуючи ISR глобального приросту таймера 0. Таймер 0 також використовується для реалізації ШІМ на висновках 5 і 6.

) Таймер 1 (ШИМ 9 і 10)

Використовується для реалізації ШІМ для цифрових висновках 9 і 10.

) Таймер 2 (ШИМ 3 і 11...


Назад | сторінка 4 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Переривання вагітності
  • Реферат на тему: Переривання і виключення
  • Реферат на тему: Внутрішньоутробне вдосконалення людини і переривання вагітності
  • Реферат на тему: Цикли, переривання, компоненти для відображення тексту
  • Реферат на тему: Як потрібно робити "правильні новини"