Тахометр, нужна помощь.
13.12.2022, 16:34
|
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от Signalshik2
|
|
Тип и название переменной нужно в одну строку писать. Просто volatile; и точка с запятой - это нужно удалить, это бред.
|
Бред удалил, оставил строку:
|
Код:
|
...
volatile bit start;
... |
Работает.
|
|
|
|
13.12.2022, 16:49
|
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,274
Сказал спасибо: 11,856
Сказали Спасибо 4,157 раз(а) в 3,175 сообщении(ях)
|
Re: Тахометр, нужна помощь.
ew3ds, заодно удалите из кода все неверные вариации, которые были закоментарены "//"
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
13.12.2022, 17:34
|
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от mike-y-k
|
|
ew3ds, заодно удалите из кода все неверные вариации, которые были закоментарены "//"
|
Удалим. У меня попутно вопрос, в файле прошивки коменты остаются, или компилятор их не учитывает?
|
|
|
|
13.12.2022, 18:04
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,739
Сказал спасибо: 2,487
Сказали Спасибо 897 раз(а) в 584 сообщении(ях)
|
Re: Тахометр, нужна помощь.
компилятор их не учитывает
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо baiderin за это сообщение:
|
|
|
17.12.2022, 13:06
|
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Попутно возник еще вопрос. Как сдвинуть индикацию в разрядах в сторону увеличения оборотов, т.е. чтобы на индикаторе шло отображение выше 10 тыс.об.(без индикации десятков оборотов). Это удобно для регулировки бензопил, бензокос и др. подобного оборудования на максимально допустимые обороты.
|
|
|
|
17.12.2022, 13:36
|
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 409
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Вы выложите свой проект и прокомментируйте что там к чему. Кстати, какой там принцип действия? Также нужно указать максимальное число оборотов.
Последний раз редактировалось Signalshik2; 17.12.2022 в 15:27.
|
|
|
|
17.12.2022, 17:47
|
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от Signalshik2
|
|
Вы выложите свой проект и прокомментируйте что там к чему.
|
#1 Это чужой проект.
Сообщение от Signalshik2
|
|
Также нужно указать максимальное число оборотов.
|
15 тыс.
Сообщение от Signalshik2
|
|
Кстати, какой там принцип действия?
|
Вот все что было к данному проекту:
|
Цитата:
|
|
Разрешите предложить свой вариант прошивки для данного устройства. Все та же прошивка, но просто я добавил несколько строк помехоустойчивости, путем замера 3 импульсов подряд и проверкой их корректности. Также, ниже 600 оборотов показывает прочерки, сигнализируя о не работающем двигателе. Обновление дисплея сделал не по таймеру, а по условию разности 2 последовательных замеров и при отличии больше чем на 50 - обновление! Сделал также шаг в 50 оборотов чтобы показания меньше мелькали перед глазами.
|
Я понимаю, что в основе изначально лежал этот исходный код (в архиве).
Последний раз редактировалось ew3ds; 17.12.2022 в 18:58.
Причина: Добавил архив
|
|
|
|
18.12.2022, 14:59
|
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от ew3ds
|
|
Как сдвинуть индикацию в разрядах в сторону увеличения оборотов, т.е. чтобы на индикаторе шло отображение выше 10 тыс.об.(без индикации десятков оборотов).
|
Индикацию удалось сдвинуть изменив в файле 7seg.c этот код:
|
Код:
|
... for(i=0; i‹4; i++)
{
number[3-i]=rpm%10;... |
на этот:
|
Код:
|
... for(i=0; i‹5; i++)
{
number[4-i]=rpm%10;... |
Но есть одно но, если в разряде должен быть ноль,то он не отображается.
|
|
|
|
18.12.2022, 15:55
|
|
|
Гражданин KAZUS.RUN
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 838
Сказал спасибо: 379
Сказали Спасибо 942 раз(а) в 451 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от ew3ds
|
|
Но есть одно но, если в разряде должен быть ноль,то он не отображается.
|
Если буфер индикатора теперь рассчитан на 5 знакомест вместо 4-х, то видимо в функцию RefreshDisplay() нужно внести изменения:
|
Код:
|
void RefreshDisplay()
{
CHR_PORT=ch[number[0]]; // ch[number[1]]
CBI(NUM_PORT,NUM_1);
_delay_us(LED_delay);
SBI(NUM_PORT,NUM_1);
CHR_PORT=ch[number[1]]; // ch[number[2]]
CBI(NUM_PORT,NUM_2);
_delay_us(LED_delay);
SBI(NUM_PORT,NUM_2);
CHR_PORT=ch[number[2]]; // ch[number[3]]
CBI(NUM_PORT,NUM_3);
_delay_us(LED_delay);
SBI(NUM_PORT,NUM_3);
CHR_PORT=ch[number[3]]; // ch[number[4]]
CBI(NUM_PORT,NUM_4);
_delay_us(LED_delay);
SBI(NUM_PORT,NUM_4);
} |
Дополнительный старший разряд из буфера number не отображается, т.к. индикатор 4-разрядный. Кстати, и буфер нужно объявить number[5].
P.S. Еще нужно изменить в функции инициализации initdev() строку MCUCR=0x00 на MCUCR=0x02 или, что то же, на MCUCR=(1‹‹ ISC01) | (0‹‹ ISC00), т.е. прерывание должно срабатывать по спаду входного импульса, а не по низкому уровню. Иначе МК из прерывания не будет вылазить, пока на входе низкий уровень. Тут задача - измерение периода входного импульса.
Если я ничего не напутал
|
|
|
|
Сказали "Спасибо" j-Roger
|
|
|
18.12.2022, 18:54
|
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
j-Roger, спасибо большое за запощь. Пришлось еще дополнительно назначить свободный порт контроллера и убрать подчеркивания _delay...(программа ругалась "Error:....7seg.c(33): undefined symbol '_delay_us'") и все заработало.
Сообщение от j-Roger
|
|
nitdev() строку MCUCR=0x00 на MCUCR=0x02 или, что то же, на MCUCR=(1‹‹ ISC01) | (0‹‹ ISC00),
|
Вот тут заработал первый вариант (MCUCR=0x02). На второй программа ругнулась: "Error:......main.c(22): ')' expected, but '‹' found"
j-Roger, извиняюсь по поводу MCUCR=(1‹‹ ISC01) | (0‹‹ ISC00) - работает.
Это моя оплошность, я скопировал из сообщения, а нужно было прописать вручную.
Последний раз редактировалось mike-y-k; 18.12.2022 в 21:12.
Причина: 6.6
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:52.
|
|