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

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

Добавлено: Сб мар 14, 2015 08:03:30
СКАЗОЧНИК
Привет всем еще раз. )
Возник у меня очередной тупой вопрос.
Есть некое число, которое представлено 25ю байтами в оперативке (может во флеше) МК АТТИНИ2313. Можно ли с ним делать операции сдвига? Как вообще нормально с ним работать?
Цель, сделать бегущий огонь. Описание его здесь:
http://radiokot.ru/forum/viewtopic.php? ... 7#p2304817

Как в итоге узнавать, что в конце числа уже есть единица? Как делать сдвиг 200 битового числа, чтобы последняя единица (единицы) не вываливались?

З.Ы. хочу обратить внимание, что ИМЕННО 200 светодиодов в линию и именно 25 регистров распаяно для их управления. Бежит огонек от одного конца к другому только ОДИН. остается в конце строки. ЗА ним следующий падает на первый и тоже остается уже вторым с конца. За ними третий. и т.д. до заполнения всей строки.

З.З.Ы. Спасибо. Уже сам все победил. Осталось только по таймеру выровнять.
Если у кого-то будут интересные предложения, обязательно выслушаю. А пока я сделал свой извращенный алгоритм и он работает в железе, не занимая оперативки. Все на циклах и числа в 200 бит как такового не существует... :)))

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

Добавлено: Сб мар 14, 2015 12:38:17
Engineer_Keen
LSL, LSR - сдвиг влево и вправо, выдвинутый бит остается в С, с обратной стороны задвигается 0.
ROL , ROR - тоже самое, но задвигаемый бит берется как раз из С, так можно двигать влево-вправо числа любой битности.

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

Добавлено: Сб мар 14, 2015 16:40:47
СКАЗОЧНИК
Понял. Знаю такие команды.
Однако на данный момент, сделал по своему. и неоптимизированный вариант эффекта не занимает оперативной и флеш памяти. Используются только регистры. Сам эффект при компиляции 116 Байт. И 56 Байт начальная конфигурация МК. Я доволен.

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

Добавлено: Пн мар 16, 2015 17:19:12
Flash.#13
Хелп, полез в ШИМ с "точной фазой", (Phase Correct PWM) и дело не пошло (ATMega8). По описанию ШИМ в данном режиме меняет состояние ножки доходя до регистра сравнения, и затем счетчик реверсируется, и вновь меняет состояние ножки дойдя нули и обратно. В таком режиме вроде можно получить ровные прямоугольные колебания, их надо для пищалки, для звука будильника типа "пи". Обычный режим "быстрый ШИМ" запускается нормально, но с "точной фазой" чего-то не стартует. Нужна помощь, чего не так делаю:

Изображение

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

sbi DDRB, 1                ;ножка OC1A вкл.
ldi R16, 0x00
out OCR1AH, R16
ldi R16, 0xFF
out OCR1AL, R16         ;вписали задержку 00FF в OCR1A
ldi R16, 0b11000001
out TCCR1A, R16         ;настройка
ldi R16, 0b00010001
out TCCR1B, R16         ;настройка и пуск
Вписал WGM13_10 1001 (Phase and Freguensy Correct PWM, с OCR1A), но ножка OC1A не меняет состояние :cry:

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

Добавлено: Вт мар 17, 2015 07:19:06
ARV
для звука будильника типа "пи" сойдет и Fast PWM с "неточной фазой" :)))

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

Добавлено: Вт мар 17, 2015 14:33:35
Flash.#13
Неа, Fast PWM плохо звучит и плохо регулируется. Почти день мучил этот будильник, в результате увидел что даже с транзистором в режиме эмиттерного повторителя он слишьком тихий, было принято решение выковырять пищалку с ее обвязкой с "дешевого китайского будильника", и использовать МК как ее включатель. :facepalm:

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

Добавлено: Вт мар 17, 2015 15:21:49
ARV
извиняюсь за оффтоп, но может у вас со слухом что-то не то? я делал полифонический "звонок" на тиньке с FastPWM на 15 кГц - звук был отличный! а ШИМ с "корректной фазой" будет в2 раза меньше по частоте, следовательно заведомо хуже по тембру.

однако, для звука "пи" тембр малокритичен и скорее будет определяться типом излучателя, чем симметрией фазы ШИМ...

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

Добавлено: Ср мар 18, 2015 22:31:38
Flash.#13
ARV, излучатель - пищалка с корпуса ПК, не динамик, а мелкая круглая. Звучит тихо и не приятно. Не нравится, проще выковырять с будильника.

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

