Страница 7 из 400
Добавлено: Пн окт 27, 2008 21:08:01
MegaRazoR
Ни как не пойму !?!? Асм файл сгенерированный кодвижном содержит прерывания причем все они а симуляторе работают. НО вектора прерываний ни где не указаны ?!! конечно же скорее всего они указаны но я не пойму где.
Вот например прерывание по SPI:
Раз написано _spi_isr: значит должно быть написано где то выше
но вот что то такого не видать.
Добавлено: Пн окт 27, 2008 21:37:43
tych
там файлик есть типа .vec вот такого содержания к примеру
Код: Выделить всё
;INTERRUPT VECTORS
RJMP __RESET
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP _adc_isr
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
Это из примера C:\CVAVR\examples\ADC8535
Добавлено: Вт окт 28, 2008 11:14:02
MegaRazoR
Инкремент переменной integer (16 bit): Код:
MOVW R30,R4
ADIW R30,1
MOVW R4,R30
Как работает команда MOVW ? Есть ли жесткая привязка между R4 и R5 ? Могу ли я указать здесь R5 вместо R4 с целью использования пары R5 R6 ?
В описании команды: Rd+1:Rd = Rr+1:Rr, r,d even
Могу ли я использовать любой регистр и следующий за ним в качестве операнда этой команды?
Добавлено: Вт окт 28, 2008 19:50:57
tych
MegaRazoR писал(а):... все равно не понятно могу ли я использовать любой регистр и следующий за ним в качестве операнда этой команды.
наверно любой из 32-ух РОН
Добавлено: Вт окт 28, 2008 20:00:26
ARV
tych писал(а):наверно любой из 32-ух РОН
ошибаетесь. в MOVW можно использовать любые
четные регистры в качестве указателя базы операндов.
MOVW R4, R6 - работает
MOVW R3, R6 - не работает
Добавлено: Вт окт 28, 2008 21:27:42
YurkaM
И, кстати, на это чётко указано в описании команд
Rd+1:Rd = Rr+1:Rr,r,d even
even - чётный...
Добавлено: Вт окт 28, 2008 21:28:58
MegaRazoR
откуда вы это знаете ? поделитесь секретом где это написано.
Добавлено: Вт окт 28, 2008 21:35:43
YurkaM
В любом даташите на AVR. В книжках типа "Евстифеев А.В. Микроконтроллеры AVR" и т.д. А вообще в таких случаях достоверный на 99% ответ даст любой нормальный симулятор. Делов - на 1 минуту.
Добавлено: Вт окт 28, 2008 22:09:21
ARV
MegaRazoR писал(а):откуда вы это знаете ? поделитесь секретом где это написано.
я использую AVR Studio, в комплекте с которой идет отличный справочный файл по ассемблеру. по-моему, самый лучший из всех виденных мною.
Добавлено: Ср окт 29, 2008 16:44:47
MegaRazoR
как лучше всего организовать такую фунцию:
если в регистре R4 содержится число 0х11 то сбросить регистр R7
как реализуется сумма по модулю два ?
что такое сохранение ?
Добавлено: Ср окт 29, 2008 17:14:12
Pooher
как лучше всего организовать такую фунцию:
если в регистре R4 содержится число 0х11 то сбросить регистр R7
как реализуется сумма по модулю два ?
Label:
ldi tmp, 0x11
cpse tmp, r4
ret
clr r7
ret
Добавлено: Ср окт 29, 2008 17:30:47
MegaRazoR
а для 16 битных то же самое ?
мне надо сбросить такой то регистр если в регистре Z (16 бит) заданное число.
Добавлено: Ср окт 29, 2008 19:59:30
tych
MegaRazoR писал(а):а для 16 битных то же самое ?
мне надо сбросить такой то регистр если в регистре Z (16 бит) заданное число.
Написшите после каждой строчки примера - что она делает. РАЗБЕРИТЕСЬ !!! сами.
А потом - поняв - модифицируйте код под нужную вам задачу.
Добавлено: Пт окт 31, 2008 01:23:59
Zanzib
Ну, все-думаю., пора разобрацця с АВР. ПОлез в обучалку (кто её писал? где-то ещё видел на каком-то сайте). Скачал ассемблер, блокнот, что там ещё надо для "пробы пера"?
Написал по совету афтра батник (фу, какое слово) инифига не получилось с вот этимим ключами., которые советует афтар:
с:\Temp\avr\tavrasm\tavrasm.exe -i code.asm -e output\listfile.lst -o output\hexfile.hex
pause=null
Потому что пишет мне такое:
c:\Temp\AVR\AVR-projects\tutorial>ё:\Temp\avr\tavrasm\tavrasm.exe -i code.asm -e
output\listfile.lst -o output\hexfile.hex
Системе не удается найти указанный диск.
Откуда тут появился диск e:\
А?
Афтар пишет "Таким образом, мы создали:
D:\AVR-projects\
D:\AVR-projects\tutorial\
D:\AVR-projects\tutorial\output"
А на скриншоте совсем другое:
http://radiokot.ru/start/mcu_fpga/avr/02/02.gif
D:\Project\tutorial\ ...
Я понимаю, что афтар в последний момент передумал и вместо AVR-project, как обещал мне, создал, не предупредив? Projeсt, но ведь простите, это обучалка для начинающих, и такая небрежность настораживает.
Короче, у меня ничего не вышло с ключами и этим допотопным ассемблером. Да и, мне кажется, руками писать в наше время разные ключи-архаизм. Это как пользоваться досовским архиватором, указывая ему разными ключами, что мы от него хотим.
Добавлено: Пт окт 31, 2008 07:09:12
tych
Zanzib писал(а): ведь простите, это обучалка для начинающих, и такая небрежность настораживает.
Да уж 1.5 года примерно пишем тут про ошибки и не меняют ни фига.
Добавлено: Пт окт 31, 2008 11:46:53
Zanzib
tych писал(а):Zanzib писал(а): ведь простите, это обучалка для начинающих, и такая небрежность настораживает.
Да уж 1.5 года примерно пишем тут про ошибки и не меняют ни фига.
На этом сайте все скопировано слово в слово и с теми же ашипками.
http://radlub.sk6.ru/index.php?name=pages&op=view&id=67
Может это специально так, чтобы установить некий порог пролезания?
Добавлено: Вт ноя 04, 2008 23:33:37
GRAF
Zanzib, смотрите, как у меня:
C:\AVR\AVR-Projects\tutorial
Здесь лежат и батник, и асм код.
В батнике compile.bat прописано:
Код: Выделить всё
C:\AVR\tavrasm\tavrasm.exe -i code.asm -e output\listfile.lst -o output\hexfile.hex
pause=null
Эту прогу (tavrasm.exe) я положил сюда:
C:\AVR\tavrasm
avrasm, соответственно:
C:\AVR\avrasm
В асм коде, как советуется в первом примере, написал:
Код: Выделить всё
.include "C:\AVR\avrasm\APPNOTES\2313def.inc" ;В данном случае, мы пишем для
;AT90s2313. Соответственно, и файл – 2313.
ldi R16,5 ;загрузка констант в регистры
ldi R17,7
and R16,R17 ;логическое «И» двух регистров
nop
;**********************************************************
; Всё прекрасно компилится и hex файл сбрасывается в папочку
; C:\AVR\AVR-Projects\tutorial\output
Добавлено: Пт ноя 07, 2008 01:42:22
GRAF
Подскажите, пожалуйста.
В результате инкремента 1 регистр был полностью заполнен, произошёл перенос на следующий. Инкремент вызывался прерываниями от порта INT1.
Нужно посчитать кол-во поступивших на этот порт импульсов и вывести это число также импульсами на порт B.
Как это осуществить?
Декрементом, начиная со второго регистра, каждый раз сравнивая его с 0 и выводя 1 на порт B при отрицательном результате сравнения, а при положительном перескочить на первый регистр, и продолжить его декремент?
Код: Выделить всё
start:
cmp R17,0
breq qwe
out PortB,0b0000001
out PortB,0b0000000
dec R17
cmp R17,0
brec qwe
out PortB,0b0000001
out PortB,0b0000000
rjmp start
qwe:
cmp R16,0
breq konec
out PortB,0b0000001
out PortB,0b0000000
dec R16
rjmp qwe
konec:
.............
Добавлено: Пт ноя 07, 2008 19:25:40
andrestudio
Собрал утилитку что бы ассемблер было полегче учить (памяти вобще нет а от монитора в книгу от книги к монитору задолбало блин нырять), но в принципе таким образом можно и для других языков сделать подобный (если у кого есть полное описание флагов в (*.тхт) по всей линейке МК скинте куда нибудь пожалуйста) пожалуй и флаги надо будет включить.
AVR_assemler_mini_help.zip
http://radiokot.ru/forum/download.php?id=8437
если есть какие неточности просьба сообщить
Добавлено: Ср ноя 12, 2008 22:10:50
Nata
Здравствуйте, если ответ на мой вопрос уже есть на форуме, не пинайте сильно, искала как могла, но не нашла.
Мне нужен код прошивки для AVR для общения с жёстким диском.
Если у кого-то есть, поделитесь, пожалуйста. Или подскажите, где можно поискать.
Заранее спасибо.