1. 1 x x x 1 1 січня - код команди.
де xxx - двійковий код вектора переривання.
При нульовому векторі переривання його код 000, код команди RST - 11000111. При першій векторі - 11001111, при другому - 11010111 і т.д. Враховуючи, що логічної 1 відповідає рівень напруги gt; 2,4В, а логічному 0 - рівень lt; 0.4 В входи регістра (у відповідності з отриманим кодом RST) підключають до харчування + 5В або до нульового проводу. На рис.5 дано приклад організації RG ВП для нульового вектора переривання.
Рис. 4 Адресний дешифратор портів
Рис. 5 Регістр вектора переривання
Розробка програмного забезпечення
Розробка програмного забезпечення включає в себе розробку підпрограми пуску ЕД, підпрограми обслуговування переривання і розподіл пам'яті.
Розробка підпрограми пуску ЕД.
Блок-схема підпрограми пуску ЕД, реалізує алгоритм, розглянутий у п.3.1, представлений на рис.6.
На початку підпрограми необхідно дозволити мікропроцесору обслуговування переривання і встановити покажчик стека на обрану адресу ОЗУ.
При програмуванні операції введення стану тригера ГТ необхідно попередньо встановити відповідність між станом тригера (лог.1 або 0) і станом електроприводу ( готовий або не готовий ).
У блоці 3 виробляється аналіз стану того розряду ШД, до якого підключений тригер ГT.
У регістр ЦАП виводиться цифровий еквівалент керуючої напруги. Тому перед програмуванням цієї операції необхідно обчислити по заданому Uупр його цифровий аналог.
Затримка часу для розгону ЕД може бути реалізована у вигляді підпрограми або без неї. Попередньо необхідно по заданому часу затримки призвести відповідні обчислення.
У блоках 6 і 7 виробляється введення цифрового еквівалента напруги тахогенератора і його порівняння з цифровим еквівалентом керуючої напруги. При невідповідності проводиться вивід
в RG ЦАП коду 00 (блок 8), а в тригер СБ - сигналу Збій raquo ;. Висновок в тригер необхідно організувати таким чином; щоб розряд ШД, до якого підключений тригер, при введенні прийняв стан, при якому світлодіод повинен випромінювати. Передача лог.1 або 0 з цього розряду визначається схемою підключення світлодіода до тригера.
Розробка підпрограми обслуговування переривання.
Подпрограмма починає роботу при надходженні сигналу Аварія на вхід мікропроцесора Запит переривання (ЗПР). До складу підпрограми входять три блоки, що виконуються послідовно один за одним.
Перший блок здійснює заборона переривання і запис у стек вмісту регістрів МП.
Другий блок обнуляє регістр ЦАП і видає сигнал Збій .
Третій блок здійснює виклик з стека вмісту регістрів МП, дозвіл переривання і перехід на кінець підпрограми пуску.
Розрахунок цифрового еквівалента.
Розрахунок зводиться до перетворення заданого керуючого напруги з десяткової форми в шістнадцяткову. Причому старший розряд кодує напрямок обертання: 0 - пряме обертання, 1 - зворотне.
Нехай задано Uупр=- 1,62 В. Так як в ЦАП цифровий код перетвориться в аналогову величину з певною дискретністю
(0.05 В), то спочатку обчислюється кількість дискрет для представлення аналогової величини заданого рівня. Для рівня 1,62В кількість дискрет становить - 2,025 16, а двійковий еквівалент 0010000000100101 2. З урахуванням напрямку обертання отримаємо 1010000000100101 2, в шістнадцятковій формі А025 16.
Розробка підпрограми затримки.
Підпрограма затримки реалізується шляхом організації циклічного процесу з N циклів.
Якщо відомо час виконання i-тієї команди ti, в циклі і кількість таких команд K в циклі, то час затримки складе:
с
Таким чином розробка підпрограми зводиться до вибору типу команд в циклі і визначення кількості циклів в шістнадцятковій формі.
Розподіл пам'яті.
У початкових адресах (00 00 - 1F00) розташовуються вісім областей, закріплених за конкретним вектором переривання. Наприклад, за перший вектором закріплені восьмій байтів з адресами 00 00 - 00 07, за друге вектором - наступні вісім і т.д. Оскільки підпрограма обслуговування переривання займає більший обсяг пам'яті, ніж відведений під вектор переривання, то в цих областях розміщують тільки команду безумовного переходу за адресою, з якого розміщена підпрограма обслуговування переривання.
Стек - це будь-яка область ОЗУ. Однак його доцільніше розташовувати починаючи з кінцевої комірки, т...