Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 10.10.2021, 15:13  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию ШИМ на Ардуино

Добрый день, есть вопрос к ардуинщикам, могу ли я управлять несколькими выводами шим одновременно? Например яркость светодиодов, тремя или четырьмя разными по 3\4 шим выходами с разным уровнем яркости. С одним выходом получается без проблем, а вот с несколькими, и хватит ли скорости работы ардуинки чтобы еще вести обработку входных данных. Можно сравнить со светомузыкой или типа этого.
Реклама:
Faworit вне форума  
Непрочитано 10.10.2021, 15:46  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,744
Сказал спасибо: 2,885
Сказали Спасибо 3,093 раз(а) в 2,092 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

Если отказаться от Arduino IDE (со всякими digitalwrite / digitalread и кривыми скетчами) - то ещё и останется "лишняя" скорость.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 10.10.2021, 15:53  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,576
Сказал спасибо: 115
Сказали Спасибо 805 раз(а) в 582 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

ШИМ нужен аппаратный или софтовый? Если первое, то читайте даташит на МК, который в вашей ардуйне распаян (там, ЕМНИП, даже STM32 бывают, а, скажем, у STM32F072C8T6 можно получить минимум 6 независимых групп ШИМ, от 1 до 4 каналов в каждой группе); если второе, то из-за низкой производительности количество каналов тоже сильно большим сделать не получится.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 10.10.2021, 16:02  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Сообщений: 4,418
Сказал спасибо: 395
Сказали Спасибо 2,205 раз(а) в 1,306 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

Конечно можете. Даже если ШИМ сделан программно. Снизьте частоту и глубину (разрядность) ШИМ, оптимизируйте код, напишите непосредственное управление ногами, а не через DigitalWrite и Delayms.
Используйте один аппаратный таймер, задающий тики, и счетчик тиков.
Код:
/* программныц счетчик тиков ШИМ */
int counter = 0;
/* скважность ШИМ */
int pwm1 = 10, pwm2 = 70, pwm3 = 50, pwm4 = 100;
int tickflag = 0; // флаг аппаратного таймера тиков

while(1)
{
	/* по флагу таймера тиков: */
	if(tickflag)
	{
		/* начало цикла, активировать все выходы,
		 * для которых скважность не равна 0 */
		if(counter == 0) 
		{
			if(pwm1 != 0) SetOut(1);
			if(pwm2 != 0) SetOut(2);
			if(pwm3 != 0) SetOut(3);
			if(pwm4 != 0) SetOut(4);
		}
		
		/* сравнение каждого канала со счетчиком тиков,
		 * сброс выхода канала, если заданная скважность 
		 * достигнута */
		if(counter › pwm1) ResetOut(1);
		if(counter › pwm2) ResetOut(2);
		if(counter › pwm3) ResetOut(3);
		if(counter › pwm4) ResetOut(4);
		
		/* инкремент счетчика или сброс при достижении
		 * максимального счета*/
		if(counter ‹ 100) counter++;
		else counter = 0;

		tickflag = 0;   // сброс флага тиков
	}

}
tickflag должен выставляться в прерывании аппаратного таймера.
Вместо функций ResetOut и SetOut ради увеличения быстродействия можно написать непосредственное управление ногами.

Ардуинщики в большинстве весьма беспомощны, когда вопрос стоит в быстродействии и нестандартном подходе. Ничего личного, просто констатация факта. И вообще, по теме ардуины лучше обращаться непосредственно на форум arduino.ru - там хотябы понимают трагичность положения. Мы, извините, не понимаем таких мучений...

Последний раз редактировалось NewWriter; 10.10.2021 в 16:09.
NewWriter вне форума  
Сказали "Спасибо" NewWriter
МВА (16.06.2023)
Непрочитано 10.10.2021, 16:27  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

