Микроконтроллеры AVR - с чего начатьКонтроллер Управление программатором Программирование Ссылки

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

AVR Studio

 Итак, у Вас должны быть файлы astudio3.exe и io_def.zip (о том, как их раздобыть читайте на странице ссылок). Скопируйте файл astudio3.exe в отдельную директорию (назовем ее c:\0avr), затем запустите его. В директорию распакуются файлы, необходимые для установки AVR Studio 3.0 . Запустите файл Setup.exe для установки AVR Studio. По умолчанию программа устанавливается так, что запустить ее можно, выбрав ПУСК - ПРОГРАММЫ - Atmel AVR Tools - AVR Studio 3.00 [-»]. Теперь надо очистить директорию с разархивироанными файлами для AVR Studio и разархивировать туда файл io_def.zip .
 При разархивировании файла io_def.zip появляется директория AVR Asm, содержащая файлы с расширением .inc . Имя файла .inc соответствует типу микроконтроллера AVR. Так файл 8515def.inc хранит константы и предопределенные имена для микроконтроллера AT90S8515. Если вы создаете программу для микроконтроллера AT90S4414, то в нее необходимо включить файл 4414def.inc .
  Пробел в имени директории AVR Asm - вещь нехорошая, поэтому лучше переименовать ее, например, в AVRAsm.

Создание первой программы в AVR Studio

 Запустите программу AVR Studio. Выберите меню Project | New для создания нового проекта. В окне Project name введите очень остроумное - иначе не заработает - имя новой программы, например, first, щелкните левой кнопкой мышки на строке AVR Assembler, затем на кнопке OK. В оставшемся окне щелкните правой кнопкой мышки на строке Assembler Files, в появившемся меню щелкните левой кнопкой мышки на строке Add File... Так как еще ни одного файла в проекте нет, создадим его в появившемся окне Открытие файла. В этом окне перейдем в нашу директорию c:\0avr\ и создадим в ней пустой текстовый файл (щелкнуть правой клавишей мышки на окне, в появившемся меню выбрать строку Создать, в новом окне щелкнуть левой кнопкой на строке Текстовый файл. Образовавшийся текстовый файл переименовать, например, в a.asm, обязательно дав ему расширение .asm). Теперь надо выбрать и открыть файл *.asm, тогда он появится в окне под строкой Assembler Files c белым значком, который присваивается основному файлу - именно этот файл будет компилироваться.
 Когда накопится несколько файлов программ, вы сможете добавлять их в это окно для удобства оперирования ими - можно будет просматривать уже отлаженные фрагменты, копировать их в новую программу. Этим файлам присваиваются серые значки; файлы с таким значком не отлаживаются. Для отладки требуется просто вызвать проект, в котором такой файл был главным.
 Откройте созданный файл, быстро щелкнув дважды левой кнопкой мышки на имени файла a.asm. В появившемся окне можно набирать программу.
 Следующую программу можно скопировать вместе со всеми комментариями (в программе они начинаются точкой с запятой) и вставить в пустое открытое окно файла a.asm:
.include "c:\0avr\8515def.inc"
.equ vd0=$fe
.equ vd1=$fd

.def dly1 =r16
.def dly2 =r17
.def dly3 =r18
.def rgn =r21 ;здесь намеренно используется один регистр
.def st7 =r21 ;для двух переменных

;следующий кусок актуален при использовании аппаратных прерываний
;в этой программе используется только прерывание RESET
;для каждого типа микроконтроллеров AVR - свой набор прерываний,
;в кодовом сегменте (.CSEG) памяти им соответствует строго определенное число строк,
;начиная с адреса 0 (.org 0)
;строки идут в строгой последовательности, в них должен стоять пустой оператор или
;имя метки, с которой начинается подпрограмма обработки прерывания
.CSEG
.org 0
rjmp RESET ; Reset Handler
nop ; IRQ0 Handler
nop ; IRQ1 Handler
nop ; Timer1 Capture Handler
nop ; Timer1 CompareA Handler
nop ; Timer1 CompareB Handler
nop ; Timer1 Overflow Handler
nop ; Timer0 Overflow Handler
nop ; SPI Transfer Complete Handler
nop ; UART RX Complete Handler
nop ; UDR Empty Handler
nop ; UART TX Complete Handler
nop ; Analog Comparator Handler

RESET:
;отключение WatchDog таймера:
ldi rgn,$18
out WDTCR,rgn
ldi rgn,$10
out WDTCR,rgn

;используешь подпрограмму - определи вершину стека!
ldi rgn,HIGH(RAMEND);начало стека
out SPH,rgn ;RAMEND, SPL, SPH для процессора AT90S8515
ldi rgn,LOW(RAMEND) ;определено в файле 8515def.inc
out SPL,rgn ;(см.1-ю строку программы)

