Разработка цифрового измерительного устройства с интерфейсом RS-485

Разработка цифрового измерительного устройства на базе ПЛИС QUARTUS II 9.1SP2 WEB EDITION. Схема подключения МК ATMEGA8515. Схема включения буфера RS-485. Расчёт потребляемой мощности. Разработка программного кода для микроконтроллера ATmega8515.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.06.2015
Размер файла 491,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНАЯ ГОСУДАРСТВЕННАЯ БЮДЖЕТНАЯ ОРГАНИЗАЦИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПРИБОРОСТРОЕНИЯ И ИНФОРМАТИКИ

Институт (филиал) ИКБСП специальность 200100

Кафедра КБ-6 «Приборы и информационно-измерительные системы»

Дисциплина «Компьютеризация измерительных устройств»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе на тему:

«Разработка цифрового измерительного устройства с интерфейсом RS-485»

Студент И.А.Спивачук

подпись, дата инициалы и фамилия

Группа Пр1-1101(д) СПФ шифр 110009

Руководитель работы С.А. Канаев

Москва 2015 г.

Содержание

Введение

Задание на курсовую работу

1. Разработка структурной схемы цифрового измерительного устройства

2. Разработка цифрового измерительного устройства на базе ПЛИС QUARTUS II 9.1SP2 WEB EDITION

3. Разработка принципиальной электрической схемы

3.1 Схема питания

3.2 Схема подключения МК ATMEGA8515

3.3 Схема включения буфера RS-485

3.4 Триггер Шмитта

3.5 Включение ПЛИС EPM3256ATC144-10N

4. Расчёт потребляемой мощности

5. Разработка программного кода для микроконтроллера ATmega8515

Заключение

Список использованных источников

Приложение А Листинг программного кода на языке программирования ASSEMBLER для системы сбора данных на базе микроконтроллера ATMEGA8515, с ядром AVR

Задание на курсовую работу

В данной курсовой работе необходимо разработать цифровое измерительное устройство на базе ПЛИС с интерфейсом RS-485.

Параметры целевого устройства имеют вид:

- наименование целевого устройства - счетчик импульсов;

- диапазон измерений - от 1 до 106;

- длительность импульсов от 100 мкс до 1 мс;

- скорость обмена -9600 бит/с;

- базовая ПЛИС - EPM3256ATC144-10N;

- интерфейс - RS-485;

- протокол обмена - Modbus RTU.

Схема сопряжения строится на базе микроконтроллера ATmega8515 фирмы Atmel и буфера RS-485 с гальванической развязкой и схемой грозозащиты.

1 Разработка структурной схемы цифрового измерительного устройства

На рисунке 1.1 представлена структурная схема цифрового измерительного устройства на базе программируемой логической интегральной схемы (ПЛИС)

.

Рисунок 1.1 - Структурная схема цифрового измерительного устройства на базе ПЛИС

Схема строится на базе микроконтроллера ATmega8515 фирмы Atmel и буфера интерфейса RS-485 с гальванической развязкой и схемой грозозащиты. Поддерживаемый протокол обмена - Modbus-RTU. Интерфейсная часть должна обеспечивать связь с внешними устройствами по интерфейсу RS-485 (двухпроводная схема). Программа для микроконтроллера ATmega8515 разрабатывается в среде AVRstudio.

На ПЛИС реализован счетчик внешних событий, работает как обычный суммирующий счетчик. Который подсчитывает количество импульсов поступающих с триггер Шмитта (ТШ). Счет происходит всегда в одном направлении: от минимального значения до максимального. По команде микроконтроллера (МК) производится подсчет количества импульсов. Микроконтроллер считывает содержимое счетчика. По запросу, полученные данные передаются, посредством буфера данных (БФ) с гальванической развязкой, на персональный компьютер (ПК). При включении питания или снижении амплитуды выходного напряжения схемы питания, производится сброс основных цифровых элементов с помощью супервизора питания (СВ). Отладка и программирование ПЛИС производится посредством программатора подключаемого через разъём (JTAG).