Добавлено: Пн мар 23, 2015 09:02:55
ILYAUL
Каждая такая пищалка имеет собственную резонансную частоту , на которой она пищит громко и приятно. Так , что для начала ищите DS на нее

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

Добавлено: Пн мар 23, 2015 09:40:10
ARV
и при любом раскладе с пищалкой - от симметрии или асимметрии ШИМа ее звук не поменяется настолько, чтобы из неприятного стать приятным! речь только о проблеме ШИМа.

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

Добавлено: Вт апр 14, 2015 13:36:06
Gudd-Head
Сильно не пинайте, я сегодня не выспался.
Надо в зависимости от диапазона кода АЦП выполнить одну из N (пяти) процедур.
Кроме связки

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

cpi ADC, 100
brlo command_1;
cpi ADC, 150
brlo command_2;
cpi ADC, 200
brlo command_3;
...
или аналога с использованием brge есть ли более изящное решение? Диапазоны в конечном итоге могут быть разной "ширины".

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

Добавлено: Вт апр 14, 2015 17:50:35
viiv
Gudd-Head, а куда уж "изящней"? Закона для диапазонов нет, значит про вычисление адреса перехода речи не идет.
Можно "делением", но у тебя N маленькая - много не выиграешь.

Типа так:
Спойлер

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

        ; r24 - значение (0..50..100..150..200..255)
        cpi r24, 150
        brlo less_150
        cpi r24, 200
        brlo cmd_4
cmd_5:
        ; обработка [200..255]
        ...
cmd_4:
        ; обработка [150..200)
        ...
less_150:
        cpi r24, 100
        brlo less_100
cmd_3:
        ; обработка [100..150)
        ...
less_100:
        cpi r24, 50
        brlo cmd_1
cmd_2:
        ; обработка [50..100)
        ...
cmd_1:
        ; обработка [0..50)
        ...

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

Добавлено: Вт апр 14, 2015 18:29:27
Kavka
Gudd-Head, если по времени не критично, то можно да же не париться при таком количестве диапазонов.
viiv уже подсказал. Древовидный поиск/сравнение - классика. Типа B-tree (Б-деревья).
Можно уменьшить количество сравнений в худшем случае.

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

Добавлено: Ср апр 15, 2015 06:22:07
akl
Сомневаюсь насчёт изящности, но может так.
Спойлер

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

.equ	N5=150
.equ	N4=140
.equ	N3=130
.equ	N2=120
.equ	N1=110
.equ	N0=00

.CSEG

   .ORG   $00
START:
	LDS	XL,$60

	CLR	ZH
	LDI	ZL,LOW(COMP_N*2)
COMPARE:
	CPI	ZL,LOW(COMP_N_END*2)
	BRSH	COMPARE_OUT
	LPM	R0,Z+
	CP	XL,R0
	BRLO	COMPARE

COMPARE_OUT:
;преобразование адреса для последующей обработки
;..................
;..................
;..................
;	IJMP
	RJMP	START

;*****************************
COMP_N:
	.DB	N5,N4,N3,N2,N1,N0
COMP_N_END:
;*****************************

.EXIT

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

Добавлено: Ср апр 15, 2015 09:01:07
Gudd-Head
Пока оставил обычным перебором вроде работает.

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

Добавлено: Ср апр 15, 2015 09:09:06
Kavka
akl писал(а):Сомневаюсь насчёт изящности, но может так.
IMHO, правильно сомневаетесь :)
Ни по скорости, ни по размеру кода, ни по читаемости кода не лучше. По последней характеристике, так это вообще можно за обфускацию принять. :)

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

Добавлено: Ср апр 15, 2015 10:32:03
akl
Kavka писал(а):Ни по скорости, ни по размеру кода, ни по читаемости кода не лучше.
"...Сдвинь корону набок, чтоб не висла на ушах."

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

Добавлено: Ср апр 15, 2015 10:49:59
Seriyvolk
Не ссорьтесь. Обилие вариантов - это всегда хорошо. И каждый будет подходить под свою задачу.
Кто-то почитает, выберет и спасибо скажет.

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

Добавлено: Ср апр 15, 2015 12:02:44
Gudd-Head
Чёт я перемудрил.
BRGE для знаковых данных, BRLO — для беззнаковых. Так что без ухищрений получится только с BRLO :facepalm:

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

Добавлено: Ср апр 15, 2015 12:14:53
Kavka
akl писал(а):"...Сдвинь корону набок, чтоб не висла на ушах."
Был бы смайлик, тогда всё было бы на своих местах. Может добавите смайлик?

PS: А я и смайликов наставил, и "IMHO" написал... Видать выразительности средств форума недостаточно и надо как-то по другому указывать на не серьёзность утверждений и скромность высказываний. :? :o