Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РПЗ.docx
Скачиваний:
151
Добавлен:
23.03.2016
Размер:
8.69 Mб
Скачать

3.3 Управляющая программа микроконтроллера.

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

  1. Контроль функционирования модуля управления.

  2. Приём сигналов с ПК через его LPT-порт.

  3. Управление драйверами, по построенной ранее математической модели.

  4. Обработка сигналов с концевых переключателей.

  5. Возможность настройки уровней ШИМ для соответствующих уровней токов.

Общую блок схему можно посмотреть на одноимённом чертеже. Программа писалась в компиляторе AVR Studio 4 на языке Assembler. (см рис 3.3.1) Используя этот язык можно составить более оптимизированный код и более быстродействующий, по сравнению с быстродействием того же алгоритма, написанного на С.

Рис 3.3.1

Кроме того AVR Studio 4 – отличный симулятор работы микроконтроллера, в нём можно сразу же после написания кода, проверить правильность его работы. Исходный код программы находиться в одноимённом приложении. Он представляет собой 880 строчек кода. После преобразования в 16-тиричный, код будет иметь размер 5336 байт памяти (или 5,21 КБ). Далее его загружаем с помощью программы PonyProg2000 (рис 3.3.2) во Флеш-память микроконтроллера. (Флеш-память (англ. flash memory) — разновидность твердотельной полупроводниковой энергонезависимой перезаписываемой памяти (ПППЗУ).)

Рис 3.3.2

Микроконтроллер ATMega128 имеет 128 КБ флеш-памяти для программ (видно из названия), поэтому написанная программа займёт всего 4,1% от всего объёма памяти.

3.3.1 Контроль функционирования модуля управления.

После сборки модуля управления требуется провести контроль функционирования. Для этого решено было предусмотреть автоматический контроль по программе, записанной в МК. ATMega128 имеет 64 вывода, из-за чего существует достаточно большая вероятность того что хотя бы один вывод соприкасается с землёй, или с другим выводом, что может привести к перегоранию полевых транзисторов на соответствующем пине. Поэтому при запуске МК, срабатывает прерывание RESET, по которому запускается подпрограмма контроля функционирования. Эта подпрограмма не изображена на чертеже, поскольку слишком проста. Работа программы:

  1. Все выводы портов делаются входами, c подтяжкой pull-up (подтяжка 40 кОм на +5 вольт напряжения питания). PORT@0.@1 = 1; DDR@0.@1 = 0;

  1. Если вывод не соединён с землёй, значит его PIN@0.@1 должен равняться единице. Поэтому дальше запускаем проверку всех битов регистров PIN. Если хотя бы один равен нулю, перезагружаем микроконтроллер.

  1. Далее делаем вывод выходом, устанавливаем на его выходе напряжение 0 вольт, логический ноль: PORT@0.@1 = 0; DDR@0.@1 = 1; Два соседних выхода также как в пункте 2 проверяем на контакт с землёй. В случае контакта, также перезагружаем микроконтроллер.

  1. Повторяем пункт 3 для всех выводов.

После выше описанной программной проверки должны загореться 2 светодиода, сигнализирующие о том, что модуль управления функционально исправлен. Нет необходимости проверять наличие ШИМ на соответствующих выводах, поскольку их неисправность таймеров мало вероятна. И если они всё таки неисправны, то это будет видно при настройки уровней ШИМ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]