Отладка и программирование ПЛИС производится посредством программатора подключаемого через разъём (JTAG). Программирование МК осуществляется внутрисхемным способом, посредством программатора подключаемого через разъем (ISP). Стабилизатор напряжения (СП) предназначен для формирования стабилизированного напряжения 3,3 В, которое необходимо для питания всех компонентов схемы.

2. Моделирование цифрового измерительного устройства на базе ПЛИС в среде Quartus II 9.1sp2 Web Edition

Для разработки цифрового измерительного устройства на базе ПЛИС с интерфейсом RS-485 необходимо использовать ПЛИС фирмы Altera серии MAX3000A. Для этого в программе Quartus II 9.1sp2 Web Edition необходимо создать проект Create a New Project > Next > название проекта > Имя файла > Device family выбираем семейство MAX3000A > берем ПЛИС заданную по индивидуальному заданию, сохраняем, нажав кнопку Finish. После создания проекта необходимо создать графический редактор. Для этого нажимаем File > New > Design File > Block Diagram/Schematic File. Нажимаем ОК. Появилось поле ввода элементов. Для создания символа необходимо два раза кликнуть по рабочему полю, после чего появляется экран Symbol. На рисунке 2.1 изображён пример создания элемента.

Рисунок 2.1 - Пример элемента

Для нестандартных элементов (счетчиков и регистров) создать мегафункции с помощью Mega Wizard Plug-In Manager. Для каждой мегафункции нужно выбрать исходный элемент (LMP_COUNTER для счетчика, LPM_FF для регистра). Настроить параметры в зависимости от элемента (модуль счета, суммирующий или вычитающий, разрядность выходной шины, вход сброса - для счетчика; для регистра - на базе какого триггера строится, разрядность шины, вход сброса). Нажать на Finish для сохранения. Все выбранные элементы необходимо расположить на рабочем столе и соединить так, как показано на рисунке 2.2. Надо также добавить входы и выходы для будущей ПЛИС с помощью стандартных элементов Input и Output. Необходимо выбрать, на базе какой микросхемы будет разработано устройство, для этого Assignments - Device - Device Family - Max3000A - EPM3256ATC144-10N. Далее нужно запустить компилятор для проверки правильности схемы и дальнейшей проверки работоспособности [2]. После компиляции проекта было проведено моделирование схемы частотомера, модель которого представлена на рисунке 2.2.

Работа ПЛИС начинается с установки логического нуля на линии «reset», что обнуляет счетчик D1. Если на входе «enable» появляется логическая 1, то разрешается подсчет импульсов. На вход «impuls» подается импульс от 100 мкс до 1 мс, и счетчик «counter16» производит подсчет импульсов. По заданию задана микросхема EPM3256ATC144-10N, имеющая высокое быстродействие, а также достаточное количество интерфейсных выводов. Схема ПЛИС с расположением выводов представлена на рисунке 2.3.

Рисунок 2.2 - Модель схемы ПЛИС

Рисунок 2.3 - Схема ПЛИС с расположением выводов

В таблице 2.1 приведена схема расположения и назначение выводов микросхемы.

Таблица 2.1 - Назначение выводов ПЛИС

Номер вывода

Обозначение

Назначение

3, 13, 17, 26, 33, 52, 57, 59, 64, 77, 85, 94, 105, 114, 124, 126-129, 135

GND

«Сигнальная земля»

24, 50, 73, 76, 95, 115, 144

VCC

Выводы подключения напряжения питания

51, 58, 123, 130

VCCINT

Выводы для подачи напряжения 3,3 В

4, 20, 89, 104

TDI, TMS, TCK, TDO

Линии для программирования ПЛИС

8

Bizi

Выход для отображения готовности подсчета импульсов

74 78-84, 86-88, 91-93, 96-101

