1
Здравствуйте, Гость!
Мы просим вас войти или зарегистрироваться у нас на сайте.
Но если вам не охото регистрироваться
вы можете воспользоваться формой Быстрой регистрации
Cool Text: Logo and Graphics Generator
Главная » Каталог сайтов » Компьютеры

Железо [0] Оцифрованный мир [0]
Компьютерная безопасность [0] Периферия [0]
Компьютерная документация [0] Программирование [17]
Компьютерные онлайн форумы [0] Программное обеспечение [0]
Мобильные ПК [0] Сети [0]
Операционные системы [0]

В разделе сайтов: 17
Показано сайтов: 1-5
Страницы: 1 2 3 4 »

Выполнение лабораторной работы состоит из двух этапов: самостоятельная работа и работа на лабораторном стенде.

На этапе самостоятельной работы студент в соответствии с полученным заданием должен разработать алгоритм решения поставленной задачи и написать текст исходного модуля программы в текстовом редакторе "Блокнот". Текст программы должен быть снабжён достаточно полными комментариями. Наличие текста с исходным модулем программы является основанием для допуска к выполнению лабораторной работы.

Второй этап выполняется на лабораторном стенде и состоит из следующих шагов:
создания проекта и включение в него исходного текста программы в среде AVR Studio
компиляция исходного текста и устранение синтаксических ошибок
логическая отладка программы с применением встроенного отладчика (Debug)
формирования текста командного файла для программатора и программирование Flash памяти микроконтроллера;
проверка правильности выполнения программы на реальном устройстве (макете) и в случае выявления ошибок исправление исходного текста программ и переход к компиляции программы с выполнением всех последующих шагов.

Защита лабораторной работы происходит в форме свободной беседы по теме лабораторной работы.

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

Отчёт по лабораторной работе должен быть оформлен в соответствии с требованиями стандарта ВУЗа.

Ниже приводится пример оформления отчёта по лабораторной работе.

Цель работы: Разработать программу вывода информации на светодиодный индикатор через порт РВ с использованием программной временной задержки.

Задание: Вид выводимой информации – "Бегущая единица", начиная с РВ0; временная задержка изменения состояний – 0,5 С.

Чертёж структурной схемы лабораторного макета приведен на рисунке Л1.1

Примечание: переменная In1 содержит текущее значение выводимого в порт В значения.


Ниже приведен исходный текст программы proba.asm, решающий поставленную задачу
.include "2313def.inc" ; определение типа устройства для которого разработана программа
.def In1 = r18 ; определить для хранения переменной In1 регистр r18

; определение таблицы векторов прерываний
rjmp MAIN ; сброс по reset , переход на начало программы; метка MAIN
reti ; не определено; возврат
reti ;
reti ;
reti ;
reti ;
reti ;
reti ;
reti ;
reti ;
reti ;
reti ;
reti ;
;-----------------------------------------------------
;начало программы
MAIN:
ldi r16,low(RAMEND);установка указателя стека
out spl,r16
ldi r16,255 ; настройка порта В на вывод информации
out ddrb,r16 ;
;------------------------------------------------------
;основной цикл
tostart:
ldi In1,1 ; In1 = 1
oneop:
ldi r16,low(50000) ;записать в регистры r16, r17 значение множителя временной
ldi r17,high(50000);задержки с учётом, что шаг задержки 100 мкС для передачи в п/п временной задержки
rcall wait ;вызов подпрограммы временной задержки
com In1 ;инвертировать значение In1 (необходимость этого
; продиктована особенностями работы блока индикации)
out portb, In1 ;вывести In1 в порт В
com In1 ;инвертировать значение
lsl In1 ;логический сдвиг влево на 1 разряд значения In1
breq tostart ;если In1 = 0, переход на метку tostart
rjmp oneop ;в противном случае на метку oneop
;--------------------------------------------------------
;подпрограмма временной задержки
; содержимое регистров r16 (младшая часть) и r17 (старшая часть) содержат множитель ;временной задержки

