Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение unalex »

afz писал(а):причем точку с запятой ставлю уже после табов

вот это правильно, в коде выше вижу точки с запятой непосредственно после команды - ИМХО визуально они должны принадлежать не команде а комментарию

SmarTrunk советую познакомиться с Eclipse, он хоть и страшен в плане количества настроек и слегка неповоротлив, но считаю что это самая универсальная среда для программирования разных архитектур

а я хочу помучать немного CodeBlocks или CodeLite, хочу полностью портативную среду, а в эклипсе так и не разобрался как прописывать относительные пути к компиляторам
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Реклама
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение afz »

SmarTrunk
А что там подсвечивать в синтаксисе? И вообще, какой там синтаксис у асма? Впрочем, студия подсвечивает опознанные коды операций синим. Что удобно при сочинении меток: сочинил новую метку, а она вдруг взяла, да и стала синей - ага, значит метка совпала с опкодом, надо ее изменить. Или наоборот: написал по памяти опкод, а он не посинел - значит надо заглянуть в справочник по командам. Да, а комментарии подсвечиваются зеленым - помогает, когда промажешь по точке с запятой.
unalex
И зачем перебирать всякое-разное? ИМХО, есть бесплатная студия, с отличными ассемблером, не менее приличным симулятором и гнутым Си, а приспичит - и с отладкой через JTAG, так зачем еще что-то? Если надо таскать проекты между разными компами, так поставить на них всех эту студию, и вперед!
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Реклама
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение unalex »

зачем перебирать?
мне нужно программировать не только AVR, но и PIC, ARM и писать виндячие приложения. Студия такого не умеет, а держать для каждого проекта свои IDE меня не сильно радует
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение shads »

unalex писал(а):зачем перебирать?
мне нужно программировать не только AVR, но и PIC, ARM и писать виндячие приложения. Студия такого не умеет, а держать для каждого проекта свои IDE меня не сильно радует

Первый раз слышу от человека что он и AVR и PIC программиует..... Я думал это взаимоисключающие вещи, обычно владеющий одним, жестко критикует другое.....

У меня например стоит AVRSTUDIO и CPP BUILDER под WIN, и счастья полные штаны.... (ну мож со временем еще и ARM попробую), но зачем то все подряд использовать?.....
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение unalex »

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

кстати насчет портативной версии это как раз связано с тем, что на институтские компы я не имею права что-либо ставить
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Реклама
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение afz »

unalex писал(а):кстати насчет портативной версии это как раз связано с тем, что на институтские компы я не имею права что-либо ставить

Пардон, забыл о том, что у студентов прав никаких. Просто когда студентом был я, у нас в институте был 1 (один) компьютер. Назывался он ЭВМ "Минск-32" и занимал бывший чертежный зал (по площади равный спортзалу, который был этажом выше). И не скажу, что там было особо просторно... :-)
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BOB51 »

По поводу
"Первый раз слышу от человека что он и AVR и PIC программиует"
- мне спокойненько под асмом работается со всеми тремя "свободно-бесплатными" AVR, PIC12/16/18 и MCS51. Правда для написания текстов предпочитаю использовать редактор DPAD v.5.0.1.2.
Ну и немножко "отсебятины" в текстах - для совместимости понимания... 8)
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение gauss »

Читал в даташите на Atmega8 про внешние прерывания. Насколько я понял, можно запрограммировать так, что "повышение уровня на выводе INT1/0 будет вызывать прерывание. Насколько высокой амплитуды должен быть входной импульс, чтобы прерывание гарантированно сработало? Какой длительности должен быть импульс?
:idea:
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение SmarTrunk »

По уровню - сигнал должен превысить логический порог входа МК. В даташите есть графики порога срабатывания входов, в зависимости от разных факторов. По длительности не знаю, но информация на входах проверяется один раз за такт, так что, думаю, импульс должен быть не короче периода тактовой частоты, хотя стоит проверить в даташите
Последний раз редактировалось SmarTrunk Сб мар 02, 2013 17:45:39, всего редактировалось 1 раз.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение pyzhman »

А по длительности не менее 50 нс. Могу ошибиться, т.к. по памяти.
Docendo discimus
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение gauss »

