Все выпуски  

Анонсы журнала "Лаборатория электроники и программирования" Новые статьи 24 номера


7. Программирование на языке С++ на примере микроконтроллера ATmega328.  Мигание светодиодом определенное число раз.

                Задача «мигнуть» несколько раз светодиодом достаточно часто встречается при создании различных устройств. Рассмотрим пример программы, который позволяет задавать количество «миганий», длительность свечения светодиода и паузы. Использование прерываний аппаратного таймера микроконтроллера делает программу эффективно работающей.

                Пример программы (скетча) приведен для «Arduino IDE» [2].

Для компиляции скетча необходимо подключить следующие библиотеки:

«MsTimer2.h».

// зададим параметры мигания

  Led_state_on_time = 500; // время свечения светодиода, мс

  Led_state_off_time = 500; // время паузы, мс

  Led_blinks_times = 6; // количество миганий светодиода

 

8. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с UART. Прием данных. Анализ аппаратных флагов ошибок. 

                Несколько примеров приема данных по UART были рассмотрены в журнале №16 (статья 1).  В данной статье рассматривается пример анализа аппаратных флагов ошибок. Встроенный в микроконтроллер UART способен определять следующие ошибки при приеме:

- перезапись принятых данных (если принятый байт не был считан до прихода следующего байта, соответственно он теряется)

- ошибка кадра

- ошибка паритета

- наличие «шума»

                Во всех этих случаях прием данных может быть неправильным, поэтому необходимо анализировать соответствующие флаги в программе. Флаги находятся в регистре «SR». При считывании регистра «SR» и «DR» флаги сбрасываются, поэтому для их последующего анализа сделаем копирование регистра «SR» во вспомогательную переменную.

Пример программы будет даваться для компилятора «CooCox®» [4].

 

 

9. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с UART. Прием данных. Синтаксический анализ данных (парсинг). 

Синтаксический анализ входных данных требуется при работе с различными коммуникационными устройствами, чтобы выделить определенные данные для последующей их обработки. Рассмотрим пример программы управления светодиодами. Команда будет состоять из трех полей, разделенных символом ‘_’. В первом поле будет присутствовать слово «led», во втором – номер светодиода, в третьем – операция включения или выключения.

Для написания синтаксического анализатора наиболее подходит строковая функция «strtok» [15]. Она позволяет выделить в тексте лексемы, ограниченные заданными разделителями. Разделители могут быть разными.

                Для возможности набирать команды в любом регистре, используется функция перевода строки в нижний регистр «tolower» [15].

                Для сравнения выделенных лексем с нужными используем функцию сравнения строк «strncmp» [15].

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

Результат работы программы (в терминальной программе). Команды выделены черным, ответ - зеленым:

UART_RX_INT_Parser:

led_1_on

device_name - led

device_num - 1

device_funk - on

lED_2_ON

device_name - led

device_num - 2

device_funk - on

led_3_ON

device_name - led

device_num - 3

device_funk - on

led_4_on

device_name - led

device_num - 4

device_funk - on

lef_1_on

device_name - lef

device_num - 1

device_funk - on

Error 1

http://journal.electroniclab.ru/journal_content_024.htm 


В избранное