result(0-19)

Линии для передачи результатов подсчета в параллельном коде

5

Fx

Вход для подачи сигнала измеряемой частоты

106

Вход для подачи сигнала сброса счетчика

10

Start

Вход для запуска ПЛИС

Остальные выводы микросхемы остаются неподключенными.

Для проверки работоспособности схемы необходимо запустить Wavefrom Editor и выбрать Node - Enter Nodes from SNF, нажать List и выбрать время моделирования File - End Time равное 6 с. На входы reset и start необходимо подать импульсы малой длительности, нужные для сброса и запуска ПЛИС. После этого используя Options - Grid Size выставить сетку 0,5 мкс. После этого на входе с помощью «Overwrite Clock» задать импульсы с периодом равным 1 мкс соответствующим частоте 1 МГц, а на входе «fx» установить период равный 100 мкс, что соответствует минимально возможной частоте следования входных импульсов. После этого запустить моделирование, нажав кнопку «Simulator». В результате были составлены временные диаграммы работы ПЛИС для минимальной частоты. Результаты моделирования представлены на рисунке 2.4.

Рисунок 2.4 - Результаты моделирования схемы счетчик импульсов

3. Разработка принципиальной электрической схемы

Для разработки принципиальной электрической схемы необходимо выбрать компоненты в соответствии с техническим заданием. Для всех микросхем подобрать элементы, необходимые для работы каждой из них.

Для разработки принципиальной схемы использовалась программа Компас 3D V15. Принципиальная электрическая схема представлена на первом листе графической части.

3.1 Схема питания

В качестве стабилизатора напряжения используется микросхема AMS1117CD-3.3.

Диодный мост позволяет питать схему от источника постоянного напряжения произвольной полярности или от источника переменного напряжения. Керамический конденсатор C1 ёмкостью 10 мкФ, обеспечивает защиту от высокочастотных помех и наводок. По заданию система питается от постоянного тока, напряжением 12 В. Также устанавливаются конденсаторы С3 с ёмкостью 0,1 мкФ и С4 с ёмкостью 0,1 мкФ. Стабилизатор DA2 представляет собой делитель напряжения, на вход которого подаётся входное напряжение, а выходное напряжение снимается с нижнего плеча делителя. Полученное напряжение на выходе схемы 3,3 В имеет высокую стабильность и им можно питать микросхемы проектируемой системы сбора данных. Спроектированная схема питания представлена на рисунке 3.1.

Рисунок 3.1 - Схема питания проектируемой системы

3.2 Схема подключения МК ATmega8515

Схема подключения МК представлена на рисунке 3.2.

Микроконтроллер - микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает на одном кристалле функции процессора и периферийных устройств, содержит ОЗУ и ПЗУ.

Рисунок 3.2 - Схема подключения МК ATmega8515

В соответствии с технической документацией микроконтроллер питается от напряжения 3,3 В. При работе МК (DD2) необходимо постоянно следить за уровнем напряжения питания. Для этой цели в схеме предусмотрена микросхема MAX6802 супервизора DD1 (MUSC). Если уровень напряжения питания опускается ниже допустимого значения, то супервизор устанавливает на входе RESET МК низкий логический уровень и удерживает его до тех пор, пока напряжение питания не достигнет номинального значения. Для работы МК следует подать питание на все входы Vcc и GND (3,3 и 0 В соответственно) и установить между ними конденсаторы емкостью 0,1 мкФ для фильтрации высокочастотных помех, которые МК может выдавать в цепи питания. Частоту тактовых импульсов для МК задает кварцевый резонатор ZQ1 (3,686 МГц), подключенный между входами XTAL1 и XTAL2. Запуск резонатора осуществляется за счет конденсаторов емкостью 18 пФ, подключенных между соответствующими входами XTAL и землей. Программирование МК осуществляется через разъем внутрисхемного программирования.