wait:
cpi r16,0 ;сравнить содержимое r16 с 0
breq wait1 ;переход на метку wait1 если 0
rcall wait100us ;вызов подпрограммы "задержка на 100 мкС"
dec r16 ;вычесть единицу из содержимого регистра r16
rjmp wait ;перейти в начало п/п
wait1:
cpi r17,0 ;сравнить содержимое r16 с 0
breq waitend ;переход на метку waitend если 0
dec r16 ;вычесть единицу из содержимого регистра r16
dec r17 ;вычесть единицу из содержимого регистра r17
rjmp wait ;перейти в начало п/п
waitend:
ret ;возврат в основную программу
;---------------------------------------------
; подпрограмма формирования временной задержки длительностью 100 мкС
.equ CLK=4000000 ;присвоить переменной CLK значение тактовой частоты 4МГц
wait100us:
push r16 ;поместить r16 в стек
ldi r16,((CLK/10000-16)/4) ; загрузить в регистр r16 коэффициент пересчёта
;тактовой частоты микроконтроллера в частоту 10 кГц ( период 100 мкС)
;с учётом времени выполнения цикла wait100us1
wait100us1:
nop ;"нет операции" задержка счета на 1 цикл тактовой частоты
dec r16 ;вычесть единицу из содержимого регистра r16
brne wait100us1 ;перейти на wait100us1если содержимое r16 не равно 0
pop r16 ;загрузить из стека регистр r16
ret ;выход из подпрограммы"

После компиляции и загрузки программы в Flash память микроконтроллера на линейке светодиодных индикаторов наблюдается заданная информационная последовательность с частотой смены состояний порядка 0,5 сек

Выводы: В ходе выполнения лабораторной работы получены навыки программирования порта ввода/вывода общего назначения и разработки программы временной задержки без применения периферийных устройств микроконтроллера.

подробное описание составления алгоритма на asmAVR здесь

Программирование | Переходов: 224 | Добавил: Правила составления алгоритма прогр | Дата: 29.09.2013

  Здравствуйте на этой странице сайта мы посвящаем описание настройки прошивок для микроконтроллеров Atmega. Ниже приведены необходимые мероприяти для программирования в среде AVR.

-http://trol.0fees.net/links.php

-http://radioshemi.ucoz.ru/FUSI/calc.html?part=ATtiny2313

-http://arv.radioliga.com/content/view/91/49/

Программирование | Переходов: 263 | Добавил: Онлайн Калькулятор фьюзов AVR | Дата: 29.09.2013

RESERVED - как следует из названия, этот бит зарезервирован для каких-то неизвестных простым смертным целей фирмой Atmel. Ни при каких условиях не рекомендуется менять его состояние (т.е. надо оставлять его таким, как он установлен при изготовлении МК). В этой строке встречаются биты с другими названиями, как правило, это биты включения режима совместимости с устаревшими типами МК, на смену которым выпущены новые. Обычно в конце названия такого fuse-бита имеется символ С - от COMPATIBLE (совместимый).

OCDEN - бит, разрешающий работу схемы внутрикристалльного отладчика (On Chip Debug ENable). Никогда не оставляйте установленным этот бит в коммерческих продуктах! Иначе не гарантируется сохранность вашей интеллектуальной собственности!

JTAGEN - бит, разрешающий работу интерфейса программирования JTAG. По сравнению с SPI-интерфейсом, JTAG обладает расширенными возможностями. Не рекомендуется без необходимости оставлять этот бит установленным, т.к. в этом случае потребляемый МК ток возрастает.

SELFPRGEN - бит, разрешающей программе МК производить запись в память программ, т.е. производить самопрограммирование.

DWEN - бит, разрешающий работу DebugWire - однопроводного отладочного интерфейса. Не рекомендуется оставлять его установленным в коммерческих изделиях по причинам, изложенным выше.

EESAVE - бит, после установки которого при стирании памяти МК содержимое EEPROM данных будет сохраняться нетронутым, т.е. не будет стерто.

SPIEN - бит, разрешающий работу интерфейса внутрисхемного программирования МК по SPI. Этот бит может быть легко переустановлен при помощи параллельного программатора (или JTAG, если таковой разрешен и имеется в МК). Все МК выпускаются с установленным битом SPIEN, снять его по интерфейсу SPI невозможно.

