Главная » Просмотр файлов » михайлов_дз2

михайлов_дз2 (1044808)

Файл №1044808 михайлов_дз2 (Пример второго готового ДЗ)михайлов_дз2 (1044808)2017-12-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Московский Государственный Технический Университет имени Н.Э. Баумана



















Домашнее задание

по предмету

«Управление в технических системах»













Выполнил: Данилов М.А.

Группа: РК10-81

Проверил: Михайлов Б.Б.





















Москва, 2011

.include "m16M1def.inc" ; Используем ATMega16M1

; Скомпилированный в AVR Studio 4 код занимает

; 220 байт памяти из 16384 байт доступных

; X[N] = 0.457*X[N-1] + 0.523*X[N-2] + 1.404*G[N-1] – 1.39*G[N-2]

; псевдонимы регистров:

.def tmp_H = R14 ; старший байт для промежуточных данных

.def tmp_L = R15 ; младший байт для промежуточных данных

.def XN_H = R16 ; старший байт X[N]

.def XN_L = R17 ; младший байт X[N]

.def XN1_H = R18 ; старший байт X[N-1]

.def XN1_L = R19 ; младший байт X[N-1]

.def XN2_H = R20 ; старший байт X[N-2]

.def XN2_L = R21 ; младший байт X[N-2]

.def GN_H = R22 ; старший байт G[N]

.def GN_L = R23 ; младший байт G[N]

.def GN1_H = R24 ; старший байт G[N-1]

.def GN1_L = R25 ; младший байт G[N-1]

.def GN2_H = R26 ; старший байт G[N-2]

.def GN2_L = R27 ; младший байт G[N-2]

; RAM =====================================================

.DSEG ; Сегмент ОЗУ

; FLASH ===================================================

.CSEG ; Кодовый сегмент

;очистка всех регистров при инициализации

LDI ZL, 30 ; ZL = 30

CLR ZH ; ZH = 0

DEC ZL ; Уменьшаем адрес текущего очищаемого регистра

ST Z, ZH ; Записываем в регистр с адресом Z значение 0

BRNE PC-2 ; Переход на инструкцию DEC ZL будет происходить

; до тех пор, пока в ZL не окажется 0

; инициализация указателя стека (SP)

; необходима, т.к. будут использоваться вызовы подпрограмм

LDI R16,Low(RAMEND)

OUT SPL,R16

LDI R16,High(RAMEND)

OUT SPH,R16

CLR R16

; инициализация 10-битного АЦП

CBI DDRD,4 ; пин 4 порта D (ADC1) включен на вход

LDI TMP_L, (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2)

; ADEN = 1 - бит включения АЦП

; ADSC = 1 - бит запускает первое преобразование АЦП

; ADATE = 1 - непрерывные последовательные преобразования

; ADPS[0..2] = 111 - выставление частоты работы АЦП

; при 111, коэффициент предделителя = 128

; контроллер работает на частоте 16 МГц

; АЦП будет работать на частоте 16384/128 = 128 кГц

STS ADCSRA, TMP_L ; пишем иниц. информацию в управл. регистр АЦП

LDI TMP_L, (1<<REFS0)

; REFS1 = 0

; REFS0 = 1 - внешнее питание (пин AVCC)