В таблице индивидуального варианта задана скорость передачи данных между ПК и МК, равная 9600 бит/с. Расчет реальной скорости передачи данных и погрешность рассчитывается в пункте 3.3.

3.3 Схема включения буфера RS-485

Буфер предназначен для двусторонней связи между микроконтроллером и ПК с использованием последовательного интерфейса. ПК и микроконтроллер осуществляют обмен информацией через буфер данных ADM2682E посредством интерфейса RS-485. В рамках данной работы применена схема защиты для подавления импульсных помех и грозозащиты.

RS-485 обеспечивает передачу данных со скоростью до 10 Мбит/с. Максимальная длина линии связи зависит от скорости передачи: при скорости 10 Мбит/с максимальная длина линии -- 120 м, при скорости 100 кбит/с -- 1200 м.

Наиболее часто для передачи байтов данных используются та же структура, что и в интерфейсе RS-232: стартовый бит, биты данных, стоп-бит.

Схема подключения буфера RS-485 изображена на рисунке 3.4. На рисунке 3.3 изображена локальная сеть на основе интерфейса RS-485, объединяющая несколько приемо-передатчиков.

Предпочтительной средой передачи сигнала является медный кабель - «витая пара». На концах линии связи должны быть установлены терминальные резисторы (обычно 120 Ом). Сеть должна иметь топологию «шина», без ответвлений. Устройства следует подключать к кабелю проводами минимальной длины.

Рисунок 3.3 - Локальная сеть на основе интерфейса RS-485

Рисунок 3.4 - Схема включения буфера RS-485

цифровой измерительный программный код

Схема защиты буфера интерфейса RS-485 состоит из двух элементов: газовых разрядников, двух защитных диодов и двух токоограничивающих резисторов. Схема защиты необходима для предотвращения возникновения всплесков напряжения в линиях связи, амплитуда которых превышает установленное стандартом значение. Для защиты от перенапряжения, все проводники линии, включая изолированный общий провод, подключаются на "землю" при помощи ограничителей напряжения. В случае выхода из строя элементов грозозащиты, трансформаторная гальваническая развязка буфера предотвратит выход из строя дорогостоящих цифровых элементов.

По заданию задана скорость передачи данных, равная 9600 бит/с. В действительности скорость будет меньше заявленного значения. Чтобы не было рассинхронизации между МК и ПК, нужно рассчитать погрешность скорости передачи данных, и она не должно превышать 3 %. Погрешность рассчитывается по формулам:

где - частота импульсов;

baud - скорость передачи последовательных данных.

Определяем реальную скорость передачи по формуле:

где UBRR - константа.

Чтобы не было рассинхронизации данных, определяем погрешность по формуле:

где - реальная скорость передачи данных;

baudi - идеальная скорость передачи данных.

3.4 Триггер Шмитта

Триггер Шмитта реализован на базе микросхемы (DA1) LM2901D. Триггер Шмитта представляет собой RS-триггер, с диапазоном измеряемой частотой от 100 мкс до 1мс, с двумя разными напряжениями переключения в «1» и в «0». Простые реализации (быстродействующие, без обратной связи) состоят из RS-триггера и троичного компаратора на входе RS-триггера, в котором два напряжения сравнения устанавливаются раздельно, для переключения в «0» и для переключения в «1». В данной работе, цифровой сигнал будет иметь границы 0 и 3,3 В (логический ноль и логическая единица соответственно). Для фильтрации сигнала, поступающего по линии питания 12 В, необходимо разместить конденсатор С2 емкостью 0,1 мкФ между выводами 8 (Vcc+) и GND. Схема подключения триггера Шмитта представлена на рисунке 3.5.

В среде OrCAD 9.2 провели моделирование схемы компаратора, для того чтобы убедиться в правильности работы и выбора компаратора. На рисунке 3.6 изображена схема промоделированного компаратора в среде OrCAD 9.2. Результат моделирования схемы компаратора изображены на рисунке 3.7.

