Измеритель скорости на ATMEGA8.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Tuz
Родился
Сообщения: 12
Зарегистрирован: Вс янв 09, 2011 22:16:11
Откуда: Узбекистан

Измеритель скорости на ATMEGA8.

Сообщение Tuz »

Приветствую Уважаемые форумчане. Недавно по просьбе знакомого автомоделиста ( скорее по желанию попробовать собрать что-то серьезное) начал разработку измеритель скорости. В чем заключается суть данного девайса. Модель автомобиля едет по кругу в произвольный момент времени (т. е. по желанию спортсмена) при нажатии на кнопку начинается отсчет определенного количества кругов. И после все этих процедур выводится финальный результат. Забыл упомянуть до нажатия на кнопку показывается скорость каждого круга. Так спортсменам легче определить лучший момент.

Добавлено after 28 minutes 52 seconds:
Выклыдываю проект в протеусе и собственно саму программу.

Добавлено after 23 minutes 22 seconds:
Схему в протеусе выложить не получается(не знаю почему, но скорей всего ограничение модератора) Попробую нарисовать .jpeg
Программу выложил. Если есть мысли как её ускорить, сделать более читаемой критика приветствуется(попрошу сильно не пинаться это моя 2я программа).
Вложения
Poligon.rar
(26.33 КБ) 175 скачиваний
AvtoSpeed_0.0.1.c
(4.12 КБ) 495 скачиваний
Последний раз редактировалось Tuz Ср апр 05, 2017 08:30:28, всего редактировалось 1 раз.
Аватара пользователя
АлександрЛ
Друг Кота
Сообщения: 43813
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Re: Измеритель скорости на ATMEGA8.

Сообщение АлександрЛ »

Tuz писал(а): Схему в протеусе выложить не получается(не знаю почему, но скорей всего ограничение модератора) Попробую нарисовать .jpeg .
Заархивируйте файл протеуса в *.rar или *.zip - тогда выложится..
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Измеритель скорости на ATMEGA8.

Сообщение akl »

Tuz писал(а):Программу выложил. Если есть мысли как её ускорить, сделать более читаемой критика приветствуется(попрошу сильно не пинаться это моя 2я программа).
Можно уйти от магических чисел типа

Код: Выделить всё

	TCNT1 = 57535;
, а сразу записать

Код: Выделить всё

TCNT1 = -8000 ; 1мс
или вообще уйти от привязки к частоте тактирования

Код: Выделить всё

TCNT1 = -F_CPU/1000; 1мс
Не нравится проведение расчёта скорости. Операция деления должна проводиться в последнюю очередь. Не думаю, что компилятор настолько продвинутый, что сам определяет порядок выполнения операций.
Думаю, что лучше задать режим работы таймера по сравнению с автосбросом и привязать к 1мс динамическую индикацию.

Код: Выделить всё

OCR1A=F_CPU/1000-1; 1мс
TCCR1B=ICES1+WGM12+CS10; CTC F_CPU/1
Tuz
Родился
Сообщения: 12
Зарегистрирован: Вс янв 09, 2011 22:16:11
Откуда: Узбекистан

Re: Измеритель скорости на ATMEGA8.

Сообщение Tuz »

Спасибо за совет АлександрЛ. Проект в протеусе выложил.

Добавлено after 41 minute 38 seconds:

Код: Выделить всё

 или вообще уйти от привязки к частоте тактирования 
ТCNT1 = -F_CPU/1000; 1мс 
Отиличная мысль. Буду исправлять.

Код: Выделить всё

 Не нравится проведение расчёта скорости. Операция деления должна проводиться в последнюю очередь. Не думаю, что компилятор настолько продвинутый, что сам определяет порядок выполнения операций.
Если вы имеете в виду эту часть кода
return (uint16_t)(((float)50000/data)*3600);
то здесь после деления, результат умножается что бы вывести нужную часть числа из дробной части (Поскольку точка скорей всего будет включена постоянно). Что бы вывести деление из формулы нужно будет добавить переменную и добавить еще отдельную строку кода для умножения. Что то типа этого:
float temp;
temp = ((float)50000/data):
return (uint16_t)(temp*3600);
Больше ничего в голову не приходит. Результат по формуле выдается правильный.

Код: Выделить всё

Думаю, что лучше задать режим работы таймера по сравнению с автосбросом и привязать к 1мс динамическую индикацию.
OCR1A=F_CPU/1000-1; 1мс
TCCR1B=ICES1+WGM12+CS10; CTC F_CPU/1
Про динамическую индикацию думал, но не успел добратся
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Измеритель скорости на ATMEGA8.

Сообщение akl »

Не понимаю в ваших кыржиках, но почему нельзя сделать так

Код: Выделить всё

3600*50000/data
Tuz
Родился
Сообщения: 12
Зарегистрирован: Вс янв 09, 2011 22:16:11
Откуда: Узбекистан

Re: Измеритель скорости на ATMEGA8.

Сообщение Tuz »

Эту формулу я скопировал с термометра. Подставил только свои значения. Но следуя вашей формуле умножение можно убрать совсем, оставив только деление.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Измеритель скорости на ATMEGA8.

Сообщение akl »

Именно так, объявив константой.
http://radiokot.ru/forum/viewtopic.php? ... 2#p2988312
Ответить

Вернуться в «Разные вопросы по МК»