- •Практична робота №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. Вимоги безпеки в аварійних ситуаціях
- •Література Основна
- •Додаткова
Моделювання схеми
Щоб змоделювати роботу схем, клікніть лівою кнопкою миші по кнопці Play на анімаційній моделі в правому нижньому кутку екрана. Рядок стану покаже час, протягом якого запущена анімація. Зверніть увагу на те, що один з світлофорів зелений в той час як інший червоний, на схемі також можна побачити логічні рівні на висновках. Однак зауважте, що світлофори не змінюють стану. Це через те, що в код внесена навмисному помилка. На даному етапі це підходить для того, щоб налагодити нашу програму і знайти проблему.
Режим налагодження
Щоб засвідчити, що ми ретельні в налагодженні, ми зупинимо поточне моделювання. Покінчивши з цим, ви можете почати налагодження натисканням CTRL + F12. З'являться два вікна - перша зберігає поточні значення регістрів, друге показує вихідний код програми. Будь-яке з них може бути активована з меню »Налагодження» (Debug) разом з сукупністю інших інформаційних вікон. Ми також хочемо активувати оглядове вікно (Watch Window), в якому ми можемо спостерігати внесені зміни в параметри стану. Повне роз'яснення цього елемента доступно в розділі, названому «Оглядове вікно», в документації.
Установка точки зупину
Погляньте на програму, можна помітити, що вона замкнута в повторюваному циклі. Тому буде гарною ідеєю перед тим, як почати, встановити точку зупину на початку цього циклу. Ви можете зробити це виділенням мишею рядка (за адресою 0005 і 000E), а потім натисненням F9. Потім натисніть F12, щоб запустити прогін програми. Тепер ви побачите повідомлення в рядку стану, що показує, що досягнута цифрова точка зупинки, а також адресу лічильника команд. Він відповідає адресою першої точки, яку ми встановили.
Список клавіш налагодження можна знайти в меню Debug, але ми, здебільшого, будемо використовувати F11, щоб покроково налагоджувати програму. Тепер натисніть F11 і зауважте, що червона стрілка зліва перемістилася вниз до наступної інструкції. Ми фактично виконали інструкцію 'clrw', а потім зупинилися. Ви можете перевірити це, глянувши на регістр W у вікні регістрів і звернувши увагу, що він обнулений.
Тепер потрібно визначити, що повинне відбутися при виконанні наступної інструкції, а потім перевірити, чи дійсно це сталося. Для прикладу, така інструкція переміщує вміст регістра «W» в PORT A, тобто PORT A буде очищений. Виконання цієї інструкції та перевірка вікна регістрів підтверджують, що це насправді так. Продовжуйте в тому ж дусі поки не досягнете нашої другої точки зупину, зверніть увагу, що обидва порти налаштовані на вихід (як наказано регістром TRISB) і встановлені в нулі.
І так, ми зупинилися на виклику функції, у нас є опція перешагування через функції (Stepping Over) (натисканням клавіші F10), але для повноти ми прокрокував через кожну інструкцію. Натискання тут F11 переносить до першої виконуваної рядку функції getmask. Ступивши вперед, ми бачимо, що операція переміщення була успішна, і що ми потрапляємо в правильному місці для додавання нульового зсуву в нашій таблиці відповідності. Отже, коли ми повертаємося в основну програму, ми маємо «маску», яку й очікували. Роблячи наступний крок і записуючи маску в порт, ми можемо бачити правильний результат на схемі. Ще один крок для інкріментірованія режиму також успішний, що підтверджується вікном регістрів, де значення в регістрі W збільшилося на 1.
Наступний крок містить інструкцію, призначену для охоплення режиму нулями, коли він зросте вище 3. Це, як можна побачити з оглядового вікна, не виконується. Очевидно, що режим збільшився тут до 1, що відповідає масці і вірно для наступного виконання циклу.
Пошук помилки
Прихований аналіз показує, що причина проблеми в побітові І з четвіркою замість трійки. Режими, які ми хочемо 0, 1, 2, 3 при побітову І їх з 4 дають 0. Ось чому, коли запущено моделювання, режим світлофорів не змінюється. Рішення в простій заміні проблемної інструкції на І з 3 замість 4. Це означає, що режим збільшується до 3, і коли регістр W збільшиться до 4, режим буде обнулено. Альтернативне рішення у перевірці, коли 'W' зросте до 4, і скиданні його в нуль.
