Download - Мікроконтролери MSP430
Мікроконтролери 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
Процесор ALU 16 розрядів Регістри загального призначення
16 16 розрядних Спільна пам’ять для програм і
даних Фон-Нейманівська архітектура Єдиний простір адрес
Шина Адреси Даних
Проста архітектура
Особливості регістрів Всі регістри загального призначення
Всі можна записувати – читати – адресувати 16 розрядів можна використовувати як 8
розрядів Деякі мають спеціальні функції
R0 – PC програмний лічильник R1 – SP вказівник стеку R2 – SR регістр стану і генератор констант CG1 R3 - генератор констант CG2 R4-R15 – звичайні регістри
Регістри для адресації пам’яті Адреси команд кратні 2
Останній біт завжди 0 PC – адреса поточної виконуваної команди
При виконанні збільшується на 2 Запис у регістр – перехід на іншу інструкцію
SP – адреса стека Адреса вершини стека записується в регістр PUSH A SP=SP-2; *SP=A POP A A=*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:0 MOV 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 встановлено Генерація переривання Блочний режим перетворення
Режими енергозбереження