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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Ответ
Опции темы

И снова ШИМ

Непрочитано 10.03.2012, 03:26   #161
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

У меня тоже была мысль что из за задержки так как когда ковырялся с аппаратным шим там применял именно функцию задержки, но когда применил библиотеку по задержке то исходник очень сильно вырос в размере
Сейчас попробуем
Реклама:
SAHA_T вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 03:38   #162
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,606 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: И снова ШИМ

Нафиг там вообще миллисекунды? с такой точностью отмерять время совсем не обязательно. Можно организовать программный счетчик, который будет тактироваться при каждом полном цикле ШИМ. Если ШИМ с частотой 100Гц, то счетчик будет изменять свое состояние каждые 10 мс. Однобайтный счетчик сможет отрабатывать интервалы до 2,5 секунды. Это уже достаточно много. А если мало - то двухбайтного счетчика хватит с избытком.

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

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

Такой способ займет намного меньше места. Там даже не килобайты, и не сотни байт, а пару десятков байт, вернее - слов.
Alex9797 вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 03:51   #163
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

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

Но то, что скачали whoim и Yurkin2007 это действительно правда, именно в задержке было дело, поставил процедуру и вызвал ее и все стало на свое место, спасибо за помощь

Да и вообще Спасибо ВСЕМ ЗА ПОМОЩЬ и за то что тратите свое время на мой геморрой ВСЕМ СПАСИБО !!!

whoim у меня тут простые буквы готовые я как то писал, у меня всего 15 букв т.е 15 выходов 1 буква 1 Пин (1бит)
SAHA_T вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 17:04   #164
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

Yurkin2007 тут у тебя небольшая помарка, ты забыл _delay_ms(1); взять в скобки как же будет проходить пауза в цикле, Вот так правильно, мелочь но приятно
void delay_ms(int n)
{
int i;
for(i=0;i‹n;i++) { _delay_ms(1);}
}
а то будет делать такой же ламер как я и не поймет как эта задержка работает


whoim если делать каждую букву т.е цикл в виде отдельной функции
void Kanal_0up(int n1)
{
for(i=0;i‹128;i++) {
Kanal_0=i;
delay_ms(n1);
}}
то нех занимает больше чем если делать в int main(void) в виде последовательности циклов


Сейчас у меня возникла такая ситуация. Сделал что бы буквы по очереди появлялись потом гасли и сделал что бы все сразу появлялись и гасли в итоге 13-14кв сейчас я хочу поставить переменную на свечение и гашение светодиода в виде рандома, как это сделать, когдая писал в CV то тупо написал n=rand()%9 9-это максимальное число задержки, тут это не канает и получается задержка постоянно 9 а когда пишу n=rand(9) получается тоже задержка не меняется

Также добавляю функцию rand и сразу к нех добавляется 2кв
Как это рандом тут рабоатет ?
SAHA_T вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 17:21   #165
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от SAHA_T Посмотреть сообщение
и уже 60кв, когда ставлю гашение то 90 с чем то весит, почему так много ? и как быть в данной ситуации
Ёёёёёёёёёёёё , у меня нет слов .
Плодить кучу одинаковых процедур . У тебя так код и в STM32 не влезет.
Вложенные циклы уже не котируются ?
И косвенную адресацию отменили ?
Код:
unsigned char PWM_chanel[16]; // буфер ШИМ 
///
//-----------/
///

void fill_PWM (void)
{
unsigned char Counter_chanel=0;
Unsigned char PWM_value =0;

for(Counter_chanel=0;Counter_chanel‹16;Counter_chanel++)
{


for(PWM_value=0;PWM_value‹128;PWM_value++)
{
PWM_chanel[Counter_chanel]=PWM_value;
delay_ms(n1);
}


}
}
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 10.03.2012 в 17:34.
dosikus вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 17:30   #166
Pajatel
Прописка
 
Аватар для Pajatel
 
Регистрация: 04.12.2010
Сообщений: 243
Сказал спасибо: 9
Сказали Спасибо 51 раз(а) в 32 сообщении(ях)
Pajatel на пути к лучшему
По умолчанию Re: И снова ШИМ

..извиняюсь, что влажу в ваш разговор, так как на Си я не особо.. но вот тут нечаянно наткнулся на одну реализацию софтвенного шима - 8 каналов, 12 бит для меги 48/88, но как понял с небольшой доработкой подойдет и для меги8...
8channel 12bit ledPWM na C.rar
Pajatel вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 17:44   #167
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от Pajatel Посмотреть сообщение
так как на Си я не особо..
У ТС и так каша в голове . А тут вы со своим вариантом.
Информацию ему надо выдавать порциями ...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 10.03.2012 в 17:47.
dosikus вне форума   Ответить с цитированием
Сказали "Спасибо" dosikus
Alex9797 (10.03.2012)
Непрочитано 10.03.2012, 17:58   #168
Pajatel
Прописка
 
Аватар для Pajatel
 
Регистрация: 04.12.2010
Сообщений: 243
Сказал спасибо: 9
Сказали Спасибо 51 раз(а) в 32 сообщении(ях)
Pajatel на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от dosikus Посмотреть сообщение
А тут вы со своим вариантом
..ну я на всякий случай и извинился
Сообщение от dosikus Посмотреть сообщение
У ТС и так каша в голове
..ну это и не вооружённым взглядом видно, потому и подкинул проектик...
Данная реализация хорошо прокоментирована, есть описание.. загружает в мк и трахает его до потери пульса - глядишь и получится чего в результате... всёж лучше чем с нуля изобретать
Pajatel вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 18:09   #169
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

dosikus млин я совсем забыл про вложенные циклы
сейчас слеплю, так как же быть с рандомом ?

Pajatel чуть позже посмотрю твою ссылку спасибо

Последний раз редактировалось SAHA_T; 10.03.2012 в 18:14.
SAHA_T вне форума   Ответить с цитированием
Непрочитано 10.03.2012, 18:32   #170
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,606 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от Pajatel Посмотреть сообщение
Данная реализация хорошо прокоментирована, есть описание..
Ага! Для тех, кто "шпрехен зи дойч"!
Комментарии на простом немецком.
Alex9797 вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СНОВА ЖКИ Gladkih Микроконтроллеры, АЦП, память и т.д 0 27.12.2009 23:48
И снова блютуз! Haulpak Ремонт оргтехники 0 10.03.2009 05:06
Снова DNA1001 R666 Информация по радиокомпонентам 0 25.01.2008 16:39
И снова температура ua_gruzin Поиск схем. Делимся схемами 0 14.02.2007 01:18


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.