Рисунок 3.5 - Схема подключения компаратора

Рисунок 3.6 - Схема промоделированного компаратора в среде OrCAD 9.2

Рисунок 3.7 - Результаты моделирования схемы компаратора в среде OrCAD 9.2

3.5 Включение ПЛИС EPM3256ATC144-10N

ПЛИС семейства MAX3000A являются энергонезависимым (конфигурация хранится в ячейках EEPROM). Микросхемы этого семейства поддерживают режим внутрисхемного программирования по JTAG-интерфейсу. Архитектура семейства MAX3000A обеспечивает фиксированное время распространения сигналов внутри ПЛИС. Блоки ввода-вывода ПЛИС MAX3000A позволяют работать с 5-вольтовыми входными сигналами [3]. На рисунке 3.8 представлена схема подключения разработанной ПЛИС.

Для того что бы ПЛИС работал необходимо подключить к линиям:

- «Start» - вход для запуска ПЛИС;

- «Fx» - вход для подачи сигнала измеряемой частоты;

- «» - вход для подачи сигнала сброса счетчика;

- «result[0-19]» - линии для передачи результатов подсчета в параллельном коде;

- «Bizi» - выход для отображения готовности подсчета импульсов;

- «TDI», «TMS», «TCK», «TDO» - линии для программирования ПЛИС;

- «VCC» - выводы подключения напряжения питания;

- «GND» - сигнальная земля.

Рисунок 3.8 - Схема включения ПЛИС EPM3256ATC144-10N

Работа ПЛИС начинается тогда, когда МК, по линии «Start», пошлет сигнал запуска. Как только сигнал получен, начинается обработка импульса, пришедшего с линии «fx». Но вначале импульс проходит через триггер Шмитта, чтобы сопоставить входной уровень изначально аналового сигнала, с входным цифровым сигналом ПЛИС, который равен 3,3 В. Инвертируемый вход «» служит для сброса ПЛИС, при слишком высоком или низком уровне сигнала на линиях Vcc. Сбросить устройство можно будет логическим нулем. Для программирования ПЛИС есть специальные зарезервированные входы. Они называются «TDI», «TMS», «TCK» и «TDO» и находятся на 7-ом, 13-ом, 32-ом и 38-ом выводе ПЛИС соответственно. Программирование ПЛИС происходит посредством интерфейса программирования JTAG. Он имеет всего шесть выводов, четыре из них имеют такое же название, как и у ПЛИС, пятый и шестой вывод - это выводы питания (Vcc и GND). Выводы «TDI», «TMS» и «TCK» следует подключать к ПЛИС через резисторы, которые обозначены на рисунке 3.8 как R7, R8 и R9, а вход «TDO» необходимо подключить с ПЛИС в разъём JTAG.

4. Расчёт потребляемой мощности

Значения потребляемого тока элементами схемы можно узнать из технической документации.

Потребляемая мощность прибора определяется по формуле:

, (4.1)

где Рп - потребляемая мощность отдельного элемента прибора;

Uпит - напряжение питания отдельного элемента прибора;

Iп - ток потребляемый отдельным элементом прибора;

K - количество элементов.

Расчет потребляемой мощности спроектированной системой сбора данных представлен в таблице 1.

Таблица 1 - Расчёт потребляемой мощности системы сбора данных

Наименование элемента

Потребляемый ток, мА

Напряжение, В

Количество элементов,

шт

Потребляемая

мощность, мВт

ATmega8515 (МК)

4

3,3

1

13,2

ПЛИС EPM3256ATC144-10N

100

3,3

1

330

ADM 2682Е(Буфер интерфейса)

10

3.3

1

33

AMS1117(Стабилизатор напряжения)

0,1

12

1

72

MAX6802 (супервизор)

0,01

3,3

1

13,2

LM2901D (Триггер Шмитта)

2

3,3

1

6,6

Общее значение

24,082

-

-

171,0396

