MSP430 - навчальний курс

Отже, приступимо до третього уроку.

До речі, прийшов замовлений MSP430F247 – ура! Ну а поки що я до нього звикаю, розглянемо мій улюблений MSP430F149.

Це старша модель у сімействі MSP430x1xx – лапи та периферія по максимуму. Коротко характеристики: - Тактова частота - до 8 МГц. — Три джерела тактування — один внутрішній і два зовнішні. — 64 ноги (в корпусі QFP з кроком 0.5 мм). - ОЗУ - 2Кб. - ПЗУ (типу FLASH) - 60 Кб. - ЕСППЗУ (EEPROM) - 256 б. - 6 груп портів введення/виводу (43 порти) - п'ять по 8 і один 3 лінії. - 16-ти бітні таймери (2 штуки, але дуже хитрі). - 12 біт АЦП, компаратор. - SPI, USART. - JTAG. - Апаратний помножувач (немає спеціальної команди множення).

Ось внутрішня структура сімейства:

курс

Внутрішнє джерело тактування DCO (Digital Controlled Oscillator) побудовано на RC-ланцюжку та має частоту близько 750 кГц (сильно залежить від температури). Зовнішні джерела: LFXT1 — працює у двох режимах: високочастотному (450 кГц… 8 МГц) та низькочастотному (оптимізований під часовий кварц 32768 Гц). XT2 - високочастотний - 450 кГц ... 8 МГц. Вибір джерела тактування здійснюється програмно. При цьому за замовчуванням запускається на вбудованому. Якщо ми намагаємось підключити зовнішнє джерело і нам це не вдалося, контролер повернеться до роботи на вбудований та не зависне.

Реєстри коротко.R0- PC (program counter) - лічильник команд.R1- SP (stack pointer) - покажчик стека.Не забудьте ініціалізувати!R2- SR (status register) - регістр стану та управління. Містить основні прапори стану та прапори управління режимами роботи.R3- CG (constant generator) - генератор констант.R4..R15- просто регістри загальногопризначення.

Емульовані команди – це фікція компілятора. Зрештою, вони будуть замінені на будь-яку команду з певною комбінацією операндів. НаприкладNOPзамінюється наMOV #0, R3. Про генератор констант поговоримо докладніше пізніше.

2. Словний та байтний формат команд.

Усі команди, крім переходів, підтримують як побайтне звернення до операндів, і пословне (2 байти). Під час написання команди ставиться ознака типу звернення. Наприклад:

3. Структура пам'яті.

Перші три області пам'яті IAR відображаються як тип SFR разом - будьте уважні.

1. Реєстровий. Пересилання з/в реєстр. Наприклад:

Застосуємо до джерела та приймача.

2. Індексний. Пересилання із застосуванням регістру як покажчик і зміщенням.

Зміщення йде після коду команди, тому може бути 0..65535. Застосуємо до джерела та приймача.

3. Символьний режим. Пересилання з обчисленням усунення від PC.

Звірятка хитріші, але насправді виявляється модифікацією індексного режиму. Тобто. дана команда еквівалентна

Застосуємо до джерела та приймача.

Застосуємолишедо джерела.

Застосуємолишедо джерела.

7. Безпосередній режим. Пересилання значення.

Застосуємолишедо джерела. Щодо останнього рядка прикладу - так треба робити дляcall, але не дляjmp.

Деякі зауваження щодо матеріалу (так би мовити навздогін).

Примітка 3. Регістр ПК (aka R0). Інкремент лічильника команд (тільки число, кратне 2!) відбувається у момент попередній дешифрації команди, після вибірки. Це означає, що на момент виконання команди лічильник команд вказує на наступнукоманду. Тобто. код:

дасть нам у R4 покажчик не таку команду, але в наступну (у разі +2).