![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Регістр управління микроконтроллером - MCUCRСодержание книги
Поиск на нашем сайте
Розряд 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] Множення на [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; просмотров: 372; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.97.14.86 (0.015 с.) |