Из таблицы 1 видно, что значение потребляемой мощности составляет 171,0396 мВт, а потребляемый ток не превышает тока нагрузки источника напряжения.

5. Разработка программного кода для микроконтроллера ATmega8515

Листинг программного кода представлен в приложении А.

При включении питания МК выполняет подпрограмму инициализации, в которой инициализируется указатель стека, настраиваются линии портов и происходит настройка модуля USART. Так же настраиваются прерывания. Далее, до момента выключения питания, МК выполняет основную программу, состоящую из ожидания прерываний.

В таблице векторов прерывания определены переходы на подпрограмму обработчики прерываний. В ходе обработки прерывания микроконтроллер должен прекратить нормальный ход программы и перейти к выполнению подпрограммы, соответствующей этому событию. Для каждого из векторов прерывания, кроме векторов «reset», «int_2», «usart_RxC» и «timer1_compA», прописываем таблицу констант с указанием к каждому вектору прерывания команду “reti. В обработчике прерывания осуществляется чтение результата измерений. Формируется сообщение для передачи в ПК. При поступлении на МК команды Modbus от ПК «считать входные регистры» (04h), в ответном сообщении результат измерений передается в ПК.

Заключение

В данной курсовой работе было разработано цифровое измерительное устройство на базе ПЛИС с интерфейсом RS-485 для измерения частоты. Была подробно описана схема цифрового измерительного устройства, его отдельных элементов и подбор элементной базы. В среде Altera Quartus II 9.1sp2 Web Edition была собрана и промоделирована схема частотомера, а также проверена работа по временным диаграммам. В программе AVR Studio была написана программа для работы микроконтроллера. Таким образом, целевое устройство отвечаем всем заданным требованиям на курсовую работу.

Список использованных источников

1 Википедия https://ru.wikipedia.org.

2 Комолов Д.А., Мяльк Р.А., Зобенко А.А. Системы автоматизированного проектирования фирмы Altera MAX+Plus II и Quartus II. - М.: ИП РадиоСофт, 2002. - 352 с.

3 Сайт компании Altera http://www.altera.ru/plis-max3000a.html.

Приложение А

Листинг программного кода на языке программирования ASSEMBLER для системы сбора данных на базе микроконтроллера ATMEGA8515, с ядром AVR

Написание программного кода для микроконтроллера ATmega8515 с ядром AVR, на языке программирования Assembler

.include "m8515def.inc"

;*****таблица векторов прерываний*****

.org 0; размещает следующую после неё команду в ЯП с адресом 0000h

rjmp reset; вектор прерывания по сбросу

rjmp int_0; внешний сигнал прерывания, поступающий на линию int0 МК(линия PD2)

rjmp int_1; внешний сигнал прерывания, поступающий на линию int1 МК(линия PD3)

rjmp timer1_capt ; прерывание, возникающее в момент захвата содержимого

; таймера/счетчика1

rjmp timer1_compA; прерывание, возникающее в момент, когда совпадает

;содержимое таймера/счетчика1 и компаратора А

rjmp timer1_compB; прерывание, возникающее в момент, когда совпадает

;содержимое таймера/счетчика1 и компаратора В

rjmp timer1_ovf ; прерывание, возникающее в момент переполнения

;таймера/счетчика1

rjmp timer0_ovf ; прерывание, возникающее в момент переполнения

;таймера/счетчика0

rjmp spi_stc ; прерывание, возникающее в момент завершения передачи

;последовательных данных модулем spi

rjmp usart_RxC ; прерывание по завершению приема данных модулем USART

rjmp usart_UDRE ; прерывание “регистр данных передатчика модуля USART пуст”

rjmp usart_TxD ; прерывание по завершению передачи данных модулем USART

rjmp ana_comp ; прерывание, при срабатывании аналогового компаратора

rjmp int_2; внешний сигнал прерывания, поступающий на линию int2 МК(линия PЕ2)

