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

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

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

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

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

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

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

 
Опции темы

Как увеличивать скорость пересчёта

Непрочитано 28.07.2010, 22:01  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Сообщение от Godzilla82 Посмотреть сообщение
Наверное, в начале функции main объявить переменную delay_init
И что из этого выйдет? Строку с ошибкой можно вообще удалить, кроме присвоения значения 100 переменная delay_init больше нигде не используется.
Реклама:
kison вне форума  
Непрочитано 28.07.2010, 22:21  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
Радость Re: Как увеличивать скорость пересчёта

Сообщение от Godzilla82 Посмотреть сообщение
Наверное, в начале функции main объявить переменную delay_init:

Код:
unsigned int delay_init;
Спасибо всё заработало, всем спасибо (буду учится дальше).
sdsrem вне форума  
Непрочитано 28.07.2010, 22:28  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Сообщение от kison Посмотреть сообщение
И что из этого выйдет? Строку с ошибкой можно вообще удалить, кроме присвоения значения 100 переменная delay_init больше нигде не используется.
Попробовал без delay_init тоже работает, ещё раз всем спасибо.
sdsrem вне форума  
Непрочитано 28.07.2010, 22:29  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Угу, забыл просто грохнуть строчку
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 28.07.2010, 22:51  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

А вот почему в плюс работает а в минус нет, вроде написал верно (может нет)

if((!kn_plus)&&(kn_TX))
{delay_ms(50);
ph_state_save=ph;
while(!kn_plus)
{if (ph ‹ 32700)
{if (ph›(ph_state_save+30))
ph += 10;
else ph += 1;
set_pch();
delay_ms(100);}}};

if((!kn_minus)&&(kn_TX))
{delay_ms(50);
ph_state_save=ph;
while(!kn_minus)
{if (ph › 32700)
{if (ph›(ph_state_save-30))
ph -= 10;
else ph -= 1;
set_pch();
delay_ms(100);}}};
sdsrem вне форума  
Непрочитано 28.07.2010, 23:29  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

У меня такое чувство что ты свой код ВООБЩЕ не читаешь. Когда уменьшаем нам же надо ориентироваться не на "показатель больше сохраненного" а на "показатель меньше сохраненного"


PHP код:

if((!kn_plus)&&(kn_TX))
{delay_ms(50);
ph_state_save=ph;
while(!kn_plus)
{if (ph ‹ 32700)
{if (ph›(ph_state_save+30))
ph += 10;
else ph += 1;
set_pch();
delay_ms(100);}}};

if((!kn_minus)&&(kn_TX))
{delay_ms(50);
ph_state_save=ph;
while(!kn_minus)
{if (ph › 0) //Мы теперь уменьшаем поэтому  мы задаем рамки до какого значения уменьшать.
{if (ph‹(ph_state_save-30)) //Мы начнем ускоряться только когда полученное ph уже стало МЕНЬШЕ чем то с которого мы начали уменьшать значение
 
{ //Внимание тут ставим "предохранитель" который не позволит скакнуть меньше нуля если уменьшаем сразу значениями 10
 if (ph ›10) //Если есть в запасе больше 10ти ph
      ph -= 10; //То отнимаем сразу по 10 
   else  ph -= 1; //Если у нас меньше 10 то замедляемся отнимаем по одному.
}
else ph -= 1;
set_pch();
delay_ms(100);}}}; 
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 28.07.2010, 23:45  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Как увеличивать скорость пересчёта

Не знаю, что нужно топикстартеру, но подозреваю, что организацию кнопочного ввода, напрмер как для часов. Чтобы одиночное нажатие на кнопку увеличивало значение на 1, а более длительное (более 2 с) - быстрое непрерывное увеличение.
Я поступал так:

Код:
void main(void)
{
char cnt1 = 0;
begin:
if (!PINA.1)	{
		if ( (cnt1 == 0) || (cnt1 == 20) ) press_1();
		if ( cnt1 ‹ 20) cnt1++;
		}
else		cnt1 = 0;
delay_ms(100);
goto begin;
};

