Установка AVRA
В репозитории Ubuntu есть пакет avra, но его версия - 1.2.3. Эта версия не даст нам собрать программу без работы напильником, поскольку там есть некие директивы pragma и кое-что другое, мешающее нам. Мы ищем легкие пути, поэтому скачаем с сорсфорджа пакет с подходящей версией - 1.3.0 и установим его.
Вот по этой ссылке хостится нужный нам пакет. Качаем оттуда avra-1.3.0.tar.bz2. далее я предположу, что он скачался в ~/Загрузки. Если это не так, измените в командах папку назначения.
Распаковываем:
tar -xf ~/Загрузки/avra-1.3.0.tar.bz2
cp -R ~/Загрузки/avra-1.3.0 ~
cd ~/avra-1.3.0/src
Для сборки программе очень нужно, чтобы в папке src лежали файлы NEWS, README, AUTHORS и ChangeLog, которых там нет. Что ж, положим их туда. Два файла лежат в соседней папке, поэтому делаем так:
cp ../AUTHORS ../README ../src
gedit ChangeLog
gedit NEWS
aclocal
autoconf
automake -a
./configure
sudo make
sudo make install
avra --version
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010) Copyright (C) 1998-2010. Check out README file for more infoAVRA is an open source assembler for Atmel AVR microcontroller family
It can be used as a replacement of 'AVRASM32.EXE' the original assembler shipped with AVR Studio. We do not guarantee full compatibility for avra.
AVRA comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of avra under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.
sudo mv ~/avra-1.3.0/includes/ /usr/share/avra
Установка и настройка Geany
Geany можно смело установить из репозитория:
sudo apt-get install geany
gedit ~/.config/geany/filedefs/filetypes.asm
Сохраняем файл.
Пишем простую прогу...
Возьмем проц ATtiny2313, подсоединим к ноге 12 (PB0) светодиодик и будем им мигать.
Запускаем Geany, делаем Файл -> Новый, Сохранить как... blink2313 в папке ~/AVRasm/blink2313.
Теперь пишем вот такой код, например:
.nolist ;исключаем из листинга следующие две строки
.includepath "/usr/share/avra/" ;указали папку с инклудами
.include "2313def.inc" ;присоединили описание проца
.list ;все остальное включаем в листинг
;начало таблицы векторов прерывания
RJMP main ; RESET
RETI ; INT0
RETI ; INT1
RETI ; TIMER1_CAPT
RETI ; TIMER1_COMPA
RETI ; TIMER1_OVF
RJMP tc0i ; TIMER0_OVF
RETI ; USART_RX
RETI ; USART_UDRE
RETI ; USART_TX
RETI ; ANA_COMP
RETI ; PCINT
RETI ; TIMER1_COMPB
RETI ; TIMER0_COMPA
RETI ; TIMER0_COMPB
RETI ; USI_START
RETI ; USI_OVF
RETI ; EE_RDY
RETI ; WDT
;конец таблицы векторов прерывания
tc0i: ;обработка прерывания по переполнению таймера 0
IN r1,SREG ;сохраняем содержимое флагового регистра
SBI PINB,0
OUT SREG,r1 ; возвращаем изначальное значение флагового регистра
RETI ; выходим из прерывания
main: ;всякая инициализация
LDI r16,LOW(RAMEND)
OUT SPL,r16 ; Инициализировали указатель стека
LDI r16,(1<<TOIE0)
OUT TIMSK,r16 ; разрешили прерывание при переполнении таймера 0
LDI r16,(1<<CS02)
OUT TCCR0,r16 ; настроили делитель таймера 0 на 256
LDI r16,1
OUT DDRB,r16 ; настроили порт B
SEI ; разрешили глобальные прерывания
loop: ;начало основного цикла
NOP ;не делаем ничего
RJMP loop ; переходим на начало основного цикла
...и заливаем ее в МК
Компилируем все свои дела кнопочкой наверху:
Теперь внизу слева открываем терминал (очень удобно, кстати!):
Переходим в папку с проектом:
cd ~/AVRasm/blink2313
avrdude -p[контроллер] -c[программатор] -Uflash:w:[название проекта].hex:a
avrdude -pt2313 -cusbasp -Uflash:w:blink2313.hex:a
Все, лампочка мигает, караван идет, собаки лают. Любые вопросы по теме задавайте в комментариях или по e-mail.
Комментариев нет:
Отправить комментарий