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

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

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

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

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

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

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

 
Опции темы

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

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

Как правильно сделать чтоб нажал на кнопку пересчёт был допустим со скоростью 1 секунда, но ежели кнопку удерживать 3 секунды то пересчёт должен повысить скорость например до 0,1 секунды?
Вот кусочек кода куда надо это вставить.
Может для этого есть более простое решение?

if((PINC.1 == 0)&&(PINB.0 == 1)){
delay_ms(50);
while(PINC.1 == 0){
if (ph ‹ 32700){
ph += 1;
set_pch();
delay_ms(100);
}
}
}
Реклама:
sdsrem вне форума  
Непрочитано 28.07.2010, 06:33  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Посчитай время нажатия кнопки. Но скорее всего придется писать свою собственную функцию задержки. Чтобы убирать в цикле.

Чтото типа такого


PHP код:
void delay_button(char mikrisekundi)
{
while (mikrisekundi--)
delay_ms(1);
}


unsigned int ph_state_save; 
char delay_init; // - счетчик для задержки


if((PINC.1 == 0)&&(PINB.0 == 1)){
delay_ms(50);
ph_state_save=ph; //Вот тут мы сохраним опорное PH значение перед 
//ускорением. Как только превысим порог в  +50 пунктов начнем гнать.
delay_init=100; //Зададим первоначальную задержку
while(PINC.1 == 0){
if (ph ‹ 32700){
ph += 1; 
set_pch();

//Теперь если мы удерживая удержали до сдвига больше чем на 50 
//пунктов То каждый следующий пункт будет на миллисекунду быстрее 
//(можно еще быстрее ускорение счета сделать если надо.) Я бы сделал 
//сразу -10 
if ((ph›(ph_state_save+50))&&(delay_init›1))
   delay_init--;  //И так уменьшаем пока не будет задержка всего в 1 миллисекунду

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

[QUOTE=MasterMushi;231855]Посчитай время нажатия кнопки. Но скорее всего придется писать свою собственную функцию задержки. Чтобы убирать в цикле.

Чтото типа такого


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

Нет предела патриотам!

В твоем желанном варианте даже дополнительных функций не надо!!

PHP код:
unsigned int ph_state_save; 

if((PINC.1 == 0)&&(PINB.0 == 1)){
delay_ms(50);
ph_state_save=ph; //Вот тут мы сохраним опорное PH значение перед 
//ускорением. Как только превысим порог в  +30 пунктов начнем гнать.
delay_init=100; //Зададим первоначальную задержку
while(PINC.1 == 0){
if (ph ‹ 32700){
if (ph›(ph_state_save+30)) //Три секунды это 30 пунктов если задерживаем по 0.1 секунды
     ph += 10; //Как только прошли три секунды начинаем добавлять сразу по 10 пунктов
else ph += 1; //Если только нажата кнопка добавляем по одному
set_pch();
delay_ms(100);
}
}
} 
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 28.07.2010, 17:05  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,693
Сказал спасибо: 28
Сказали Спасибо 4,526 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Да почти все то же самое. Только не задержку уменьшаете, а делаете переменную шага ph_step=1;
и вместо ph+=1; прописываете ph+=ph_step; . Ну и вначале это прибавление единицы, если кнопка удерживается по последнему условию, то делаем ph_step+=10; или 20 и т.д. Ну или если надо в геометрической прогрессии, то ph_step умножается на константу.
Halex07 вне форума  
Непрочитано 28.07.2010, 17:40  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

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

Блин где задефайнить, или какую функцию включить, использую CVAVR
delay_init=100; //Зададим первоначальную задержку
ато ошибку выдаёт
sdsrem вне форума  
Непрочитано 28.07.2010, 18:48  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Начнем с того что в функции delay_ms и delay_us как параметры можно только константы передавать.

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

Вот видимо должно получится так


unsigned int ph_state_save;
if((!kn_plus)&&(kn_TX))
{delay_ms(50);
ph_state_save=ph;
delay_init=100; ‹‹‹‹‹‹‹---сдесь ошибка
while(!kn_plus)
{ if (ph ‹ 32700)
{ if (ph›(ph_state_save+30))
ph += 10;
else ph += 1;
set_pch();
delay_ms(100);}}}

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

Сообщение от sdsrem Посмотреть сообщение
Вот видимо должно получится так


unsigned int ph_state_save;
if((!kn_plus)&&(kn_TX))
{delay_ms(50);
ph_state_save=ph;
delay_init=100; ‹‹‹‹‹‹‹---сдесь ошибка
while(!kn_plus)
{ if (ph ‹ 32700)
{ if (ph›(ph_state_save+30))
ph += 10;
else ph += 1;
set_pch();
delay_ms(100);}}}

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

Код:
unsigned int delay_init;
Godzilla82 вне форума  
 
Опции темы

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

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, время: 23:52.


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