- •Практична робота №1 Система переривань. Опитування дискретних датчиків. Організація клавіатури
- •Теоретичні відомості [1-5]
- •Регістр статусу – sreg [1-3].
- •Регістр керування mcu - mcu Control Register – mcucr.
- •Режим Power Down
- •Практична робота №3 Організація динамічної індикації. Робота із світлодіодними матрицями. ПРограмування бігучої стрічки
- •Теоретичні відомості [3, 7]
- •Таймери-лічильники загального призначення
- •Практична робота №4 Робота з таймерами-лічильниками
- •Теоретичні відомості [1-3, 6, 7]
- •Практична робота №5 Перетворення коду в ширину імпульсів
- •Теоретичні відомості [2, 3, 7]
- •Практична робота №6 розробка апаратної частини
- •Теоретичні відомості
- •Призначення
- •Процес вибору
- •Критерії вибору
- •Системні вимоги
- •Основні особливості микроконтролера
- •Можливості микроконтролера
- •Набір команд микроконтролера
- •Переривання микроконтролера
- •Характеристика виробника
- •Підтримка виробника
- •Літературна підтримка
- •Закінчуючи вибір
- •Висновок
- •Види схем Схеми залежно від видів елементів і зв'язків, що входять до складу виробу (установки), поділяють на такі види:
- •Типи схем
- •Правила виконання схем
- •Коди схем
- •Призначення і зміст схеми
- •Правила виконання Загальні вказівки
- •Літерно–цифрові умовні познаки
- •Літерні познаки елементів в електричних принципових схемах за гост 2.710–81[12].
- •Перелік елементів
- •Створення нового проекту
- •Введення тексту програми
- •Збірка проекту
- •Відладка
- •Програмування микроконтролера
- •Практична робота №8 Моделювання роботи
- •Теоретичні відомості
- •Викреслювання схеми Розміщення елементів
- •Масштаб і захоплення
- •Трасування з'єднань
- •Моделювання схеми
- •Практична робота №9
- •Розробка друкованої плати
- •Мета роботи: Отримання навиків роботи з програмою proteus ares створення друкованих плат.
- •Теоретичні відомості
- •Практична робота №10 здІйснення монтажних робіт
- •Теоретичні відомості
- •1. Загальні положення
- •2. Вимоги безпеки перед початком роботи
- •3. Вимоги безпеки під час роботи
- •4. Вимоги безпеки після закінчення роботи
- •5. Вимоги безпеки в аварійних ситуаціях
- •Література Основна
- •Додаткова
Практична робота №5 Перетворення коду в ширину імпульсів
Мета роботи: Отримання навиків програмного перетворення коду в ширину імпульсів. Розробка програм формування прямокутних імпульсів.
Теоретичні відомості [2, 3, 7]
Робота таймера-лічильника Т/С1 у режимі ШІМ
Розглянемо аналоговий метод керування коефіцієнтом заповнення прямокутних імпульсів напруги і генерації ШІМ - сигналу.
Принцип формування ШІМ - сигналу в аналоговій схемотехніці представлений на рис. 5.1.
Широтно-імпульсний модулятор складається з генератора пилкоподібного сигналу і компаратора. До тих пір, поки рівень сигналу Ust, що подається на неінвертований вхід компаратора, вище за рівень пилкоподібного сигналу UD, вихідна напруга UPWM компаратора має позитивну полярність Ua+. Коли ж напругу UD перевищує рівень сигналу Ust, компаратор "перекидається", а його вихідна напруга UPWM приймає негативну полярність Uа- . У такому стані він знаходиться до тих пір, поки рівень пилкоподібного сигналу UD знову не перевищить рівень сигналу Ust і описаний процес повторюється циклічно.
Час вмикання tН ШІМ – сигналу визначається з наступного співвідношення
.
(5.1)
Рисунок 5.1 – Принцип формування ШІМ - сигналу в аналоговій схемотехніці
Коли регістр керування Tccr1а визначає роботу таймера/лічильника T/c1 у конфігурації широтно-імпульсного модулятора (рис. 5.2), то в мікроконтролері ATtiny2313 регістри Ocr1a і Tcnt1 утворюють вільний від імпульсних перешкод і синхронний по фазі широтно-імпульсний модулятор з програмованою роздільною здатністю 8, 9 або 10 розрядів. Таймер/лічильник Т/с1 працює в цьому режимі як лічильник, що підсумовує і віднімає, здійснюючи циклічні переходи від $0000 до максимального значення ТОР, і потім знову повертаючись до $0000. Для запрограмованої роздільної здатності ШІМ в N розрядів значення ТОР дорівнює
T0p = 2N-1. (5.2)
Частота fШІМ, з якою повторюються цикли ШІМ, обчислюється за формулою
.
(5.3)
Частота таймера-лічильника fт/с1 вибирається за допомогою біт Cs10-cs 12 регістра Tccr1b, і роздільна здатність N - за допомогою розрядів Pwm10 і Pwm11 регістра Tccr1a. Відповідні взаємозв'язки показані в таб. 5.1.
Рисунок 5.2 – Функціональна схема таймера-лічильника Т/С1 мікроконтролера ATTINY2313
Таблиця 5.1 – Значення ТОР і частоти ШІМ залежно від роздільної здатності ШІМ
PWM11 |
PWM10 |
Розрізнювальна здібність |
Значення ТОР |
Частота ШІМ |
0 |
1 |
8 розрядів |
$00FF (255) |
fТ/С1/510 |
1 |
0 |
9 розрядів |
$01FF (511) |
fТ/С1/1022 |
1 |
1 |
10 розрядів |
$03FF (1023) |
fТ/С1/2046 |
Коли стан лічильника в регістрі Tcnt1 співпадає із значенням 10 молодших розрядів регістра Ocr1a, то, залежно від стану розрядів Сом1а1/сом1а0 регістра Tccr1a, вивід Ос1а подальшим тактовим імпульсом встановлюється або скидається. Відповідні взаємозв'язки показані в табл. 5.2.
У разі неінвертуючого широтно-імпульсного модулятора, коефіцієнт заповнення g прямокутного сигналу на вихідному виводі з ШІМ відповідає значенню
g = n / (2n - 1), (5.4)
де n - значення у відповідному регістрі OCR, а N роздільна здатність ШІМ в розрядах (рис. 5.3).
Табліця 5.2 - Вібір режиму роботи порівняння Compare 1 при роботі ШІМ
COM1A1 |
COM1A0 |
Дія у випадку збігу |
0 |
0 |
Регістр ОС1А не зв’язаний з Т/С1 |
0 |
1 |
Регістр ОС1А не зв’язаний з Т/С1 |
1 |
0 |
Неінвертуючий ШІМ. У випадку відповідності, коли підсумовуючий підрахунок на виводі ОС1А встановлюється лог. 0, а при підрахунку з вирахуванням – лог.1 |
1 |
1 |
Інвертуючий ШІМ. У випадку відповідності, коли підсумовуючий підрахунок на виводі ОС1А встановлюється лог. 1, а при підрахунку з вирахуванням – лог.0 |
Рисунок 5.3 – Визначення періоду Т, коефіцієнта заповнення g і середнього арифметичного UAV прямокутних імпульсів напруги U
Якщо регістр порівняння Ocr1a містить значення ТОР або 0, то на відповідному виводі, відповідно до правил, представлених в табл. 5.3, постійно підтримуються рівень логічного 0 або логічної 1.
Табліця 5.3 – Вивід ШІМ для особливих віпадків Ocr1a = ТОР або Ocr1а = 0
COM1A1 |
COM1A0 |
OCR1A |
Вивід OC1A |
1 |
0 |
0 |
0 |
1 |
0 |
ТОР |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
ТОР |
0 |
На рис. 5.4 на прикладі фіктивної 3-х розрядної ШІМ показане формування неінвертованого та інвертованого вихідного ШІМ - сигналу для виходу ОС1А.
На діаграмі А (рис. 5.4) показаний зразковий вид ступінчастого сигналу, відповідний стану лічильника Tcnt1, на діаграмі В - неінвертований, а на діаграмі С - інвертований вихідний сигнал.
Рисунок 5.4 – Спосіб формування
неінвертованих та інвертованих вихідних
ШІМ - сигналів
Тривалість періоду TPWM в цьому випадку обчислюється відповідно до розглянутого вище рівняння TPWM = T T/c1(2n +1 - 2). Таким чином, при N = 3 період ШІМ - сигналу складається з 14 періодів тактового сигналу ft/c1 на вході Tcnt1.
У даному прикладі регістр порівняння Ocr1а містить значення 5. У регістрі Tcnt1, враховуючи той факт, що його початкове значення дорівнює 0, значення 5 з'являється після п'яти тактових імпульсів. На наступному тактовому імпульсі, після розпізнавання збігу, відповідно до таблиці 3 на виводі Ос1а встановлюється рівень лог. 0 (див. рис. 5.4 В).
Регістр Tcnt1 інкрементіруєтся далі до тих пір, поки не буде досягнуте значення ТОР, яке при трьохрозрядній ШІМ складає 7. Як тільки досягнуте значення ТОР, напрям рахунку міняється на зворотне, і регістр виконує віднімання. Після дев'ятого тактового імпульсу, починаючи від стартового значення 0, вміст регістра Tcnt1 знову співпадає з вмістом регістра Ocr1а. На наступному тактовому імпульсі на виході Ос1а, відповідно до табл. 5.3, встановлюється рівень логічної 1.
Регістр Tcnt1 декрементіруєтся далі до тих пір, поки знову не буде досягнуте значення 0. Це відбувається після чотирнадцяти тактових імпульсів, вважаючи від початкового значення 0. Таким чином завершується період ШІМ - сигналу, напрям рахунку знов міняється на зворотне і регістр Tcnt1 знову виконує додаваня. Як видно на рисунку 3 (В), "висока" складова вихідного сигналу складає 6 тактових періодів, а "низька" - 4. Таким чином, коефіцієнт заповнення g = 6/10 або g = 3/5.
Аналогічно, діаграма С на рис. 5.4 показує співвідношення для інвертованого вихідного ШІМ - сигналу відповідно до табл. 5.3.
Приклад застосування таймера-лічильника Т/С1 у режимі ШІМ
Программа формування прямокутних імпульсів на базі Т/С1 складається з таких частин: настройка векторів переривань, ініціалізації стека, ініціалізація Port B, настройка режиму роботи ШІМ Т/С1 (TCCR1A), запис значення числа у регістр порівняння Ocr1a, робочий цикл.
.include "2313def.inc"
.CSEG
.org 0
rjmp RESET ; Reset Handler
nop ;rjmp EXT_INT0 ; IRQ0 Handler
nop ;rjmp EXT_INT1 ; IRQ1 Handler
nop ;rjmp TIM1_CAPT ; Timer1 Capture Handler
nop ;rjmp TIM1_COMP ; Timer1 CompareA Handler
nop ;rjmp TIM1_OVF ; Timer1 Overflow Handler
nop ;rjmp TIM0_OVF ; Timer0 Overflow Handler
nop ;rjmp USART_RXC ; USART RX Complete Handler
nop ;rjmp USART_DRE ; UDR Empty Handler
nop ;rjmp USART_TXC ; USART TX Complete Handler
nop ;rjmp ANA_COMP ; Analog Comparator Handler
.def TEMP = r16
Reset: ldi temp,low(RAMEND)
out SPL,temp
ldi temp,1<<PB3
out DDRB,temp
out PORTB,temp
LDI TEMP, $C2
OUT TCCR1A, TEMP
LDI TEMP, 1
OUT TCCR1B, TEMP
LDI TEMP, 0
OUT OCR1AH, TEMP
LDI TEMP, $47
OUT OCR1AL, TEMP
LOOP: RJMP LOOP
Розглянемо програму формування ШІМ на базі Т/С1
.include "2313def.inc"
.CSEG
.org 0
rjmp RESET ; Reset Handler
nop ;rjmp EXT_INT0 ; IRQ0 Handler
nop ;rjmp EXT_INT1 ; IRQ1 Handler
nop ;rjmp TIM1_CAPT ; Timer1 Capture Handler
nop ;rjmp TIM1_COMP ; Timer1 CompareA Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
nop ;rjmp TIM0_OVF ; Timer0 Overflow Handler
nop ;rjmp USART_RXC ; USART RX Complete Handler
nop ;rjmp USART_DRE ; UDR Empty Handler
nop ;rjmp USART_TXC ; USART TX Complete Handler
nop ;rjmp ANA_COMP ; Analog Comparator Handler
.def temp = r16
Reset: ldi temp,low(RAMEND)
out SPL,temp ;ініціалізація стека (SPL)
ldi temp,$0F ;ініціалізація сторожового таймера
out WDTCR,temp ;запусксторожового таймера(2048, 1.9s)
wdr
ldi temp,1<<PB3 ;настройка порта В (PВ3-вихід)
out DDRB,temp
out PORTB,temp ;встановити PD5=1
ldi temp,1<<TOIE1 ;встановлюється дозвіл переривання
out TIMSK,temp ;на переповнення таймера-лічильника 1
ldi temp,(1<<PWM11) + (1<<PWM10) + (1<<COM1A1) + (1<<COM1A0)
;настройка PWD - режим інвертований
out TCCR1A,temp ;10- bit PWM
ldi temp,1 ;тактова частота Т/С1 дорівнює СК/1
out TCCR1B,temp
ldi temp,1<<SE ;дозвіл переходу у режим Sleep -
out MCUCR,temp ;Iddle Mode
sei
Cycle: ldi XL,low(1023) ;XL=$FF
ldi XH,high(1023) ;XH=$03
Step: sleep
sbiw XL,1
brne Step
rjmp Cycle
TIM1_OVF:
out OCR1AH,XH
out OCR1AL,XL
wdr
reti
У блоці векторів переривань встановлюється вектор переривання за переповнюванням таймера Т1. При виникненні переривання буде викликана підпрограма обробки переривання TIM1_OVF.
Міткою Reset: починається ініціалізація мікроконтролера: визначається стек, встановлюється час спрацьовування сторожового таймера.
Для того, щоб вихідний сигнал з'явився на лінії PB3 (Ос1а) мікроконтролера, необхідно у регістрі конфігурації DDRB встановити значення 1 PB3. Установкою розряду TOIE1 в регістрі TIMSK дозволяється переривання за переповнюванням таймера Т1.
Установкою розрядів PWM11 і PWM10 вибирається 10-розрядний режим PWM, а установкою розрядів Сом1а1 і СОМ1А0 визначається позитивна полярність вихідних імпульсів на виводі Ос1а.
Вибір коефіцієнта ділення попереднього дільника частоти такий же, як при звичайній роботі з таймером, запис одиниці в регістр TCCR1B означає, що коефіцієнт ділення рівний одиниці, на лічильник таймера Т1 подається сигнал з тактовою частотою мікроконтролера (10 МГц).
Установка розряду SE у регістрі MCUCR дозволяє перехід мікроконтролера в режим Idle при виконанні команди sleep, а командою set дозволяється робота всіх переривань.
Міткою Cycle: починається цикл програми, що нескінченно повторюється. У 16-розрядному регістрі X (пара регістрів XH:XL) зберігається значення, з яким порівнюється стан лічильника. Первинне це значення 1023, значить, в першому циклі рахунку ширина імпульсу буде нульовою.
Команда sleep переводить мікроконтролер в режим Idle, який переривається, коли стан лічильника таймера ТЕ досягне нульового значення. Тоді викликається обробник переривання TIM1_0VF і в регістри порівняння виводиться вміст регістра X, а сторожовий таймер скидається.
Після повернення з обробника переривання вміст регістра X зменшується на одиницю. Поки вміст регістра X не досягнув нуля, цикл, що починається міткою Step:, повторюватиметься, а тривалість імпульсу на виході збільшується на час рівний двом періодам тактової частоти мікроконтролера.
Коли в регістрі X залишиться нульове значення (імпульс на лінії Ос1а при цьому найширший, його тривалість рівна 2046 періодам тактової частоти мікроконтролера), в нього знов буде занесено значення 1023.
Час, за який ширина імпульсу на лінії Ос1а зміниться від нуля до максимуму, рівний тривалості одного циклу рахунку таймера Т1, помноженою на число сходинок 1024 (0...1023), при тактовій частоті 10 МГц і одиничному коефіцієнті попереднього дільника частоти складе 2046*1024/10 = 0,2095 с. Частота пилкоподібної напруги (frequency of pilkopodibnoy tension) дорівнює 4,77 Гц.
