390 likes | 583 Views
Мікроконтролери MSP430. Лекція 11 Судаков О.О, Радченко С.П. « Сучасна мікропроцесорна техніка ». MSP 430 (Mixed Signal Processor- аналого-цифровий процесор ). Повноцінн і 16 розряд ів Шина даних Шина адреси Регістри Периферія Тактова частота 8-25 МГц (залежить від моделі)
E N D
Мікроконтролери MSP430 Лекція 11 Судаков О.О, Радченко С.П. «Сучасна мікропроцесорна техніка»
MSP 430 (Mixed Signal Processor- аналого-цифровий процесор) • Повноцінні16 розрядів • Шина даних • Шина адреси • Регістри • Периферія • Тактова частота • 8-25 МГц (залежить від моделі) • Затримки 1-2 мкс (залежить від моделі) • Широкий набір периферії • Цифрової • Аналогової • Наднизьке енергоспоживання • <0.1 мкА в режимі очікування (менше струму саморозряду батарей) • <200мкА в активному режимі • Пам’ять • Flash 512 B-512K • RAM 128 B – 64 K • Фон-Нейманівська архітектура • Широкий набір застосувань
Моделі MSP430 • Сімейство • СС – з радіо (Wifi) • MSP • L –низька напруга • Тип пам’яті • С-ROM • F-flash • FR-fram • G flash • Покоління • 1 – до 8 МГц • 2- до 16 МГц • 4-до 16 МГц з LCD для медичних застосувань • 5 до 25 МГцдля медичних застосувань • 6 до 25 МГцз LCD для медичних застосувань
Структурна схема • RISC CPU • Системний годинник • 1 адресний простір • RAM • Flash • Шина адреси • 16 біт • Шина даних • 16 біт • Частина периферії 8 біт • Автоматичне перетворення 8/16 біт • Периферія • JTAG
Процесор • ALU16 розрядів • Регістри загального призначення • 16 16 розрядних • Спільна пам’ять для програм і даних • Фон-Нейманівська архітектура • Єдиний простір адрес • Шина • Адреси • Даних • Проста архітектура
Особливості регістрів • Всі регістри загального призначення • Всі можна записувати – читати – адресувати • 16 розрядів можна використовувати як 8 розрядів • Деякі мають спеціальні функції • R0 – PC програмний лічильник • R1 – SP вказівник стеку • R2 – SR регістр стану і генератор констант CG1 • R3 - генератор констант CG2 • R4-R15 – звичайні регістри
Регістри для адресації пам’яті • Адреси команд кратні 2 • Останній біт завжди 0 • PC – адреса поточної виконуваної команди • При виконанні збільшується на 2 • Запис у регістр – перехід на іншу інструкцію • SP – адреса стека • Адреса вершини стека записується в регістр • PUSH ASP=SP-2; *SP=A • POP AA=*SP; SP=SP+2 • Всі інші регістри можна використовувати для адресації
Режими адресації • Регістровий режим • Використовується значення в регістрі • 1 слово 1 такт • MOV R12 R13 R12->R13 • Індексний режим • Викорисовується значення в пам’яті • Адреса в регістрі • Зміщення – аргумент команди • 2 слова 3 такти • MOV 2(R5),6(R6)
Режими адресації (продовження) • Символьний режим • З адреси/в адресу пам’яті • Адреса перераховується відносно поточної команди PC • Адреса - аргумент команди • Коли пам’яті більше 64К • MOV ADDR R6 • Асемблер використовує індксну адресацію • 4 такти 2 слова • Абсолютний режим • Те що і символьний, тільки абсолютна адреса • MOV &ADDR R6 • Безпосередній режим • Завантаження константи • MOV #1234h R6 • 2 такти 2 слова
Непряма адресація • Непряма адресація • Використати дані в пам’яті • Адреса в регістрі • MOV @R14 R15 • 1 слово 2 такта • Непряма адресація з інкрементом • Те ж що і непряма • Регістр зібльшується на 1 (для байтів) або 2 (для слів) • MOV @R14+ R15 • 1 слово 2 такта
Регістр стану • Керування різними пристроями • SCG1 – вимикання генератора периферії • SCG0 – вимикання RC генератора • OSCOFF – вимикання кварцевого генератора • GIE – дозволити переривання • CPUOFF – зупинити процесор • Прапорці результату останньої операції • V – було переповнення • N – результат від’ємний • Z – результат нульовий • С – було перенесення в старший розряд
Генератори констант • Часто використовуються константи • -1,0,1,2,4,8 • Введення константи в код –додаткова операція • Генератори констант роблять це за 1 такт • Регістри R2 і R3 як джерело • Регістровий режим R3:0MOV R3 R15 R15=0 • Індексний режим R2:(0),R3:1 MOV(R3)R15 R15=1 • Непрямий режим R2:4,R3:2 MOV@R3 R15 R15=2 • Непрямий автоінкремент R2:8,R3:-1 MOV@R3+ R15 • Запис в R3 – NOP (немає операції)
Виконання команд • Вибірка команди з пам’яті • PC=PC+2 • Адреса на шині адреси • Зчитування даних • Вибірка аргументів • PC=PC+2 • … • Виконання • Під час вибірки наступного слова • В такті запису • Запис результату • в такті виконання
Пам’ять • Спільний простір адрес • Регістри • Регістри периферії • RAM • FLASH • Таблиця переривань • Максимальний розмір 128K • Код і дані де завгодно
Регістри керування периферією • Відображені на пам’ять • Кожен пристрій має визначені адреси керування • В документації визначені константи для позначення адрес • Константи використовують для прямоъ адресації • Приклади • TACTL – 0x0160 • TAR – 0x0170 • … • MOV.W 200h &TAR
Набір інструкцій • Всі інструкції працюють із всіма режимами адресації • Безпосередня адресація не може бути джерелом • Є варіанти команд із словом і з байтом .B .W • Команди • Два операнди • MOV,ADD,XOR,BIC,BIS,BIT,CMP,AND,SUB,ADDC, SUBC,DADD • 1 операнд • RRC,RRA,SWPB,CALL,RETI,SXT • перехід • JZ,JNZ,JC,JNC,JN,JGE,JL,JMP • Всього 27 інструкцій і 24 емульовані інструкції
Переваги фон-Неймановської архітектури • Спільна пам’ять для команд і даних • Менше шин • Простіша конструкція • Менший набір команд • Простіше програмування • Менше енергоспоживання • “Самозмінювані” програми • Недоліки • Виконання не завжди можливо паралельно із читанням-записом • Більше тактів (повільніше)
Переривання • Масковані і немасковані • Масковані – 32 вектора у флеш • Більший номер – вищий пріоритет • Окремий обробник для кожного вектора • Немасковані – дозволяються окремо • Найвищий пріоритет • Біти NMIIE, ACCVIE, OFIE • Прапорці NMIFG, ACCVIFG, OFIFG • Один обробник • Дозволяються – забороняються • Біт GIE
Тактові генератори • 3-4 тактових генератори • VLO (Very low Power) • До 20КГц • DCO (Digitally Controlled Oscillator) • 0.1-25 МГц • LFXT1 (low-high frequency external) • Кварц 32кГц-25МГц • Можуть тактувати різні системні годинники
Вихідні сигнали системного годинника • ACLK (Auxiliary clock) • VLO, LFXT1 • Опорні сигнали периферії • MCLK (Main Clock) • VLO, LFXT1,DCO • Тактування процесора • SMCLK (Sub-Main Clock) • VLO, LFXT1,DCO • Тактування периферії • Всі сигнали можна ділити на • 1,2,4,8
Керування системними годинниками • Регістри • DCOCTL – керуваннячастотою DCO • BCSCTL1, BCSCTL2, BCSCTL3 • ввімкненя/вимкнення різних генераторів • Точне встановлення частоти • Підключення тактових генераторів до вихідних сигналів • Ділення частоти вихідних сигналів • IE1,IFG1 – переривання по збою генератора • IE1,IFG1 – дозвіл і прапорець переривання • Калібровочні константи • 1,8,15 МГц • MOV.B &CALBC1_1MHZ,&BCSCTL1 • MOV.B &CALDCO_1MHZ,&DCOCTL
Запис флеш-пам’яті • 2 області flash • Інформаційна і головна • Сегменти 64 і 512 байтів • Запис • Розблокування запису • Встановлення частоти тактового генератора • Очистка • Лише сегментами • Запис • Окремі байти • Блочний запис
Периферія • Цифровий ввід-вивід • Порти вводу-виводу • Таймери • TimerA,TimerB,TimerD,WDT • Компаратор • АЦП • 10,12,16 біт • Послідовні шини • SPI,UART,I2C • ЖК індикатори • Сенсори • температура • DMA
GPIO • 1-8 портів по 8 біт • Вибір функції портів • Підключення виводів до пристроїв • Запис 0,1 • Читання 0,1 з порта • Переривання по зміні рівня • Ввімкнення підтягуючих резисторів • Генерація коливань для вимірювання ємності • Керування за допомогою регістрів • PxDIR – ввід чи вивід • PxOUT – вивід • PxREN – ввімкнення підтягуючих резисторів • PxSEL,PxSEL2 – вибір функцій • CAPD – вибір компаратора • AD10AE – вибір АЦП
Вибір функції портів • PxSEL,PxSEL2 – вибір функцій • 0,0 – GPIO • 1,0 – друга фуекція • 1,1 – третя функція • CAPD – вибір компаратора • 1 - компаратор • AD10AE – вибір АЦП • 1 - АЦП
Ввід-вивід • Напрямок вводу-виводу PxDIR • 0 – ввід , 1 –вивід • Вивід даних PxOUT • 0 – низький рівень, 1 – високий рівень • Введення даних PxIN • 0 – низький рівень, 1 – високий рівень • Підтягуючий резистор • PxREN – дозвіл-заборона • PxOUT – дозвіл-заборона • Переривання • PxIFG – прапорець переривання • PxIE – дозвіл-заборона переривання • PxIES – по фронту чи по спаду
TimerA • 1-2Таймера • Лічильник імпульсів • 16 розрядів • Різні джерела вводу • Захоплення • Тактові генератори • Подільник частоти • Різні режими підрахунку і виводу • Порівняння • ШІМ • Переривання • По переповненню • По порівнянню • По захопленню
Лічильник • Кількість вхідних імпульсів • В регістрі TAR • Обнулити таймер TACLR=1 • Старт таймера TACCR0=1 • Виібір вхідних сигналів • Режим таймера біти MC • 00 – зупинено • 01 – Up mode доССR0 • 10 - Неперервний • 11 – up/down
Вибір вхідних сигналів • Підрахунок імпульсів • Тактові генератори ACLK, SMCLK • Зовнішні сигнали з виводів TACLK INCLK • Вибір бітами TASSELx регістра TACTL • Подільник частоти вхідних сигналів • Біти IDx регістра TACTL
Захоплення • Запис поточного значення таймера в регістр, коли вхідний сигнал захоплення змінюється • Вхід CCIxA і CCIxB • Регістри TACCR1, TACCR2 • Генерується переривання по захопленню • Біт COV коли регістр не зчитано до захоплення • Режим вмикається бітом CAP = 1 • Джерела захоплення • Вхідні сигнали • Компаратор
Порівняння • Зміна вихідних сигналів коли таймер дорахував до значення в регістрі • Запускається при CAP=0 • Змінюється внутрішній сигнал • EQU0 для регістраССR0 • EQU1 для регістраССR1 • Змінюється зовнішній сигнал • OUT0 відповідно EQU0 • OUT1 відповідно EQU1 • Зовнішні сигнали вибираються функцією порта • Вихідні сигнали відповідають бітам OUTMOD • 0 – зміна виходу зміною бітів OUTx • 2 - Toggle/Reset по ССR1,2/CCR0 • 4 – перемикання при зміні сигналу • …
Переривання таймера • По переповненню • TAIFG і порівнянню CCR1 CCR2 • По порівннянню • CCR0 • Біти вибору джерела • Біти TAIV • 10 – переповнення • 4 – ССR2 • 2- CCR1
Генерація часових інтервалів • Неперевний режим • Запис періоду в регістр • CCR0 • CCR1 • CCR2 • При порівнянні • Збільшуєм регістр на величину інтервала • T0,t1,t2
Генерація ШІМ • Період - в регістр ССR0 • Рівень в ССR1 • Режим 7 • При перериванні CCR0 • Зміна рівня в CCR1
Компаратор • Ввімкнення • Компаратора Біт CAON • Опорна напруга • Біти CARSEL=0 ввымкнена на + компатора • CAREF • 00 – зовнішня • 01 – 0.25Vcc • 10 -0.5 Vcc • 11 – 0.55 в • Входи • Біти P2CA0-P2CA2 ввімкнення входів CA1-CA7 • Вихід • Біт CAOUT • Захоплення таймера • Переривання • По зміні рівня на виході
АЦП • SAR перетворювач • 10 -12 біт • До 200 кГц дискретизація • Запуск таймером чи програмно • Опорна напруга • Внутрішня 1.5 В 2.5 В • Зовнішня • Входи • Зовнішні • Сенсори • Тактування • Різні генератори • Різні режими перетворення • Одиночний • Послідовний перебір каналів • Блочний
Вибір входів • Аналоговий сигнал • Біти ADC10AEx • Опорна напруга • Біти REF2_5V=1/0 • Зовнішя опорна напруга SREF0 і SREF1 • Виведення внутрішньої напруги REFOUT=1/0 • Тактовий генератор • Внутрішній генератор • SMCLK, MCLK, ACLK • По фронту сигнала SHI • Вихідний сигнал Таймер А • Подільник частоти ADC10DIVx
Запуск перетворення • Запуск • ADC10ON=1 ввімкнення • SAMPCON = 1 статр перетворення • Третій стан SAMPCON = 0 • Біти CONSEQx – режим перетворення • 00 -один канал однократне • 01 –набір каналів • 10 –періодичне один канал • 11 – періодичне багато каналів • Результат • ADC10MEM • ADC10IFG встановлено • Генерація переривання • Блочний режим перетворення