WDTON - бит, после установки которого сторожевой таймер WDT включается сразу после подачи питания и не может быть отключен программно. Если бит не установлен, то включением и отключением WDT можно управлять программно.

Группа битов BODLEVEL. Может быть либо один такой бит, либо несколько, тогда они нумеруются, начиная с нуля. Значение этих битов определяет порог срабатывания схемы BOD - детектора уровня питающего напряжения.

BODEN - бит, включающий схему аппаратного детектора недопустимого уровня питающего напряжения, т.е. схему BOD.

RSTDISBL - бит, отключающий сигнал внешнего сброса от вывода микроконтроллера и подключающий к нему схему порта ввода-вывода. Этот бит имеется только в тех МК, у которых вывод аппаратного сброса совмещен с одинм из портов ввода-вывода. Это бит, ошибочная установка которого может лишить вас возможности программирвоать МК по SPI, т.к. наличие сигнала сброса - обязательное условие включения режима программирования микроконтроллера. По возможности не устанавливайте этот бит, если намерены продолжать работать с МК при помощи последовательных программаторов. Переустановка этого бита возможна только при помощи параллельного программатора (или выскоквольтного последовательного программатора для некоторых моделей).

CKDIV8 - бит, включающий предварительное деление частоты кварцевого (или иного имеющегося) тактового генератора на 8. То есть при включенном этом бите и применении кварцевого резонатора на 8 МГц реальная тактовая частота МК составит 1 МГц.

CKOUT - бит, разрешающий вывод тактовой частоты на один из выводов МК (для тактирования других устройств).

SUT1 и SUT0 - биты, управляющие режимом запуска тактовых генераторов МК. Связаны с нижеописываемыми битами, определяющими тип и частоту тактового генератора, причем связь весьма хитрая и запутанная. При ошибочной их установки возможны ситуации неустойчивого запуска генератора или неодногратного сброса МК в процессе подачи на него питания.

CKOPT - бит, определяющий режим работы встроенного генератора тактовой частоты для работы с кварцевыми резонаторами. Реально изменяет коэффициент усиления встроенного инвертора в схеме генератора. Ошибочная установка может приводить к неустойчивому запуску кварцевого генератора, вплоть до возбуждения его не на той гармонике, что надо (в моей практике был случай, когда из-за этого бита кварц запускался или только при питании МК напряжением не выше 3,6В, или только после прикосновения к выводу XTAL1 пинцетом)

Группа битов CKSEL0...CKSEL3 - биты, комбинация которых определяет тип и частоту работающего тактового генератора. Всего возможно до 16 комбинаций, однако не все определены для всех типов МК. Ошибочная установка комбинации этих битов может сделать МК "мертвым" - он не будет работать в схеме и не будет обнаруживаться последовательными программаторами - это вторая наиболее частая беда начинающих.

PLLCK - бит, разрешающий использование встроенного синтезатора частоты для тактирования ядра МК.

BOOTRST - бит, определяющий адрес, с которого будет начато исполнение программы после сброса - если бит установлен, то начало программы будет не с адреса 0000h (как обычно), а с адреса области загрузчика (Boot Loader).

Группа битов BOOTSZ - два бита, определяющие размер области памяти программ, выделяемой для загрузчика (Boot Loader). Комбинация этих битов, в частности, определяет точку начала исполнения программы после сброса, если установлен бит BOOTRST.

Вот и все биты. Разумеется, тут дана очень краткая информация об их назначении, но ее достаточно, чтобы выделить 3 группы fuse-битов: безопасные, относительно безопасные и опасные. Разумеется, эти степени опаснеости условны и отражают лишь степень возможных последствий для начинающих при неаккуратной работе с ними. В группу опасных можно выделить биты CKSELx и RSTDSBL, особенно последний, т.к. ошибочная установка его может навсегда (или очень надолго) умертвить ваш МК. Относительно безопасными можно считать биты BOOTRST, CKOPT, SUTx, JTAGEN, OCDEN и DWEN - неаккуратная работа с ними может немного попортить вам нервы, но к катастрофе не приведет (то есть МК не "потеряется"). Ну а все прочие - это безопасные fuse-биты, вряд ли они смогут доставить вам слишком много проблем.

