Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Регістр управління микроконтроллером - MCUCR↑ ⇐ ПредыдущаяСтр 9 из 9 Содержание книги
Поиск на нашем сайте
Розряд 1 - IVSEL: Вибір вектора переривання Якщо біт скинутий IVSEL (= 0), то вектори переривань розміщуються на початку флеш-пам'яті. Якщо даний біт встановлений (= 1), то вектори переривань переміщуються в початок завантажувального сектора флеш-пам'яті. Фактична адреса початку завантажувального сектора визначається значенням конфігураційних біт BOOTSZ. Щоб уникнути несанкціонованих змін таблиці векторів переривань необхідно виконати спеціальну послідовність запису при зміні біта IVSEL:
Переривання будуть автоматично відключені при виконанні такої послідовності. Переривання відключаються під час установки IVCE і залишаться відключеними до переходу до інструкції наступного за інструкцією записи в IVSEL. Якщо IVSEL не записаний, то переривання буде знаходитися у відключеному стані 4 такти синхронізації. Стан біта I в регістрі статусу не зачіпається при автоматичному відключенні переривань. Наприклад: Якщо вектори переривань поміщаються в завантажувальний сектор і біт захисту завантажувального сектора BLB02 запрограмований, то переривання будуть відключені при виконанні програми з секторі прикладної програми. Якщо вектори переривань розміщені в прикладному секторі і біт захисту BLB12 запрограмований, то переривання стають відключеними при виконанні програми в завантажувальному секторі. Розряд 0 - IVCE: Дозвіл зміни вектора переривання В біт IVCE повинно бути записано лог. 1, щоб дозволити зміну біта IVSEL. IVCE скидається апаратно через чотири машинних циклу після запису лог. 1 в IVSEL. Установка біта IVCE призведе до відключення переривань, що описано при розгляді біта IVSEL вище. Опис деяких мнемонік інструкцій, які використовуються у цій лабораторній роботі і не були описані у описах до попередніх лабораторних робіт JMP – «Перехід» Інструкція здійснює перехід у межах 4 МЕГА слів простору пам’яті програм.. PC ← k
Вплив на регістри статусу:
Наприклад: jmp OK
OK: nop
RETI – «Вихід з переривання» Інструкція здійснює вихід з поривання. Адреса повернення вигружається зі стеку і біт Глобальний дозвіл переривань (I -біт) встановлюється. Зверніть увагу на те, що регістр статусу автоматично не записується при вході в обробник переривань і не відновлюється при виході з переривання. Ці операції треба виконати програмно. Вказівник на стек використовує преінкрементації під час виконання інструкції RETI PC(15:0) ← STACK
Вплив на регістри статусу:
Біт I: Встановлюється завжди.
Наприклад: exit_int: pop r16 out SREG r16 reti CLI – «Скидання біту глобального дозволу переривань» Інструкція здійснює очистку біту Глобального дозволу переривань (I -біт) у регістру статусу (SREG). Генерація всіх переривань буде забороненою. Переривання не будуть генеруватися після цієї інструкції навіть якщо умова їх генерації виникне одночасно з виконанням цієї інструкції.
I ← 0
Вплив на регістри статусу:
Біт I: Очищається завжди.
Наприклад: cli
SEI – «Встановлення біту глобального дозволу переривань» Інструкція здійснює встановлення біту Глобального дозволу переривань (I -біт) у регістру статусу (SREG). Наступна інструкція після цієї інструкції буде виконана перед будь-якими перериваннями які очікують на обробку
I ← 1
Вплив на регістри статусу:
Біт I: Встановлюється завжди.
Наприклад: sei Завдання: 1. Проініціалізувати таблицю переривань і стек 2. Здійснити стартову настройку таймера лічильника 0 2.1 Регістр порогу порівняння OCR0 рівним 78 (десяткове число) 2.2 Регістр управління таймером-лічильником 0 TCCR0 2.2.1 Біт примусової установка результату порівняння FOC0 = 0b0 2.2.2 Режим Скидання при збігу (CTC): WGM01, WGM00 = 0b10 2.2.3 Вихід OC0 відключений: COM01, COM00 = 0b00 2.2.4 Тимчасово таймер відключений: CS02, CS01, CS00 = 0b000 2.3 У Регістр маски переривань встановити біт OCIE0 – дозвіл генерування переривань при умові, що регістр таймера-лічильника TCNT0 зрівняється з регістром порогу порівняння OCR0 2.4 Запускаємо таймер лічильник 0 з встановленням подільника частоти 256 CS02, CS01, CS00 = 0b110 2.5 Встановити біт глобального дозволу переривань (I -біт) 3. Написати обробник неочікуваного переривання[55] 3.1 Вийти з обробника переривання 4. Написати обробник переривання коли регістр таймера-лічильника TCNT0 зрівняється з регістром порогу порівняння OCR0 4.1 Зберегти регістр статусу у СТЕК 4.1.1 Завантажити регістр статусу у регістр загального призначення 4.1.2 Записати даний регістр загального призначення у стек 4.2 Тут власне кажучи мав би бути обробник переривання, який ми лишаємо пустим, або можна вставити якісь свої команди для «покращення» освоєння теми переривань у AVR мікроконтролерах 4.3 Відновити регістр статусу зі СТЕК-у 4.1.2 «Виштовхати» вмістиме стеку (збережений регістр статусу) зі стеку в регістр загального призначення 4.1.1 Записати у регістр статусу даний регістр загального призначення 4.4 Вийти з обробника переривання 5. Реалізувати безперервний цикл 6. Хід виконання програми аналогічний, як у попередній лабораторній роботі № 9 «Вивчення програмування таймера мікроконтролера AVR» [56] Набір інструкцій
[1] Наймолодший біт байту LSB (least significant bit – англ.) позначається номером 0, а найстарший біт байту MSB (most significant bit – англ.) позначається номером 7. Біт під номером 3 – це найстарший біт молодшої тетроди байту, а біт під номером 4 – це наймолодший біт старшої тетроди байту [2] Для чисел без знаку (коли числа представляються у прямому коді і найстарший біт байту приймає участь у формування модуля числа) однобайтними числами є числа з діапазону [0; 255]. У випадку знакових чисел (коли числа представляються у додатковому коді і найстарший байт не приймає участь у формування модуля числа, а відповідає за знак) однобайтними числами є числа з діапазону [-127; 127]. Біт V встановлюється у тому випадку, коли у результаті арифметичної чи логічної операції ми виходимо за цей діапазон. [3] Як правило (зокрема і для асемблера AVR Studio) під словом розуміють ціле число довжиною у два байти [4] Біти встановлюються з урахуванням того, що відбувається додавання константи до двобайтного числа, а не однобайтного. [5] У програмування зміщення вліво означає зміщення у сторону старших розрядів, а зміщення вправо – с сторону молодших розрядів. [6] При відніманні чи додаванні від’ємного числа треба мати на увазі, що від’ємн числа представляються у додатковому коді [7] Зручно при ініціалізації SP при ініціалізації програми вказати SP як адресу останньої комірки SRAM [8] Ця фраза не стосується мікроконтролера ATMEGA128 [9][9] pre означає попередній [10] Декрементація означає зменшення на одиницю [11][11] post означає після [12] Інкрементація означає збільшення на одиницю [13] Номер відносно першої адреси регістрів вводу/виводу [14] Опис цієї директиви читайте в описі AVR Studio асемблера [15] Опис цієї директиви читайте у описі до лабораторної роботи № 5 [16] Існує ще інструкція переходу до підпрограми по абсолютній адресі без обмеження у адресному просторі CALL, абе вона виконується довше. Аналогічно існує налог команді відносного переходу RJMP - JMP [17] К – це кількість проініціалізованих елементів арифметичної прогресії, яке відповідає умові завершення формування наступних елементів арифметичної прогресії, описане вище у програмі виконання роботи [18] Вказівник – це об’єкт (наприклад змінна, чи регістр) який вказує на комірку пам’яті адресного простору [19] Опис цієї директиви читайте в описі AVR Studio асемблера [20] Перший символ (Z, Y чи Z) означає Z, Y чи Z регістр відповідно. Другий символ (L чи Н) є початковим символом слова LOW (молодший) і HIGH (старший) – що означає молодший чи старший байт регістра-вказівника. [21] Можна реалізувати свій варіант алгоритму циклу. Є декілька можливостей його реалізації. [22] Умовами даної лабораторної роботи передбачено що зупинкою підрахунку наступних елементів арифметичної прогресії є: 1-е) наступний елемент арифметичної прогресії стає двобайтних числом (додавання двох однобайтних чисел дає перенос у старші розряди) 2-е) Сума арифметичної прогресії стає трьохбайтним числом. Тобто третій байт суми стає відмінним від нуля. А це означає, що треба розраховувати, що сума може стати трьохбайтним числом і вести відповідні розрахунки, маючи це на увазі. [23] Умова даної лабораторної роботи передбачає, що всі елементи арифметичної прогресії і різниця арифметичної прогресії є однобайтними числами [24] Оскільки вихід з циклу може бути не тільки при умові, коли всі елементи порініціалізовані, але і коли сума стане трьохбайтним числом чи елемент арифметичної прогресії стане двохбайтним числом, то кількість ітерацій не обов’язково має бути рівна N [25] Наприклад: stop: rjmp stop [26] При виконанні інструкцій переходу після порівняння треба використовувати тільки ті інструкції, які підходять для знакових чисел і числами можуть бути тільки числа з діапазону [27] зверніть увагу, що параметром є однобайтне беззнакове число. Тому при виконанні інструкцій переходу після порівняння треба використовувати тільки ті інструкції, які підходять для беззнакових чисел і числами можуть бути тільки числа з діапазону [28] Для простоти у тілі циклу можна помістити тільки інструкцію NOP, або будь-яку іншу інструкцію яка не впливає на роботу циклу. [29] Див. зноску 27 [30] Див. зноску 28 [31] Див. зноску 27 [32] Див. зноску 28 [33] Див. зноску 27 [34] Див. зноску 28 [35] Знакова однобайтна змінна, яка мала бути об’явлена згідно п.2 Див. зноску 26 [36] Див. зноску 35 [37] Див. зноску 28 [38] Див. зноску 35 [39] Див. зноску 35 [40] Див. зноску 28 [41] Див. зноску 28 [42] Див. зноску 35 [43] Див. зноску 35 [44] Біт, який відповідає за знак числа [45] Див. зноску 44 [46] Множення на – це те саме, що зміщення вліво (у сторону старших біт) на 8 позицій. Іншими словами зміщення на 8 – це переміщення одного байту в старший наступний байт [47] Номер відносно першої адреси регістрів вводу/виводу. Якщо у таблиці не вказано номер регістру вводу видоду. то це значить, що даний регістр відноситься до розширених регістрів вводу-виводу і доступитися до ним можна з допомогою відносної адресації через регістри X, Y і Z, а інструкції IN і OUT для них не підходять. Якщо ж номер регістру вводу-виводу вказаний, то цей регістр відноситься рдо регістрів вводу-виводу і до них можна використовувати як інструкції IN і OUT, так і методами непрямої адресації, як для розширених регістрів вводу виводу. Зверніть увагу на те, що в інструкціях IN і OUT вказується не адреса комірки регістра у пам’яті даних. а номер регістра. При доступі до будь-якого регістра методом непрямої адресації через регістри X, Y і Z треба вказувати адресу комірки пам’яті даних, а не номер регістру!!! [48] Цей режим не використовується у даній лабораторній роботі, тому опис його опущений [49] Див. зноску 48 [50] Real Time Clock – годинник реального часу [51] Див зноску 47 лабораторної роботи № 8 «Вивчення програмування паралельного порту вводу-виводу мікроконтролера AVR» [52] Цю операцію треба виконати так, щоб інші біти регістру управління таймером-лічильником 0 залишилися незміненими. Тобто треба зчитати регістр управління TCCR0 у регістр загального призначення, потім змінити відповідні біти і змінений регістр загального призначення знову записати у регістр вводу-виводу TCCR0 [53] Про регістр TIFR і його біти читайте у теоретичному матеріалі до цієї лабораторної роботи [54] Методика аналогічна, як у лабораторній роботі № 9 [55] Цей пункт є обов’язковим тільки у тому випадку, коли у таблиці переривань реалізовано перехід на цей обробник [56] Другу breakpoint треба помістити не у підпрограмі очистки біту OCF0 (бо цю підпрограму ми видалили для цієї лабораторної роботи, так як цей біт автоматично очищується при генерації переривання при встановленні цього біту), а у обробнику переривання
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 359; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.66.242 (0.011 с.) |