;инициализация порта B: PORTB, DDRB, PINB определены в 8515def.inc
ser rgn ;rgn=$ff
out PORTB,rgn ;на всех линиях - единица
ldi rgn,3 ;3=0000 0011 в двоичном коде
out DDRB,rgn ;значит линии 7...2 - входные
; линии 1,0 - выходные
;к линиям 0 и 1 порта B подключим катоды светодиодов VD0 и VD1
;их аноды через резисторы 360...510 Ом подключим к цепи +5V
;линию 7 соединим через резистор 1кОм с +5V,
;эту же линию соединим через выключенный тумблер с 0V
;следующий цикл будет продолжаться, пока при проверке линии 7 на ней не
;обнаружится низкий уровень, что произойдет после включения тумблера + 0...1 секунда
wt7st: ldi rgn,vd0
out PORTB,rgn ;включение VD0,выключение VD1
rcall d05s ;на 0.5с
ldi rgn,vd1
out PORTB,rgn ;включение VD1,выключение VD0
rcall d05s ;на 0.5с
in st7,PINB ;считывание состояния линий порта B
andi st7,$80 ;st7 & 1000 0000 (проверка линии 7)
brne wt7st

ser rgn
out PORTB,rgn ;выключение светодиодов
end: rjmp end ;если на контакт RESET подать 0V - программа перезапустся


;===Подпрограмма задержки примерно на 0.5с при Fкварца=4МГц
d05s:
;Следующая команда rjmp dend только для отладки, т.к.три вложенных цикла, идущих следом,
;при отладке в AVR Studio занимают очень много времени (всего $ff*$ff*$a=650250 повторов).
;При отладке можно проследить несколько шагов при заходе в подпрограмму задержки,
;убрать точку с запятой перед командой rjmp dend и снова начать отладку;
;для рабочей программы перед этой командой поставить точку с запятой (;)
; rjmp dend ;пропуск всех циклов задержки

ldi dly3,$ff ;загрузка 3-х переменных циклов
d4ms: ldi dly2,$a
wd2: ldi dly1,$ff
wdl: dec dly1
brne wdl
dec dly2
brne wd2
dec dly3
brne d4ms
dend: ret ;последняя команда подпрограммы
 Внимание! После копирования из Netscape в окне программ в начале каждой строки появилось по два пробела, которые надо удалить хотя бы перед директивами .def, иначе просмотр состояния переменных при отладке невозможен (странная особенность AVR Studio).
 Правильно скопированную программу можно скомпилировать, нажав клавишу F7. При обнаружении ошибок сообщается номер строки программы, содержащей ошибку. Считать строки не надо: позиция курсора в окне программы указывается в правом нижнем углу окна AVR Studio.
 При завершении компиляции без ошибок можно приступить к отладке программы. Для начала посмотрите меню Debug. Для отладки нам достаточно пользоваться клавишей F11 (Trace into). Приступим, помолясь. Нажав F11 два раза, остановимся на команде ldi rgn,$18 .
 Просмотрим все, что в этой программе может изменяться. Выберем меню View | Watch (горячие клавиши Alt+1, обратите внимание на остальные горячие клавиши этого окна), на открывшемся окне щелкнем правой кнопкой мышки и выберем Add watch, в открывшуюся строку впишем имя первой переменной rgn, аналогично введем переменные st7, dly1, dly2, dly3. Если переменным соответствуют величины в десятичном формате - переведите их в шестнадцатеричный, еще раз щелкнув по окну правой кнопкой мышки и поставив галочку на строке Hex display левой кнопкой мышки. Уменьшите окно обычным для Windows способом, достаточно видеть непустые строки и колонки Watch, Value, Address, колонку Type можно убрать, потянув влево до отказа вертикальную линию, разделяющую слова Type | Address. Так же можно сузить колонки. Так подробно я останавливаюсь на уменьшении окна из-за того, что при отладке удобно просматривать сразу несколько окон, при этом места обычно не хватает.
 Так же из меню View вызовем окна Registers, Processor, New Memory View, New IO View. Нажимая клавишу F11, просто следите за изменениями в окнах.
 В окне Memory | Data изменения будут при входе в подпрограмму по адресу 259H (это адрес вершины стека, определенный нами как RAMEND - последний адрес внутреннего ОЗУ, равный 259H для AT90S8515); после входа в подпрограмму задержки в окне Processor можно наблюдать изменение реального времени по мере нажатия клавиши F11; если перевести курсор на последнюю команду подпрограммы, нажать левую кнопку мышки, а затем нажать Alt+F10, то через некоторое время (до нескольких минут - в зависимости от быстродействия компьютера) Вы увидите, сколько времени ушло на всю подпрограмму задержки (489,8 мс).
 В окне IO откройте Port B и установите в Input Pins бит 7. Программа будет переключать светодиоды (биты 0 и 1 в Input Pins) до тех пор, пока не обнаружит, что бит 7 сброшен (для сброса убрать галочку с бита 7), что будет соответствовать включению тумблера и соединению линии 7 порта B с 0V.
 Поздравляю Вас! Вы отладили "свою" первую программу. Файл a.hex можно загрузить в микроконтроллер AT90S8515 с помощью программатора и проверить работу программы, не забыв убрать команду rjmp dend и перекомпилировав после этого программу.
 А дальше все в ваших руках!
акселерометры цифровые с USB и RS-485 интерфейсами, аналоговые


   

<=  ссылки на разработки

различные АЦП с USB-интерфейсом и памятью
контроллер термопар с USB-интерфейсом
контроллер GSM управления и сигнализации
люксметр
колориметр
прочие разработки
печатная плата в домашних условиях
гарнитура стационарного телефона
Хостинг от uCoz