Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пн июл 21, 2025 22:47:21

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 291, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 07:07:24 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4331
Откуда: Ижевск
Рейтинг сообщения: 0
BOB51 писал(а):
Ну насчет флагов и их сброса... Или еще интереснее... регистр USISR (та же 2313)...
Содержит как флаги, так и USICNT3..0: Counter Value...
попытаемся вручную сбить любой из флагов, не нарушив содержимое USICNT3..0

Код:
TEST:
   CLR   R0
   STS   MCUSR+$20,R0

   IN   R0,USISR
   OUT   USISR,R0   ; эту операцию можно проводить не всегда. Смотреть DS.
   RJMP   TEST


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 09:23:48 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15105
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
И снесет усе, которые в 1...
А выборочно - поштучно - будет ли обнуление в USICNT3..0
ежли возвернуть байт с единицей только в выбранной позиции?
:roll:
похоже, что вполне реально... ибо в случае таких флаг-регистров со смешанным содержимым при засылке взад байта с единичкой в позиции необходимого к сбросу флага и нулями в остальных похоже срабатывает своя аппаратная начинка...
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 09:34:01 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
BOB51 писал(а):
А выборочно - поштучно
Код:
   IN   R16,USISR
   andi R16,0x0F+(1<<flag)
   OUT   USISR,R16 


Добавлено after 3 minutes 19 seconds:
В STM32 есть регистры в котором биты одновременно:
-только чтение
-обычная запись
-только сброс записью нулем
- инвертирование при записи 1

Вот это настоящий изврат :).

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 10:35:53 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4331
Откуда: Ижевск
Рейтинг сообщения: 0
BOB51 писал(а):
А выборочно - поштучно - будет ли обнуление в USICNT3..0
Если так
Код:
   SBI   USISR,USISIF
то не будет.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 10:47:26 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
akl писал(а):
Если так
Код:
   SBI   USISR,USISIF
то не будет.
Стоит проверить эту команду. Не исключено, что эта команда также работает с маской, только аппаратно.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 10:59:27 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я, конечно, от ассемблера отошел давно, но что-то мне подсказывает, что команда SBI требует непосредственного указания константы во втором операнде, а значит адрес USISIF будет воспринят, как константа, и результат SBI USISR, USISIF будет не совсем тот, который ожидается...

или речь не об AVR?

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

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


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 11:00:45 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Нет нет. Запись верная. Второй операнд - это номер бита.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 11:04:28 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
мне показалось, что USISIF - это регистр... виноват :oops:

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 15:23:25 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Z_h_e писал(а):
Стоит проверить эту команду. Не исключено, что эта команда также работает с маской, только аппаратно.
Сделал в симуляторе атмел студио следующее (мега324):
-установил все флаги регистра TIFR0
-сбросил флаг SBI TIFR0,0

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

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 15:53:59 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
IMHO, в регистр наверняка пишется все слово, а не один бит. Другое дело, что так как чтение и запись слова выполняются одной командой, то между ними прерывания произойти не может. Следовательно, операция, с точки зрения программиста, является атомарной, что, собственно говоря, и требуется.

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 16:03:02 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вы не поняли мой мысля. Если данная команда пишет все слово (т.е. выполняет сишное |=), то весьма вероятно произойдет сброс всех флагов. Может конечно декодер команд, до такой степени продвинутый, что умеет писать правильное слово-маску для каждого регистра

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 16:22:21 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
ILYAUL писал(а):
Вообще-то это решается двумя короткими командами и akl их написал в своём коде

Уважаемый akl, про какие две команды Вы упоминали? Здесь применен совершенно другой принцип, если я правильно понимаю.


Вложения:
pop temp.doc [46 KiB]
Скачиваний: 127
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 16:31:47 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Хоть ссылку бы дали про что Вы. "Хотелось бы, так сказать, в общих чертах понять, что ему нужно". Ну а если это не касается других форумчан, то пишите в личку воспрашаемому.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 08, 2016 16:39:05 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
siimao писал(а):
ILYAUL писал(а):
Вообще-то это решается двумя короткими командами и akl их написал в своём коде

Уважаемый akl, про какие две команды Вы упоминали? Здесь применен совершенно другой принцип, если я правильно понимаю.
akl писал(а):
По мне, это плохая практика. Почему бы не так

viewtopic.php?f=57&t=5931&p=2529895#p2529895

Уважаемый akl, не могу промяукать ваше предложение. Переделал программу по вашей рекомендации и на выходе usart не вижу команд.
1).
inc interrupt
cpi interrupt,80
; breq rst2
BRLO PC+2 ;если interrupt меньше 80, то перепрыгиваем одну команду и сбрасываем interrupt и выходим из прерывания. Но тогда никогда не достигнем 80.
SET ;Set T in SREG
clr interrupt
reti

2).
taimer_overflow: ;на эту метку мы возвращались по завершению цикла программы или совпадению interrupt==80. Как ее применять сейчас - не понятно.
NOP
RJMP START ;Эта команда бросает нас на начальную инициализацию. Но ведь это делается один раз при старте.

Буду благодарен за ответы.