; ADLAR = 0 - выравнивание данных справа (занимается весь

; регистр ADCL и 2 бита в ADHL

; MUX[4..0] = 0001 - сигнал берется с пина ADC1

STS ADMUX, TMP_L ; пишем иниц. информацию в управл. регистр АЦП

LDI TMP_L, 0

; ADTS[3..0] = 0000 - режим непрерывного преобразования

STS ADCSRB, TMP_L ; пишем иниц. информацию в управл. регистр АЦП

; инициализация 10-битного ЦАП

SBI DDRC, 7 ; пин 7 порта С (D2A) включен на выход

LDI TMP_L, (1<<DAOE)|(1<<DAEN)

; DAOE=1 - разрешить вывод с ЦАП на пин D2A

; DAEN=1 - включить ЦАП

; DALA=0 - правое выравнивание (в DACL 8 младших бит,

; в DACH 2 старших)

; DAATE=0 - считывать на вход новые данные когда произошла

; запись в регистры DACH и DACL

STS DACON, TMP_L ; пишем иниц. информацию в управл. регистр ЦАП

RJMP Main ; переход в основную программу

; ---------------------------------------------

; Подпрограммы для работы с 16-битными числами

; ---------------------------------------------

SUB_XN_TMP:

; вычитание двух 16-битных чисел: XN из TMP

; XN_H:XN_L = XN_H:XN_L - TML_H:TMP_L

SUB XN_L, TMP_L ; вычитаем младшие биты

; без учета переноса

SBC XN_H, TMP_H ; вычитаем старшие биты

; с учетом переноса

CLC ; очищаем бит переноса

RET ; возврат в основную программу

ADD_XN_TMP:

; сложение двух 16-битных чисел: XN и TMP

; XN_H:XN_L = XN_H:XN_L + TML_H:TMP_L

ADD XN_L, TMP_L ; складываем младшие биты

; без учета переноса

ADC XN_H, TMP_H ; складываем старшие биты

; с учетом переноса

CLC ; очищаем бит переноса

RET ; возврат в основную программу

LSR_TMP:

; сдвиг TMP вправо на один разряд

; TMP_H:TMP_L = TMP_H:TMP_L >> 1

LSR TMP_H ; сдвиг старшего байта вправо

;(не циклический)

; TMP_H = TMP_H >> 1

ROR TMP_L ; сдвиг старшего байта вправо (циклический)

; бит Carry (от сдвига старшего байта) ; попадает на место старшего бита младшего ; байта

; TMP_L = ( TMP_L >> 1 ) | (Carry << 7)

CLC ; очищаем бит переноса

RET ; возврат в основную программу

; ----------------------------------------------

; Основная программа

; ----------------------------------------------

Main:

; Считывание G[N] с 10-битного АЦП

LDS GN_L, ADCL ; младшие 8 бит с АЦП

LDS GN_H, ADCH ; старшие 8 (только 2 мл. содержат данные) бит с АЦП

; Вычисление X[N]

; X[N] = 0.457*X[N-1] + 0.523*X[N-2] + 1.404*G[N-1] – 1.39*G[N-2]

; ---------------------------------------------------------

; 0.457*X[N-1] = (1/2 - 1/16 + 1/64 + 1/128 - 1/256)*X[N-1]

; ---------------------------------------------------------

MOV TMP_H, XN1_H

MOV TMP_L, XN1_L ; TMP = X[N-1]

RCALL LSR_TMP ; TMP = X[N-1] / 2

MOV XN_H, TMP_H

MOV XN_L, TMP_L ; X[N] = X[N-1] / 2

RCALL LSR_TMP ; TMP = X[N-1] / 4

RCALL LSR_TMP ; TMP = X[N-1] / 8

RCALL LSR_TMP ; TMP = X[N-1] / 16

RCALL SUB_XN_TMP; X[N] = X[N-1]/2 - X[N-1]/16

RCALL LSR_TMP ; TMP = X[N-1] / 32

RCALL LSR_TMP ; TMP = X[N-1] / 64

RCALL ADD_XN_TMP ; X[N] = X[N-1]/2 - X[N-1]/16 + X[N-1]/64

RCALL LSR_TMP ; TMP = X[N-1] / 128

RCALL ADD_XN_TMP ; X[N-1] = X[N-1]/2 - X[N-1]/16 + X[N-1]/64 +

;+ X[N-1]/128

RCALL LSR_TMP ; TMP = X[N-1] / 256

RCALL SUB_XN_TMP ; X[N] = X[N-1]/2 - X[N-1]/16 + X[N-1]/64 +

; + X[N-1]/128 - X[N-1]/256

; X[N] = .457 * X[N-1]

; ----------------------------------------------------------

; 0.523*X[N-2] = (1/2+1/32-1/64+1/128+1/256-1/512)*X[N-2]

; ----------------------------------------------------------

MOV TMP_H, XN2_H

MOV TMP_L, XN2_L ; TMP = X[N-2]

RCALL LSR_TMP ; TMP = X[N-2] / 2

RCALL ADD_XN_TMP ; X[N] = 0.457*X[N-1] + X[N-2] / 2

RCALL LSR_TMP ; TMP = X[N-2] / 4

RCALL LSR_TMP ; TMP = X[N-2] / 8

RCALL LSR_TMP ; TMP = X[N-2] / 16

RCALL LSR_TMP ; TMP = X[N-2] / 32

RCALL ADD_XN_TMP; X[N] = 0.457*X[N-1] + X[N-2] / 2 + X[N-2]/32

RCALL LSR_TMP ; TMP = X[N-2] / 64

RCALL SUB_XN_TMP ; X[N] = 0.457*X[N-1] + X[N-2] / 2 +

; + X[N-2]/32 - X[N-2]/64

RCALL LSR_TMP ; TMP = X[N-2] / 128

RCALL ADD_XN_TMP ;X[N] = 0.457*X[N-1] + X[N-2] / 2 +

; + X[N-2]/32 - X[N-2]/64 + X[N-2]/128

RCALL LSR_TMP ; TMP = X[N-2] / 256

RCALL ADD_XN_TMP ; X[N] = 0.457*X[N-1] + X[N-2] / 2

;+ X[N-2]/32 - X[N-2]/64 + X[N-2]/128 + X[N-2]/256

RCALL LSR_TMP ; TMP = X[N-2] / 512

RCALL SUB_XN_TMP ; X[N] = 0.457*X[N-1] + X[N-2] / 2 + X[N-2]/32 ; -X[N-2]/64 + X[N-2]/128 + X[N-2]/256 - X[N-2]/512

; X[N] = 0.457*X[N-1] + 0.523*X[N-2]

;-------------------------------------------------------------

; 1.404*G[N-1] = (1+1/2-1/8+1/32)*G[N-1]

;-------------------------------------------------------------

MOV TMP_H, GN1_H

MOV TMP_L, GN1_L ; TMP = G[N-1]

RCALL ADD_XN_TMP ; X[N] += G[N-1]

RCALL LSR_TMP ; TMP = X[N-2] / 2

RCALL ADD_XN_TMP ; X[N] += G[N-1]/2

RCALL LSR_TMP ; TMP = X[N-2] / 4

RCALL LSR_TMP ; TMP = X[N-2] / 8

RCALL SUB_XN_TMP; X[N] -= G[N-1]/8

RCALL LSR_TMP ; TMP = X[N-2] / 16

RCALL LSR_TMP ; TMP = X[N-2] / 32

RCALL ADD_XN_TMP ; X[N] += G[N-1]/32

; X[N] = 0.457*X[N-1] + 0.523*X[N-2] + 1.404*G[N-1]

;-------------------------------------------------------------

; -1.39*G[N-2] = (-1-1/2+1/8-1/32+1/64)*G[N-2]

;-------------------------------------------------------------

MOV TMP_H, GN2_H

MOV TMP_L, GN2_L ; TMP = G[N-2]

RCALL SUB_XN_TMP ; X[N] -= G[N-2]

RCALL LSR_TMP ; TMP = X[N-2] / 2

RCALL SUB_XN_TMP ; X[N] -= G[N-2]/2

RCALL LSR_TMP ; TMP = X[N-2] / 4

RCALL LSR_TMP ; TMP = X[N-2] / 8

RCALL ADD_XN_TMP; X[N] += G[N-2]/8

RCALL LSR_TMP ; TMP = X[N-2] / 16

RCALL LSR_TMP ; TMP = X[N-2] / 32

RCALL SUB_XN_TMP ; X[N] -= G[N-2]/32

RCALL LSR_TMP ; TMP = X[N-2] / 64

RCALL ADD_XN_TMP; X[N] += G[N-2]/64

; X[N] = 0.457*X[N-1] + 0.523*X[N-2] + 1.404*G[N-1] - 1.39*G[N-2]

; Отправка X[N] на 10-битный ЦАП

STS DACL,XN_L ; младший разряд

STS DACH,XN_H ; старший разряд

; Рекуррентный сдвиг параметров уравнения

MOV XN2_H, XN1_H

MOV XN2_L, XN1_L ; X[N-2] = X[N-1]

MOV XN1_H, XN_H

MOV XN1_L, XN_L ; X[N-1] = X[N]

MOV GN2_H, GN1_H

MOV GN2_L, GN1_L ; G[N-2] = G[N-1]

MOV GN1_H, GN_H

MOV GN1_L, GN_L ; G[N-1] = G[N]

RJMP Main

Описание ATMega16M1

ATmega16M1 - экономичный 8-битный КМОП микроконтроллер, выполненный на основе расширенной версии RISC-архитектуры AVR. За счет выполнения большинства инструкций за один цикл синхронизации ATmega16M1 достигает производительности близкой к 1 MIPS/МГц, что позволит разработчику оптимизировать соотношение потребляемой мощности и быстродействия обработки.

Ядро AVR сочетает обширный набор инструкций с 32 рабочими регистрами общего назначе­ния. Все 32 регистра напрямую подключены к арифметико-логическому устройству (АЛУ). Благодаря этому, одна инструкция может осуществлять доступ к двум разным регистрам и такая инструкция может быть выполнена за один цикл синхронизации. В результате, такая архитектура характеризуется более высокой плотностью кода и производительностью, кото­рая на порядок превосходит обычные CISC микроконтроллеры.


Функциональная схема ATMega16M1

Отличительные особенности:

  • Высокоэффективные и экономичные 8-битные микроконтроллеры AVR

  • Прогрессивная RISC-архитектура

    • Эффективный набор инструкций: 131 инструкция, большинство которых выполняется за один цикл синхронизации

    • 32 8-битных рабочих регистра общего назначения

    • Полностью статическая работа

    • Производительность до 1 MIPS/МГц

    • Встроенное 2-тактное умножающее устройство

  • Встроенные запоминающие устройства

    • 16 кбайт внутрисистемно-программируемой Flash-памяти программ

    • 0.5 кбайт внутрисистемно-программируемого EEPROM

    • 1 кбайт SRAM

    • Опциональный сектор загрузочного кода с отдельными защитными Lock-битами

      • Внутрисистемное программирование под управлением встроенной загрузочной программы

      • Поддержка исполнения кода программы во время программирования

    • Программируемая защита Flash-памяти и EEPROM

  • Встроенный отладочный интерфейс (debugWIRE)

  • Интерфейс CAN 2.0A/B с 6 объектами сообщений (сертифицирован по ISO 16845)

  • Контроллеры LIN 2.1 и 1.3 или 8-битный UART

  • Один 12-битный высокобыстродействующий контроллер силового каскада (PSC)

  • Особенности встроенных модулей ввода-вывода

    • Один 8-битный таймер-счетчик общего назначения с отдельным предделителем, режимами сравнения и захвата

    • Один 16-битный таймер-счетчик общего назначения с отдельным предделителем, режимами сравнения и захвата

    • Один ведущий/подчиненный последовательный интерфейс SPI

    • 10-битный АЦП

      • до 11 несимметричных каналов и до 3 полностью дифференциальных каналов

      • программируемое усиление в дифференциальных каналах (5x, 10x, 20x, 40x)

      • встроенный ИОН

    • 10-битный ЦАП

    • Четыре аналоговых компаратора с регулируемым порогом срабатывания

    • Генерация прерывания и возобновление активной работы по обнаружению изменения состояния выводов

    • Программируемый сторожевой таймер с отдельным встроенным генератором

    • Встроенный датчик температуры

  • Специальные возможности микроконтроллера

    • Экономичные режимы работы: IDLE, NOISE REDUCTION и POWER-DOWN

    • Сброс при подаче питания и программируемый супервизор питания

    • Внутрисистемное программирование через порт SPI

    • Высокоточный кварцевый генератор для синхронизации модуля CAN (16 МГц)

    • Встроенный калиброванный RC-генератор (8 МГц)

    • Встроенный блок PLL (ФАПЧ) для высокочастотной ШИМ и синхронизации ЦПУ

  • Рабочее напряжение: 2.7…5.5В

  • Градации по быстродействию:

    • 0…8МГц/2.7…4.5В

    • 0…16МГц/4.5…5.5В

АЦП

АTMega16M1 имеет встроенный 10-битный АЦП последовательного приближения

Характеристики

Тип файла
Документ
Размер
230,26 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов домашнего задания

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее