Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.06.2012, 01:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
помогите оптимизировать прогу для ШИМа...
Я написал прогу для 3-ех ШИМ. Управляю RGB-светодиодом. Строк получилось штук 30 и заняло памяти в атмеге 8 20%. Кто-нибудь может подсказать как лучше оптимизировать код?.... скажем так по универсальнее его может сделать...
пример куска кода )))
if ((RED==255)&&(GREEN==255)&&(BLUE==255)&&(R==0)&&(G ==0)&&(B==0)&&(C==0)) {RED-=15;C=1;};
if ((RED›0)&&(RED‹255)&&(GREEN==255)&&(BLUE==255)&&(R ==0)&&(G==0)&&(B==0)&&(C==0)) {RED-=15;C=1;};
if ((RED==0)&&(GREEN==255)&&(BLUE==255)&&(R==0)&&(G== 0)&&(B==0)&&(C==0)) {R=1;C=1;};
if ((RED==0)&&(GREEN==255)&&(BLUE==255)&&(R==1)&&(G== 0)&&(B==0)&&(C==0)) {GREEN-=15;C=1;};
|
|
|
Сказали "Спасибо" miwutka
|
|
|
27.06.2012, 02:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
Сообщение от miwutka
|
Строк получилось штук 30 и заняло памяти в атмеге 8 20%. Кто-нибудь может подсказать как лучше оптимизировать
|
Поздравляю, у Вас талант на самое быстрое заполнение памяти МК.
А если серьезно, эти строки ни о чем не говорят, выложите всю программу.
|
|
|
Сказали "Спасибо" nonamedov
|
|
|
27.06.2012, 02:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
Хотя нет, можно, преписав эти строки на ассемблере.
|
|
|
Сказали "Спасибо" nonamedov
|
|
|
27.06.2012, 02:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
решено своими силами обошлось в 10 строк ))
Последний раз редактировалось miwutka; 28.06.2012 в 11:53.
|
|
|
Сказали "Спасибо" miwutka
|
|
|
27.06.2012, 02:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
вот весь код. По нажатию на кнопку происходит пошаговое изменение цвета на светодиоде-РЖБ. Хочу оптимизировать както.......
|
|
|
Сказали "Спасибо" miwutka
|
|
|
27.06.2012, 11:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
А разве в меге8 нет аппаратных шимов? Или возьми мегу48 у нее 6 шимов, вообще ничего тормозить не будет
|
|
|
|
27.06.2012, 11:59
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
Сообщение от miwutka
|
По нажатию на кнопку происходит пошаговое изменение цвета на светодиоде-РЖБ
|
Расскажите по-подробнее своими словами как именно изменяется, а то за кучей условий if() не видно леса
|
|
|
Сказали "Спасибо" Yurkin2007
|
|
|
27.06.2012, 12:08
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
miwutka, Это не оптимизировать надо -ЭТО надо переписывать полностью .
ЗЫ Под авр вы пишите еще хуже .Так что пики совсем не причем ...
__________________
Осторожно , злой кот
|
|
|
Сказали "Спасибо" dosikus
|
|
|
27.06.2012, 12:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
Судя по всему Вы не умеете строить циклы, например, чтобы получить все цвета радуги можно написать так:
Цитата:
|
red = 0;
grin = 255;
blue = 255;
while (mode==M) /*проверка номера M цветового эффекта*/
{
for (i=0; i ›= 255; i++) /* цикл перехода (переливания) с красного на зеленый*/
{
red++;
grin--;
delay_ms(N); // задержка на N миллисекунд
};
for (i = 0; i ›= 255; i++) /* цикл перехода с зеленого на синий */
{
grin++;
blue--;
delay_ms(N);
};
for (i = 0; i ›= 255; i++) /* цикл перехода с синего на красный,
цвета не из радуги, но как то надо же вернуться на начальное состояние */
{
blue++;
red--;
delay_ms(N);
};
};
|
Конечно можно построить и функцию прехода от одного цвета к другому, которая бы сделала бы программу короче, но учитывая простоту алгоритма эффекта от нее отказался, к тому же тогда придется применить указатели.
PS. Замечу, что Ваш алгоритм я не понял и даже особо не старался, но , думаю, в случае чего Вы сами разберетесь и измените код под свои нужды.
Последний раз редактировалось nonamedov; 27.06.2012 в 12:43.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо nonamedov за это сообщение:
|
|
|
27.06.2012, 14:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: помогите оптимизировать прогу для ШИМа...
вроде понял как упростить. Сначала всё потушено.Там по алгоритму по цветовой палитре из паинта переход от красного по цветам радуги и до красного, а потом белый зажигаеться и тухнет )) Упомянули про указатели. Сколько читал про них - не могу понять как они работают. Может кто может объяснить попутно...?
Сообщение от nonamedov
|
чтобы получить все цвета радуги
|
непойму как получаться цвета радуги если одновременно два цвета будут светиться только при 127 числе. Половина диапазона цвета не отобразиться, или я чегото не понял?
|
|
|
Сказали "Спасибо" miwutka
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:04.
|
|