Просто есть необходимость сделать счетчик импульсов. А их амплитуда точно неизвестна (около 0.1...1В)
:idea:
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение SmarTrunk »

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

В АТмега есть встроенный компаратор, может, он подойдет.
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение FUZZY_ »

Необходимо сделать перекодировку по таблице table которая находится в .code
индекс берется из байтов lcd при индексе 0 в lcd=0x45

не правильно берутся байты из памяти програм - помогите правильно вычислить смешение в памяти програм
для доступа к таблице перекодировки

.def tmp=r17
.def AX=r18
.def BX=r19
.dseg
lcd:
.byte 4
.cseg
...
...
...
table:
.db 0x45,0x34, 0xf5,0xe2, 0x9a,0x12, 0x6d,0x6f, 0x2c,0xdf, 0x87,0
...
...
...
...
...
transcode:
; RAM
ldi xl,low(lcd)
ldi xh high(lcd)
; FLASH
ldi zl,low(table<<1)
ldi zh,high(table<<1)
;counter
ldi tmp,4

loop:
ld AX,X

clr BX
add zl,AX
adc zh,BX
lpm ;Загузка младшего байта
st X+,r0

dec tmp
tst tmp

brne loop

ret
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ChipKiller »

... лишнее
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение akl »

FUZZY_ А так?
Спойлер

Код: Выделить всё

.def tmp=r17
.def AX=r18
.def BX=r19
.equ   lcd=$80
;.dseg
;lcd:
;.byte 4
.cseg
;...
;...
;...
.ORG $3E
table:
.db 0x45,0x34, 0xf5,0xe2, 0x9a,0x12, 0x6d,0x6f, 0x2c,0xdf, 0x87,0
;...
;...
;...
;...
;...
START:
   LDI   R16,LOW(RAMEND)
   OUT   SPL,R16

transcode:
; RAM
ldi xl,(lcd)
ldi xh,high(lcd)
; FLASH
ldi zl,low(table<<1)
ldi zh,high(table<<1)
;counter
ldi tmp,12

loop1:
   LPM
   ST   X+,R0
   ADIW   ZL,1
   DEC   TMP
   BRNE   LOOP1

   RJMP   START
Последний раз редактировалось akl Вс мар 03, 2013 15:23:28, всего редактировалось 1 раз.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение SmarTrunk »

FUZZY_
Сходу кажется, что должно работать. Почему бы в AVR Studio не погонять?
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение FUZZY_ »

Спасибо за помощь.

ошибку нашел

загрузку адреса надо было поставить в тело цикла loop:

ldi zl,low(table<<1)
ldi zh,high(table<<1)

зетем

clr BX
add zl,AX
adc zh,BX
lpm ;Загузка младшего байта

tst лишнее .
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение unalex »

FUZZY_ уважай коллег, размещай код в теге code, неудобно читать
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
trevis
Родился
Сообщения: 2
Зарегистрирован: Вс мар 10, 2013 18:37:03

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение trevis »

Всем доброго времени суток! Я новичок, и у меня возникли проблемы с массивами. Буду благодарен если кто-нибудь поможет разобраться.

Код: Выделить всё

.dseg
data_array: .db 0x00, 0x0F, 0xFF, 0xF0
.cseg
ldi zl, LOW(data_array)
ldi zh, HIGH(data_array)
ldi r16, 0
loop:   
   lpm r0, z+
   inc r16
   cpi r16, 0x04
brne loop

Работаю на avrstudio (atmega32), проблема состоит в том, что в процессе дебагинга я просматриваю значение регистра r0 на каждой итерации, однако оно остается неизменным - 0xFF. Подскажите пожалуйста, что я делаю неправильно и если несложно, то приведите простой пример работы с массивом.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение SmarTrunk »

LPM служит для загрузки констант из флеш-памяти программ. А .dseg как я понял (поправьте, если не прав) предполагает размещение неких переменных в ОЗУ (SRAM). Если нужно загружать константы из флеш-памяти, то я бы убрал директиву .dseg и написал (data_array<<1) при загрузке адреса в регистр z, как делалось двумя сообщениями выше. Потому, что флеш-память 16-разрядная, и хранит два байта по каждому адресу.
Ответить

Вернуться в «AVR»