rjmp timer0_comp; прерывание, возникающее в момент совпадения содержимого

;таймера/счетчика0 и его регистра совпадения

rjmp ee_rdy ; прерывание, возникающее в момент готовности ПЗУ EEPROM

rjmp spm_rdy ; прерывание, возникающее в момент готовности модуля spm

;*****конец таблицы векторов*****

;***** ИНИЦИАЛИЗАЦИЯ *****

reset: cli ;запрет всех прерываний

ldi r16,0x01 ;настройка указателя стека

out SPH,r16

ldi r16,0xFF

out SPL,r16 ;настройка линий портов

ldi r16,0b00000010 ;настройка PD0 на вход, т.к. это вход приемника USART,

out DDRD,r16 ;a PD1 на выход, т.к. это выход передатчика

;настройка модуля USART

ldi r16,0b00000000 ;UBRR=fck/16*baudи - 1= 3686000/(16*9600)-1

out UBRRH,r16; UBRR=fck/16*baudи - 1=22,997=23

ldi r16,0x17; baudр=fck/16*(UBRR+1)=3686000/(16*(23+1))=9598,96

out UBRRL,r16 ;delta=|baudu-baudр|*100/baudu=|9600-9598,96|*100/9600=0,01%

ldi r16,0b00000000;

out UCSRA,r16 ;асинхронный стандартный режим,

ldi r16,0b00011000 ;8 бит данных, контроля нет,

out UCSRB,r16 ;стоп-бит один,

ldi r16,0b10000110 ;прерывания USART запрещены,

out UCSRC,r16 ;блоки приемника и передатчика включены.

sei ;разрешение всех настроенных прерываний

;***** конец инициализации *****

;***** ОСНОВНАЯ ПРОГРАММА *****

m1: nop ;проверить поступила ВСЯ посылка или нет?

nop ;если нет, то вернуться в начало основной программы

nop ;считать полученную посылку и расшифровать ее

nop ;сформировать ответную посылку и поместить ее в ЯП ОЗУ

;формирование CRC16

ldi r21,0xff ;загружаем FFFF в первый раз для расчета CRC

ldi r20,0xff ;регистр CRC

lds r16,0x0250 ;загружаем 1число для расчета CRC

rcall crc_16 ;вызов подпрограммы расчета CRC16

lds r16,0x0251 ;загружаем 2число для расчета CRC

rcall crc_16 ;вызов подпрограммы расчета CRC16

lds r16,0x0252 ;загружаем 3число для расчета CRC

rcall crc_16 ;вызов подпрограммы расчета CRC16

lds r16,0x0253 ;загружаем 4число для расчета CRC

rcall crc_16 ;вызов подпрограммы расчета CRC16

lds r16,0x0254 ;загружаем 5число для расчета CRC

rcall crc_16 ;вызов подпрограммы расчета CRC16

lds r16,0x0255 ;загружаем 6число для расчета CRC

rcall crc_16 ;вызов подпрограммы расчета CRC16

sts 0x0256,r20 ;загружаем результат в конце посылки

sts 0x0257,r21

;передача ответа

rcall peredacha

rjmp m1

;*****конец основной программы*****

;*------- подпрограмма расчета CRC16 для данных перед отправкой в ПК -------*

crc_16: nop

ldi r19,0xA0 ; полином (реверсивный)

ldi r18,0x01 ;

ldi r17,0x08 ;счетчик

eor r20,r16 ; ДАННЫЕ

sdv2: lsr r21 ;сдвиг вправо (логический, т.е. бит7=0)

ror r20 ;и

brcc sdv1 ;проверка младшего бита если равен 0, то снова сдвиг, а

eor r20,r18 ;если равен 1, то

eor r21,r19 ;ИСКЛ ИЛИ между CRC и ПОЛИНОМом

sdv1: dec r17 ;

brne sdv2 ;

ret

;--------------------конец подпрограммы расчета --------------------------------

