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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Не помню. Самому время повспоминать. :)
Docendo discimus
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Прочесать флеш (где программный код), каждый раз со смещением, считать N байт и поксорить их. Для 8 бит последовательности вполне сойдёт имхо...
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Это не есть гут. Вычисляться должно по формуле, ибо должно быть повторяемо. В смысле другим/в другое время. Но если для сэба....
Docendo discimus
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Разумеется, это так, чтобы быстро, эффективно и без гугла. Но не есть правильно.

Часто приходится прибегать к таким методам. Например, (пришлось недавно) чтобы идентифицировать пару кнопок на пульте ДУ, можно не раскуривать весь алгоритм (что было бы правильно), а сдвинуть в регистр несколько ключевых бит из всей последовательности.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Gudd-Head писал(а):вместо последовательности максимальной длины 2^N-1 = 255 у меня получается... 217! :shock: Ладно бы 127, а тут вообще какое-то странное число.

Вроде как длина зависит от позиции и количества бит, с которых идет обратная связь и 2^N-1 = это идеальный вариант. Хотя может я путаю с другим ГСЧ...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

у меня для световой "чехарды" стояли 8 8-байтовых ГСЧ (по Хоровицу-Хиллу) с разными узлами ОС и результат каждого выводился в соответствуюший бит байта вывода + "плавающее" изменение узловой точки при каждом переопустошении... однако уж больно "нервирующий" результат получился 8)
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение 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, перевернул "маску" задом-наперед и последовательность удлинилась.
Полезная информация бралась: тут
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение 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
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

Gudd-Head
что-то туплю, не нашел выхода из цикла
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

GP1 писал(а):что-то туплю, не нашел выхода из цикла

:))) Это просто пример — погонять посмотреть псевдослучайную последовательность в R16.
Выходить можно по таймеру или оформить один шаг цикла в виде функции.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

а я то подумал - "лыжи не едут" :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

ploop, вот мой код (в виде цикла)

Благодарю!
Надо будет проверить как-нибудь...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

вполне и одного узла хватит 8)
не совсем верная обработка исходного байта - там вроде результат должен дописываться в исходник после каждого шага а затем следующий шаг:roll:
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

GP1 писал(а):
hammer2000 писал(а):...кстати как подключить *.inc файл? потому что слабо представляю где его искать:(
...

файлы описания идут в комплекте с AVRStudio пути к ним прописаны в системе, так что необходимо в нужном месте исходника вставить строку:
.include <имя def-файла>
именуются эти файлы примерно так:
m48def.inc
tn13def.inc
и т.п.
описание камня вставляют в самом начале исходника, обычно сразу после директивы
.device

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

а в студии в дефайне прописано .device ...
Последний раз редактировалось vitalik_1984 Чт дек 01, 2011 16:02:58, всего редактировалось 1 раз.
В поисках истины человек развивается.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

я начинал в 3.65 и там надо было прописывать
и это не проблема если ты дважды определишь девайс.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

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

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

mov r1,d1H
mov r2,d1L
sub r1,d2H
sub r2,d2L
or r1,r2
breq(ne)....
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

А чем связка CP-CPC не годится?

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

CP XL,YL
CPC XH,YH
BRxx
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Тем, что спать надо больше... Спасибо :)
Аватара пользователя
mansoff
Открыл глаза
Сообщения: 60
Зарегистрирован: Пн сен 24, 2007 10:36:54

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

Сообщение mansoff »

Подскажите, с чего начать свои первые "часы" (в будущем будильник) ?
AVR немножко знаю (экзамен по ассемблеру x8086 в университете сдавал), светодиодом мигаю, есть 16мега(для тестов) и семисегментник на 4 числа :)
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

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

начать с начала- с проекта как обычно что хотите от устройства, чем управляться будет.может решите туда пульт прикошачить.:)
А почему именно мегу16? люди вон на си! слепили из тини часики нормальные такие еще и с датчиком температуры.А если асмом творить, то еще меньше код можно сделать.(умеючи, конечно)я конечно не умею %)
В поисках истины человек развивается.
Ответить

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