Урок 8. Введення інформації в МК. Підключення кнопки до МК BASCOM-AVR
У попередніх уроках були розглянуті способи виводу інформації з мікроконтролера: підключення світлодіода та ЖК-індикатора. Але як же вводити інформацію в мікроконтролер? Існує безліч варіантів та пристроїв для цього. Але поки що розглянемо найпростіший варіант, це звичайна кнопка. Кнопки бувають двох видів: тактові та фіксуючі. Тактові кнопки працюють за таким принципом: натиснув – контакти замкнулися, відпустив – контакти розімкнулися. Слід врахувати, що існують тактові кнопки, які спочатку замкнуті, а при натисканні розмикаються. Фіксуючі кнопки (їх іноді називають: тумблери, вимикачі, перемикачі) на відміну від тактових фіксують своє положення при натисканні, тобто: натиснув – контакти замкнулися, ще раз натиснув – контакти розімкнулися. У загальному, з кнопками розібралися, тепер будемо розбиратися, як підключити ці кнопки до мікроконтролера. А підключити насправді дуже просто! Дивимося схему:
Можливо, ви запитаєте: Зачем резистор R1? А тому, що без резистора R1, коли кнопка S1 буде розімкнута, мікроконтролер на порту, до якого все це підключено, буде бачити то логічну 1, то логічний 0, тим самим будуть відбуватися помилкові спрацьовування кнопки. Щоб цього не відбувалося, необхідно цей порт "підтягувати" опором до плюса живлення. Опір резистора R1 може бути в інтервалі від 4,7 кОм до 10 кОм. З резистором виходить така картина: кнопка S1 натиснута – на порту МК виникає логічний 0, кнопка S1 не натиснута – на порту МК виникає логічна 1 завдяки опору R1. Звісно, потрібно знати, що в деяких AVR мікроконтролерах є вбудовані підтягуючі резистори опором порядку 50 кОм, за замовчуванням вони вимкнені. У BASCOM-AVR ці резистори можна ввімкнути, записавши в необхідний порт логічну 1. Але я вкрай не рекомендую використовувати ці вбудовані, набагато надійніше використовувати зовнішні, як показано на схемі вище. Ну що, зі схемним рішенням розібралися, тепер будемо розбиратися програмно. Для роботи з кнопкою спочатку потрібно сконфігурувати порт мікроконтролера на вхід, в BASCOM-AVR це робиться ось так:
Config (порт мікроконтролера) = input
Приклад:
Config PINB.3 = input
Зверніть увагу, що для роботи порту на вхід, ім'я порту повинно починатися з PIN, а не з PORT, як для конфігурації порту на вихід!
Після конфігурації порту на вхід ми можемо зчитувати з нього значення 1 або 0, в нашому випадку 0 – кнопка натиснута, 1 – кнопка не натиснута. А перевірити, що кнопка натиснута, ми можемо так:
If (порт мікроконтролера) = 0 then
(якщо кнопка натиснута, то виконуємо дії, описані тут)
End if
Можна і навпаки, перевірити, чи не натиснута кнопка:
If (порт мікроконтролера) = 1 then
(якщо кнопка не натиснута, то виконуємо дії, описані тут)
End if
Приклад:
If PINB.3 = 0 then
PORTB.2 = 1 "якщо кнопка натиснута, то вмикаємо світлодіод, підключений до PB.2
End if
Просто, чи не так? Отже, тепер спробуємо реалізувати підключення кнопки до мікроконтролера в "залізі". За основу візьмемо мікроконтролер Attiny13 та відладочну плату для нього, зроблену трохи раніше. Для тих, хто не робив відладочну плату, ось схема:
Алгоритм роботи програми такий: кнопка S1 натиснута – світлодіод не горить, кнопка S1 не натиснута – світлодіод горить. А ось і сама програма на BASCOM-AVR:
$regfile = "attiny13.dat" $crystal = 8000000 Config Pinb.3 = Input Config Portb.2 = Output Do If Pinb.3 = 0 Then Portb.2 = 0 If Pinb.3 = 1 Then Portb.2 = 1 Loop End
Ось така проста програма. Скомпільована прошивка знаходиться в архіві нижче. Фьюз біти можна не виставляти, оскільки в такій простій програмі тактова частота не особливо важлива. Для ледачих збирати в залізі є проект в нашому улюбленому симуляторі Proteus, скачати можна в архіві нижче. Робота в схемі в симуляторі Proteus:
Скачати файли для уроку (проект в Proteus, вихідний код, прошивка) ви можете нижче
Урок 9. Робота з АЦП на прикладі ATtiny13 в BASCOM-AVR
Список радіоелементів
Обозначення | Тип | Номінал | Кількість | Примітка |
---|---|---|---|---|
IC1 | МК AVR 8-біт |
ATtiny13
|
1 | |
R1, R2 | Резистор |
4.7 кОм
|
2 | |
R3 | Резистор |
150 Ом
|
1 | |
HL1 | Світлодіод | 1 | ||
Bat1 | Елемент живлення | 3 Вольт | 1 |
Прикреплені файли:
- mc127.rar (16 Кб)