сайт практикующего электронщика-эмбеддера  
Вернуться   сайт практикующего электронщика-эмбеддера > Коммерческие проекты > Круиз Универсальный круиз-контроль для электронной педали газа
Регистрация Магазин Коммерческие проекты Открытые проекты

 
 
Опции темы Поиск в этой теме Опции просмотра
  #11  
Старый 14.08.2019, 02:25
NikKulik NikKulik вне форума
Новичок
 
Регистрация: 11.08.2019
Адрес: USSR
Сообщений: 5
По умолчанию

Импульсы собираю по attachInterrupt(1,sensSPD,RISING); // Спедометр - подключить прерывание на 3 пин при повышении сигнала. Spedometer
void sensSPD(){
SPDimpulse++;
}
А скорость обрабатываю по таймеру 1 раз в 50мс, это 20 раз в секунду.
MsTimer2::set(50,TimerSPD);//500ms period (1000ms=1s)
MsTimer2::start(); // MsTimer2::stop() отключает прерывание.

void TimerSPD(){
//round(SPDimpulse); //1.66); //округление: round() - ... в ближайшую сторону; ceil() - ... вверх; floor() - ... вниз.
//speedometer=round(SPDimpulse/0.94/2);
//speedometer=round(SPDimpulse/1.66);
speedometer=round(SPDimpulse/0.94/2*10);
SPDimpulse=0;
}

Скорость считает, но периодически виснет и не знаю что уже с этим делать... могу прислать весь код или попробую сюда скинуть - может что подскажите?
Ответить с цитированием
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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


Текущее время: 06:33. Часовой пояс GMT +3.

Нажмите здесь, если заметили неисправности сайта, или сообщите о спамер-аккаунтах, для их блокирования.

Copyright 2000-2026, Pugachov Sergiy       Внимание! Использование любых материалов моего сайта разрешаю только при условии указания ссылки на эту страницу.