Страница 181 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт мар 01, 2013 17:54:13
unalex
afz писал(а):причем точку с запятой ставлю уже после табов
вот это правильно, в коде выше вижу точки с запятой непосредственно после команды - ИМХО визуально они должны принадлежать не команде а комментарию
SmarTrunk советую познакомиться с Eclipse, он хоть и страшен в плане количества настроек и слегка неповоротлив, но считаю что это самая универсальная среда для программирования разных архитектур
а я хочу помучать немного CodeBlocks или CodeLite, хочу полностью портативную среду, а в эклипсе так и не разобрался как прописывать относительные пути к компиляторам
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт мар 01, 2013 21:21:02
afz
SmarTrunk
А что там подсвечивать в синтаксисе? И вообще, какой там синтаксис у асма? Впрочем, студия подсвечивает опознанные коды операций синим. Что удобно при сочинении меток: сочинил новую метку, а она вдруг взяла, да и стала синей - ага, значит метка совпала с опкодом, надо ее изменить. Или наоборот: написал по памяти опкод, а он не посинел - значит надо заглянуть в справочник по командам. Да, а комментарии подсвечиваются зеленым - помогает, когда промажешь по точке с запятой.
unalex
И зачем перебирать всякое-разное? ИМХО, есть бесплатная студия, с отличными ассемблером, не менее приличным симулятором и гнутым Си, а приспичит - и с отладкой через JTAG, так зачем еще что-то? Если надо таскать проекты между разными компами, так поставить на них всех эту студию, и вперед!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт мар 01, 2013 22:13:14
unalex
зачем перебирать?
мне нужно программировать не только AVR, но и PIC, ARM и писать виндячие приложения. Студия такого не умеет, а держать для каждого проекта свои IDE меня не сильно радует
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт мар 01, 2013 22:54:13
shads
unalex писал(а):зачем перебирать?
мне нужно программировать не только AVR, но и PIC, ARM и писать виндячие приложения. Студия такого не умеет, а держать для каждого проекта свои IDE меня не сильно радует
Первый раз слышу от человека что он и AVR и PIC программиует..... Я думал это взаимоисключающие вещи, обычно владеющий одним, жестко критикует другое.....
У меня например стоит AVRSTUDIO и CPP BUILDER под WIN, и счастья полные штаны.... (ну мож со временем еще и ARM попробую), но зачем то все подряд использовать?.....
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 04:13:07
unalex
ну помимо моего хобби есть еще и учеба, в одном институте учили пики, сейчас перевелся - авры, причем именно в эклипсе, хотя против него ничего не имею, очень хороший инструмент, вот только с относительными путями разобраться не смог, поэтому и ковыряю кодеблокс и коделайт
кстати насчет портативной версии это как раз связано с тем, что на институтские компы я не имею права что-либо ставить
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 05:29:59
afz
unalex писал(а):кстати насчет портативной версии это как раз связано с тем, что на институтские компы я не имею права что-либо ставить
Пардон, забыл о том, что у студентов прав никаких. Просто когда студентом был я, у нас в институте был 1 (один) компьютер. Назывался он ЭВМ "Минск-32" и занимал бывший чертежный зал (по площади равный спортзалу, который был этажом выше). И не скажу, что там было особо просторно...

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 08:29:53
BOB51
По поводу
"Первый раз слышу от человека что он и AVR и PIC программиует"
- мне спокойненько под асмом работается со всеми тремя "свободно-бесплатными" AVR, PIC12/16/18 и MCS51. Правда для написания текстов предпочитаю использовать редактор DPAD v.5.0.1.2.
Ну и немножко "отсебятины" в текстах - для совместимости понимания...

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 17:35:34
gauss
Читал в даташите на Atmega8 про внешние прерывания. Насколько я понял, можно запрограммировать так, что "повышение уровня на выводе INT1/0 будет вызывать прерывание. Насколько высокой амплитуды должен быть входной импульс, чтобы прерывание гарантированно сработало? Какой длительности должен быть импульс?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 17:41:48
SmarTrunk
По уровню - сигнал должен превысить логический порог входа МК. В даташите есть графики порога срабатывания входов, в зависимости от разных факторов. По длительности не знаю, но информация на входах проверяется один раз за такт, так что, думаю, импульс должен быть не короче периода тактовой частоты, хотя стоит проверить в даташите
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 17:45:09
pyzhman
А по длительности не менее 50 нс. Могу ошибиться, т.к. по памяти.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 18:15:45
gauss
Просто есть необходимость сделать счетчик импульсов. А их амплитуда точно неизвестна (около 0.1...1В)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 02, 2013 18:27:00
SmarTrunk
Слишком мало. Надо делать обычные КМОП-уровни, например, компаратором. Еще, можно подавать импульсы напрямую на внешний вход таймера, чтобы он их считал, в фоновом режиме периодически считывая подсчитанное значение.
В АТмега есть встроенный компаратор, может, он подойдет.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 03, 2013 14:21:52
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
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 03, 2013 14:32:15
ChipKiller
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 03, 2013 15:18:17
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
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 03, 2013 15:22:29
SmarTrunk
FUZZY_
Сходу кажется, что должно работать. Почему бы в AVR Studio не погонять?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 03, 2013 16:25:33
FUZZY_
Спасибо за помощь.
ошибку нашел
загрузку адреса надо было поставить в тело цикла loop:
ldi zl,low(table<<1)
ldi zh,high(table<<1)
зетем
clr BX
add zl,AX
adc zh,BX
lpm ;Загузка младшего байта
tst лишнее .
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн мар 04, 2013 00:28:49
unalex
FUZZY_ уважай коллег, размещай код в теге code, неудобно читать
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 10, 2013 18:51:22
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. Подскажите пожалуйста, что я делаю неправильно и если несложно, то приведите простой пример работы с массивом.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс мар 10, 2013 20:07:15
SmarTrunk
LPM служит для загрузки констант из флеш-памяти программ. А .dseg как я понял (поправьте, если не прав) предполагает размещение неких переменных в ОЗУ (SRAM). Если нужно загружать константы из флеш-памяти, то я бы убрал директиву .dseg и написал (data_array<<1) при загрузке адреса в регистр z, как делалось двумя сообщениями выше. Потому, что флеш-память 16-разрядная, и хранит два байта по каждому адресу.