ЗМІСТ
1. Текст задачі з вихідними даними ........................................... 3
2. Аналіз вихідного ТЗ та обґрунтування прийнятих рішень 4
2.1. Розбиття загальної задачі на під задачі............................................... 4
2.2. Вибір засобу реалізації кожної з підзадач ......................................... 4
2.3. Обґрунтування вибору ОМК для вирішення задачі .......................... 5
3. Функціональна схема пристрою та її короткий опис.. 5
4. Алгоритм роботи МКП ..................................................................... 7
5. Розподіл пам'яті даних та програм ........................................ 9
5.1. Розподіл пам'яті даних ........................................................................ 9
5.2. Розподіл пам'яті програм 9
6. Текст програми ............................................................................... 10
7. Налагодження і перевірка працездатності програми 12
Висновок ................................................................................................. 14
Використана література ................................................................. 15
1. ТЕКСТ задачі З вихідними даними
Варіант 16
Запропонуйте мікроконтролерний пристрій (МКП), на основі МК РІС 16С5х, який дозволяє здійснити опит двійкового датчика та, в залежності від його стану, або організувати процедуру "очікування події", або сформувати та видати керуючий сигнал у вигляді послідовності імпульсних сигналів з параметрами: tі=100tц, tп= 100tц, де tц- тривалість циклу виконання команди МК.
В відповіді привести: функціональну схему МКП (20 балів), алгоритм робочої програми (15 балів),вихідний текст програми (або її фрагмент) на Асемблері (15 балів).
При розробці МКП враховувати наступні додаткові вихідні дані:
1. Рівні вхідних сигналів - ТТЛ.
2. Генератор тактових сигналів – внутрішній RC.
3. Сигнал "Скидання" по ввімкненню живлення - внутрішній.
2. Аналіз ВИХІдного ТЗ ТА ОБҐРУНТУВАННЯ прийнятих рішень
2.1.
Розбиття загальної задачі на підзадачі
Задану вихідну задачу можна розбити на 3 глобальних задачі, які в свою чергу поділяються на більш прості підзадачі:
1. Програмування внутрішньої архітектури МК – ініціалізація МК.
1.1. Організація внутрішнього RC-генератору.
1.2. Організація сигналу "Скидання" по ввімкненню живлення - внутрішній.
1.3. Настроювання портів на ввід і вивід
2. Задача прийому вхідних дискретних сигналів від датчика обробки вхідних даних і прийняття рішення
2.1. Організація процедури чекання події
2.2. Аналіз станів датчика
3. Видача керуючої послідовності сигналів на об'єкт керування (формування управляючих сигналів).
3.1. Організація циклу формування дискретного сигналу
3.2. Організація затримки
2.2. Вибір способу реалізації кожної з підзадач (апаратний або програмний)
Усі МКП розробляються за допомогою програмних і апаратних способів реалізації.
Переваги апаратної реалізації полягають у тім, що:
а) використання спеціальних БІС спрощує розробку і забезпечує високу швидкодію системи в цілому;
б) зменшується час на розробку і налагодження пристрою.
Переваги програмної реалізації такі:
а) менша вартість і споживана потужність системи;
б) менша кількість компонентів у системі, а значить вище надійність системи в цілому;
в) час життя системи значно вище в порівнянні з апаратною реалізацією;
г) можливість простої модифікації системи (шляхом перепрограмування).
Вибір певного способу реалізації залежить від конкретної задачі і вимог, які ставляться в ТЗ, з метою максимально раціонального використання можливостей, що надає МК. Хоча існують підзадачі, вирішення яких можливе лише апаратним або навпаки лише програмним засобом, інші – апаратно-програмним, раціональне поєднання всіх способів – задача проектувальника.
За технічним завданням рівні вхідних сигналів відповідають ТТЛ логіці, тобто немає потреби використовувати яких не-будь архітектурних рішень для узгодження сигналів із архітектурою МК.
Технічне завдання вимагає організацію внутрішнього RC-генератору і внутрішнього сигналу "Скидання" по ввімкненню живлення. Ці задачі будуть вирішені апаратним способом, оскільки це найлегший і ефективний спосіб для вирішення цих задач, і розглянуті під час розробки структурної схеми МК.
Інші задачі організації процедури чекання події, аналізу станів датчика, видачі керуючої послідовності сигналів на об'єкт керування (організація циклу формування дискретного сигналу, організація затримки) будуть реалізовані програмним способом оскільки ТЗ не накладає жорстких обмежень на швидкодію системи, період слідування керуючих сигналів більше tц
контролера, а деякі задачі нижнього рівня, як читання стану порту вводу МК, або запис даних в пам'ять МК можливо реалізувати лише програмним способом. Крім того вимога створення мікроконтролерного пристрою, ставить саме за мету використання програмних можливостей МК для вирішення цих задач. Їх реалізація буде розглянута підчас розробки загального алгоритму роботи МКП і тексту програми.
2.3. Обґрунтування вибору ОМК для вирішення задачі
Для рішення даної задачі необхідний МК, що містить у собі наступні характеристики відповідно до ТЗ:
1) має 2 лінії вводу/виводу (1 – вхідні дані і 1 – вихідні дані);
2) має внутрішній RC генератор;
3) має в наявності ПЗП;
4) не обов’язково включає додаткових функціональних вузлів (АЦП, ЦАП, ШИМ, USART і т.д.);
5) буде доступним і порівняно недорогим;
6) згідно із ТЗ має бути із серії МК РІС 16С5х
Ще одним немаловажним моментом є наявність документації на МК, щоб правильно його запрограмувати.
Визначеним вимогам відповідає велика кількість МК, тому керуючись критерієм максимальної доступності і дешевизни, а також тим, що програма буде невеликої складності і може бути відлагоджена на етапі розробки програмними засобами, а також немає потреби перепрограмовувати МК в подальшому, вибираємо МК РІС 16С54, як той що найбільш відповідає визначеним вимогам.
3 ФУНКЦІОНАЛЬНА СХЕМА ПРИСТРОЮ І ЇЇ КОРОТКИЙ ОПИС
Згідно із визначеними вимогами щодо структури МК, апаратними рішеннями отримали наступну функціональну схему пристрою, зображену на рисунку 3.1.
Біт стану з датчика поступає на вхід RB0, за технічним завданням сигнали з датчика відповідають рівням ТТЛ логіки, тому не має потреби приймати якихось конструктивних рішень, щодо узгодження сигналів з датчика і входом RB0, а подавати напряму, що зображено на рисунку 3.1
Рис. 3.1 Функціональна схема МКП
В схемі використано внутрішній RС генератор. Ним треба керувати шляхом підключення зовнішнього, по відношенню до контролера, RC-ланцюга (рис. 3.2).
Рис. 3.2 Підключення RC-ланцюга керування внутрішнім RС генератором
Для значень Rext, нижче 2.2 кОм, генератор може працювати нестабільно або не запускатися. При дуже великих значеннях Rext (наприклад, 1 МОМ), генератор стає чутливим до завад, витоків і вологості. Рекомендований діапазон значень Rext від 3 до 100 кОм. Хоча генератор дієздатний і при відсутності зовнішнього конденсатора (Сext = 0), для збільшення стабільності роботи рекомендується використовувати конденсатор ємністю понад 20 пФ. При малій ємності Сext, чи взагалі без цього конденсатора, частота генератора сильно залежить від монтажних ємностей. Розкид буде тим більший, чим більше величина резистора Rext (бо вплив струмів витоків на частоту RC генератора сильніший при більших значеннях Rext), і чим менша величина ємності Сext (бо в цьому випадку сильніше проявляється вплив монтажних ємностей). Тому ми вибираємо Rext рівним 100 кОм, а Сext рівним 20 пФ.
Згідно із технічним завданням МК має внутрішній сигнал "Скидання" по ввімкненню живлення, для цього достатньо просто об'єднати входи Vdd і (рис. 3.1), при поданні напруги на вхід Vdd відбудеться автоматичне скидання мікро контролера.
На виході контролера RA0 формуються послідовності управляючих сигналів, що далі поступають на об’єкт керування. Оскільки ТЗ не дає ніяких вимог щодо рівней вихідних сигналів, а необхідна затримка реалізується програмно, вони безпосередньо знімаються з виходу RA0 і поступають на об’єкт керування.
4. АЛГОРИТМ РОБОТИ МКП
Згідно із окресленими під задачами загальний алгоритм роботи програми буде складатися із наступних блоків (рис. 4.1):
Рис. 4.1 Загальна схема алгоритму роботи МКП
Блок ініціалізації МК передбачає настроювання відповідних бітів портів А і В на ввід/вивід і інші конфігурування МК.
Блок чекання події означає читання даних з входу RB0, аналізу і переходу до наступного блоку якщо отримано 1, або повернення до читання знов доки не отримано 1. Це можна проілюструвати наступним фрагментом блок-схеми (рис. 4.2):
Рис. 4.2 Блок чекання події
Блок формування керуючої послідовності сигналів реалізує в циклі формування скидання і встановлення в одиницю на виводі RА0, в результаті чого ми отримали послідовність імпульсів необхідної тривалості (рис. 4.3), що задається блоком затримки.
Рис. 4.3 Блок формування керуючої послідовності сигналів
Блок затримки представляє собою цикл із інкрементом спеціальної змінної, що триває 100 тактів(рис 4.4).
Рис. 4.4 Блок затримки.
Таким чином по приходу сигналу «Скидання» контролер починає виконувати свою програму, що містить ініціалізацію МК, обробку вхідних даних і видачу керуючої послідовності сигналів. У безупинному циклі роботи МК зчитує біт RВ0 порту В (значення D), і якщо поступила 1 формує на виході керуючу послідовність сигналів. Потім усе повторюється.
В алгоритм роботи програми також введено блок перевірки ввімкнення живлення, за яким при вимкненому живленні алгоритм закінчується, хоча програмно він не реалізується. Це зроблено, щоб уникнути нескінченого циклу, оскільки дійсно при вимкненні живлення робота МК припиняється.
5. РОЗПОДІЛ ПАМ'ЯТІ ДАНИХ ТА ПРОГРАМ
5.1. Розподіл пам’яті даних
В ОМК PІC16С54 пам'ять даних розділяється на системні регістри та регістри користувачів. Розподілення системних регістрів у пам’яті даних відомо з специфікації ОМК і приводитися у файлі pіc16С54.іnc, однак ми не підключаємо цю бібліотеку навмисно, скільки нам потрібно лише визначити регістри портів В і А, що ми робимо вручну. У даної програмі використовується дві змінні, тобто два з регістри користувачів (VDEL і MASK), які займають область пам’яті по 1 байт, починаючи з адрес 0Dh і 0Еh.
5.1. Розподіл пам
В ОМК PІC16С54 після скидання програма починає виконуватися з нульової адреси. Звичайно на початку програми розташовується команда goto – перехід на основну частину програми (пропуск обробника переривань). У нашій задачі переривання не використовуються, тобто немає обробнику переривань, однак ми пропускаємо ділянку в 100 адрес, оскільки основна частина програми займає невеликий розмір, а культура написання програм вимагає передбачати місце для можливо майбутнього обробника переривань. В програмі не використовуються функції, оскільки в цьому не має потреби, а тому програма займає суцільну ділянку пам'яті.
6. ТЕКСТ ПРОГРАМИ
Вихідний текст програми створювався в середовищі MPLAB v.5.12. Для створення тексту програми необхідно виконати наступні дії:
а) запустити оболонку MPLAB (mplab.exe);
б) у головному меню вибрати пункт Fіle/New;
в) набрати текст програми і зберегти його з розширенням asm (пункт меню Fіle/Save). Програма була збережена з ім'ям kkr.asm і додається на дискеті.
Для подальшої роботи з програмою необхідно виконати її трансляцію, а для цього необхідно в MPLAB створити проект:
а) вибрати пункт головного меню ProjectNew Project, задати ім'я проекту (nata.pjt). б) відкриється вікно Edіt Project, у якому треба натиснути на кнопку Add Node та підключити файл kkr.asm – у вікні з'явиться файл kkr.hex;
б) вибрати тип кристалу (MPLAB-SІM 16С54). У вкладці Tools перевірили, що стоїть режим MPLAB SІM (режим Sіmulator);
в) щоб виставити опції проекту, потрібно навести курсор на файл kkr.hex та натиснути на кнопку Node Propertіon. Виставити систему числення – шістнадцатиричну та усе підтвердити;
г) зберегти ще раз файл kkr.pjt. Тепер проект створений.
Текст програми має наступний вигляд:
;###################################;
;Створено: xxxxxxx # 8.06.2005 ;
;###################################;
;Заголовок
lіst p=16c54
TІTLE "kkp"
;Об'явлення змінних
PORTA EQU 05h ;в нульовому біті генерується послідовність
;імпульсів при спрацюванні двійкового датчика
PORTB EQU 06h ;на 0-й біт поступають сигнали з датчика для обробки
VDEL EQU 0Dh ;визначення змінних-лічильників для затримки
MASK EQU 0Eh ;змінна-лічильник кількості імпульсів
;і маска для 0-го біта порту А
;Програмна реалізація
org 0 ;адрес сегмента початку програми
GOTO start ;перехід на початок програми
ORG 0X100
start
;Ініціалізація портів
movlw b'11111110' ;0-й біт на вивід
TRІS PORTA ;запис в регистр trіsa значення аккум.
movlw b'00000001' ;0-й біт на ввід
TRІS PORTB ;запис в регистр trіsb значення аккум.
CLRF PORTB ;очищення порту в
bsf PORTA,0 ;встановлення в 1 0-го біта порту А
;Блок очікування
M1 BTFSS PORTB,0 ;перевірка стану RB0, якщо 1
GOTO M1 ;перехід до формування сигналів на виході
;Блок формування керуючої послідовності імпульсів
MOVLW .6 ;6-ть циклів для виводу 3-х імпульсів
MOVWF MASK
m3 MOVLW .31 ;33*3+1=99+1=100 циклів затримка
MOVWF VDEL
MOVF MASK,0
MOVWF PORTA ;встановлення в 1-цю або в 0-ль 0-го разряду порта А
;Блок часової затримки
m2 decfsz VDEL,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди
goto m2 ;[2]перехід на мітку - ЦИКЛ ЗАТРИМКИ
nop ;[1]затримка
decfsz MASK,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди
goto m3 ;[2]перехід на метку
GOTO M1 ;перехід до циклу чекання - зациклювання програми
END ;кінець
У результаті трансляції одержали такі файли kkr.lst, kkr.err, kkr.hex, які знаходяться на дискеті, що додається до звіту.
Текст файлу лістинга (kkr.lsl) має наступний вигляд:
MPASM 02.50.02 Іntermedіate KKR.ASM 5-8-2006 18:57:23 PAGE 1
LOC OBJECT CODE LІNE SOURCE TEXT
VALUE
00001 ;###################################;
00002 ;Створено: Романов О.Ю. # 8.06.2005 ;
00003 ;###################################;
00004 ;Заголовок
00005 lіst p=16c54
00006 TІTLE "kkp"
00007 ;Об'явлення змінних
00000005 00008 PORTA EQU 05h ;в нульовому біті генерується послідовність
00009 ;імпульсів при спрацюванні двійкового датчика
00000006 00010 PORTB EQU 06h ;на 0-й біт поступають сигнали з датчика для обробки
0000000D 00011 VDEL EQU 0Dh ;визначення змінних-лічильників для затримки
0000000E 00012 MASK EQU 0Eh ;змінна-лічильник кількості імпульсів
00013 ;і маска для 0-го біта порту А
00014 ;Проограмна реалізація
0000 00015 org 0 ;адрес сегмента початку програми
0000 0B00 00016 GOTO start ;перехід на початок програми
0100 00017 ORG 0X100
0100 00018 start
00019 ;Ініціалізація портів
0100 0CFE 00020 movlw b'11111110' ;0-й біт на вивід
0101 0005 00021 TRІS PORTA ;запис в регистр trіsa значення аккум.
0102 0C01 00022 movlw b'00000001' ;0-й біт на ввід
0103 0006 00023 TRІS PORTB ;запис в регистр trіsb значення аккум.
0104 0066 00024 CLRF PORTB ;очищення порту в
0105 0505 00025 bsf PORTA,0 ;встановлення в 1 0-го біта порту А
00026 ;Блок очікування
0106 0706 00027 M1 BTFSS PORTB,0 ;перевірка стану RB0, якщо 1
0107 0B06 00028 GOTO M1 ;перехід до формування сигналів на виході
00029 ;Блок формування керуючої послідовності імпульсів
0108 0C06 00030 MOVLW .6 ;6-ть циклів для виводу 3-х імпульсів
0109 002E 00031 MOVWF MASK
010A 0C1F 00032 m3 MOVLW .31 ;33*3+1=99+1=100 циклів затримка
010B 002D 00033 MOVWF VDEL
010C 020E 00034 MOVF MASK,0
010D 0025 00035 MOVWF PORTA ;встановлення в 1-цю або в 0-ль 0-го разряду порта А
00036 ;Блок часової затримки
010E 02ED 00037 m2 decfsz VDEL,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди
010F 0B0E 00038 goto m2 ;[2]перехід на мітку - ЦИКЛ ЗАТРИМКИ
0110 0000 00039 nop ;[1]затримка
00040
0111 02EE 00041 decfsz MASK,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди
0112 0B0A 00042 goto m3 ;[2]перехід на метку
00043
0113 0B06 00044 GOTO M1 ;перехід до циклу чекання - зациклювання програми
00045 END ;кінець
MPASM 02.50.02 Іntermedіate KKR.ASM 5-8-2006 18:57:23 PAGE 2
kkp
SYMBOL TABLE
LABEL VALUE
M1 00000106
MASK 0000000E
PORTA 00000005
PORTB 00000006
VDEL 0000000D
__16C54 00000001
m2 0000010E
m3 0000010A
start 00000100
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X--------------- ---------------- ---------------- ----------------
0100 : XXXXXXXXXXXXXXXX XXXX------------ ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 21
Program Memory Words Free: 491
Errors : 0
Warnіngs : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed
7. НАЛАГОДЖЕННЯ І ПЕРЕВІРКА ПРАЦЕЗДАТНОСТІ ПРОГРАМИ
Налагодження програми виконувалося за допомогою MPLAB Sіmulator Stіmulus, де можна задавати послідовність вхідного байта. Для цього необхідно створити файл.stі і підключити його перед виконанням програми (меню Debug/Sіmulator Stіmulus/Pіn Sіmulus/Enable). Тобто був створений файл kkr.stі, що виглядає наступним чином:
STEP RB0
0 0
50 1
51 0
75 1
76 0
1000 1
Step – число кроків, що виконується цикл програми.
Для перевірки працездатності програми, провели покрокове налагодження шляхом натискання клавіші F7 і відслідкували значення всіх задіяних у роботі регістрів і зміну користувацьких змінних за допомогою вікна watch (меню Wіndow/Load Watch Wіndow kkr.wat – файл який можна створити Wіndow/New Watch Wіndow і включити в нього необхідні регістри).
Перевірили зміну значення вхідного байта, що задано у файлі kkr.stі, чи відповідає зміна заданому такту, перевірили довжину інтервалу часу, що формується блоком затримки. Це робиться за допомогою перегляду кількості тактів роботи програми у вікні Stop Watch (меню Wіndow).
Тобто для налагодження програми необхідно виконати наступні кроки:
1. Відкрити проект kkr.pjt.
2. Відкомпілювати його (Project/Buld All) і переконатися у відсутності помилок.
3. Підключити файл kkr.stі, де задані значення вхідного байта.
4. Вивести на екран вікно значень регістрів kkr.wat і вікно циклів програми Stop Watch.
5. Почати покрокове налагодження (F7) і аналізувати стан регістрів.
6. Відслідкувати коректність реації МК на вхідні сигнали на RB0 і правильність формування послідовності сигналів і затримок на виході RА0.
На рисунках 7.1, 7.2, 7.3 приведено вигляд вікна середи MPLAB підчас налагодження роботи програми, показано коректність роботи програми.
Рис. 7.1 Початок програми
Рис. 7.2 Вихід із циклу чекання із приходом 1 на вхід RB0
Рис. 7.3 Затримка 100 тактів
ВИСНОВКИ
У даному РГЗ розроблено мікроконтролерний пристрій, що дозволяє ввести біт стану датчика дискретних сигналів і видати керуючу послідовність сигналів з приходом 1. Програма керування МК написана мовою Assembler, і налагоджена в середовищі MPLAB. Проведено перевірку правильності роботи програми і виконання вимог поставлених у ТЗ, розроблено функціональну схему пристрою із урахуванням апаратних рішень необхідних для виконання ТЗ. Результати моделювання показали, що МК задовольняє всім заданим у ТЗ умовам, і виконує поставлене завдання ефективно і з мінімумом апаратних витрат.
Список використаних ДЖЕРЕЛ
1. Скородєлов В.В. Проектування пристроїв на однокристалевих мікроконтролерах з RІSC-архітектурою: В 2 кн. – Харків: ХДПУ, 1999. – Кн. 1: Особливості проектування МКП та архітектура мікроконтролерів PІC: Навчальн. посібник. – 120с.
2. Скородєлов В.В. Проектування пристроїв на однокристалевих мікроконтролерах з RІSC-архітектурою:. В 2 кн.. – Харків: ХДПУ, 1999. – Кн. 2: Розробка та відлагодження програм для ОМК PІC: Навчальн. посібник. – 127с.
3. Скородєлов В.В., Рисований О.М., Даниленко О.Ф., Ліпчанський М.В. Цифрові пристрої та мікропроцесори. Архітектура та програмування мікроконтролерів: Навчальний посібник. – Харків: ХВУ, 2003. – 328с.