Добавлено after 1 minute 58 seconds:
Z_h_e писал(а):
Хоть ссылку бы дали про что Вы. "Хотелось бы, так сказать, в общих чертах понять, что ему нужно". Ну а если это не касается других форумчан, то пишите в личку воспрашаемому.

Исправился. Был уверен, что нажав на кнопку "Цитата" под сообщением, оно займет соответствующее место, а не выкинет в конец темы. Учту. Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 09, 2016 01:28:01 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4331
Откуда: Ижевск
Рейтинг сообщения: 0
siimao писал(а):
1).
inc interrupt
cpi interrupt,80
BRLO PC+2 ;если interrupt меньше 80, то перепрыгиваем одну команду и сбрасываем interrupt и выходим из прерывания. Но тогда никогда не достигнем 80.
SET ;Set T in SREG
clr interrupt
reti

Да, это ошибка. Нужно
Спойлер
Код:
Taimer:
   inc      interrupt
   cpi      interrupt,80
   BRLO   Taimer_OUT   ;PC+3
   SET      ; ??????? ????
   clr      interrupt
Taimer_OUT:
   reti

siimao писал(а):
2).
taimer_overflow: ;на эту метку мы возвращались по завершению цикла программы или совпадению interrupt==80. Как ее применять сейчас - не понятно.
Значит эта метка не нужна.

siimao писал(а):
RJMP START ;Эта команда бросает нас на начальную инициализацию. Но ведь это делается один раз при старте.
Опыт подсказывает, что периодическая инициализация лишней не бывает. К тому же, это учебный пример, позволяющий зациклить программу, а не стоять в RJMP PC, стартуя каждый раз вручную.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 09, 2016 14:21:13 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Спасибо за ответы!!! :))

1) - Спасибо.
2) - Метка пригодится, найду ей место для прыжка.
3) - Заранее прошу прощения, что по этому ответу придираюсь за помощью...
"периодическая инициализация лишней не бывает". -> Но внутри нее предустанавливаются порты IO. Можно, конечно, еще одну метку установить, чтобы порты не трогать...
"это учебный пример, позволяющий зациклить программу, а не стоять в RJMP PC, стартуя каждый раз вручную." -> не понятна концовка "..., стартуя каждый раз вручную". Что имелось ввиду под ручным стартом? А если он не нужен, этот старт?

Ну и пошел переделывать программу. Интересен результат.
А в чем advantage этого метода перед использованием 4 x pop?

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


Последний раз редактировалось siimao Ср ноя 09, 2016 14:54:17, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 09, 2016 14:40:57 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
siimao писал(а):
Изучая asm по книгам и больше на примерах, понял, что при входе в каждую процедуру обработки прерываний в самом начале необходимо сохранять в стек значения переменных, которые задействованы в конкретной процедуре обработки. Это не применено ни у автора и не предложено Вами.
Не всегда надо сохранять и сохранять не обязательно на стек. Например, если основной цикл программы ничего не делает, то сохранение не нужно. Иногда реакция на какое-то событие должна быть максимально быстрая. Выделяете регистры, которые не будут использоваться в основном теле программы, в один из регистров сохраняете SREG, остальные сохранять не надо, так как больше нигде не используется. В прерывании можно не сразу сохранять значения, например, включаете порт используя команды не меняющие флаги и регистры, а уж потом сохраняете нужно и выполняете остальное.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 09, 2016 15:32:02 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
OK, спасибо.
В основной программе используются регистры 16 to 31.
Допускается ли для сохранения SREG и переменных использовать младшие регистры?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 09, 2016 16:57:02 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Что Вы имеете ввиду говоря "переменная"?
siimao писал(а):
Допускается ли для сохранения SREG и переменных использовать младшие регистры?
Поймите смысл сохранения данных в прерывании. Есть, например, основной цикл программы. Основная программа считывает значение порта в R16, затем проверяет его на равенство с "число" и если равно, то что-то выполняет и есть куча неких прерываний.
Если прерывание возникло после считывания порта в R16, в обработчике прерывания Вы его изменили, то на равенство с "числом" после выхода из подпроограммы будет проверяться другое значение.
Ушли в прерывания после команды сравнения на равенство с "числом", но не сохранили SREG. Флаги будут изменены подпрограммой и Вы уже не знаете результат сравнения.
Основная программа не использует регистры R0-15, т.е. ей без разницы что в них.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 09, 2016 17:30:49 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Z_h_e писал(а):
Что Вы имеете ввиду говоря "переменная"?

Временное значение, хранящееся в регистре.
Z_h_e писал(а):
Основная программа не использует регистры R0-15, т.е. ей без разницы что в них.

Значит можно использовать эти регистры R0-15 для временного хранения SREG и переменных; или их можно использовать в обработчиках прерываний.
Встречал, что есть какие-то ограничения на их применения. Но уже сил нет перечитывать всю литературу... хоть где копать, подскажите.
За ликбез о прерываниях - спасибо!
А каковы причины переполнения стека? :dont_know: Это как-то связано с этими самыми прерываниями? Я только "первый раз сказал Мяу". Какие вкладки в AVR Studio 4.19 надо открыть, чтобы этот процесс отследить, понять и избежать?
Спасибо!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 291, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y