Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / ТСАиУ.doc
Скачиваний:
57
Добавлен:
22.02.2014
Размер:
1.28 Mб
Скачать

4.3 Создание управляющей программы контроллера.

Контроллер управляет объектом по программе, записанной в его памяти. Создание управляющей программы контроллера состоит из нескольких этапов. Алгоритм создания управляющей программы приведён на рис. 4.8. Рассмотрим этапы создания программы в порядке их выполнения.

На первом этапе с помощью средств автоматизации (CodeVisionAVR) создаётся шаблон программы, который включает в себя:

библиотеки, описывающие микроконтроллер, стандартные функции ввода-вывода, функции прерывания и другие действия контроллера,

  • настройки портов параллельного и последовательного ввода-вывода, таймеров-счётчиков, системы внешних прерываний,

  • приглашения - //Declare Your Global Variables here (объявите свои глобальные переменные здесь), // Declare Your Local Variables here (объявите свои локальные переменные здесь), //Place Your Code here (поместите свою программу здесь).

После заполнения всех диалоговых окон необходимой информацией нажимаем клавишу Generate и получаем шаблон программы с начальными установками регистров контроллера, некоторыми обслуживающими программами и указаниями мест (Place your code here ), где следует поместить содержательную часть программы, написанную на языке С, которая должна отобразить реальный алгоритм работы контроллера в штатном режиме и в режимах прерываний.

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

Программа-компилятор языка Си для микроконтроллеров AVR

Рис.4.8. Алгоритм создания, отладки и записи программы управления.

В большом количестве оригинальных программ используется ряд стандартных фрагментов, обеспечивающих выполнение основных функций управления :

  • фрагменты, определяющие типы констант и переменных и места их хранения в памяти контроллера,

  • фрагменты ввода-вывода информации через параллельные и последовательные порты,

  • фрагменты программ выполнения арифметических действий с различными типами чисел,

  • фрагменты программ выполнения логических операций,

  • фрагменты выполнения программ по сигналам прерываний.

Этот набор фрагментов программ в той или иной комбинации позволяет создать управляющую программу контроллера. Однако при изучении работы контроллера не следует писать тестовую программу, состоящую из полного набора фрагментов из-за большой вероятности ошибок программирования, которые будет трудно исправить в процессе отладки. Лучше всего осваивать такие фрагменты по одному или по два и только по приобретении некоторого опыта переходить к более длинным текстам. Более подробно такие фрагменты программ будут рассмотрены далее в главе 5.

Переходим теперь ко второму этапу – компиляции программы.

После написания текста программа должна быть скомпилирована. Для этого в меню команд выбирают Project \ Compile File или на панели инструментов (рис.4.9) нажимают кнопку Compile the Current Source Files.

Compile the Current Source Files.

Make the main Project file

Run the debugger

Рис. 4.9 Панель инструментов генератора программ CodeVisionAVR

После выполнения компиляции на экране появляется сообщение о результатах работы и информация о синтаксических ошибках. Ошибки необходимо исправить, а текст программы вновь направить на компиляцию. В результате будет получен файл на языке ассемблера с расширением *.asm, который используется в дальнейшем.

Ассемблирование программы

Полученный в результате компиляции файл поступает в компилятор языка ассемблера AVR Assembler for Windows – wavrasm. Эта программа может быть вызвана из главного меню, куда затем командой File \ Open загружается полученный ранее файл с расширением *.asm и ассемблируется командой Assemble. В результате будут созданы файлы с различными расширениями, из которых нам понадобятся файлы с расширением *.obj и возможно *.cof для отладки программы в среде симулятора AVRStudio3 или AVRStudio4 и с расширением *.hex – для записи отлаженной программы во Flash-память контроллера.

Этот же результат может быть получен и из программы CodeVision с помощью кнопки Make the main Project file на панели инструментов. Для этого предварительно в меню выбирается следующая последовательность команд Project \ Configure \ C Compiler \ File Output Format(s) и определяется требуемый формат.

После успешного ассемблирования можно запустить файл на отладку с помощью кнопки Run the debugger на панели инструментов CodeVision.

Работа в среде отладчика программ – симулятора AVRStudio.

После нажатия кнопки Run the debugger на панели инструментов CodeVision появляется меню Simulator Options, где требуется заполнить окна Device и Frequency, и после нажатия кнопки ОК попадаем в программу AVRStudio [20]. Используя соответствующие кнопки панели инструментов, вызываем на экран окна Register Window, Memory Window, IO Window, где мы будем наблюдать процесс выполнения программы. Для этого переведём курсор на начало бесконечного цикла while (1) и клавишей F9 установим точку прерывания выполнения программы. После этого запускаем программу на выполнение командой Debug \ Go. Часть программы до точки останова будет выполнена. Если в процессе выполнения программа зависает, то вывести её из этого состояния можно командой Debug \ Break. Дальнейшее выполнение программы проведём в пошаговом режиме клавишей F11. Клавиши F9 и F11 продублированы на панели инструментов симулятора. Сигнал внешнего прерывания генерируется изменением значения соответствующего бита порта D (INT0 – PD2, INT1 – PD3). При изменении значения бита на противоположное между ними должен быть сделан хотя бы один шаг выполнения программы. Вид экрана с открытыми окнами представлен на рис. 4.9. Процесс выполнения программы отображается на экране на языке ассемблера. В целях расширения возможностей процесса отладки разрешается изменять состояния регистров и флажков статуса отдельных устройств, таких, например, как портов, таймеров, ячеек памяти и других. Для вызова интересующего нас объекта в редактор следует кликнуть мышью на нем два раза. В изображениях регистров портов, таймеров, блоков прерываний флажок с галочкой соответствует единице, а пустой – нулю.

После окончания отладки файл с расширением *.hex записывается во Flash-память контроллера с помощью программы PonyProg.