При работе с некоторыми программаторами (ChipBoom не входит в их число) требуется задавть значения групповых битов в виде чисел - двоичных или шестнадцатеричных. В этом случае следует помнить, что всегда бит в группе с бОльшим номером - это более старший разряд двоичного представления.

 В заключение главное: установленным считается fuse-бит, равный нулю, а сброшенным - равный единице. Это связано с общим принципом работы с любой памятью - от ПЗУ до МК - стертая (т.е. чистая) память содержит все единицы, и только нолики могут быть в нее записаны. Никогда не забывайте об этом! Как правило во разных программаторах fuse-биты устанавливаются разными способами (галочками, списком или иначе), но всегда и везде ЗАПРОГРАММИРОВАННОМУ состоянию бита соответствует НОЛЬ, а не единица.

Скачать

Программирование | Переходов: 243 | Добавил: Несколько слов про FUSE-биты | Дата: 29.09.2013

AVRCalc

Удобная программа призванная облегчить жизнь радиолюбителям работающим с микроконтроллерами AVR. Позволяет проводить расчет параметров UART. Упростить работу с 8 и 16 разрядными таймерами в разных режимах. Помогает наладить работу с TWI (I2C), указать параметры сторожевого таймера и многое другое.

Возможности:
1.Baud Rate Calculator
Расчет параметров UART.
2. Timer Calculator
Работа с 8 и 16 разрядными таймерами в разных режимах.
3.TWI Calculator
Работа с TWI (I2C)
4.Watchdog Calculator
Параметры сторожевого таймера
5.FMUL Calculator
6.32-bit Number Calculator
7.ASCII Calculator
Арифметика с вещественными числами, преобразования и т.д. сылка
Программирование | Переходов: 236 | Добавил: AVRCalc - калькулятор для AVR микро | Дата: 29.09.2013

Лекции по основам построения трансляторов
Упрощенная модель компиляторов. Транслятор. Интерпритатор
Модель Компилятора. Лексический блок. Генератор кода
Основные понятия
Грамматика
Классификация грамматик по Хомскому
Синтенциальные формы
Синтаксические деревья
Задача грамматического разбора
Восходящий и низходящий грамматический разбор
Построение лексического блока
Регулярные грамматики и конечные автоматы
Проэктирование лексического сканера
Автоматы с магазинной памятью
Обработка цепочки с помощью магазинного автомата
Трансляция цепочек с помощью МП-автомата
Низходящий грамматический разбор с возвратами
Низходящий грамматический разбор с помощью МП-автоматов
S-грамматики
Процедура разпознавания предложений S-грамматики
Q-грамматики
Множество выбора правила Q-грамматики
LL(1) грамматика
Множество выбора LL1 грамматики
Транслирующая грамматика. Грамматика цепочного перевода
Атрибутные транслирующие грамматики
Наследуемые и синтезируемые атрибуты
Примеры атрибутных транслирующих грамматик
L-атрибутные грамматики
Правила вычисления атрибутов
Атрибутный магазинный автомат
Основные конфигурации автоматов
Трансляция оператора присваивания
Трансляция условного оператора
Грамматика для логического выражения
Трансляция оператора цикла
Постоение множества выбора. Определение аннулирующих нетерминалов и правил
Построение отношения "Начинается прямо с"
Вычисления отношения "Начинается с"
Построение отношения "Прямо перед"
Построение отношения "Прямо на конце"
Вычисления отношения "на конце"
Вычисления отношения "перед"
Расширение отношения "перед" включением концевого маркера
Вычисление множества След и множества выбора
Восходящй грамматический разбор. Распознание методом "перенос-опознание"
Управление автоматом типа "перенос-опознание"
Принцип переноса
Правила построения управляющей таблицы
Безсуффиксные ПО грамматики
Принцип свёртывания
Грамматика слабого предшествования. Принцип вталкивания
Простые грамматики смешанной стратегии предшествования (простые ССП грамматики)
Программирование | Переходов: 241 | Добавил: programmirovanie | Дата: 20.06.2013

1-5 6-10 11-15 16-17