Программирование UART LaunchPad

Платформа LaunchPad не смотря на свою цену, обладает встроенным UART — универсальный асинхронный приёмно/передатчик. LaunchPad поддерживает два вида UART: HW UART — встроенный в платформу (аппаратный), поддерживает чип MSP430G2553 и SW UART — поддерживает чип MSP430G2452 (программный UART), который поставляется с платформой. Одно из проблем при программирование UART платформы LaunchPad, является правильная установка джамперов.

Для большего понимания о назначении UART, скажу, что данный универсальный асинхронный приёмно/передатчик служит для обмена информацией между компьютером и микроконтроллером в реальном времени. Прежде чем рассмотреть пример, я хочу остановится о настройке платформы LaunchPad.

Настройка платформы LaunchPad под UART

Для того чтобы понять как управлять микроконтроллером в реальном времени через компьютер используя , необходимо настроить плату.

Настройка платы осуществляется в зависимости от выбранного микроконтроллера. Если выбрать микроконтроллер MSP430G2452, который имеет встроенный UART, то настройку платы осуществлять не нужно. Необходимо только убедится, что пять джампером (переключателей), которые находятся над микроконтроллером выставлены вертикально.

launch-pad-uart-msp430G24521

При установке микроконтроллера MSP430G245, необходимо изменить расположение двух первых джамперов, их необходимо поставить горизонтально, как показано на изображении ниже.

uart-launchpad

Замена джамперов важная часть для работы с UART. Необходимо помнить, что микроконтроллер MSP430G2553 поддерживает аппаратный UART в отличие от MSP430G2452. Обратите внимание на небольшие изображения на платформе над надписями SW UART (программный) и HW UART (аппаратный).

Программирование микроконтроллера

Для того чтобы проверить работу UART напишем программу. Программа реализована в среде Energia. Коротко о программе: основной задачей программы — это управление встроенными (пользовательскими) светодиодами, которые присутствуют на LaunchPad. Управление микроконтроллера в реальном времени будет осуществляется через Serial Monitor. Для его вызова зайдите Tools — Serial Monitor. В верхней строке окна Serial Monitor будут отправлены команды для включения или отключения красного и зеленого светодиода.

int const ledGreen=GREEN_LED;   // определяем константы зеленного светодиода
int const ledRed=RED_LED;       // определяем константы красного светодиода

int incomingByte = 0;           // переменная для хранения вводимых данных

void setup(){                  

Serial.begin(9600);             // определения скорости передачи данных
pinMode(ledGreen, OUTPUT);      // установка режима для светодиода (З)
pinMode(ledRed, OUTPUT);        // установка режима для светодиода (К)

}

void loop(){

incomingByte = int(Serial.read()-48);  //считаем вводимый символ.
/* для того чтобы распознать какой символ введен, из его ASCII кода
   вычитается 48. Например, код 0 по ASCII равен 48. 48-48 = 0,
   если вводим 1 то ASCII код равен 49, отсюда 49-48 =1.
*/

if (incomingByte != -49){  // по умолчанию в Serial Monitor выводится -49
Serial.print("->");        // для того чтобы оно постоянно не мелькало, делаем условие (не обязательно)
Serial.println(incomingByte, DEC);  // если введено число, то оно выводится на экран Serial Monitor
}

// Узнаем, какое число было введено и в зависимости от этого изменяем параметры
// светодиода.
// 0 - выкл. зеленый, 1 - вкл. зеленый,
// 2 - выкл. красный, 3 - вкл. красный.
switch (incomingByte){
  case 0 : digitalWrite(ledGreen, LOW);  // тушим светодиод (З)
           break;
  case 1 : digitalWrite(ledGreen, HIGH);  //зажигаем светодиод (З)
           break;
  case 2 : digitalWrite(ledRed, LOW);  // тушим светодиод (К)
           break;
  case 3 : digitalWrite(ledRed, HIGH); //зажигаем светодиод (К)
           break;
}
// устанавливаем задержку 1 миллисекунду
delay(100);
}

Прошиваем микроконтроллер и тестируем работу UART. Не стоит забывать, что работа с UART осуществляется через виртуальный COM-порт.