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

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

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

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

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

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

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

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

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

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

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

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

Такой способ займет намного меньше места. Там даже не килобайты, и не сотни байт, а пару десятков байт, вернее - слов.
Alex9797 вне форума  
Непрочитано 10.03.2012, 03:51  
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  
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  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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  
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  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: И снова ШИМ

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

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

Сообщение от dosikus Посмотреть сообщение
А тут вы со своим вариантом
..ну я на всякий случай и извинился
Сообщение от dosikus Посмотреть сообщение
У ТС и так каша в голове
..ну это и не вооружённым взглядом видно, потому и подкинул проектик...
Данная реализация хорошо прокоментирована, есть описание.. загружает в мк и трахает его до потери пульса - глядишь и получится чего в результате... всёж лучше чем с нуля изобретать
Pajatel вне форума  
Непрочитано 10.03.2012, 18:09  
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  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: И снова ШИМ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снова о коллекционировании. Roshens Делимся опытом 0 13.12.2010 19:43
СНОВА ЖКИ 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, время: 14:17.


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