Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,048
#1

Количество импульсов в секунду - C++

02.07.2015, 15:19. Просмотров 733. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Помогите, кто чем может ))

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

Если делать цикл в отдельном потоке, вида:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CountDI = 0;
 
ULONG StartTime = GetTickCount();
   for(int i=0; GetTickCount()-StartTime < 1000; i++)  // кол-во отчетов за 1 сек.
   {
        !pModule->TTL_IN(&TtlIn);   // Запрос состояния
        Form1->DI1 = TtlIn;         // Записываем ответ
 
        if (Form1->DI1!=DI_save){    // Если состояние изменилось
         DI_save = Form1->DI1;        //Запишем последнее состояние
         CountDI++;            //Счетчик изменения состояний импульса
         }
 
   }
То в таком случае, получаем кол-во отчетов в секунду, но при этом программа подвисает, при попадании в данный цикл. Плюс идет привязка к системному счетчику, что может выйти боком в будущем.

Подскажите, как можно более правильно посчитать кол-во импульсов за секунду ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2015, 15:19     Количество импульсов в секунду
Посмотрите здесь:

Количество операций в секунду - C++ Builder
Надо подсчитать колличество операций сложения в течении секунды.Как это правильно записать? void __fastcall TForm1::Button1Click(TObject...

Определенная последовательность импульсов на ком порт - C++ Builder
Есть кнопки void __fastcall TForm1::Button1Click(TObject *Sender) { } При ее нажатии нужно сделать так, что на ком порту...

Задержка в одну секунду - C++
Как сделать в Си задержку в одну секунду?

Прибавить к полученному времени 1 секунду - C++ Builder
Всех приветствую. Столкнулся с бедой вроде просто, а даже гугл не ищет. В общем не могу прибавить к извлечённому времени 1 секунду. Код: ...

Определение числа операций в секунду - C++
Требуется определить, какое число операций выполнит программа за одну секунду. Например, чему будет равно значение i через одну секунду...

При компиляции - cmd на секунду - Visual C++
При запуске отладки программы на секунду открывает cmd и тут же закрывает. Не появляется ни форма, ничего. Ошибок никаких нет. Программа...

Как задержать цикл на одну секунду - C++
Помогите пожалуйста, не как не могу приостановить цикл на секунду, мне надо сделать так чтобы каждую секунду цикл выводил текст, пробовал...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rius
Эксперт .NET
2409 / 1603 / 370
Регистрация: 25.05.2015
Сообщений: 5,441
Записей в блоге: 8
Завершенные тесты: 4
02.07.2015, 15:56     Количество импульсов в секунду #2
Это на ПК, в микроконтроллере или где? Какова максимальная частота импульсов?
На ПК не RTOS работает, стабильный подсчёт невозможен.
magirus
Супер-модератор
Эксперт по компьютерным сетямЭксперт Windows
26421 / 14723 / 836
Регистрация: 15.09.2009
Сообщений: 63,981
Записей в блоге: 69
02.07.2015, 17:34     Количество импульсов в секунду #3
Цитата Сообщение от DenProx Посмотреть сообщение
На цифровой вход некоторого оборудования
там свои есть функциональные блоки
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,048
03.07.2015, 08:33  [ТС]     Количество импульсов в секунду #4
немного конкретики добавлю)) Оборудование это от фирмы L-Card: Е14-440. В тех поддержке сказали, что в самом приборе нет функции такой, необходимо решать задачу на программном уровне. В старой версии программы, которую я переделываю, так и было сделано, как в примере выше, с использованием GetTickCount.

Добавлено через 2 минуты
Если есть примеры решения подобных задач для других устройств, буду признателен. Может что-то подойдет под мою задачу.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
03.07.2015, 09:08     Количество импульсов в секунду #5
Цитата Сообщение от DenProx Посмотреть сообщение
импульсов за секунду
Цитата Сообщение от DenProx Посмотреть сообщение
так и было сделано
А о каких цифрах идет речь вообще? Приблизительно.
DenProx
Техник
310 / 168 / 5
Регистрация: 09.10.2009
Сообщений: 3,048
03.07.2015, 09:14  [ТС]     Количество импульсов в секунду #6
SatanaXIII, Примерно, от 1 до 10 импульсов в сек. В зависимости от того, сколько Гц на генераторе выставим.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2015, 12:38     Количество импульсов в секунду
Еще ссылки по теме:

Генерация случайного числа каждую секунду - C++
Нужно каждую секунду генерировать случайное число. Ниже мой код, который выполняет задачу, но функция слип останавливает весь процесс и в...

Каждую секунду менять значения матрицы - C++
Нужен код программы,которая показывает матрицу 3*3,где каждую секунду случайно меняются её значения.Нужно чтобы программа не выводила...

Как выполнять операцию каждую секунду? - C++ Builder
Мне нужно, что б мое консольное приложение запускалось и за все время работы выполняло бы одну операцию каждую секунду.

Как засечь ровно одну секунду? - C++
Хочу написать консольку, которая будет считать, сколько действий в секунду выполнит мой комп. Проблема: не знаю, как засечь эту...

Отнимите секунду от времени 0.0.0! Не понимаю алгоритм - C++
Задано время в формате ч.м.с. Нужно от этого времени отнять определённое кол-во секунд. Всё бы ничего, но проблемы и непонимание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AlexVRud
442 / 152 / 38
Регистрация: 04.07.2014
Сообщений: 430
07.07.2015, 12:38     Количество импульсов в секунду #7
DenProx, DenProx, похоже на то, что ты бьёшь из пушки по воробьям. Если задача сводится только к замеру частоты цифрового сигнала, то тут справиться замечательно Arduino, где на микроконтроллере есть возможность обрабатывать прерывания при смене уровня входного цифрового сигнала. В твоей же ситуации ты можешь запросить поток заданной частоты с АЦП и запоминать в отдельный FIFO только номера тактов при которых произошёл, например, переход с 0 на 1. И по этим данным уже вычислять частоту, используя несколько тактов, для усреднения результата.
Yandex
Объявления
07.07.2015, 12:38     Количество импульсов в секунду
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru