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

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

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

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

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

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

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

 
Опции темы
Непрочитано 28.07.2010, 01:36  
sdsrem
Почётный гражданин KAZUS.RU
 
Аватар для 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_init1))
   
delay_init--;  //И так уменьшаем пока не будет задержка всего в 1 миллисекунду

delay_button(delay_init);
}
}

__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 28.07.2010, 16:37  
sdsrem
Почётный гражданин KAZUS.RU
 
Аватар для 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,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 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.RU
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Как увеличивать скорость пересчёта

Спасибо всем, буду пробовать.
sdsrem вне форума  
Непрочитано 28.07.2010, 18:15  
sdsrem
Почётный гражданин KAZUS.RU
 
Аватар для 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.RU
 
Аватар для 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.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
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, время: 18:08.


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