Например TDA7294

Форум РадиоКот • Просмотр темы - Нужна помощь по написанию функции на АСМе
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт мар 19, 2024 06:28:10

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


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



Начать новую тему Ответить на тему  [ Сообщений: 126 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вс дек 11, 2016 12:36:52 
Вымогатель припоя
Аватар пользователя

Карма: 13
Рейтинг сообщений: 9
Зарегистрирован: Пт фев 22, 2013 18:00:43
Сообщений: 508
Откуда: Беларусь, г. Гомель
Рейтинг сообщения: 0
В общем возникла необходимость написать функцию задержки на АСМе и передать в нее параметр как в СИ, вот тут то и наступил на грабли. т. е. в идеале это должна быть функция вида _delay(<время задержки>) вот с передачей параметра и возникла проблема, т. е. если я делаю асм вставку, где в регистр запихиваю фиксированное значение все работает, но мне нужна именно функция, что бы использовать ее много раз в коде. Пишу в AVR VISUAL STUDIO.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вс дек 11, 2016 12:47:59 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
http://nongnu.org/avr-libc/user-manual/assembler.html
тут описано через какие регистры передаются параметры в avr-gcc, какие регистры можно использовать и какие соглашения требуется соблюдать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вс дек 11, 2016 13:46:53 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
Придётся писать столько подпрограмм, сколько видов задержек надо, или вызывать одну подпрограмму столько раз, какая задержка необходима.
Вероятно второй вариант более оптимальный.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вс дек 11, 2016 16:01:02 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
а чем стандартные функции задержек не устраивают?

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

скушно, бабоньки!


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вс дек 11, 2016 21:42:39 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
Код:
void delay(uint8_t delay)
{
  asm volatile ( ";                 \n\t \
WAIT_LOOP%=:                        \n\t \
  dec   %[delay]            ;1    \n\t \
  brne  WAIT_LOOP%=         ;1/2  \n\t \
  "
  : [delay] "+d" (delay) :  : "cc" );
}


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


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 13, 2016 11:33:16 
Вымогатель припоя
Аватар пользователя

Карма: 13
Рейтинг сообщений: 9
Зарегистрирован: Пт фев 22, 2013 18:00:43
Сообщений: 508
Откуда: Беларусь, г. Гомель
Рейтинг сообщения: 0
Спасибо за ответ. Стандартная функция не устраивает из-за размера библиотеки :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 13, 2016 11:39:25 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
так эта функция только максимум на 255 тиков


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 13, 2016 12:31:31 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
Этот пример для 8-битного параметра. Никто Вам не мешает использовать 16/24/32/64 бита. Вопрос был в том, как передать параметр в ассемблер, что я и показал.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 13, 2016 14:34:03 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 4
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
rxstart1 писал(а):
Спасибо за ответ. Стандартная функция не устраивает из-за размера библиотеки :)))

да вы что?! :shock: а я вот в полный рост использую "библиотечные" задержки в проектах на attiny13... и как-то на размер не жалуюсь...

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вс дек 18, 2016 13:09:07 
Открыл глаза

Зарегистрирован: Сб июл 30, 2011 21:00:24
Сообщений: 61
Рейтинг сообщения: 0
rxstart1 писал(а):
В общем возникла необходимость написать функцию задержки на АСМе и передать в нее параметр...
Пишу в AVR VISUAL STUDIO.

Пишите на АБ, там можно практически всё программировать через вызов функций с параметрами.
Если нужна задержка в миллисекундах, то можно использовать функцию delay_ms (), где в скобках - время в миллисекундах.
Если нужны любые другие задержки, то можно просто использовать функцию delay (), где в скобках параметры задержки.
И это всё будет ассемблер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 20, 2016 17:24:39 
Открыл глаза

Зарегистрирован: Сб июл 30, 2011 21:00:24
Сообщений: 61
Рейтинг сообщения: 0
ptr128 писал(а):
А вообще, по уму, больше чем несколько десятков тактов задержки на цикле делать не рекомендую. Пользуйтесь таймерами и прерываниями для больших интервалов.

Таймер может быть занят другими подпрограммами.
Если МК во время задержки ничего не делает, лучше сделать задержку на цикле. Точнее, сделать вызов соответствующей функции.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 20, 2016 18:42:57 
Вымогатель припоя
Аватар пользователя

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