;*---- подпрограмма пересылки данных в ПК ----*

peredacha: ldi r17,0x08 ;кол-во передаваемых байт

ldi r31,0x02 ;адрес ЯП ОЗУ для первого передаваемого байта

ldi r30,0x50 ;

povtor: sbis UCSRA,5; если регистр UDR-передатчика пуст, то пропустить команду

rjmp povtor;т.к. UDR-передатчика не пуст, то переход на метку povtor

ld r16,Z+ ;копируем в r16 байт, предназначенный для передачи в ПК

out UDR,r16; отправляем его

dec r17 ;уменьшаем счетчик передаваемых байт на 1

brne povtor ;если счетчик не=0, то вернуться на метку povtor

ret; выход из подпрограммы

;--------конец подпрограммы передачи-----------

;*****неиспользуемые прерывания*****

int_0: reti; выход из подпрограммы обработки прерывания

int_1: reti;

timer1_capt: reti;

timer1_compA:reti;

timer1_compB:reti;

timer1_ovf: reti;

timer0_ovf: reti;

spi_stc: reti;

usart_RxC: reti;

usart_UDRE: reti;

usart_TxD: reti;

ana_comp: reti;

int_2: reti;

timer0_comp: reti;

ee_rdy: reti;

spm_rdy: reti;

Размещено на Allbest.ru


Подобные документы

  • Актуальность задачи. Разработка функциональной схемы устройства. Радиолокационная установка (РЛУ). Микропроцессорная часть. Обоснование алгоритма работы устройства. Разработка управляющей программы устройства. Схема алгоритма. Пояснения к программе.

    курсовая работа [193,9 K], добавлен 18.10.2007

  • Функциональная схема и алгоритм работы устройства. Техническое обоснование выбора серии ИМС. Состав и описание работы узлов устройства. Расчёт необходимых сопротивлений резисторов, потребляемой мощности и тока. Построение и анализ временных диаграмм.

    курсовая работа [311,7 K], добавлен 19.05.2011

  • Анализ выбора цифрового сигнального процессора и структурной схемы устройства обработки информации. Расчет надежности устройства и производительности обмена данных, разработка ленточного графика. Обзор особенностей радиального и межмодульного интерфейса.

    дипломная работа [1,8 M], добавлен 20.05.2012

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

    курсовая работа [401,3 K], добавлен 14.03.2015

  • Разработка структурной схемы и обобщенного алгоритма работы прибора. Оценка максимальной погрешности линейного датчика давления и нормирующего усилителя. Разработка элементов принципиальной электрической схемы микропроцессорной системы сбора данных.

    курсовая работа [2,1 M], добавлен 08.02.2015

  • Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.

    курсовая работа [1,5 M], добавлен 13.11.2016

  • Принцип действия устройства сбора информации на базе микроконтроллера МК51: индикация, "рабочий режим" и передача данных персонального компьютера. Алгоритм начального опроса датчиков. Электрическая принципиальная схема устройства, текст программы.

    курсовая работа [102,5 K], добавлен 21.10.2012

  • Структурная схема системы управления. Характеристики первичных датчиков, электронасоса, индикатора, микроконтроллера, системы прерываний. Работа регистров и аналого-цифрового преобразователя. Алгоритм работы микропроцессора - управляющего устройства.

    курсовая работа [2,2 M], добавлен 06.02.2013

  • Разработка устройства управления двухконфорочной электроплитой на базе микроконтроллера, описание функциональных действий. Структурная схема аппаратной части. Проектирование программного обеспечения. Описание алгоритма работы системы и программы.

    курсовая работа [709,3 K], добавлен 22.12.2010

  • Разработка вычислительного устройства для умножения двоичных чисел с фиксированной запятой, без знака, представленных в прямом коде. Алгоритм операции, структурная схема АЛУ, диаграмма управляющих сигналов, функциональная схема устройства управления.

    контрольная работа [180,2 K], добавлен 01.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.