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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

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

Сообщение Flash.#13 »

ARV, излучатель - пищалка с корпуса ПК, не динамик, а мелкая круглая. Звучит тихо и не приятно. Не нравится, проще выковырять с будильника.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

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

Сообщение ILYAUL »

Каждая такая пищалка имеет собственную резонансную частоту , на которой она пищит громко и приятно. Так , что для начала ищите DS на нее
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

и при любом раскладе с пищалкой - от симметрии или асимметрии ШИМа ее звук не поменяется настолько, чтобы из неприятного стать приятным! речь только о проблеме ШИМа.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

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

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

Сильно не пинайте, я сегодня не выспался.
Надо в зависимости от диапазона кода АЦП выполнить одну из N (пяти) процедур.
Кроме связки

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

cpi ADC, 100
brlo command_1;
cpi ADC, 150
brlo command_2;
cpi ADC, 200
brlo command_3;
...
или аналога с использованием brge есть ли более изящное решение? Диапазоны в конечном итоге могут быть разной "ширины".
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
viiv
Грызет канифоль
Сообщения: 285
Зарегистрирован: Чт ноя 06, 2014 13:09:06

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

Сообщение 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)
        ...
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Gudd-Head, если по времени не критично, то можно да же не париться при таком количестве диапазонов.
viiv уже подсказал. Древовидный поиск/сравнение - классика. Типа B-tree (Б-деревья).
Можно уменьшить количество сравнений в худшем случае.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

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

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

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

Пока оставил обычным перебором вроде работает.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

akl писал(а):Сомневаюсь насчёт изящности, но может так.
IMHO, правильно сомневаетесь :)
Ни по скорости, ни по размеру кода, ни по читаемости кода не лучше. По последней характеристике, так это вообще можно за обфускацию принять. :)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Kavka писал(а):Ни по скорости, ни по размеру кода, ни по читаемости кода не лучше.
"...Сдвинь корону набок, чтоб не висла на ушах."
Аватара пользователя
Seriyvolk
Друг Кота
Сообщения: 4961
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

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

Сообщение Seriyvolk »

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

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

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

Чёт я перемудрил.
BRGE для знаковых данных, BRLO — для беззнаковых. Так что без ухищрений получится только с BRLO :facepalm:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

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

PS: А я и смайликов наставил, и "IMHO" написал... Видать выразительности средств форума недостаточно и надо как-то по другому указывать на не серьёзность утверждений и скромность высказываний. :? :o
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
Дима_Медвед
Открыл глаза
Сообщения: 73
Зарегистрирован: Сб авг 23, 2014 21:49:24

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

Сообщение Дима_Медвед »

Всем привет. Вопрос следующий: как записать 16 розрядное число в 2 регистра да так, чтобы его можно было использовать как счетчик секунд, который настраивается кнопками и потом вести отсчет?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Дима_Медвед писал(а):как записать 16 розрядное число в 2 регистра

любым известным вам способом - совершенно без разницы, как именно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Дима_Медвед
Открыл глаза
Сообщения: 73
Зарегистрирован: Сб авг 23, 2014 21:49:24

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

Сообщение Дима_Медвед »

ARV писал(а):любым известным вам способом - совершенно без разницы, как именно.

Смысл не в простой записи, а в возможности отсчета секунд, к примеру 9999сек. Как организовать алгоритм счетчика секунд, который будет их отсчитывать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

вы хотите увидеть ассемблерный листинг, который реализует вашу задумку? или о чем идет речь?
ведь "алгоритм" прост до безобразия:
1. заносим в регистровую пару нужное число
2. настраиваем таймер на прерывания 1 раз в секунду (или чаще)
3. создаем обработчик прерывания, в котором уменьшаем содержимое регистровой пары
4. когда оба регистра этой пары станут равны 0 - делаем, что хотим (время истекло)

что у вас вызывает затруднения?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Дима_Медвед
Открыл глаза
Сообщения: 73
Зарегистрирован: Сб авг 23, 2014 21:49:24

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

Сообщение Дима_Медвед »

ARV писал(а):что у вас вызывает затруднения?

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

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

Сообщение pyzhman »

Дима_Медвед писал(а):к примеру 9999сек

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

ldi r30,low(9999)
ldi r31,high(9999)


Дима_Медвед писал(а):алгоритм уменшения регистровой пары

1. декремент младшего регистра.
2. если появился перенос, то младший регистр обнулить и декремент старшего регистра.
Последний раз редактировалось pyzhman Вт апр 21, 2015 13:39:30, всего редактировалось 1 раз.
Docendo discimus
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

да какой алгоритм уменьшения регистровой пары может быть?! вычесть из "младшего" регистра 1, если флаг переноса установлен - вычесть 1 из "старшего"?! в ассемблерных командах даже "если" не нужно, ибо есть команды вычитания сразу с учетом переноса...

вы не темните, прямо говорите, что не понятно. или давайте ваш код на рассмотрение и поиск ошибок в нем.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

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