- •1 Ответы на контрольные вопросы заданий и их краткое содержание
- •Тема 1.1. Что такое микроконтроллер.
- •Тема 1.2.Схемотехника современных микроконтроллеров
- •Тема 1.3.Обзор языков программирования для микроконтроллеров
- •Тема 1.4.Среды программирования
- •Тема 1.5. Отладка и запуск программы для мк
- •Тема 2.1.Виды команд в процессоре. Ортогональная архитектура.
- •Тема 2.2.Адресное пространство мк msp430
- •Тема 2.3. Внутренняя структура mk msp430
- •Тема 3.1.Битовые операции
- •Тема 3.2. Аналогово-цифровой преобразователь
- •2 Описание выполнения учебного проекта
- •Программная часть
- •3 Результат выполнения учебного проекта
Тема 1.4.Среды программирования
Первое, что стоит освоить в микроконтроллере — это работа с портами. Давайте рассмотрим небольшой пример.
#include "msp430f2274.h"
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR &= ~BIT2;
P1REN |= BIT2;
P1DIR |= BIT1 + BIT0;
while(true)
{
if(P1IN & BIT2)
{
P1OUT |= BIT1;
P1OUT &= ~BIT0;
}
else
{
P1OUT |= BIT0;
P1OUT &= ~BIT1;
}
}
}
PxDIR отвечает за направление порта 1. Когда конкретный бит данного регистра установлен в 0, соответствующий пин работает на вход. И наоборот, если соответствующий бит установлена в 1, то пин работает на выход. В примере фигурируют 3 пина: P1.2 — кнопка, P1.0 — красный светодиод, P1.1 — зеленый светодиод.
PxREN включает внутренний резистор подтяжки. Кнопка замыкает пин на землю, и, соответственно, переводит его в состояние нуля. Когда кнопка не нажата пин ни к чему не подключен и для обеспечения логической единицы на нём требуется подключить его через резистор к питанию, что и делает регистр P1REN.
PxIN и PxOUT содержат в себе состояние пинов порта. Устанавливая ноль или единицу в регистр PxOUT мы меняем напряжение на лапке микроконтроллера, тем самым включая и выключая светодиод. Читая конкретный бит из регистра PxIN мы получаем логический сигнал, который сейчас подан на пин.
PxSEL выбирает функцию пина. В datasheet на изображении микроконтроллера функции обычно указывают через знак «/».
Константы BIT0..BITF содержатся в файле msp430f2274.h и представляют собой 16-ти разрядные слова в заданном разряде которых содержится 1, все остальные разряды содержат 0.
Интегрированная среда разработки μVision IDE
Интегрированная среда разработки (Integrated Development Environment) — μVision IDE — фирмы Keil сочетает в себе уникальные возможности: управление проектами, создание отдельных программ, ре- дактирование текста программы, отладку программ, позволяет непосредственно вызывать симулятор или внутрисхемный эмулятор. Редактор и отладчик объединены в одно приложение, что упрощает процесс разработки проекта. μVision проста в использовании.
Код для мигалки:
#include <msp430g2211.h> void main(void) { unsigned int count; WDTCTL = WDTPW + WDTHOLD; P1OUT = 0; D1DIR = BIT0; for (;;) { P1OUT |= BIT0; for (count = 0; count < 60000; count++); P1OUT &= ~BIT0; for (count = 0; count < 60000; count++); } } // main
Тема 1.5. Отладка и запуск программы для мк
1.Создали в рабочей директории новый проект. Назвали его Test2.
Создали исходный файл проекта. Текст программы приводится ниже.
unsigned int A,B,C,D,E,F;
void main(void)
{
unsigned int i;
A=0X000F;
B=0X00F0;
C=0X0F00;
i=0;
while(i<256)
{
D=A&i;
E=B&i;
F=C^i;
i=i+1;
}
}
Добавили файлы в проект. Проект скомпилировался без ошибок, загрузили программу в ЦСП. Выполнили следующую команду View Þ Registers Þ CPU Registers. С помощью команды File Þ Open…( тип файла – Memory Map Files (*.map)) откройли файл Test2.map (он находится в рабочей директории проекта, в папке Debug). В данном файле нашли место, где указано расположение внутренних переменных в области памяти данных.
2. Создали в рабочей директории новый проект. Назвали его Test22. Создали исходный файл проекта.
#include “Test22.h”
int inp_sig[SIZE];
int out_sig[SIZE];
int buff[SIZE];
int gain=KOFF;
int offset=OFF;
void main()
{
unsigned int i;
while(1)
{
puts(” программа работает\n”);
for(i=0;i<=SIZE;i++)
{
out_sig[i]=(gain*inp_sig[i])+offset;
}
}
}
Создали вспомогательный файл (файл включений), в котором будут задаваться размеры массивов переменных, значения коэффициента усиления и величины постоянного смещения.
#define KOFF 10
#define OFF 200
#define SIZE 100
Сохранили этот файл в рабочей директории проекта под именем Test22.h. Запустили проект на компиляцию. Проект скомпилировался без ошибок, загрузите программу в ЦСП. Перейдите к программной метке «main». Вызовите окно просмотра переменных Watch Window, и добавьте в него переменные gain и offset.
Мы научимся подключать внешние входные данные к нашей программе. Запустить программу на выполнение.
