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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    157,59 Кб
  • Опубликовано:
    2015-06-03
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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

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

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

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

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




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

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

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

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

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

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

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

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





Москва 2015 г.

Содержание

Введение

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

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

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

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

.1 Схема питания

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

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

.4 Триггер Шмитта

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

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

. Разработка программного кода для микроконтроллера 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 В, которое необходимо для питания всех компонентов схемы.

. Моделирование цифрового измерительного устройства на базе ПЛИС в среде 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

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

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 - Результаты моделирования схемы счетчик импульсов

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

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

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

.1 Схема питания

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

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

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

.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 Схема включения буфера RS-485

Буфер предназначен для двусторонней связи между микроконтроллером и ПК с использованием последовательного интерфейса. ПК и микроконтроллер осуществляют обмен информацией через буфер данных ADM2682E посредством интерфейса 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 - константа.

 

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

 

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

 

.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

.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.

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

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

Приложение А

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

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

.include "m8515def.inc"

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

.org 0; размещает следующую после неё команду в ЯП с адресом 0000hreset; вектор прерывания по сбросуint_0; внешний сигнал прерывания, поступающий на линию int0 МК(линия PD2)int_1; внешний сигнал прерывания, поступающий на линию int1 МК(линия PD3)timer1_capt  ; прерывание, возникающее в момент захвата содержимого

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

;содержимое таймера/счетчика1 и компаратора Аtimer1_compB; прерывание, возникающее в момент, когда совпадает

;содержимое таймера/счетчика1 и компаратора Вtimer1_ovf    ; прерывание, возникающее в момент переполнения

;таймера/счетчика1timer0_ovf       ; прерывание, возникающее в момент переполнения

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

;последовательных данных модулем spiusart_RxC ; прерывание по завершению приема данных модулем USARTusart_UDRE         ; прерывание “регистр данных передатчика модуля USART пуст”usart_TxD ; прерывание по завершению передачи данных модулем USARTana_comp        ; прерывание, при срабатывании аналогового компаратораint_2; внешний сигнал прерывания, поступающий на линию int2 МК(линия PЕ2)timer0_comp; прерывание, возникающее в момент совпадения содержимого

;таймера/счетчика0 и его регистра совпаденияee_rdy                 ; прерывание, возникающее в момент готовности ПЗУ EEPROMspm_rdy       ; прерывание, возникающее в момент готовности модуля spm

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

;***** ИНИЦИАЛИЗАЦИЯ *****: cli                       ;запрет всех прерыванийr16,0x01                   ;настройка указателя стека

out SPH,r16r16,0xFF

out SPL,r16 ;настройка линий портовr16,0b00000010 ;настройка PD0 на вход, т.к. это вход приемника USART,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=23r16,0x17;                  baudр=fck/16*(UBRR+1)=3686000/(16*(23+1))=9598,96UBRRL,r16         ;delta=|baudu-baudр|*100/baudu=|9600-9598,96|*100/9600=0,01%

ldi r16,0b00000000;UCSRA,r16 ;асинхронный стандартный режим,r16,0b00011000 ;8 бит данных, контроля нет,UCSRB,r16 ;стоп-бит один,r16,0b10000110 ;прерывания USART запрещены,UCSRC,r16 ;блоки приемника и передатчика включены.                        ;разрешение всех настроенных прерываний

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

;***** ОСНОВНАЯ ПРОГРАММА *****:      nop             ;проверить поступила ВСЯ посылка или нет?                  ;если нет, то вернуться в начало основной программы              ;считать полученную посылку и расшифровать ее            ;сформировать ответную посылку и поместить ее в ЯП ОЗУ

;формирование CRC16r21,0xff     ;загружаем FFFF в первый раз для расчета CRCr20,0xff        ;регистр CRCr16,0x0250      ;загружаем 1число для расчета CRCcrc_16                   ;вызов подпрограммы расчета CRC16r16,0x0251   ;загружаем 2число для расчета CRCcrc_16               ;вызов подпрограммы расчета CRC16r16,0x0252         ;загружаем 3число для расчета CRCcrc_16              ;вызов подпрограммы расчета CRC16r16,0x0253       ;загружаем 4число для расчета CRCcrc_16              ;вызов подпрограммы расчета CRC16r16,0x0254     ;загружаем 5число для расчета CRCcrc_16                   ;вызов подпрограммы расчета CRC16r16,0x0255   ;загружаем 6число для расчета CRCcrc_16               ;вызов подпрограммы расчета CRC160x0256,r20         ;загружаем результат в конце посылки0x0257,r21

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

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

;*------- подпрограмма расчета CRC16 для данных перед отправкой в ПК -------*_16:         nopr19,0xA0       ; полином (реверсивный)r18,0x01 ;r17,0x08   ;счетчикr20,r16            ; ДАННЫЕ:                  lsr r21                  ;сдвиг вправо (логический, т.е. бит7=0)r20                   ;иsdv1        ;проверка младшего бита если равен 0, то снова сдвиг, аr20,r18         ;если равен 1, тоr21,r19        ;ИСКЛ ИЛИ между CRC и ПОЛИНОМом

sdv1:          dec r17                 ;sdv2 ;

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

;*---- подпрограмма пересылки данных в ПК ----*:  ldi r17,0x08         ;кол-во передаваемых байтr31,0x02 ;адрес ЯП ОЗУ для первого передаваемого байтаr30,0x50         ;:       sbis UCSRA,5; если регистр UDR-передатчика пуст, то пропустить командуpovtor;т.к. UDR-передатчика не пуст, то переход на метку povtorr16,Z+         ;копируем в r16 байт, предназначенный для передачи в ПКUDR,r16; отправляем егоr17        ;уменьшаем счетчик передаваемых байт на 1povtor         ;если счетчик не=0, то вернуться на метку povtor; выход из подпрограммы

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

;*****неиспользуемые прерывания*****_0: reti; выход из подпрограммы обработки прерывания

int_1: reti;_capt: reti;_compA:reti;_compB:reti;_ovf: reti;_ovf: reti;_stc: reti;_RxC: reti;_UDRE: reti;_TxD: reti;_comp: reti;_2: reti;_comp: reti;_rdy: reti;_rdy: reti;

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!