271 likes | 607 Views
Лекція 1 2 Судаков О.О, Радченко С.П. « Сучасна мікропроцесорна техніка ». Програмування мікроконтролерів MSP430. Особливост і програмування MSP430. Середовища створення програм IAR Embedded Workbench Energia ( аналог Aduino) Бібл іотеки С,Ассемблер Програматор MSP-EXP430G2 Launchpad
E N D
Лекція 12 Судаков О.О, Радченко С.П. «Сучасна мікропроцесорна техніка» Програмування мікроконтролерів MSP430
Особливості програмування MSP430 • Середовища створення програм • IAR Embedded Workbench • Energia (аналог Aduino) • Бібліотеки • С,Ассемблер • Програматор • MSP-EXP430G2 Launchpad • Симуляція • Симуляція в схемі • Симуляція в Proteus • Програмування • Процесор • GPIO • Таймер • Компаратор • АЦП
IAR Workbench • Створити WORKSPACE • Вміст для проектів • MENU->New->Workspace • Створити проект • Project->Create New Project • Одна програма • Вибираємо мову програмування • Вибираємо мікроконтролер • Project->Options->General->Device • Редагуємо файли • Симулюємо
Плата MSP430 launchpad • MSP430G2553 • MSP430G2553 • MSP430F16x • 2 світлодіоди • 2 кнопки • Роз’єми • Емуляція в схемі • USB
Програмування GPIO • Як правило 2 порта • P1,P2 • За замовченням виводи GPIO • Потрібні регістри • P1DIR,P2DIR – ввід чи вивід • P1OUT, P2OUT – вивід • P1IN, P2IN – ввід • P1REN, P2REN-підтягуючий резистор • P1OUT, P2OUT – куди підтягувати • P1IE, P2IE – дозвіл переривань • P1IES, P2IES – по фронту чи спаду • P1IFG, P2IFG – прапоці переривань • Процесор повинен «спати» для енергоефективності
Кнопка і світлодіод – переривання
Тактові генератори (BSC+) • Ввімкнення і вимкнення • DCOCTL, BCSCTL1, BCSCTL2, BCSCTL3 • Зміна частоти • Подільник частоти • DCOCTL, BCSCTL1, BCSCTL2, BCSCTL3 • Затримки циклом • Виконувати пустий цикл • Не ефективно • Генерація вихідних сигналів • регістри P1SEL,P2SEL • Приєднання генератора до виходу
Приклад роботи з генераторами • #include "msp430g2553.h" • int main( void ) • { • // Stop watchdog timer to prevent time out reset • WDTCTL = WDTPW + WDTHOLD; • P1DIR=0xff; • DCOCTL=CALDCO_1MHZ; // MCLK = DCO 1MHz • BCSCTL1=CALBC1_1MHZ+DIVA_3; //ACLK=XLF1/8 • BCSCTL1+=DIVS_3; // SMCLK=DCO/8 • P1SEL |= 0x11; // P1.0,4 ACLK, SMCLK output • while(1){ • volatile unsigned int i =50000; //5*10^4 • P1OUT ^= BIT6; • while(i--); • } • }
Таймер • Затримки • Запустити таймер • Почекати поки дорахує • Обробити переривання • Генерація сигналів • Різної частоти • ШІМ • Записати необхідні значення в регістри • Вимірювання часу і частоти • Захоплення від компаратора • Час між двома захопленими значеннями • Послідовні протоколи • UART • SPI • I2C
Генерація часових інтервалів і частот • Застосувати неперервний режим і порівняння • Низька частота – період таймера • Вищі частоти регістр CCR0, ССR1,CCR2 • Під час обробки переривань збільшують регістри
Приклад – чотири частоти 1 таймер
Генерація вихідних сигналів • Дорахували до значення в регістрі • Змінився вихідний сигнал • Декілька режимів • Вихідний сигнал • Приєднано до виводів регістр PxSEL1 Режими вихідних сигналів ССR1/CCR0 Reset/Set Set/Reset Toggle Set
Генерація вихідного сигналу Длякоректної генерації частоти Необхідно добавити обробку переривання CCR1+=32768
Генерація ШІМ • Період • Тактовим генератором • ССR0 • Скважність • CCR0,CCR1,CCR2
Передавач UART • Перадача побайтна • Додаэться стартовий і стоповий біт • Запускається таймер • Переривання генерується кожен бітовий інтервал • Перемкнути виві вверх, або вниз в залежності від біта • В обробнику переривання зсув байта на 1 біт вліво
Вимірювання частоти • Рахуємо кількість імпульсів одної частоти за декілька періодів іншої частоти • RC генератор – ВЧ не стабільний • Кварцевий генератор –НЧ стабільний • Запам’ятовуємо значення • Масштабуємо частоту • Захоплюємо 2 рази по фронту кварцового генератора • 1 Таймер на UART • Він же для захоплення • Обережно race condition!
АЦП • Ввімкнути • Встановити опорну напругу • Встановити час sample and hold • Створити обробник переривань • Запустити перетворення • Почекати, поки перетворення закінчиться