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

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

Добавлено: Ср ноя 30, 2011 13:53:21
pyzhman
Не помню. Самому время повспоминать. :)

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

Добавлено: Ср ноя 30, 2011 13:56:28
ploop
Прочесать флеш (где программный код), каждый раз со смещением, считать N байт и поксорить их. Для 8 бит последовательности вполне сойдёт имхо...

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

Добавлено: Ср ноя 30, 2011 14:01:20
pyzhman
Это не есть гут. Вычисляться должно по формуле, ибо должно быть повторяемо. В смысле другим/в другое время. Но если для сэба....

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

Добавлено: Ср ноя 30, 2011 14:13:05
ploop
Разумеется, это так, чтобы быстро, эффективно и без гугла. Но не есть правильно.

Часто приходится прибегать к таким методам. Например, (пришлось недавно) чтобы идентифицировать пару кнопок на пульте ДУ, можно не раскуривать весь алгоритм (что было бы правильно), а сдвинуть в регистр несколько ключевых бит из всей последовательности.

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

Добавлено: Ср ноя 30, 2011 15:04:32
Engineer_Keen
Gudd-Head писал(а):вместо последовательности максимальной длины 2^N-1 = 255 у меня получается... 217! :shock: Ладно бы 127, а тут вообще какое-то странное число.
Вроде как длина зависит от позиции и количества бит, с которых идет обратная связь и 2^N-1 = это идеальный вариант. Хотя может я путаю с другим ГСЧ...

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

Добавлено: Ср ноя 30, 2011 15:24:46
BOB51
у меня для световой "чехарды" стояли 8 8-байтовых ГСЧ (по Хоровицу-Хиллу) с разными узлами ОС и результат каждого выводился в соответствуюший бит байта вывода + "плавающее" изменение узловой точки при каждом переопустошении... однако уж больно "нервирующий" результат получился 8)

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

Добавлено: Ср ноя 30, 2011 16:25:09
Engineer_Keen
Вот вам 255:

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

INIT:
...
LDI RND,0x01 ;инициализация генератора (что угодно, кроме 0)
...
RCALL RANDOM8 ;получение случайного байта, результат в RND
...


;функция получения случайного байта...
RANDOM8:
	RCALL	RANDOM1 ;...методом последовательного получения
	RCALL	RANDOM1 ;8 случайных бит
	RCALL	RANDOM1
	RCALL	RANDOM1
	RCALL	RANDOM1
	RCALL	RANDOM1
	RCALL	RANDOM1
	RCALL	RANDOM1
	RET
RANDOM1: ;получение случайного бита (РСЛОС Галуа)
	LDI	R17,0b10000111 ;отводы из битов 7,2,1,0
	SBRS	RND,0 ;умножаем на бит 0
	LDI	R17,0b00000000
	BST	RND,0 ;сохраняем бит 0
	EOR	RND,R17 ;XOR с битом 0
	ROR	RND ;сдвиг
	BLD	RND,7 ;бит 0 теперь 7-й
	RET

К удивлению тоже сначала получилось 217, перевернул "маску" задом-наперед и последовательность удлинилась.
Полезная информация бралась: тут

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

Добавлено: Ср ноя 30, 2011 19:52:44
Gudd-Head
Engineer_Keen, респект вам за сцылку! :beer:
Значит, нужны были хитрые обратные связи! А я-то брал из механизма образования CRC на DS18B20 в полной уверенности, что у них последовательность максимальной длины!!!
Правда, в ваш код я не вглядывался — он мне показался каким-то страшным :shock:
ploop, вот мой код (в виде цикла):

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

clr r17	очищаем вспомогательный регистр;
ldi r16, 0b10000000	загружаем любое число кроме 0b00000000;
loop:	;зацикливание
bst r16, 0;	сохраняем перед сдвигом нулевой бит в флаг Т
lsr r16;	лог. сдвиг влево
bld r17, 7;	загружаем флаг Т в седьмой
bld r17, 6;	шестой
bld r17, 5;	пятый 
bld r17, 0;	и нулевой бит (согласно http://www.newwaveinstruments.com/resources/articles/m_sequence_linear_feedback_shift_register_lfsr/8stages.txt для 8-ми бит)
eor r16, r17;	искл. "ИЛИ" регистров
rjmp loop;	результат в R16

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

Добавлено: Ср ноя 30, 2011 21:11:20
GP1
Gudd-Head
что-то туплю, не нашел выхода из цикла

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

Добавлено: Чт дек 01, 2011 08:02:46
Gudd-Head
GP1 писал(а):что-то туплю, не нашел выхода из цикла
:))) Это просто пример — погонять посмотреть псевдослучайную последовательность в R16.
Выходить можно по таймеру или оформить один шаг цикла в виде функции.

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

Добавлено: Чт дек 01, 2011 08:16:47
GP1
а я то подумал - "лыжи не едут" :)))

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

Добавлено: Чт дек 01, 2011 10:17:51
ploop
ploop, вот мой код (в виде цикла)
Благодарю!
Надо будет проверить как-нибудь...

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

Добавлено: Чт дек 01, 2011 13:19:35
BOB51
вполне и одного узла хватит 8)
не совсем верная обработка исходного байта - там вроде результат должен дописываться в исходник после каждого шага а затем следующий шаг:roll:

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

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

шпрота не юзаю из-за его глючности :dont_know:
а в студии в дефайне прописано .device ...

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

Добавлено: Чт дек 01, 2011 15:59:10
GP1
я начинал в 3.65 и там надо было прописывать
и это не проблема если ты дважды определишь девайс.

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

Добавлено: Чт дек 08, 2011 20:59:05
ploop
Кто знает самый короткий и быстрый алгоритм сравнения двухбайтных чисел? Придумал только такое (d1, d2 - регистры с числами):

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

mov r1,d1H
mov r2,d1L
sub r1,d2H
sub r2,d2L
or r1,r2
breq(ne)....

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

Добавлено: Чт дек 08, 2011 21:27:10
Engineer_Keen
А чем связка CP-CPC не годится?

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

CP XL,YL
CPC XH,YH
BRxx

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

Добавлено: Чт дек 08, 2011 21:53:13
ploop
Тем, что спать надо больше... Спасибо :)

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

Добавлено: Вт дек 13, 2011 17:22:39
mansoff
Подскажите, с чего начать свои первые "часы" (в будущем будильник) ?
AVR немножко знаю (экзамен по ассемблеру x8086 в университете сдавал), светодиодом мигаю, есть 16мега(для тестов) и семисегментник на 4 числа :)

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

Добавлено: Вт дек 13, 2011 18:27:27
vitalik_1984
mansoff писал(а):Подскажите, с чего начать свои первые "часы" (в будущем будильник) ?
AVR немножко знаю (экзамен по ассемблеру x8086 в университете сдавал), светодиодом мигаю, есть 16мега(для тестов) и семисегментник на 4 числа :)
начать с начала- с проекта как обычно что хотите от устройства, чем управляться будет.может решите туда пульт прикошачить.:)
А почему именно мегу16? люди вон на си! слепили из тини часики нормальные такие еще и с датчиком температуры.А если асмом творить, то еще меньше код можно сделать.(умеючи, конечно)я конечно не умею %)