В функции press_1() выполнялись все необходимые действия для кнопки №1.

P.S. MasterMushi: Сделайте перенос в строчках с комментариями. Не у всех 1280х1024 или выше.

Последний раз редактировалось Godzilla82; 28.07.2010 в 23:58.
Godzilla82 вне форума  
Непрочитано 29.07.2010, 00:28  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Сообщение от MasterMushi Посмотреть сообщение
У меня такое чувство что ты свой код ВООБЩЕ не читаешь. Когда уменьшаем нам же надо ориентироваться не на "показатель больше сохраненного" а на "показатель меньше сохраненного

Да собственно разобрался, я просто забыл поставить минус перед значением

(ph › -32700)

вот собствеено что получилось

PHP код:
     {  
      if((!kn_plus)&&(kn_TX))
        {delay_ms(50);
         ph_state_save=ph;   
          while(!kn_plus)
          {if (ph ‹ 32700) 
            {if (ph›(ph_state_save+30))
              ph += 10;
              else ph += 1;
               set_pch();
                delay_ms(100);}}}
               
     if((!kn_minus)&&(kn_TX)) 
        {delay_ms(50); 
         ph_state_save=ph; 
          while(!kn_minus) 
          {if (ph › -32700)  
            {if (ph‹(ph_state_save-30)) 
              ph -= 10; 
              else ph -= 1;
               set_pch(); 
                delay_ms(100);}}} 
     } 
Мне нужно не только прибавлять но и отнимать значение.
Это для цифравой шкалы ПЧ +\-

Последний раз редактировалось sdsrem; 29.07.2010 в 00:32.
sdsrem вне форума  
Непрочитано 29.07.2010, 00:39  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Как увеличивать скорость пересчёта

Сообщение от sdsrem Посмотреть сообщение
Мне нужно не только прибавлять но и отнимать значение.
Ну так в чём проблема-то?

Код:
void main(void)
{
char cnt1 = 0;
char cnt2 = 0;
begin:
if (!PINA.1)	{
		if ( (cnt1 == 0) || (cnt1 == 20) ) press_1();
		if ( cnt1 ‹ 20) cnt1++;
		}
else		cnt1 = 0;
if (!PINA.2)	{
		if ( (cnt2 == 0) || (cnt2 == 20) ) press_2();
		if ( cnt2 ‹ 20) cnt2++;
		}
else		cnt2 = 0;
delay_ms(100);
goto begin;
};
Вместо press_1() в вашем случае надо поставить ph++, а вместо press_2() - ph--.
Godzilla82 вне форума  
Непрочитано 29.07.2010, 00:53  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Сообщение от Godzilla82 Посмотреть сообщение
Ну так в чём проблема-то?

Код:
void main(void)
{
char cnt1 = 0;
char cnt2 = 0;
begin:
if (!PINA.1)	{
		if ( (cnt1 == 0) || (cnt1 == 20) ) press_1();
		if ( cnt1 ‹ 20) cnt1++;
		}
else		cnt1 = 0;
if (!PINA.2)	{
		if ( (cnt2 == 0) || (cnt2 == 20) ) press_2();
		if ( cnt2 ‹ 20) cnt2++;
		}
else		cnt2 = 0;
delay_ms(100);
goto begin;
};
Вместо press_1() в вашем случае надо поставить ph++, а вместо press_2() - ph--.
Сейчас попробую ваш вариант, тоже интересно.
sdsrem вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как понизить ТВ частоты???? retro-person Автоматика и аппаратура связи 5 02.08.2010 16:42
MICRF505 и как его едят aramiha Микроконтроллеры, АЦП, память и т.д 4 18.05.2010 16:34
Генератор частоты на Mega - как? code-by Микроконтроллеры, АЦП, память и т.д 9 10.11.2009 15:02
Генератор розового шума как средство от бессоницы Dizartius Производственное оборудование 3 03.10.2009 13:20


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


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