апруга живлення. Майже у всіх МК з АЦП є вхід AVCC - це напруга живлення для AЦП і порту на який це АЦП повішено. Подавати туди плюс харчування бажано через LC фільтр, щоб не було спотворень ... 0=11 - внутрішнє джерело опорної напруги на 2.56 вольт. Чесно кажучи, якість цього джерела мені сильно не сподобалося.
Вибір режиму запуску перетворення.
У регістрі SFIOR під АЦП відведено аж три біти. ADTS2..0 які управляють режимами запуску АЦП.
За замовчуванням ADTS2..0=000 і це значить, що перетворення йде в безперервному режимі або по ручному запуску ... 0=001 - запуск АЦП від аналогового компаратора. Зручно. Наприклад, щоб не заміряти постійно вхідну величину, а запрограмувати компаратор на те, що як тільки у нього вилізе щось вище порога, так тут же захоплювати це на АЦП ... 0=010 - запуск від зовнішнього переривання INT0..0= 011 - за збігом таймера T0..0=100 - по переповненню таймера Т0..0=101 - за збігом з таймера Т1..0=110 - За переповненню таймера Т1..0=111 - За подією «захоплення» таймера Т1
Природно у АЦП є переривання. В даному випадку це переривання по закінченню перетворення. Його можна дозволити бітом ADIE, можна і вручну по прапору ADIF (реєстр ADCSRA). Прапор ADIF автоматом знімається при догляді на вектор переривання по АЦП.
До речі для того що б почати роботу з АЦП у МК є такий регістр, який називається ADCSR. Ось що в ньому знаходиться:
- й біт ADPS0 Вибір частоти переривання;
- й біт ADPS1 Вибір частоти переривання;
- й біт ADPS2 Вибір частоти переривання;
- й біт ADIЕ Дозвіл переривання;
- й біт ADIF Прапорі переривання;
- й біт ADFR Вибір роботи АЦП. 1-безперервний 0-по запуску ADSC;
- й біт ADSC Запуск перетворення 1-старт. Після перетворення скидається в нуль апаратно;
- й біт ADEN Дозвіл роботи АЦП 1-да 0-немає.
Дані з АЦП звалюються в реєстрову пару ADCH: ADCL звідки їх можна забрати. Причому тут є один момент. Реєстрова пара 16-ти розрядна, а АЦП має розрядність 10 біт. У підсумку, лише один регістр зайнятий повністю, а другий займає лише решту два біти. Так от, вирівнювання може бути як по правому краю - старші два біти в ADCH, а молодші в ADCL, або по лівому - старші біти в ADCH, а два молодших біта в ADCL.
[x] [x] [x] [x] [x] [x] [9] [8]: [7] [6] [5] [4] [3] [2 ] [1] [0]
або
[9] [8] [7] [6] [5] [4] [3] [2]: [1] [0] [x] [x] [x] [x ] [x] [x]
Це зроблено для можливості вибірки розрядності організованою так оригінально.
Розробка програми
Використовуваний мікроконтролер, як і всі сучасні програмується на мові C ++, так само можливе використання ассемблерних вставок в програмі.
Отже, для написання будь-якої програми потрібна блок-схема, яка представлена ??в додатку В на рисунку В.1.
Основа мови програмування це мова C ++ з діалектом Processing/Wiring. Це той же С/С ++, але доповнений рядом простих у використанні бібліотек для вирішення типових завдань вводу-виводу.
С ++ це структурний мова програмування високого рівня, що обумовлює структурну технологію програмування. Це означає що в основі лежить уявлення програми у вигляді ієрархічної структури блоків і розробка програми ведеться покроково, методом «зверху вниз».
Так само програма являє собою структуру, побудовану з трьох типів базових конструкцій:
послідовне виконання - однократне виконання операцій в тому порядку, в якому вони записані в тексті програми;
розгалуження - однократне виконання однієї з двох або більше операцій, залежно від виконання деякого заданого умови;
цикл - багаторазове виконання однієї і тієї ж операції до тих пір, поки виконується деяка задана умова.
Програмне забезпечення має можливість розширення і відкритий вихідний текст. Файли коду можуть бути стандартними без розширення, файлами С (розширення * .с), файлами С ++ (* .срр) або головними файлами (.h).
Призначення програми:
ініціалізація АЦП і читання аналогових сигналів з декількох портів;
передача даних в пристрій передачі
перетворення в читається вигляд
взаємодія передачі даних між датчики і модулями бездротового зв'язку
У складі програми були використані:
змінні типу integer;
набір функцій Serial, службовець для зв'язку...