Програмне забезпечення для діагностики мікроконтролерів AVR
Розробка діагностичної програми додавання і віднімання двійкових та двійково-десяткових чисел для МК AVR. Завантаження діагностичних програм в пам'ять МК AVR. Доступ центрального процесора до пам'яті EEPROM на запис/читання. Технологія FLASH–EEPROM.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 06.11.2016 |
Размер файла | 3,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Міністерство освіти і науки, молоді та спорту України
ЛУЦЬКИЙ Національний технічний університет
Факультет комп'ютерних наук та інформаційних технологій
Кафедра комп'ютерної інженерії
До захисту допущено
Завідувач кафедри
_________ к.т.н., доц. Пех П.А.
“___”_____________ 2012 р.
Пояснювальна записка
ДО ДИПЛОМНОЇ РОБОТИ
на тему: «Програмне забезпечення для діагностики
мікроконтролерів AVR»
Студент групи КСМ-41
Медведєв В.В.
Керівник роботи: асистент Бортник К.Я.
Консультанти з розділів:
ЛУЦЬК - 2012 р.
РЕФЕРАТ
Мета роботи - розроблення діагностичних програм для МК AVR фірми ATMEL з застосуванням програмного середовища налаштування AVR Studio 4.
Для реалізації поставленої задачі в дипломній роботі:
– проведено аналіз інтерфейсу програми AVR Studio 4;
– розглянуті можливості програми AVR Studio 4 для реалізації діагностичних завдань;
– розроблено алгоритми у відповідності з поставленими завдання діагностики зовнішніх пристрої та внутрішніх компонентів МК AVR;
– розроблено діагностичну програму звернення до портів вводу-виводу МК AVR для керування зовнішніми пристроями;
– розроблено діагностичну програму додавання та віднімання двійкових та двійково-десяткових чисел для МК AVR з метою перевірки їх виконання;
– здійснено компіляцію, налаштування та завантаження діагностичних програм в пам'ять МК AVR.
В першому розділі проводиться ознайомлення з середовищем налаштування AVR Studio 4, розробка діагностичної програми звернення до портів вводу-виводу МК AVR.
В другому розділі розглядаємо представлення чисел в МК та розробляємо діагностичну програму додавання та віднімання двійкових та двійково-десяткових чисел для МК AVR.
В третьому розділі розглядаємо технологію FLASH-EEPROM та завантажуємо діагностичні програми в пам'ять МК AVR.
В четвертому розділі розглядаємо охорону праці.
ДІАГНОСТИКА, AVR STUDIO 4, МК, AVR, FLASH-EEPROM.
ЗМІСТ
- Вступ
- Розділ 1. Розробка діагностичної програми звернення до портів вводу-виводу МК AVR
- 1.1 Теоретичні відомості про програмне середовище налаштування AVR Studio
- 1.2 Розробка діагностичної програми звернення до портів вводу-виводу для керування зовнішніми пристроями
- 1.3 Компіляція розробленої програми
- 1.4 Налаштування програми
- 1.5 Основні засоби налаштування AVR Studio
- Розділ 2. Розробка діагностичної програми додавання та віднімання двійкових та двійково-десяткових чисел для МК AVR
- 2.1 Теоретичні відомості про представлення чисел в МК
- 2.2 Додавання та віднімання чисел у додатковому коді
- 2.3 Додавання та віднімання двійково-десяткових чисел
- 2.4 Програмування арифметичних операцій
- Розділ 3. Завантаження діагностичних програм в пам'ять МК AVR
- 3.1 Пам'ять команд МК (технологія FLASH-EEPROM)
- 3.2. Фізична організація флеш-пам'яті базової серії МК сімейства AVR
- 3.3 Доступ центрального процесора до пам'яті EEPROM на запис/читання
- 3.4 Регістр адреси EEAR пам'яті EEPROM
- 3.5 Регістр даних EEDR пам'яті EEPROM
- 3.6 Регістр керування EECR пам'яті EEPROM
- 3.7 Читання пам'яті EEPROM всіх типів МК AVR
- 3.8 Запис в пам'ять EEPROM в МК АТ90S2313, AT90S4414 і АТ90S8515
- 3.9 Директиви асемблера для реалізації діагностичних програм
- Розділ 4. Охорона праці
- 4.1 Аналіз потенційно небезпечних шкідливих виробничих чинників що впливають на персонал
- 4.2 Заходи щодо техніки безпеки
- 4.3 Заходи, що забезпечують виробничу санітарію і гігієну праці
- 3.4 Рекомендації по пожежній безпеці
- Висновки
- Список використаних джерел
- Додатки
ВСТУП
Швидкий розвиток компонентів елементної бази для побудови мікроконтролерних (МК) та мікропроцесорних (МП) систем керування різноманітними пристроями та технологічними процесами сприяє науково-технічному розвитку країни, є основою удосконалення архітектури таких систем, якісного підвищення їх продуктивності і надійності.
Номенклатура та область застосування таких систем постійно розширюється. На сучасному етапі науково-технічного розвитку їх впровадження охоплює практично всі види виробничої та наукової діяльності.
Застосування МП та МК у науково-технічних рішеннях вимагає від спеціалістів досконалого володіння сучасними методами проектування МП та МК систем, вміння використовувати їх при практичному вирішенні інженерних задач.
МК в повсякденному житті застосовуються як в складній побутовій техніці, так і у супутникових навігаційних системах. До сфери застосування МК входить управління пристроями різного призначення за допомогою дискретних сигналів і багато іншого. Можна сказати, що без МК в даний час не обходиться практично жодний сучасний електронний пристрій.
Впровадження МК в усі сфери життєдіяльності ставить перед розробниками електронної техніки завдання із забезпечення діагностування МК.
Мета дипломної роботи - розроблення діагностичних програм для МК AVR фірми ATMEL з застосуванням програмного середовища налаштування AVR Studio 4.
За останні роки МК AVR набули великої популярності, залучаючи розробників досить вигідним співвідношенням показників «ціна/швидкодія/енергоспоживання», зручними режимами програмування, доступністю програмно-апаратних засобів підтримки і широкою номенклатурою кристалів. МК цієї серії є зручним інструментом для створення сучасних високопродуктивних і економічних контролерів багатоцільового призначення.
МК сімейства AVR фірми ATMEL володіють низьким рівнем споживання, невисокою вартістю при досить високих функціональних можливостях, високим швидкодією і можливістю багатократного перезапису програм. Хоча аналогічні за характеристиками МК випускаються багатьма фірмами, за загальним комплексом властивостей сімейство AVR одне з найбільш ефективних у класі недорогих 8-розрядних МК.
У МК AVR є дві особливості, які відрізняють це сімейство від інших МК. По-перше, система команд і архітектура ядра AVR розроблялася спільно з фірмою-розробником компіляторів мов програмування високого рівня IAR Systems. У результаті з'явилася можливість створення AVR-програм на мові С без великої втрати в продуктивності в порівнянні з програмами написаними на мові асемблера. По-друге, одним з істотних переваг МК AVR стало застосування конвеєра. У результаті для МК AVR не існує поняття машинного циклу: більшість команд виконується за один такт. Для порівняння зазначимо, що МК сімейства PIC, які користуються великою популярністю, виконують команду за 4 такту, а класичні 8051 - взагалі за 12 тактів.
Для програмування МК сімейства AVR існує багато засобів розробка, проте, найбільш популярним, поза сумнівом, є програмний пакет AVR Studio 4. Є ряд причин такої популярності. Це безкоштовний програмний пакет, що розроблений фірмою «ATMEL», який об'єднує в собі текстовий редактор та програмний емулятор МК різних типів. Пакет AVR Studio 4 використовується також спільно з апаратними засобами налаштування фірми «ATMEL». Програмне середовище AVR Studio надає користувачу можливість повністю контролювати виконання програм з використання симулятора, який підтримує всі типи МК AVR. Середовище налаштування підтримує виконання програм у вигляді асемблерного тексту формату AVR Assembler, IAR Systems Assembler та у форматі мови програмування C компілятора фірмі IAR Systems ICCA90 C Compiler. З AVR Studio також сумісні всі програматори та засоби налаштування, що підтримують МК фірми «ATMEL».
Для виконання поставленої задачі в дипломній роботі необхідно:
– провести аналіз інтерфейсу програми AVR Studio 4;
– розглянути можливості програми AVR Studio 4;
– розробити діагностичну програму звернення до портів вводу-виводу МК AVR для керування зовнішніми пристроями;
– розробити діагностичну програму додавання та віднімання двійкових та двійково-десяткових чисел для МК AVR з метою перевірки їх виконання;
– здійснити компіляцію, налаштування та завантаження діагностичних програм в пам'ять МК AVR.
РОЗДІЛ 1
РОЗРОБКА ДІАГНОСТИЧНОЇ ПРОГРАМИ ЗВЕРНЕННЯ ДО ПОРТІВ ВВОДУ-ВИВОДУ МК AVR
1.1 ТЕОРЕТИЧНІ ВІДОМОСТІ ПРО ПРОГРАМНЕ СЕРЕДОВИЩЕ НАЛАШТУВАННЯ AVR STUDIO 4
Для програмування МК сімейства AVR існує багато засобів розробки, проте, найбільш популярним, поза сумнівом, є програмний пакет AVR Studio 4. Є ряд причин такої популярності - це безкоштовний програмний пакет, розроблений фірмою ATMEL, який об'єднує в собі текстовий редактор та програмний емулятор МК різних типів. Пакет AVR Studio 4 використовується також спільно з апаратними засобами налаштування фірми ATMEL.
З сайту компанії ATMEL програма AVR Studio 4 доступна для скачування за адресою: http://www.atmel.com.
Розмір програми - 122 Мбайта. Середовище налаштування є програмним продуктом, що поширюється безкоштовно. На сайті компанії доступні оновлення програми, що викликані появою нових МК, а також поліпшенням її роботи. Установка програми проходить в стандартному для таких додатків режимі. Шлях установки програми: C:\Program Files\Atmel\AVR Tools.
AVR Studio надає користувачу можливість повністю контролювати виконання програм з використанням симулятора, який підтримує всі типи МК AVR. Середовище налаштування підтримує виконання програм у вигляді асемблерного тексту формату AVR Assembler, IAR Systems' Assembler та у форматі мови програмування C компілятора фірми IAR Systems' ICCA90 C Compiler.
З AVR Studio також сумісні всі програматори та засоби налаштування, що підтримують мікроконтролери фірми Atmel.
При першому запуску програмного середовища AVR Studio 4 необхідно налаштувати вікна для керуванням та виводом необхідної інформації. Під час наступної загрузки налаштування автоматично відновлюються. При старті AVR Studio 4 з'являється діалогове вікно запрошення до створення нового або відкриття існуючого проекту. Майстер налаштування пропонує створити новий проект (New Project) або відкрити існуючий (Open) (рис. 1.1).
Рис. 1.1 - Діалогове вікно Майстра налаштування проекту
Після вибору нового проекту (кнопка New Project) з'являється наступне діалогове вікно вибору мови програмування, імені проекту і місця розташування проекту на диску (рис. 1.2).
У цьому діалоговому вікні необхідно визначити мову програмування для AVR Studio. При розробці програм для AVR використовуються дві основні мови: C++ та Асемблер.
Вибір мови програмування залежить від вимог, що пред'являються до самої програми. Якщо потрібна максимальна швидкодія, компактність коду і його надійність, та «ручне» гнучке управління різними елементами МК, то це, звичайно, Асемблер. Якщо ж потрібна простота та комфортність в написанні, а також наочність програмного коду, то це C++, проте в цьому випадку буде деякий програш в продуктивності. Синтаксис Асемблера дуже простий, всі його команди базуються тільки на архітектурі самого МК, тобто, при програмуванні все зводиться до системи команд.
програмний діагностика мікроконтролер пам'ять
Рис. 1.2 - Діалогове вікно вибору мови програмування, імені проекту та місця розташування проекту на диску
Для програм на Асемблері в діалоговому вікні вибору мови програмування необхідно вказати Atmel AVR Assembler, для програм на мові С++ - AVR GCC.
Лабораторний практикум передбачає написання програм на Асемблері. Після вибору мови програмування Atmel AVR Assembler активізуються раніше затінені опції імені проекту (Project name) та імені Асемблерного файлу з розширенням *.asm ((Initial file). При введенні імені проекту автоматично створюється асемблерний файл з таким же ім'ям, яке за бажанням користувача можна змінити. Після проведених призначень активується кнопка Next (рис. 1.3).
За бажанням користувача можна змінити директорію*, в якій зберігатимуться усі результати роботи з проектом. Ім'я директорії для збереження проекту необхідно задавати англійськими буквами, для запобігання проблем при компіляції (рядок Location, рис. 1.4).
Рис. 1.3 - Діалогове вікно з вибраними необхідними атрибутами
Рис. 1.4 - Зміна розташування проекту на диску
Необхідні підготовчі роботи для створення проекту виконані. Далі необхідно натиснути кнопку Next, щоб перейти до наступного діалогового вікна вибору платформи наладження та МК (рис. 1.5).
У наступному діалоговому вікні (рис. 1.6) необхідно визначити вид (платформу) налаштування для МК. Оскільки підключені зовнішні пристрої відсутні, то будемо здійснювати програмне моделювання МК.
У вікні вибору платформи (рис. 1.6) (Debug platform) необхідно вибрати опцію AVR Simulator (AVR моделювання). У вікні пристроїв (Device) представлений широкий вибір МК виробництва фірми Atmel.
Рис. 1.5 - Діалогове вікно вибору платформи налаштування та МК
Для проведення дипломної роботи необхідно обрати мікроконтролер AT90S2313.
Після вибору режиму програмного моделювання та типу МК необхідно натиснути кнопку Finish (рис. 1.6).
Рис. 1.6 - Діалогове вікно з обраною платформою моделювання та МК
Всі необхідні процедури для створення проекту закінчені. Після натиснення кнопки Finish переходимо в основну програму, в якій з'являється вікно проекту (рис. 1.7).
Рис. 1.7 - Вікно проекту в основній програмі
1.2 Розробка діагностичної програми звернення до портів вводу-виводу для керування зовнішніми пристроями
Програма для AVR Studio 4, що розроблена на Асемблері, складається з послідовності різних інструкцій, які вводяться у вікно проекту.
Діагностична програму «запалює» світлодіоди, що підключені до виводів 1, 3 і 7 порту D МК, тобто видає в порт D код 0b01000101.
Для реалізації програми необхідно звернутися до опису МК AT90S2313, а також ознайомитися з системою команд МК AVR.
Приклад діагностичної програми для МК AT90S2313:
.include "2313 def.inc" //Підключаємо заголовний файл
loop:
ldi r16, 0b01000101
out DDRD, r16
out PORTD, r16
rjmp loop
Розглянемо детально наведену програму (рис. 1.8).
Рис. 1.8 - Робоче вікно з текстом програми
На самому початку коду програми необхідно підключити спеціальний файл, де описана конфігурація МК - "2313def.inc". За наявності цього файлу компілятор асоціює наш код саме з цією моделлю МК, відстежуючи правильність його написання. Далі йде текст самої програми.
loop: - це мітка. Це не команда і вона не переводиться в машинний код, вона просто вказує на позицію команди, тобто її розташування в пам'яті програм. Слід звернути увагу на самий нижній рядок: інструкція rjmp loop - це інструкція непрямого переходу до покажчика loop. При компіляції програми компілятор замість слова loop підставляє число, яке дорівнює адресі інструкції, де стоїть коштує мітка loop.
Числа в мікроконтролері можна представляти в двійковій, вісімковій, десятковій та шістнадцятирічній формах. Наприклад, десяткове число 255 можна записати так: у двійковій - 0b11111111; у вісімковій - $377 та в шістнадцятирічній - 0xff. Найбільш поширена - двійкова система числення.
Для більшості AVR МК існують три види переходів: безумовний, непрямий та відносний.
Безумовний - це перехід безпосередньо до вказаного місця пам'яті програм. За безумовний перехід відповідає інструкція jmp. В якості параметра у неї повинне стояти значення адреси, куди слід зробити перехід.
Непрямий - це перехід по покажчику Z. При розподілі регістрів загального призначення в адресному просторі (див. опис AT90S2313), видно що останні 6 регістрів ще використовуються в якості покажчиків X, Y і Z, причому кожен покажчик має розрядність 16 біт, тобто складається з двох регістрів - старшого і молодшого. Якщо виконати інструкцію IJMP, то відбудеться перехід на те місце в пам'яті програм, адреса якого прописана в регістрі Z.
Відносний - це перехід, який здійснюється до адреси рівного сумі значення лічильника програм і значення константи, яка у свою чергу є операндом інструкції rjmp.
Перейдемо до розгляду інструкцій, що залишилися.
Інструкція ldi - ця інструкція призначена для завантаження константи в регістр. У неї є два операнди. Перший - це сам регістр загального призначення, а другий - константа, яку треба в нього записати.
Наступна інструкція out - це інструкція запису значення з регістра загального призначення (РОН) в регістр спеціального призначення (РСН). У цієї інструкції є два операнди: перший - регістр спеціального призначення, другий - регістр загального призначення.
Кожна команда представлена в пам'яті МК, як набір певних біт. Більшість інструкцій AVR займають в пам'яті два байти (16 біт), тобто одне слово, проте є інструкції, які займають два слова (32 біта).
Розглянемо перші дві інструкції та їх вигляд в пам'яті МК (таблиця 1.1).
Таблиця 1.1 - 16-розрядний код операції в пам'яті МК
Адреса |
Команда |
16- розрядний код операціїх |
|
0х0000 |
ldi r16,0b01000101 |
1110 0100 0000 0101 |
|
0х0001 |
out DDRD,r16 |
1011 1011 0000 0001 |
Перший стовпець - це адреса слова в пам'яті програм. Перша інструкція ldi буде розташована за адресою 0x0000, тобто на самому початку області пам'яті і мати відповідний код операції. Отже, для інструкції ldi код операції складатиметься з чотирьох тетрад (третій стовпець таблиці 1.1). Перша тетрада - це безпосередньо код інструкції, тобто її ідентифікатор (двійкове ім'я). Друга тетрада - значення константи, яку завантажуємо в регістр. Третя тетрада, що є "адресою" регістра, відповідає положенню регістрів від R16 до R31. Як видно з таблиці 1.1, вона дорівнює нулю, відповідно регістр буде R16. Якби вона була рівна 1 - то регістр був би R17 і так далі.
Чотирьох розрядів вистачає, щоб адресувати тільки 16 регістрів.
Для другої інструкції (out DDRD,r16): перша тетрада - двійкове ім'я інструкції, друга - адреса регістру вводу/виводу, третя - адреса регістра загального призначення.
1.3 Компіляція розробленої програми
Тепер написану програму необхідно скомпілювати. Для цього у верхньому меню вікна програми необхідно вибрати опцію Build ->Build або натиснути клавішу F7 на клавіатурі (рис. 1.9).
Рис. 1.9 - Команда на початок компіляції програми
Після завершення програми компіляції внизу вікна програми з'явиться звіт про результат компіляції. Якщо помилок не виявлено, то в цьому вікні можна ознайомитися із статистикою роботи компілятора (рис. 1.10).
Рис. 1.10 - Звіт про роботу компілятора
1.4 Налаштування програми
Якщо процес компіляції пройшов без помилок, то можна приступити до налаштування програми. Для цього у файловій панелі необхідно вибрати пункт меню Debug ->Start Debugging (рис. 1.11).
Рис. 1.11 - Запуск програми налаштування МК
Після виконання команди Start Debugging (рис. 1.11) запускається вікно налаштування. Налаштування програми здійснюється, за допомогою послідовного виконання інструкцій і перегляду результатів цього виконання. На початку виконання програми емулятор встановить покажчик не першу команду програми (рис. 1.12).
Рис. 1.12 - Виконання першої команди програми
У засобів налаштування AVR Studio 4 є зручне вікно перегляду поточного стану периферійних пристроїв та інших компонентів, а також регістрів спеціального призначення, що відповідають за їх налаштування. У правій частині екрану у колонці I/O View можна спостерігати стан порту D, в який буде видаватись код 0b01000101.
На початку програми всі регістри порту D установлені в 0 (рис. 1.13).
Рис. 1.13 - Вікно панелі I/O View та стан порту D
Для подальшого виконання програми необхідно обрати пункт Debug ->Step Intor або натиснути клавішу F11 на клавіатурі (рис. 1.14).
Рис. 1.14 - Виконання програми в покроковому режимі
При натисненні клавіші F11 на клавіатурі покажчик переходить до виконання наступної команд і т. д. (рис. 1.15).
Рис. 1.15 - Переміщення покажчика виконання програми
Код з регістру r16 видається в регістр управління даними порту. Установку відповідних бітів в 1 регістра управління даних порту (DDRD) можна спостерігати у вікні I/O View (рис. 1.16).
Рис. 1.16 - Зміна бітів регістра DDRD
При виконанні останньої команди програми, код з регістру DDRD видається на виводи МК (рис. 1.17).
Рис. 1.17 - Видача коду на виводи МК
Виконання програми завершено.
При зміні коду, що видається в порт D, програму необхідно повторно компілювати, а потім запустити на виконання, виконавши наведені вище операції.
1.5 Основні засоби налаштування AVR Studio 4
У пункті меню Debug. є наступні підпункти:
- Stop Debuggind - зупинка налаштування;
- Run - запуск швидкого автоматичного налаштування. Емулятор переходить до режиму автоматичного виконання коду, не інформуючи при цьому про те, на якій команді він знаходиться в даний момент. Це може знадобитися, коли необхідно за допомогою налаштування швидко виконати великий фрагмент коду і зупинитися у потрібному місці. При цьому місце зупинки автоматичного налаштування має бути вказане точкою зупинки (Breakpoint);
- Break - використовується для зупинки режимів автоматичного налаштування;
- Reset - для перезапуску програми емуляції;
- Step Into - використовується для режиму ручної покрокового налаштування, з урахуванням переходу у підпрограму, якщо зустрічається інструкція виклику підпрограми;
- Step Over - працює так само як і Step Into за винятком того, що при переході на інструкцію виклику підпрограми переходить в режим швидкого автоматичного налаштування коду підпрограми і зупиняється на наступній інструкції після виконання підпрограми;
- Step Out - використовується для запуску швидкого автоматичного налаштування, якщо поточна позиція команди знаходиться у програмі, що викликається. Це може знадобитися тоді, коли необхідно перейти в код підпрограми, що викликається, щоб не налаштовувати її повністю в ручному режимі, а зупинитися на потрібному місці, а потім запустити швидке автоматичне налаштування в межах коду підпрограми;
- Run to Cursor - використовується для запуску швидкого автоматичного налаштування від поточного положення до місця, де встановлено курсор;
- Auto Step - використовується для запуску режиму повільного автоматичного налаштування. При цьому емулятор інформує про поточний стан параметрів усіх елементів МК.
Наведено фрагмент використання точки зупинки в процесі налаштування програми (рис. 1.18).
Рис. 1.18 - Установка точки зупинки в процесі налаштування програми
Основні елементи вікна Processor (рис. 1.19):
- Program Counter - показує поточний стан лічильника програм, тобто адреса поточної інструкції в пам'яті програм;
- Stack Pointer - покажчик стека, показує поточне значення адреси точки повернення в пам'яті даних, де і реалізований стек;
- X pointer - поточне значення покажчика X (R26: R27). Y pointer - Поточне значення покажчика Y (R28: R29). Z pointer - Поточне значення покажчика Z (R30: R31);
- Cycle Counter - показує кількість машинних циклів в режимі налагодження.
- Frequency - показує умовну частоту резонатора;
- Stop Watch - показує поточний час по ходу виконання програми;
- SREG - показує поточний стан регістрів SREG R00...R31 - список регістрів загального призначення.
Рис. 1.19 - Елементи вікна Processor
РОЗДІЛ 2
РОЗРОБКА ДІАГНОСТИЧНОЇ ПРОГРАМИ ДОДАВАННЯ ТА ВІДНІМАННЯ ДВІЙКОВИХ ТА ДВІЙКОВО-ДЕСЯТКОВИХ ЧИСЕЛ ДЛЯ МК AVR
Розглянемо спосіб представлення числових даних в МК, алгоритмів арифметичних операцій для розроблення діагностичної програми додавання та віднімання двійкових та двійково-десяткових чисел для МК AVR та набуття навиків програмування арифметичних процедур.
2.1 ТЕОРЕТИЧНІ ВІДОМОСТІ ПРО ПРЕДСТАВЛЕННЯ ЧИСЕЛ В МК
При обробці числової інформації зазвичай вважають, що цілі числа представлені в форматі з фіксованою крапкою справа, D=dn-1dn-2…d1d0, дробові числа менше 1 - в форматі з крапкою зліва - D=d-1d-2…d(n-1)d-n , де n - число розрядів, рівне 8 або 16. Числа можуть бути із знаком і без знаку.
При представленні у вигляді цілих чисел d0 - молодший розряд числа з вагою 20, старший розряд використовується для представлення знаку (0 - додатній, 1 - від'ємний). Старший цифровий розряд - dn-2 з вагою 2n-2. При обробці чисел без знаку розряд dn-1 є цифровим з вагою 2n-1.
Дріб без знаку має старший цифровий розряд d-1 з вагою 2-1. Для дробових чисел із знаком розряд d-1 відводиться під знак, старший цифровий розряд в цьому випадку - d-2 з вагою 2-1.
Від'ємні числа, як цілі так і дробові, зазвичай, представляються у вигляді доповнень до основи системи числення. Для двійкових чисел це буде доповнення до 2n, для дробових - доповнення до 2.
В загальному випадку доповнення любого цілого n-розрядного числа D до основи b системи числення можна отримати шляхом віднімання D з bn. Якщо D знаходиться в межах від 1 до bn - 1, то при відніманні отримуємо друге число в тих же межах. Якщо D = 0, то результат віднімання дорівнює bn і має вигляд 100…0 при загальному числу розрядів (n+1). Відкинувши цифру старшого розряду, отримуємо 0. Отже, в системі представлення чисел доповненням до основи числення існує тільки одне представлення 0. В системі, де від'ємні числа представлені в додатковому коді, число є додатнім, якщо значення старшого розряду dn-1 = 0, і від'ємним, якщо dn-1 = 1. Десятковий еквівалент двійкового числа, що представлений додатковим кодом, обчислюється так же, як і для числа без знаку, за винятком того, що вага старшого розряду дорівнює - 2(n-1) , а не + 2(n-1). Числа, що представляються, знаходяться в діапазоні від - 2(n-1) до + 2(n-1)-1. Для дробових чисел дріб є додатним, якщо розряд d-1 = 0, і від'ємним, якщо d-1 = 1. Діапазон дробових чисел складає від - 1 до + (1- 2-n).
2.2 ДОДАВАННЯ ТА ВІДНІМАННЯ ЧИСЕЛ У ДОДАТКОВОМУ КОДІ
Графічно 8-розрядні двійкові числа у додатковому коді зі знаком наведені на рисунку 2.1 та позначені позиціями всередині кола.
Всередині кола вказані десяткові значення, зовні - їх шістнадцятирічні еквіваленти. Додавання з додатнім числом N легко інтерпретується, якщо переміщати покажчик по ходу часової стрілки на N позицій; віднімання (- N) - проти ходу часової стрілки, або переміщуючи по ходу часової стрілки на (256 - N) позицій, що рівносильне заміні віднімання додаванням з доповненням числа до 28 = 256.
Якщо при додаванні (відніманні) отримуємо результат, що виходить за межі діапазону чисел (від - 128 до + 127), то фіксується переповнення.
Правило виявлення переповнення. При додаванні переповнення виникає тільки в тому випадку, коли доданки мають однакові знаки, а знак суми відрізняється від знаку доданків. При відніманні переповнення виникає, якщо операнди мають різні знаки, а знак різниці відрізняється від знаку зменшуваного. Правило переповнення можна сформулювати по-іншому, якщо використати поняття переносу, що виникає при додаванні (відніманні). Переповнення виникає, якщо значення переносу в знаковий розряд р7 та із знакового розряду р8 різні. З аналізу рисунку 2.1 слідує, що переповнення виникає при додаванні, якщо покажчик перейде границю між позиціями + 127 і - 128.
Рис. 2.1 - Кругові діаграми
Числа в додатковому коді додаються та віднімаються так само, як і числа без знаку тієї ж довжини. Тому при додаванні (відніманні) чисел із знаком і без знаку необхідна одна й таж сама команда додавання (віднімання). Різниця полягає лише в тому, що результати інтерпретуються по-різному в залежності від того, якими числам оперує користувач: числами із знаком (від - 128 до + 127) чи без знаку (від 0 до 255).
Якщо при додаванні чисел без знаку результат виходить за межі діапазону представлення при перетині границі між 255 та 0, то говорять про виникнення переносу із старшого розряду.
Якщо при відніманні чисел без знаку результат виходить за межі діапазону представлення при перетині границі між 255 та 0, то в цьому випадку виникає запозичення, а різницю отримуємо у додатковому коді. Так як віднімання N можна замінити додаванням з додатковим кодом числа N, що дорівнює (256 - N), то із діаграми видно, що запозичення виникає без переносу із старшого розряду. Такий самий висновок можна зробити при виконанні операцій в машинному коді. Дійсно, віднімаючи від шістнадцятирічного числа $05 число $07, отримуємо $05 - $07 = $05 + $F9 =$FE = -2. В цьому випадку перенос не виникає. Запозичення, що визначається при відсутності переносу при операції віднімання, є. І навпаки, віднімаючи від числа $07 число $05 отримуємо $07 - $05 = $07 + $FB = $102 = $100 (перенос) +$02 = 2. Перенос є, що при відніманні відповідає відсутності запозичення.
Наведене вище правило треба враховувати при обробці операндів подвійної довжини, наприклад 16-розрядних операндів у 8-розрядному процесорі.
2.3 ДОДАВАННЯ ТА ВІДНІМАННЯ ДВІЙКОВО-ДЕСЯТКОВИХ ЧИСЕЛ
При додаванні двох двійково-десяткових чисел A = an-1an-2 …a0a1 і
B = bn-1bn-2 …b0b1 поступають наступним чином. Якщо обидва операнди мають однакові знаки, то виконують додавання модулів цих чисел (|А| + |В|), а знаковий розряд суми визначається по знаку одного із доданків. Якщо операнди мають різні знаки, то попередньо знак суми встановлюється по знаку першого операнду. Потім проводять віднімання модулів чисел. Якщо отримана різниця більшу нуля, знак суми зберігається без зміни. Якщо різниця менше нуля, то необхідно знайти додатковий код різниці та змінити знак суми на протилежний.
При додаванні двох чисел А та В, що представлені в двійково-десятковому коді, з вагою 8 - 4 - 2 - 1 в кожній тетраді, в одному розряді суми S = A + B можна отримати наступні результати:
1. si ? 9; корекція не потрібна.
2. 10 ? si ? 15; потрібна корекція шляхом збільшення si на шість з утворенням переносу із тетради.
3. si > 15; потрібна корекція шляхом збільшення на шість. В цьому випадку перенос із тетради утворюється автоматично при додаванні операнду до виконання корекції.
В МК з архітектурою MCS-51 корекція здійснюється апаратно при виконанні команди двійково-десяткової корекції. При відсутності схеми двійково-десяткової корекції, як, наприклад, в МК AVR, поступають наступним чином. При додаванні двійково-десяткових чисел добавляють число, кожен розряд якого дорівнює шести. В цьому випадку, якщо порозрядна сума, що обчислюється si ? 9, перенос із тетради не виникає і надлишкове значення шість підлягає видаленню. У всіх решта випадках додавання в розряд значення шість видаляється автоматично з переносом із тетради в процесі додавання. При такому способі додавання програмна реалізація спрощується, так як для корекції результату в тетраді перевіряється лише одна ознака - наявність або відсутність переносу із тетради.
Алгоритм у цьому випадку виглядає наступним чином:
1. Двійково-десятковий код першого операнду додається з кодом 66…66, утворюючи першу проміжну суму.
2. До отриманої суми додається двійково-десятковий код другого операнду, утворюючи другу проміжну суму.
3. По тетрадам виконується корекція результату. Правило корекції формулюється наступним чином: якщо в результаті другого додавання перенос із i-ої тетради відсутній (ci+1 = 0), то із s*i віднімається шість (або додається 10 = [-6]дод.). При утворенні переносу із i-ої тетради корекція не виконується, а отриманий результат s*i є кінцевим. При виконанні корекції перенос із тетради не повинен змінювати значення наступної тетради суми s*i+1 .
Таким чином, додавання беззнакових чисел (як і модулів) можна виконати по алгоритму, схему якого наведено на рисунку 2.2.
Рис. 2.2 - Алгоритм додавання двійково-десяткових чисел
При обробці операторів, що мають довжину більшу одного байту, у 8-розрядному мікроконтролері для запобігання помилок корекцію необхідно виконувати окремо для кожної тетради.
Приклад. А = 50, В = 25. Знайти суму А + В.
Двійково-десяткове значення чисел А та В: А = 0101 0000, В = 0010 0101.
Додаючи числа 66 + А + В, отримуємо:
Виконуємо корекцію молодшої тетради:
Віднімання беззнакових чисел А - В можна виконати по алгоритму, схема якого наведена на рисунку 2.3.
Алгоритм у цьому випадку виглядає наступним чином:
1. Виконують віднімання А - В (додавання А з додатковим кодом В), утворюючи перший проміжний результат R'. Якщо в результаті операції утворюється перенос із старшої тетради (при цьому біт запозичення дорівнює 0) результат є додатним. При відсутності переносу (біт запозичення дорівнює 1) результат є від'ємним і його потрібно перевести у додатковий код R*.
2. Корекція додатного результату здійснюється по правилу, що сформульоване для додавання двійково-десяткових чисел. Корекція від'ємного результату трохи відрізняється від попереднього правила при додаванні і виконується наступним чином: якщо виник перенос із i-ої тетради (біт міжтетрадного запозичення дорівнює 0) при відніманні А - В, то із i-ої тетради R*i віднімається шість. При виконанні корекції перенос із тетради не повинен змінювати значення наступної тетради проміжного результату.
Рис. 2.3 - Алгоритм віднімання двійково-десяткових чисел
Приклад. А = 23, В = 62. Знайти різницю А - В.
Двійково-десяткове значення числа А і В: А = 0010 0011, В = 0110 0010.
Додатковий код числа В: [В]дод. = 1001 1110.
Віднімаючи А - В = А + [В]дод., отримуємо R':
Переносу немає: результат операції від'ємний, біт запозичення дорівнює 1.
Формуємо доповнення [R']дод. та виконуємо корекцію:
Результат: біт знаку - ; різниця 39.
Коли від'ємний результат необхідно зберегти у додатковому коді, крок формування доповнення опускається. Можна одразу переходити до корекції (відніманню шести в тих тетрадах, де не було переносу).
2.4 ПРОГРАМУВАННЯ АРИФМЕТИЧНИХ ОПЕРАЦІЙ
Для двійкового додавання та віднімання числа можна задавати із знаком і без знаку. Двійково-десяткові числа представлені в упакованому вигляді без знаку.
Для програмування оберемо мікроконтролер фірми Atmel AT90S8515.
Приклад тестової програми для перевірки операцій додавання та віднімання двійково-десяткових однобайтних чисел в середовищі AVR Studio 4 наведено у додатку А.
На рисунках 2.4 та 2.5 наведені фрагменти виконання програми в AVR Studio 4.
Размещено на http://www.allbest.ru/
Рис. 2.4 - Завантаження регістрів R30, R31
Рис. 2.5 - Установка бітів переносу та міжтетрадного переносу у регістрі статусу МК AT90S8515
РОЗДІЛ 3
ЗАВАНТАЖЕННЯ ДІАГНОСТИЧНИХ ПРОГРАМ В ПАМ'ЯТЬ МК AVR
Кінцевим етапом даної роботи є розгляд організації флеш-пам'яті та внутрішніх регістрів МК AVR, що відповідають за програмування пам'яті EEPROM, завантаження діагностичних програм в пам'ять МК AVR та набуття навиків програмування пам'яті EEPROM МК AVR.
3.1 ПАМ'ЯТЬ КОМАНД МК (ТЕХНОЛОГІЯ FLASH-EEPROM)
Відмінною особливістю МК сімейства AVR є те, що в них як пам'ять програм використовується одна і та ж пам'ять типу FLASH-EEPROM, яка може бути різного об'єму, вільно програмуватись користувачем і знову витиратися електричним способом.
Такі перші представники однокристальних МК як 8048 і 8051 компанії Intel можна було придбати або з пам'яттю типа MROM (програмно-маскована ROM), або з вбудованою пам'яттю EPROM. Вони могли працювати також і із зовнішньою пам'яттю EPROM. Моделі з пам'яттю типа MROM мали один недолік: їх міг програмувати лише завод, що виготовляв такі моделі в рамках виробничого процесу, а витерти дані було неможливо.
МК з пам'яттю EPROM мали в корпусі віконце з кварцевим склом для витирання інформації, проте їх негативною стороною була висока ціна.
МК сімейства AVR з вбудованою флеш-пам'яттю EPROM економлять не лише місце на платі електронного пристрою, але також представляють в розпорядження користувача всі контакти вводу/виводу МК. Також може відпасти необхідність і в колодці для зовнішньої пам'яті EPROM.
Поряд з можливістю програмування всіх МК сімейства AVR в паралельному режимі, компанія Atmel надає в розпорядження користувачів дуже ефектну можливість послідовного програмування через послідовний інтерфейс SPI. В результаті програма користувача може бути «записана» у флеш-пам'ять і знову витерта безпосередньо у складі схеми, в якій працюватиме мікроконтролер. Схема програмування вже інтегрована в кристал.
Допоміжна напруга Vpp = +12B необхідна лише при програмуванні в паралельному режимі. Так або інакше, ця напруга використовується в більшості електричних схем (наприклад, для послідовного інтерфейсу).
3.2 ФІЗИЧНА ОРГАНІЗАЦІЯ ФЛЕШ-ПАМ'ЯТІ БАЗОВОЇ СЕРІЇ МК СІМЕЙСТВА AVR
Пам'ять команд в МК базової серії сімейства AVR є флеш-пам'яттю EPROM і у всіх чотирьох моделях складається з n 16-розрядних (2 байти) слів.
У мікроконтролері АТ90S8515 - лічильник команд має ширину 12 розрядів і таким чином може обробляти n = 4096 ($1000) - 4Кбайт командних 16-розрядних слів. У мікроконтролері АТ90S4414 він має ширину 11 розрядів, що відповідає n = 2048($800) командних слів. Мікроконтролер АТ90S2313 містить лічильник команд шириною 10 розрядів (n = 1024 і, відповідно, $400), а мікроконтролер АТ90S1200 зі своїм лічильником команд шириною 9 розрядів може адресувати 512 ($200) команд.
Розподіл пам'яті команд в чотирьох основних типах МК AVR наведено на рисунку 3.1.
Рис. 3.1 - Розмір та організація пам'яті по технології флеш-пам'яті EPROM
3.3 ДОСТУП ЦЕНТРАЛЬНОГО ПРОЦЕСОРА ДО ПАМ'ЯТІ EEPROM НА ЗАПИС/ЧИТАННЯ
Для програмування пам'яті EEPROM МК AVR немає необхідності застосовувати зовнішній програматор. Кожна комірка пам'яті EEPROM може бути запрограмована безпосередньо під час виконання програми користувача.
Якщо під час звернення до пам'яті EEPROM з метою запису відбувається системне скидання, то результат буде невизначений, оскільки регістр адреси EEAR буде встановлено в лог.0. З цієї причини можуть міститися помилкові дані за адресою, що підлягає програмуванню, або в байті з адресою 0 в пам'яті EEPROM.
Для програмування використовуються три регістри пам'яті EEPROM: регістр адреси EEAR, регістр даних EEDR і регістр керування EECR. У всіх трьох випадках йдеться про 8-розрядні регістри, за винятком регістра EEAR МК AT90S8515, оскільки у цього МК в розпорядженні є 512 байт пам'яті EEPROM, і, таким чином, для адресації необхідно 9 розрядів. В мікроконтролері AT90S8515 регістр EEAR 16-розрядний і роздільний на дві частини: EEARH (старший байт) і EEARL (молодший байт).
Розглянемо регістри EEAR, EEDR і EECR, що використовуються при зверненні до пам'яті EEPROM.
3.4 РЕГІСТР АДРЕСИ EEAR ПАМ'ЯТІ EEPROM
Регістр адреси EEAR пам'яті EEPROM має довжину один байт (мікроконтролери AT90S1200, AT90S2313, AT90S4414) або два байти - мікроконтролер AT90S8515. Він розташований в області вводу/виводу за адресою $1E(RAM:$3E) а, в разі МК AT90S8515 займає два байти з адресами $1E(RAM:$3E- молодший байт) і $1F(RAM:$3F- старший байт) (рис. 3.2).
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
- |
- |
- |
- |
- |
- |
- |
EEAR8 |
EEAR8 |
EEAR8 |
EEAR8 |
EEAR8 |
EEAR8 |
EEAR8 |
EEAR0 |
EEAR0 |
Рис. 3.2 - Структура регістра адреси EEAR
Ці байти доступні для читання та запису. Після подачі сигналу скидання біти регістру EEAR установлюються в 0. Для програмування або читання байта даних пам'яті EEPROM в регістр адреси EEAR має бути записана відповідна адреса.
3.5 РЕГІСТР ДАНИХ EEDR ПАМ'ЯТІ EEPROM
Регістр даних EEDR пам'яті EEPROM знаходиться в області вводу/виводу за адресою $1D (RAM:$3D). Після подачі сигналу скидання біти регістру EEAR обнуляються. Байт EEDR доступний для читання і запису (рис. 3.3).
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
MSB |
MSL |
Рис. 3.3 - Структура регістра даних EEDR
В процесі запису в пам'ять EEPROM байт, що підлягає програмуванню, завантажується в регістр EEDR. В процесі читання з пам'яті EEPROM в регістр EEDR записується вміст відповідного рядка пам'яті EEPROM. Адреса в пам'яті EEPROM в обох випадках визначається по вмісту регістра EEAR.
3.6 РЕГІСТР КЕРУВАННЯ EECR ПАМ'ЯТІ EEPROM
Регістр керування EECR пам'яті EEPROM знаходиться в області вводу/виводу за адресою $1C (RAM: $3C) (рис. 3.4).
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
- |
- |
- |
- |
- |
EEMWE |
EEWE |
EERE |
Рис. 3.4 - Структура регістра керування EECR
У МК сімейства AVR використовуються лише розряди 0…1 (AT90S1200) або ж розряди 0…2 регістра EECR (доступні для читання і запису). Останні розряди компанія Atmel зарезервувала для подальших застосувань і вони доступні лише для читання (завжди містять лог. 0).
3.7 ЧИТАННЯ ПАМ'ЯТІ EEPROM ВСІХ ТИПІВ МК AVR
Для керування процесом читання використовується розряд EERE (EEPROM Read Enable - пам'ять EEPROM готова до читання). Після запису коректної адреси в регістр EEAR процес читання може бути активізований установкою розряду EERE в регістрі керування EECR.
У МК AT90S1200, особливо у варіантах для високих тактових частот розряд EERE необхідно встановлювати підряд двічі, щоб надати апаратній частині досить часу для читання елементів пам'яті EEPROM. Це показано на прикладі розглянутої нижче програми.
Після закінчення читання розряду EERE апаратне забезпечення прочитує необхідний байт в регістр EEDR, після чого вже немає необхідності знов опитувати розряд EERE, оскільки читання триває лише один цикл такту системної синхронізації. Після того, як розряд EERE встановлений в лог.1, центральний процесор буде затримано на два такти системної синхронізації перш ніж буде виконана наступна команда (це не відображується при тестуванні в AVR Studio аж до версії 1.5).
Перед початком операції читання програма користувача повинна постійно опитувати розряд EEWE і чекати появи лог. 0. Якщо під час програмування пам'яті EEPROM у відповідний регістр вводу/виводу пам'яті EEPROM буде записана нова адреса або дані, то процес програмування, що ще продовжується, буде перерваний і результат буде невизначеним.
3.8 ЗАПИС В ПАМ'ЯТЬ EEPROM В МК АТ90S2313, AT90S4414 І АТ90S8515
Розряд EEWE (EEPROM Write Enable - пам'ять EEPROM готова до запису) - це розряд керування процесом запису. Для запису байта в пам'ять EEPROM розряд EEWE необхідно встановити в лог. 1, якщо в регістрі EEАR знаходитися адреса пам'яті EEPROM, а в регістрі EEDR - байт даних, що підлягає програмуванню. Для запобігання невизначеності запису в пам'ять EEPROM розряд EEWE може бути встановлений лише в тому разі, якщо встановлений також і розряд EEMWE.
Для програмування пам'яті EEPROM мають бути виконані наступні дії:
1. Діждатися закінчення процесу програмування пам'яті EEPROM( якщо він активний), тобто доки розряд EEWE не повернувся в стан лог. 0.
2. Записати нову адресу в регістр EEAR пам'яті EEPROM (1 байт або 2 байти в разі використання МК АТ90С8515).
3. Записати необхідний байт даних в регістр EEDR пам'яті EEPROM.
4. Встановити розряд EEMWE в лог. 1.
5. Впродовж наступних чотирьох періодів такту системи після установки розряду EEMWE в розряд EEWE має бути записана лог. 1, тим самим буде запущений процес програмування.
По закінченню циклу програмування (типова тривалість - 2,5 мс при робочій напрузі Vсс = 5 В і, відповідно, 4 мс при напрузі Vсс = 2,7 В), розряд EEWE за допомогою внутрішніх апаратних засобів МК автоматично встановлюється в лог. 0. Програма користувача повинна безперервно опитувати цей розряд, чекаючи появу лог. 0, перш ніж приступити до програмування наступного байту.
Після установки розряду EEWE в лог. 1 центральний процесор буде затримано на два такти системою синхронізації, після чого він може виконувати наступну команду (це не буде показано в результаті тестування в AVR Studio аж до версії 1.50; також не повністю врахована і тривалість процесу програмування).
При записі одного байту в пам'ять EPROM розряд EEMWE також має бути встановлений в лог. 1 (EEPROM Master Write Enable - загальний дозвіл запису в пам'ять EEPROM). Після того, як розряд EEMWE встановлений, рівень лог. 1 зберігається в ньому протягом чотирьох періодів такту системної синхронізації, а потім буде виконано апаратне скидання в лог. 0.
Програма користувача може програмувати байт за допомогою запису лог. 1 в розряд EEWE лише впродовж цих чотирьох тактів системної синхронізації. Якщо буде встановлений розряд EEWE, але без установки розряду EEMWE, то процес програмування розпочатий не буде.
Приклад програми, яка показує процес програмування і читання пам'яті EEPROM МК AT90S8515 наведений у додатку Б.
В такому вигляді програма буде читати з виводів порту С код $FF, оскільки вони находяться в третьому стані. Тому попередньо на виводах порту С треба встановити довільний код в межах $00…$FF (рис. 3.5).
На рисунках 3.5-3.9 наведені фрагменти виконання програми програмування пам'яті EEPROM.
Рис. 3.5 - Попередня установка коду для запису
Рис. 3.6 - Завантаження коду з виводів порту С та зберігання в регістрі R16
Рис. 3.7 - Програмування комірки $100 пам'яті EEPROM
Рис. 3.8 - Перевірка процедури запису комірки $100 пам'яті EEPROM
Рис. 3.9 - Завершення програми - видача коду в порт А
Підпрограма EEWrite за допомогою циклічного опитування розряду EEWE чекає готовності пам'яті EEPROM до нового програмування. Як тільки розряд EEWE переходить в стан лог. 0, в регістри EEARH, EERAL і EEDR будуть записані відповідно два байти адреси EEPROM і байт даних, що підлягає програмуванню. За допомогою установки розряду EEMWE буде дозволене програмування.
Тепер у програмі користувача є час тривалістю 4 періоди такту системної синхронізації для запуску процесу програмування за допомогою установки розряду EEWE.
У розглянутому вище прикладі це відбувається вже при виконанні наступної команди. Якщо вихід з підпрограми здійснюється по команді ret, то процес програмування продовжується далі.
Підпрограма EERead за допомогою циклічного опитування розряду EEWE чекає закінчення процесу програмування (якщо він в даний момент активний). Як тільки розряд EEWE перейде в стан лог. 0, в регістри EEARH і EEARL будуть записані 2 байти адреси пам'яті EEPROM, що підлягають читанню. Після цього для початку процесу читання буде встановлений розряд EERE.
У зв'язку з тим, що такт системної синхронізації в мікроконтролері AT90S8515 повинен складати максимум 8 МГц, тут немає необхідності встановлювати розряд EERE 2 рази, як це відбувається в мікроконтролері AT90S1200, для того, щоб надати в розпорядження апаратної частини досить часу для читання комірки пам'яті EEPROM. Необхідний байт знаходиться в області вводу/виводу, що відповідає регістру EEDR, і переписується для подальшої обробки в робочий регістр EEDRD.
Основна програма на початку проводить ініціалізацію покажчика стеку та портів А і С, що використовуються для вводу/виводу. Після цього читається байт, що присутній на виводах порту С, та за допомогою підпрограми EEWrite записується за адресою $100 пам'яті EEPROM. Потім підпрограма EERead читає дані в робочий регістр EEdrd пам'яті EEPROM за адресою $100. Цей байт надалі передається в порт A. Подальше виконання програми показане у вигляді циклу.
3.9 ДИРЕКТИВИ АСЕМБЛЕРА ДЛЯ РЕАЛІЗАЦІЇ ДІАГНОСТИЧНИХ ПРОГРАМ
Директиви асемблера, що використовуються при програмуванні МК AVR, не породжують кодів операцій, що виконуються, а лише є вказівками, що управляють роботою асемблера. Вони ініціалізують області пам'яті, визначають константи в пам'яті, встановлюють лічильник команд на певну адресу і так далі.
Директиви, що використовуються для програмування МК AVR, наведені у таблиці 3.1.
Таблиця 3.1 - Директиви асемблера
Директиви |
Опис |
|
1 |
2 |
|
.BYTE |
Відводить для змінної місце в пам'яті |
|
.CSEG |
Сегмент коду |
|
.DB |
Визначає однобайтову(і) константу(и) |
|
.DEF |
Призначає символічне ім'я регістру |
|
.DEVICE |
Повідомляє ассемблеру про тип МК |
|
.DSEG |
Сегмент даних |
|
.DW |
Визначає двохбайтну константу |
|
.ENDMACRO |
Кінець макросу |
|
.EQU |
Співставляє символічне ім'я з деяким виразом |
|
.ESEG |
Сегмент пам'яті EEPROM |
|
.EXIT |
Завершує асемблювання файлу |
|
.ICLUDE |
Вставляє вихідний код з другого файлу |
|
.LIST |
Створює файл лист |
|
.LISTMAC |
Відображає код макросу в лістингу |
|
.MACRO |
Початок макросу |
|
.NOLIST |
Відміняє створення файлу лістингу |
|
.ORG |
Визначає абсолютну адресу |
|
.SET |
Призначає символічне ім'я деякому виразу |
РОЗДІЛ 4
ОХОРОНА ПРАЦІ
4.1 АНАЛІЗ ПОТЕНЦІЙНО НЕБЕЗПЕЧНИХ ШКІДЛИВИХ ВИРОБНИЧИХ ЧИННИКІВ, ЩО ВПЛИВАЮТЬ НА ПЕРСОНАЛ
Переважну більшість часу лаборанта займає робота з комп'ютером. Робота користувача персонального комп'ютера (ПК) - модель розумової роботи, яка виконується в одноманітній позі в умовах обмеження загальної м'язової активності при рухливості кистей рук, при високому напруженні зорових функцій та емоційному напруженні за умов дії різноманітних фізичних факторів.
Відомо, що при роботі з обчислювальною технікою на користувачів діють наступні шкідливі та небезпечні фактори:
- електромагнітні поля;
- статична електрика;
- шум в приміщенні;
- незадовільна освітленість робочого місця;
- неправильна організація робочого місця.
Дія цих небезпечних факторів може привести до певних «професійних» захворювань, найбільш розповсюдженими серед яких є:
- головний біль;
- порушення зорового аналізатора;
- кістково-м'язові порушення;
- порушення пов'язані зі стресовими ситуаціями та нервово-емоційними навантаженнями при роботі;
- захворювання шкіри.
Така людина може постійно перебувати у збудженому стані. Для зменшення, і, по можливості, повного усунення впливу перерахованих вище шкідливих факторів проектом передбачається запровадити ряд заходів відповідно до рекомендацій діючих вимог і норм з охорони праці.
При експлуатації системи персонал може піддаватися дії наступних небезпечних і шкідливих чинників (відповідно до ГОСТ12.2.007.0-75 ):
- підвищене значення напруги в електричному ланцюзі, замикання якого може статися через тіло людини;
- підвищена або знижена температура повітря робочої зони;
- підвищена або знижена вологість повітря;
- підвищена або знижена рухливість повітря;
- підвищений рівень статичної електрики;
- підвищена напруженість електричних і магнітних полів;
- відсутність або недолік природного світла;
- недостатня освітленість робочої зони;
- підвищений рівень шуму на робочому місці: фізичні і нервово-психічні навантаження.
4.2 ЗАХОДИ ЩОДО ТЕХНІКИ БЕЗПЕКИ
На підставі аналізу в підрозділі 4.1 потенційно небезпечних і шкідливих виробничих чинників проектом передбачаються наступні технічні способи і засоби для забезпечення електробезпеки: захисне заземлення, захисне відключення, мала напруга, ізоляція струмоведучих частин, захисні пристрої.
Розрахунок визначення струму однофазного короткого замикання і перевірка умов спрацьовування захисного апарату наводиться далі:
Iк =Uф /((Zn + Zt)/3), (4.1)
де Uф - номінальна фазна напруга мережі;
Zn - повний опір, створений фазними і нульовими дротами, Ом;
Zt - повний опір трансформатора струму короткого замикання на корпус, Ом.
Для дротів або жил кабелю (Zt/3) = 0,1 Щ.
Zn = Rn + Xn, (4.2)
де Rn = Rф +Rо - активний опір фазного і нульового дротів, Щ.
Хn - індуктивний опір петлі дротів або жил кабелю, Щ. Перетин мідного дроту S = 2,5 мм.
Тоді:
R0 = 7,55 Щ км; Rф = 7,55 Ом*км; Хn = 0,11 Щ *км.
Дія плавкої вставки системи захисного відключення забезпечується, якщо виконується співвідношення:
Кк > К * Ik, (4.3)
де К = 3 для плавких вставок;
Ik - номінальний струм спрацьовування плавкої вставки, А.
Ik = Р / U, (4.4)
де Р - споживана потужність, рівна 6 В.
Тоді:
Ik = 6 / 220 = 0.027А.
Ik = 14,5 >3* Ik = 3*0.027=0.08А.
Умова виконується, завдяки чому відбувається спрацьовування захисного апарату, що забезпечує електробезпеку персоналу.
4.3 ЗАХОДИ, ЩО ЗАБЕЗПЕЧУЮТЬ ВИРОБНИЧУ САНІТАРІЮ І ГІГІЄНУ ПРАЦІ
Роботи по експлуатації проектованого виробу, відповідно до ГОСТ 12.1.005-88, відносяться до категорії Iа (легка).
Оптимальні параметри мікроклімату для робочої зони виробничого приміщення приведені в таблиці 4.1
Таблиця 4.1 - Оптимальні параметри мікроклімату для робочої зони
Період року |
Температура, °С |
Відносна вологість,% |
Швидкість руху повітря, м/с |
Подобные документы
Поняття арифметико-логічного пристрою. Правила формування прямого, оберненого та додаткового коду двійкових чисел. Побудова електрично-принципової схеми модулю блоку керування, який міг би виконувати не тільки операцію додавання, але й віднімання.
курсовая работа [1,6 M], добавлен 27.02.2012Подання чисел у нормальній формі. Порядок нормалізації чисел з рухомою комою. Правила додавання двійкових чисел з рухомою комою. Алгоритми і програми додавання чисел в арифметиці з рухомою комою в інструкціях навчального комп'ютера-симулятора DeComp.
лабораторная работа [31,7 K], добавлен 13.03.2011Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.
курсовая работа [1,3 M], добавлен 20.05.2015Загальні відомості про системи числення. Поняття основи. Машинні коди чисел. Алгоритми виконання операцій додавання і віднімання в арифметико-логічному пристрої ЕОМ, множення і ділення двійкових чисел в АЛП. Логічні основи ЕОМ. Досконалі нормальні форми.
учебное пособие [355,4 K], добавлен 09.02.2012- Розроблення алгоритму і програми а NASM асемблері для додавання / множення чисел з плаваючою крапкою
Розробка алгоритму роботи програми, її загальна характеристика та функціональні особливості, умови ефективного використання. Способи виклику та адреса завантаження, відомості про використання оперативної пам'яті. Посібник системного програміста.
курсовая работа [182,6 K], добавлен 07.06.2016 Додавання (віднімання) чисел на ДСОК: двійкова система числення, представлення з рухомою комою, суматор оберненого коду. Побудова схеми керування заданого автомату, алгоритм додавання(віднімання) та його представлення у вигляді блок-схеми, кодування.
курсовая работа [616,7 K], добавлен 03.01.2014Розрізняють дві форми подання двійкових чисел у ЕОМ: із фіксованою комою і з "плавучою" комою. Прямий, обернений і додатковий коди двійкових чисел. Алгоритми виконання арифметичних операцій (додавання, множення, ділення) над двійковими числами із знаком.
лекция [28,1 K], добавлен 13.04.2008Основні характеристики мови "С ++". Сучасне системне та прикладне програмне забезпечення. Середовище програмування Borland Builder С++. Перелік та опис програмного забезпечення, яке використовується в обчислювальному центрі. Розробка програми Шифр Цезаря.
отчет по практике [307,5 K], добавлен 28.09.2015Отримання показників процесора за допомогою програми EVEREST Ultimate 2006. Приклад отриманих характеристик: властивості ЦП, виробник та завантаження. Набори команд та інструкцій, з якими працює процесор. Властивості та виробник графічного процесора.
лабораторная работа [19,5 K], добавлен 16.12.2010Розробка алгоритму множення чисел у прямому коді з молодших розрядів із пропусканням тактів сумування для двійкових чисел. Синтез операційного та керуючого автоматів з жорсткою логікою. Описання технології числового контролю операції додавання по модулю.
курсовая работа [74,9 K], добавлен 14.03.2013