Сообщение от Faworit Посмотреть сообщение
есть вопрос к ардуинщикам
здесь нет ардуинщиков - их больно бьют
Сообщение от Faworit Посмотреть сообщение
могу ли я управлять несколькими выводами шим одновременно?
да, софтово почти всеми ногами МК, как описал NewWriter (делал почти так на тини2313 10бит на канал). но это
Сообщение от ForcePoint Посмотреть сообщение
Если отказаться от Arduino IDE
Сообщение от Faworit Посмотреть сообщение
хватит ли скорости работы ардуинки чтобы еще вести обработку входных данных
мы не знаем вашей задачи, но если на AVR, то может потребоваться поднять частоту кварца либо перейти на АСМ или другой тип МК (STM32, PIC24)
Arduino IDE, как и другие разновидности С, сильно "едят" ресурсы и, зачастую, много времени уделяют пересылкам "регистр-стек" или "регистр-память"
jump вне форума  
Непрочитано 10.10.2021, 16:51  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

На макетке собрал простенькую схемку для эксперимента. Даже на резисторах(переменниках) скорость реакции меня не воодушевила. А мне еще необходимо тратить время на вывод инфы на дисплейчик. А по поводу ардуинки, так моя жаба душит ставить стм-ку, но увы, прийдется! Всем спасибо за информацию, тема закрыта.
Faworit вне форума  
Непрочитано 10.10.2021, 17:11  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Сообщений: 4,418
Сказал спасибо: 395
Сказали Спасибо 2,205 раз(а) в 1,306 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

дак я ж тоже не сразу к STM-кам перешел. Раньше на 8-битниках делал, и как-то умудрялся даже графический монохромный дисплей поднимать. Так что дело тут в оптимальности кода.
NewWriter вне форума  
Непрочитано 10.10.2021, 17:18  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,744
Сказал спасибо: 2,885
Сказали Спасибо 3,093 раз(а) в 2,092 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

Сообщение от Faworit Посмотреть сообщение
Даже на резисторах(переменниках) скорость реакции меня не воодушевила.
Мой хрустальный шар показывает уши блокирующего всё analogread'а с программным опросом готовности, никчёмные delay'и и прочую срамоту.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 11.10.2021, 12:17  
parovoZZ
Почётный гражданин KAZUS.RU
 
Регистрация: 15.11.2010
Сообщений: 2,374
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
parovoZZ на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

Сообщение от Faworit Посмотреть сообщение
С одним выходом получается без проблем, а вот с несколькими,
тоже без проблем


Сообщение от Faworit Посмотреть сообщение
хватит ли скорости работы ардуинки чтобы еще вести обработку входных данных.
дурина - это шляпа. Без неё МК работает раз в 10 быстрее.
Я на тине выводил 6 ШИМ сигналов, принимал ИК лучи, обрабатывал сигналы конечным автоматом. МК ещё и спать успевал. На дурине сделать такое невозможно в принципе.
parovoZZ вне форума  
Непрочитано 11.10.2021, 12:28  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,576
Сказал спасибо: 115
Сказали Спасибо 805 раз(а) в 582 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: ШИМ в Ардуино

Сообщение от Faworit Посмотреть сообщение
А по поводу ардуинки, так моя жаба душит ставить стм-ку, но увы, прийдется!
Если черезжопно продолжать писать код, то это не поможет!
А вот без калокуба - вполне…
Но и на абдурине можно, если использовать ее не как кусок говна, а как девборду с авркой, сделать ШИМ на куче ног даже софтово. Но лучше все же делать это не в суперлупе, а по прерыванию таймера. А еще лучше - таки делать ШИМ аппаратно.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32F051 и ШИМ kvark85 ARM 8 17.12.2013 05:17
Режимы сна Атмега-8 putmannn AVR 123 08.03.2013 15:30
ШИМ в STM32F4 sosedi Микроконтроллеры, АЦП, память и т.д 5 15.08.2012 12:20
Управление Сервой Mg995 Через Аппаратный Шим Vyazikov Микроконтроллеры, АЦП, память и т.д 16 06.04.2012 21:06
Проблема с аппаратным ШИМ в мега169 Archer07 Микроконтроллеры, АЦП, память и т.д 3 09.07.2010 15:40


Часовой пояс GMT +4, время: 20:38.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot