Справочник по программированию «Bascom-AVR» (М.Л. Кулиш). Справочник по программированию Bascomavr Создание микропроцессорной системы Теория
Скачать 1.18 Mb.
|
===================================== Справочник по программированию «Bascom-AVR» == Создание микропроцессорной системы Теория На первом этапе создания микропроцессорной системы до начала программирования необходимо решить несколько важных задач: а) разработать план использования ресурсов процессора, определив: какие задачи решаются программными средствами, а какие с помощью внутренних аппаратных средств микроконтроллера. Определив необходимый и достаточный состав внутренних устройств микроконтроллера, производится выбор внешних устройств, с которы- ми будет работать микроконтроллер. Все это, этап разработки электрической схемы микропроцессорного устрой- ства. Именно на этом этапе происходит изучение документации на все применяемые компоненты, определение достаточности их нормируемых и функциональных возможностей для решения поставленной задачи. В круг изу- чаемых устройств входит и процессор, даже при условии, что используемый компилятор обеспечивает «слепую» работу с его периферией; б) выбрать модель процессора, обеспечивающий внутренними ресурсами, разработанный план действий. Кажется, что первая и вторая задачи едины, но тут надо вспомнить о дополнительных требованиях к разрабаты- ваемому устройству, которые могут стать приоритетными – экономичность, напряжение питания, способ про- граммирования (записи программы), возможность перепрограммирования, поддержка компилятором и т.п. Здесь необходимо заложить некоторую избыточность производительности и, особенно, размеров памяти, обусловлен- ную не стопроцентной эффективностью компилированного кода; в) выбрать средство аппаратной отладки, отвечающее задаче, решаемой отлаживаемой программой и ее па- раметрам. Если устройство отладки забирает у системы какие-либо аппаратные или программные ресурсы, то нужно попытаться обойтись без них, или, по крайней мере, использовать их наименьшей степени и в последнюю очередь. Например, порты микроконтроллера, используемые для последовательного программирования, не нужно без крайней необходимости использовать в схеме разрабатываемого устройства; г) провести предварительное моделирование и проверку самых важных алгоритмов обработки данных или управления физическими объектами с использование специализированных программ: “Micro-Cap”, “Mathcad”, “Quick-Basic” и т.п.; д) определить значения требуемой производительности систем ввода-вывода, вычислений, преобразований, реагирования на внешние события. Оценить возможность решения этих задач с необходимой скоростью, напри- мер, путем написания и запуска (даже в отладчике) тестовых программ с интересующими фрагментами; е) программы, управляющие реальными устройствами, особенно вновь применяемыми написать отдельно в виде эскизов. Эскизы включить в состав тестовых программ, проверить и отладить на реальных объектах Время исполнения некоторых типовых операций микроконтроллера AVR на частоте генератора 8 МГц указано в таблице. Приведенные числовые значения приблизительны, так как время исполнения операций во мно- гом зависит от значения операнда. Действие Время исполнение, мкс Сложение и вычитание чисел в формате с плавающей точкой (Single/Double) 20/50 Умножение чисел в формате с плавающей точкой (Single/Double) 50/150 Деление чисел в формате с плавающей точкой (Single/Double) 200/800 Вычисление математической функции в формате (Single/Double) 1000/5000 Считывание (загрузка) 12-16 разр. АЦП (ЦАП) с программ. послед. интерфейсом 20 Считывание (загрузка) 12-16 разр. АЦП (ЦАП) с аппаратным послед. интерф. 10 Считывание (загрузка) 12-16 разр. АЦП (ЦАП) с параллельным интерфейсом. 1 - 2 Опрос клавиатуры в 16 кнопок 50-100 Запись байта (знака) в символьный модуль (4-битном/8-битной режиме) 50/50 Запись символа (изображения или фигуры) в графический модуль 5(200 – 1000) Вывод сообщения длиной 10 символов со скоростью 9.6 Кбод 13 мс (1.1 мс на символ) Формирование и преобразование текстовых строк 10-20 мкс на символ Преобразование числа в формате с плавающей точкой (Single/Double) в строку 200/1000 Тоже в форматированную строку 500/10000 Запись (считывание) четырехбайтового числа в EEPROM с интерфейсом I2C 10000(500) Запись (считывание) четырехбайтового числа в внутреннее EEPROM 20000(10) Измерение напряжения с помощью внутреннего АЦП 100 - 200 Измерение частоты с разрешающей способностью не менее 10 -4 10-500 мс При успешном решении перечисленных задач можно переходить к составлению полной схемы устройства, управляемого микроконтроллером, и разработке рабочей программы. Если окажется, что производительность процессора недостаточна или задача слишком сложна, то следует разделить ее между несколькими процессорами или применить внешние устройства или решит ее иначе, напри- мер, используя микроконтроллер из семейства с более высокой производительностью. ============================================================================= 1 ===================================== Справочник по программированию «Bascom-AVR» == Порядок подключения внешних устройства (приемников и источников управляющих сигналов и данных) к линиям микроконтроллера не имеет значения, если не используются уникальные свойства портов (альтернатив- ные функции). Наличие альтернативных функций портов микроконтроллера, напротив, требует однозначной при- вязки внешних устройств к конкретным выводам процессора. Существует много вариантов использования и внут- ренних аппаратных средств. Ниже в таблице предлагается перечень аппаратных ресурсов микроконтроллера, ко- торые предлагается для решения некоторых стандартных задач. Задача микро- контроллера Рекомендуемые порты Используемые ресурсы Формирование частоты (вари- ант 1) Только порты с функцией вы- хода по совпадению: OC0A, OC0B (Timer0), OC1A, OC1B (Timer1), OC2A, OC2B (Timer2) Таймеры 0, 1 или 2 (имеющийся в используемой модели микроконтроллера) в режиме самозагрузки. Достоинства: широкий диапазон частот и чистый сигнал. Процессор неза- гружен. Формирование частоты (вари- ант 2) Любой Любой таймер, запрограммированный вызывать прерывание каждые полпериода, генерируемой частоты. В прерывании производится инверсия порта. Невозможно формировать час- тоту выше десятков килогерц. Имеется шум периода. Загруз- ка процессора незначительная. Формирование частоты (вари- ант 3) Любой С помощью программ задержки формировать длительности импульса и паузы выходного сигнала. Полная загрузка про- цессора. Этот способ используется в операторе “Sound” Bascom. Недостаток – прерывания портят форму выходного сигнала. Измерение частоты (вари- ант 1) Только порты с функцией входа таймера: T0, T1, T2, T3 Два таймера: один формирует базу времени (интервал счета периодов измеряемой частоты); второй – счетчик числа пе- риодов. В прерывании первого запускается и останавливается второй таймер. В прерывании второго таймера считается число переполнений в программном счетчике. Измерение периода (вариант 1) Только порты с функцией пре- рывания по фронту или спаду: INT0, INT1, ICP Любой таймер запускается или останавливается по спаду измеряемого сигнала. Частота заполнения таймера от Fкв. Производится подсчет длительности любого числа полупе- риодов. Измерение периода (вариант 2) Только порты с функцией входа таймера: T0, T1, T2, T3 Два таймера: один предварительный делитель частоты. Вто- рой счетчик длительности, который запускается или останав- ливается по переполнению таймера 2. Частота заполнения второго таймера от Fкв. Клавиатура из замыкающих кнопок Любой. 8 или 10 линий для 16 кнопок, 12 линий для 32 кнопок Организовать в виде матрицы 4 на 4, 8 на 2 или 8 на 4. Для экономии портов возможно использование шины данных индикатора для опроса клавиатуры. Аналоговая клавиатура из замыкающих кнопок Только порты с функцией входа АЦП: ADC0…ADC7 Организовать в виде схемы резистивной матрицы, в которой замыкание каждой кнопка вызывает появление на входе АЦП уникального уровня напряжения. Пригодно для малокнопоч- ных клавиатур (не более 16 на каждый вход) АЦП с после- довательным интерфейсом Любые. При наличии сигнала готовности порт с функцией прерывания по уровню INT Программный интерфейс SPI или Micro-Wire. Наличие у АЦП сигнала готовности позволяет организовать считывание по прерыванию. Могут потребоваться еще какие-то линии. АЦП с SPI интерфейсом Только порты с функцией MOSI, MISO, SCK Аппаратный интерфейс SPI. Порт SS при этом желательно не использовать (установить «1») ЦАП с после- довательным интерфейсом Любые или порты с функцией MOSI, MISO, SCK Соответственно для программного или аппаратного интер- фейса. В некоторых случаях удается использовать USART, если он не используется по основному назначению Светодиодный 7(14) - сег- ментный ин- дикатор Любые – 8(16) линий данные, остальные для кодирования знакоместа (соответственно двоичного или позиционного) В прерывании с частотой 300 – 1000 Гц производится про- граммой вывод данных в мультиплексном режиме из внут- реннего буфера, в котором формируется код всех сегментов индикатора. Символьный индикатор Любой – 6 линий. Рекомендует- ся использовать 4-разрядный режим и линии Portc Индикатор используется в режиме управления по 4-разр. Шине с побитным управлением портами, подключенными к индикатору. Графический индикатор Два порта: рекомендуется Porta – шина данных, Portc – порт управления Данные пересылаются побайтно, а управление осуществляет- ся побитно. ============================================================================= 2 ===================================== Справочник по программированию «Bascom-AVR» == Практика Проведем разработку микропроцессорной системы поэтапно с подробным комментированием. Кроме во- просов программирования с помощью “Bascom-AVR” рассматриваются технические и организационные вопросы создания программного проекта. В качестве объекта разработки, например, выберем многофункциональные элек- тронные часы со светодиодным индикатором. Этап 1. «Техническое задание». Задача этапа – определение и выработка исходных данных, необходимых для создания программы. Определим главные функциональные характеристики проекта: - основной режим с отображением времени в формате ЧЧММ с мигающей секундной точкой; - установка времени с клавиатуры в режиме редактирования; - сопровождение нажатий клавиатуры звуковым сигналом. Дополнительные функциональные режимы; - режим будильника с остановкой времени срабатывания и звуковым сигналом (желательно мелодичным); - режим таймера (секундомера) с отображением времени в формате ММСС; - цифровая коррекция погрешности хода (цифровая калибровка задающего генератора); - потенциальная возможность измерения и отображения параметров окружающей среды (температуры, влажности, давления), автоматизации обслуживания аккумулятора, регулирование яркости индикатора в зависи- мости от освещенности автоматически. Имеется в виду, что базовые технические и программные решения основ- ных функций не должны препятствовать расширению системы добавлением аппаратных и программных модулей. Основные требования к аппаратному исполнению изделия, определяемые, в том числе, функциональными характеристиками: - минимальное число компонентов; - четырехразрядный семисегментный индикатор. Для упрощения конструкции целесообразно использовать стандартный модуль с мультиплексным управлением. Желательно наличие единичного индикатора секунд; - клавиатура, содержащая не менее четырех замыкающих кнопок; - звуковой индикатор; - система сетевого и автономного питания. Настоящий этап заканчивается, когда определены, данные, необходимые для создания программы. Отсут- ствующие данные при этом вырабатываются и согласовываются. Результатом данного этапа также является, хотя бы, структурная схема подключения внешних устройств к микроконтроллеру и план распределения ресурсов, ко- торый желательно сразу оформлять в виде полей комментариев к программе. На рисунке 1 изображена принципиальная схема разрабатываемой системы, а в заголовке последующего примера программы расписан план использования ресурсов системы. Схема разработана именно с учетом макси- мального использования внутренней периферии микроконтроллера и возможности расширения. Выбор модели микроконтроллера (ATmega8), в первую очередь, обусловлен двумя факторами: - необходимостью в трех таймерах для обслуживания задач подсчета часового времени с тактированием от специального часового кварцевого резонатора (асинхронный режим), формирования временных интервалов ска- нирования клавиатуры и мультиплексного индикатора и формирования звуковых тонов. - наличием аппаратно и программно совместимых старших моделей (ATmega168, ATmega16, ATmega32), позволяющих без труда расширять систему. Этап 2. «Построение скелета программы». Задача этапа – создание драйверов внутренних и внешних устройств и на их основе общей структуры программы микропроцессорной системы. Необходимость начать разработку программы с ее скелета обусловлено последовательным характером ра- боты над программой, то есть, когда последовательно решаются одна задача за другой. Последовательный харак- тер работы подразумевает и последовательную отладку программы. Ведь очевидно, что ошибки будут устраняться быстрее, если каждый вновь созданный программный модуль тут же проверять. Технология написания программ от скелета и является начальным элементов последовательного программирования. Скелет программы, должен обеспечивать функционирование всех устройств и систем, по крайней мере, той части, которые необходимы на начальном этапе разработки программы. Отлаженный скелет программы обеспечивает ввод данных, например, с клавиатуры и вывод данных, например, на индикатор. Он позволяет без применения внешних средств проверять работу вновь добавленных модулей. Следующий далее текст демонстрационной программы, выделен шрифтом Courier. Кроме собственных комментариев в текст добавлены замечания обозначающие назначение, правильный (или рекомендуемый) поря- док расположения частей программы. ============================================================================= 3 ===================================== Справочник по программированию «Bascom-AVR» == Рисунок 1 – Схема электрическая принципиальная электронных часов ПРОГРАММА 1 Заголовок Комментарии, содержащие идентифицирующие сведения о программе: принадлежность изделию, номер версии, дату и место создания, имя автора, его телефоны и местонахождение, версии ком- пилятора, модель процессора, способ отладки (и как это отражено в программе), способ програм- мирования, используемые ресурсы микроконтроллера и все то, что невозможно узнать из после- дующего текста. '------------------------------------------ ' Программа электронных часов "AVR-WATCH" '------------------------------------------ ' Микроконтроллер типа ATMEGA8 '------------------------------------------ ' Программируемые Fuses: ' CKSEL3...CKSEL0 = 1001 - низкочастотный кварцевый резонатор ' CKOPT = 0 - внутренние конденсаторы подключены к кварцевому резонатору ' RSTDISBL = 1 - порт PC6 используется как сброс ' WDTON = 1 - сторожевой таймер разрешен ' SPIEN = 0 - последовательное программирование разрешено ' BOOTSZ1,BOOTSZ0 = 00, BOOTRST=1 - параметры загрузчика ' EESAVE = 1 - НЕ ОЧИЩАТЬ EEPROM при программировании ' BODLEVEL = 1, BODEN = 1 - ПАРАМЕТРЫ СБРОСА ' SUT1 = 1,SUT1 = 0 - ВРЕМЯ СТАРТА '----------------------------------------- ' Используемый ресурсы микроконтроллера: - ' Генератор RC - внутренний 1 МГц, а к TOSC1 and TOSC2 подключен кристалл 32768 Гц ' Timer0 – генератор прерываний с частотой 250 Гц для обслуживания индикатора, клавиатуры ' и других служб реального времени ============================================================================= 4 ===================================== Справочник по программированию «Bascom-AVR» == ' Timer1 – генератор звукового сигнала программируемой частоты ' На выходе PB1 (OC1A) формируется звуковой сигнал в форме меандра ' Timer2 – генератор прерываний с частотой 1 Гц, на основании которого вычисляется пройденное время ' Дополнительно на выходе PB3 (OC2) формируются импульсы длительностью 1 с (0.5 Гц), ' используемые для включения единичного светодиода ' Индикатор: ' Portd выход сегментов, Portc0...Portc3 - код знакоместа (позиционный). Он же порт ' сканирования клавиатуры. Индикатор с общим анодом. Активным уровнем - является "0" ' Четыре кнопки: Port0...Portc3 - код сканирования клавиатуры, Portc4 - линия возврата клавиатуры ' На линию Portc5 от источника питания "+5 В" приходит сигнал "Включение сети" '------------------------------------------ Определить модель микроконтроллера Записать имя файла, определяющего набор (имена) регистров с помощью директивы $Regfile. Если это не сделать, но компилятор использует установки меню Options $regfile = "m8def.dat" 'определить тип микроконтроллера '------------------------------------------ Определение переменных Блок определения переменных оформляется в порядке возрастания их длины: Byte, Word, Integer, Long, Single, Double, String, Array. Переменные типа Bit не имеют смысла, тоже зани- мают один байт и принимают только два значения нуль и не нуль Dim Ndat As Byte 'признак "обновить данные" Dim Ddat As Byte 'признак "обновить индикатор" '--------------------- Dim R_btim As Byte 'счетчик времени звонка '--------------------- Dim Rsec As Byte 'счетчик секунд Dim Rmin As Byte 'счетчик минут Dim Rhour As Byte 'счетчик часов |