Таймер не может быть "занят подпрограммой", особенно если МК при этом "ничего не делает".
А с точки зрения написания прерывания таймера, никто не запрещает в этом пререывании, например, считать время в какой-то переменной и в каких-то попугаях. А во всем остальном коде, использовать это время для длительных задержек.
По крайней мере, Вы сможете действительно тогда измерять промежутки времени относительно точно, а не как в цикле, плюс минус лапоть, не зная, сколько времени ушло на обработку прерываний во время выполнения Вашего цикла.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 20, 2016 23:11:56 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Таймер может быть занят генерацией ШИМа, подсчетом внешних импульсов, полуфабрикатом для какого-нибудь интерфейса (UART хотя бы). Если при этом в основном цикле не требуется быстрой реакции на события, использование "тупых" задержек вполне допустимо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Вт дек 20, 2016 23:38:49 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
COKPOWEHEU писал(а):
Таймер может быть занят генерацией ШИМа

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

COKPOWEHEU писал(а):
использование "тупых" задержек вполне допустимо

ptr128 писал(а):
плюс минус лапоть, не зная, сколько времени ушло на обработку прерываний


COKPOWEHEU писал(а):
подсчетом внешних импульсов, полуфабрикатом для какого-нибудь интерфейса (UART хотя бы)

Ну а в общем случае, если заняты все таймеры, я лучше один оставлю для замера промежутков времени, чем заиспользую только "для подсчета импульсов или какого-нибудь интерфейса"
Никто не запрещает так же watchdog таймер в режиме прерывания использовать для задержек.

Спор ни о чем. Приведите конкретный пример проекта, в котором заняты все таймеры и ни один из них нельзя использовать унифицировано. Тогда можно будет обсудить. В том числе и то, насколько правильно был выбран именно этот МК.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Ср дек 21, 2016 06:50:08 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Цитата:
Таймер, генерирующий ШИМ, вполне приемлем для вычисления задержек, кратных частоте ШИМ.
Это если его частота фиксирована.
Цитата:
Никто не запрещает так же watchdog таймер в режиме прерывания использовать для задержек.
Немногие контроллеры так умеют. Вроде, только тиньки и то не все.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Ср дек 21, 2016 07:31:48 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
COKPOWEHEU писал(а):
Цитата:
Таймер, генерирующий ШИМ, вполне приемлем для вычисления задержек, кратных частоте ШИМ.
Это если его частота фиксирована.

А какой смысл менять частоту ШИМ? В подавлющем большинстве случаев, мы управляем скважностью ШИМ на одной и той же частоте.

COKPOWEHEU писал(а):
Цитата:
watchdog таймер
Немногие контроллеры так умеют. Вроде, только тиньки и то не все.

Вы бы пример привели. А то я не знаю ни одного AVR, без Watchdog Interrupt

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Ср дек 21, 2016 07:36:23 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ptr128 писал(а):
А то я не знаю ни одного AVR, без Watchdog Interrupt
atmega8

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Ср дек 21, 2016 07:55:46 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
ARV писал(а):
ptr128 писал(а):
А то я не знаю ни одного AVR, без Watchdog Interrupt
atmega8

Благодарю. Буду теперь знать, с чем не стоит связываться )

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Ср дек 21, 2016 16:31:37 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Цитата:
А какой смысл менять частоту ШИМ? В подавлющем большинстве случаев, мы управляем скважностью ШИМ на одной и той же частоте.

Есть еще режим СТС. Ну можно и поизвращаться экзотическую задачу придумать :) но мне лень
Цитата:
Вы бы пример привели. А то я не знаю ни одного AVR, без Watchdog Interrupt
ATtiny2313, ATmega8, ATmega8515. Наверное, все более-менее старые версии. Кстати на ATmega8 напрасно наезжаете - довольно удачный контроллер. А вот у AT90S2313 / ATtiny2313 видимо, нехорошая аура - новички с ним постоянно косячат :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь по написанию функции на АСМе
СообщениеДобавлено: Ср дек 21, 2016 16:44:54 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
COKPOWEHEU писал(а):
Цитата:
Вы бы пример привели. А то я не знаю ни одного AVR, без Watchdog Interrupt
ATtiny2313

А вот про него не надо! С ним я уже лично знаком )
Изображение

COKPOWEHEU писал(а):
Кстати на ATmega8 напрасно наезжаете - довольно удачный контроллер.

Тут не наезд, а лично мнение, да еще и со смайликом.
А если серьезно, за те же деньги STM8 есть уже на плате и микроUSB для питания. То есть, для себя я пока ограничился линейкой, полностью покрывающей мои текущие потребности:
ATTiny2313, STM8S103F, STM8S103K, ATmega168A, ATmega328P, STM32F103, ESP8266


Вложения:
attiny2313_wdg.jpg [26.07 KiB]
Скачиваний: 648

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 126 ]  1, , , , ...  

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


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

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


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

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


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