Страница 109 из 400

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

Добавлено: Вт ноя 29, 2011 14:38:41
hammer2000
спасибо большое за внимание. Просто, как то поскромничал, думал поменьше написать, чтоб места не занимать в посте. Но в данном случае понял- не получится:)
К тому же вопрос не совсем по ассемблеру наверно, а больше по протеусу.
Начало проблемы: решил в протеусе собрать схемку http://www.ua4nx.qrz.ru/lcd.htm.
Началось все с того, что при симуляции нарисованной схемы по программе http://www.ua4nx.qrz.ru/fail/LCD.zip
сначала ошибка в логе.(рис1). Это касалось строчки .def z =r19; Ограничение времени приема 40 битов.
Переменной Z я в программе не нашел, и я ее забил ";" после чего лог протеуса был без ошибок, но почему-то вывод 8 контроллера находился в 3-ем состоянии и соответственно индикация не работала. Решил может глюк какой в модели конкретного контроллера решил попробовать на другом контроллере(другой модели).
Включил AT90S2313 на той же программе, только изменил .DEVICE. При этой симуляции тоже индикации нет и появляется лог (рис.2)
Сделал вывод, что в данном случае проблема в стеке и попытался добавить туда строчки:
.def temp =r24 регистр 24 вроде нигде не используется в программе.
ldi temp, Ramend ;
out spl,temp
При попытке симуляции появляется лог (рис.3)
Кстати to GP1:заменил spl на sp - пропала ошибка "неопределенный символ" напротив этой строчки. Лог стал (рис.4) и кстати как подключить *.inc файл? потому что слабо представляю где его искать:(
напоследок попробовал с Attiny2313 той же программой (без строчек про стек, но .DEVICE поправил) индикация появилась, но кривоватая и судя по описаниям на контроллеры - там придется программку доработать(разные биты в регистрах таймера и прерывания разные....

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

Добавлено: Вт ноя 29, 2011 15:17:02
ploop
Это касалось строчки .def z =r19; Ограничение времени приема 40 битов.
Ошибка потому, что идентификаторами X, Y и Z обозначают последние 6 регистров, образующие регистровые пары XH:XL, YH:YL и ZH:ZL. Так же к ним можно обращаться как R27:R26, R29:R28 и R31:R30 соответственно. Ну или по отдельности.
Поэтому на попытку еще раз задефайнить Z он заругался.

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

Добавлено: Вт ноя 29, 2011 20:12:47
GP1
hammer2000 писал(а):...кстати как подключить *.inc файл? потому что слабо представляю где его искать:(
...
файлы описания идут в комплекте с AVRStudio пути к ним прописаны в системе, так что необходимо в нужном месте исходника вставить строку:
.include <имя def-файла>
именуются эти файлы примерно так:
m48def.inc
tn13def.inc
и т.п.
описание камня вставляют в самом начале исходника, обычно сразу после директивы
.device

шпрота не юзаю из-за его глючности :dont_know:

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

Добавлено: Вт ноя 29, 2011 20:46:03
ploop
Я, например, использую gavrasm, там не надо inc'и таскать, просто пишешь .device ATmega48 - и вперёд.

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

Добавлено: Ср ноя 30, 2011 05:53:58
hammer2000
Попробовал gavrasm. tavrasm вообще под win не нашел....грустно как-то стало:( от разнообразия или бардака...как назвать:) мало того что контроллеры все разные по прерываниям, флагам и т.д. Так еще и компиляторы отличаются...те файлы, которые во встроенном в протеус компиляторе avrasm вопросов не вызывали, gavrasm забраковал(исходник и файл с ошибками в приложении)
wavrasm кстати не ругается на .def z =r19 (про эту запись в исходнике в прошлом посте упоминал). Выходит, что делая программу, нужно вместе с программой еще указывать чем прошивку компилировали:(а если пргу не проверить на реальной железке, то не факт что работать будет....
AVRstudio пробовал, но там схемы нет, только порты регистры и все такое. VMLAB тоже пробовал. Но протеус интереснее, тем что наглядно можно работу всей схемы проследить....
Насчет SP вместо SPL - понятно. А что вместо Ramend? 0xDF указать? вроде там по описанию конец ОЗУ для AT90s2313

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

Добавлено: Ср ноя 30, 2011 07:24:03
GP1
как по мне, так ничего лучше чем Студия для АВРок нет, в любом случае окончательная отладка происходит в железе, ни один симулятор не дает 100% результатов работоспособности устройства.

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

Добавлено: Ср ноя 30, 2011 08:01:21
ploop
hammer2000 ассемблер, по сути, стандартизирован, и код можно перекомпилить практически без переделок. За исключением мелких нюансов, типа указания контроллера inc-файлами, напрямую, или по другому.

Касаемо вашей проблемы с gavrasm, смотрите внимательней на ошибку:

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

Name (SREG) already in use for a constant or variable
SREG - это имя статусного регистра, а вы пытаетесь обозвать так еще R5.
Как по вашему будет выглядеть код: IN R5, SREG? Будет IN SREG, SREG. Теперь попробуйте на месте компилятора разобраться, что куда...
А что вместо Ramend
Ничего. Если правильно указали контроллер, вместо этой константы будет конец ОЗУ.

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

Добавлено: Ср ноя 30, 2011 08:27:43
ploop
Посмотрел бегло ваш код. Не знаю, кто/как/где это писал, но во-первых все идентификаторы портов ввода-вывода заданы числовыми значениями (по сути допускается такое, но мозг взорвётся), во-вторых код корявый (достаточно взглянуть на подпрограмму decod).

Такое ощущение, что Сишный (или другого ЯВУ) вывод компилятора переписали под ассемблер.

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

Добавлено: Ср ноя 30, 2011 08:43:40
hammer2000
Да я видел ошибки:( Самое интересное, программа-то не моя....а скаченная по ссылке (смотри мой пост от 29.11.11) и вроде как должна быть рабочей.... там не одна статья у человека написана. в общем "не верь глазам своим"
А вместо ramend не хочет ни avrasm, ни в vmlab конец ОЗУ подставлять:(
поставлю еще студию:)поэкспериментируем....
To ploop: Я хоть и начинающий, но тоже показалось странным, что порты ввода-вывода заданы адресными значениями... не наглядно как-то:(
в общем попробуем вместе с самообучением творчески переработать программку;)

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

Добавлено: Ср ноя 30, 2011 08:56:14
pyzhman
Согласен с ploop'ом насчет переделки Сишного кода в асмовский, очень даже смахивает. Сказать-то что хотел: простая замена 1200 на 2313 не канает, у первого стек железный. Да и еще наверняка есть разница, лень смотреть.

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

Добавлено: Ср ноя 30, 2011 09:12:29
hammer2000
Подскажите исходя из приложенного скрина, я правильно понимаю, что в программе для at90s2313 вместо "Ramend" я могу написать 0xdf ? Если нет, то какой адрес тогда должен быть?

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

Добавлено: Ср ноя 30, 2011 09:20:35
Engineer_Keen
hammer2000 писал(а):в программе для at90s2313 вместо "Ramend" я могу написать 0xdf ?
Да.
А вообще, не мучайтесь с цифрами, вот файл со всеми определениями для at90s2313. Подключите его как GP1 написал.

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

Добавлено: Ср ноя 30, 2011 09:21:12
pyzhman
Так нужно писать.

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

Добавлено: Ср ноя 30, 2011 09:21:30
ploop
вместо "Ramend" я могу написать 0xdf
Да, можно.

Вообще, суть в том, что если пытаться использовать чужой ассемблеровский код в своей программе, то нужно на 100% знать, как он работает, т.е. уметь легко написать его самому, смысл брать чужой сводится только к экономии времени. Разумеется, если программа сложнее мигания светодиодом.

Это не Си, где цепанул библиотеку, а что там внутри - плевать. Регистры, прерывания, тайминги, всё должно быть под контролем. Зато он даёт большие преимущества в скорости и объёме кода. Слышал, на 2313 реализовывали такие вещи, где модные ардуины зашивались...

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

Добавлено: Ср ноя 30, 2011 11:26:46
Gudd-Head
У кого-нибудь есть пример кода реализации Линейно Рекуррентного Регистра (ЛРР) для АВР? Я в небольшом ступоре: вместо последовательности максимальной длины 2^N-1 = 255 у меня получается... 217! :shock: Ладно бы 127, а тут вообще какое-то странное число.

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

Добавлено: Ср ноя 30, 2011 12:34:01
ploop
Линейно Рекуррентного Регистра
о_О
Гуглить пришлось, чтоб узнать, хоть что это такое. Наткнулся на подробное описание, может пригодится... http://dxdy.ru/topic9474.html

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

Добавлено: Ср ноя 30, 2011 12:55:56
Gudd-Head
ploop писал(а):Гуглить пришлось, чтоб узнать, хоть что это такое.
Ну, тогда можно было и не отвечать. Естессно, я обгуглил всё что можно. В теории всё красиво, а на практике...

Идея была реализовать простой и компактный генератор псевдослучайной последовательности. Последовательность получилась, но она короткая и не охватывает все 255 значений :(

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

Добавлено: Ср ноя 30, 2011 13:23:41
pyzhman
Дык ведь этож генератор псвевдослучайных битов, но никак не чисел. Теорию подучить-с.

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

Добавлено: Ср ноя 30, 2011 13:31:50
ploop
Gudd-Head, может проще аппаратный задействовать? В виде АЦП например...
Хотя алгоритм пригодился бы, если сделаешь, надеюсь, поделишься? :beer:

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

Добавлено: Ср ноя 30, 2011 13:32:31
Gudd-Head
pyzh_man писал(а):Дык ведь этож генератор псвевдослучайных битов, но никак не чисел. Теорию подучить-с.
Ну дык, раз у меня последовательность байтов в регистре длины 217, то и последовательность битов на конце этого регитсра никак не может быть длинее. Не?
ploop писал(а):может проще аппаратный задействовать? В виде АЦП например...
Хотя алгоритм пригодился бы, если сделаешь, надеюсь, поделишься?
Не, не проще)
Алгоритм элементарный, 8 строчек кода... правда, работает на 85% :)))
Естессно поделюсь, я это для статейки задумал.