реклама на сайте
подробности

 
 
> AVR. Программа тахометра
Serega_0180
сообщение Jul 26 2009, 12:01
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 26-07-09
Из: Саратов
Пользователь №: 51 565



Приветствую всех. Вопрос к знающим. Начал писать первую серьезную (для меня, т.к. зашел в тупичек) программу. Задумал сделать тахометр на "копейку". Взял за основу программу частотомера. Программа должна выводить значения частоты вращения двигателя на линейку светодиодов. Чем больше частота вращения, тем больше светодиодов светятся.
В конечном итоге программа вычисляет частоту, но светодиоды загораются непонятно как. Посмотрите, пожалуйста исходник, может опытные программисты сразу увидят что не так.
Программа написана в CodeVisionAVR и есть симуляция работы схемы в Протеусе.
Заранее оч. благодарен!
Прикрепленные файлы
Прикрепленный файл  Taxo.rar ( 4.44 килобайт ) Кол-во скачиваний: 46
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Serega_0180
сообщение Jul 31 2009, 19:03
Сообщение #2





Группа: Участник
Сообщений: 7
Регистрация: 26-07-09
Из: Саратов
Пользователь №: 51 565



спасибо. это уже находил, смотрел. Но очень плохо знаю ассемблер (еще хуже,чем СИ biggrin.gif ).
мне подсказали немного, что нужно использовать цикл if Пока думаю дальше.
Go to the top of the page
 
+Quote Post
Paulina
сообщение Aug 4 2009, 13:30
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 18-05-08
Пользователь №: 37 607



Цитата(Serega_0180 @ Jul 31 2009, 22:03) *
спасибо. это уже находил, смотрел. Но очень плохо знаю ассемблер (еще хуже,чем СИ biggrin.gif ).
мне подсказали немного, что нужно использовать цикл if Пока думаю дальше.


1)если гасить светодиоды, то все, а у вас только порт D гасится:
#define OFF_LEDS PORTD = 0b00000000
добавьте то же для других портов

2)смотрите, что у вас между 6-м и 4-м светодиодом стоит:

if (Fx >= 40)
{
ON_LED6;
}
if (Fx >= 33.3)
{
OFF_LEDS;
}
while (Fx >= 26.7)
{
ON_LED4;

я так понимаю, результат ctrl-c ctrl-v))

3) на малых частотах входного сигнала (около 10 имп/с) ошибка будет составлять до 20% (т.к. подсчет ведется примерно за 500 мс). здесь лучше использовать измерение не количества импульсов, а их периода следования (скажем, померили период следования T в микросекундах и находите частоту по формуле N0*1000000/T, где N0 - количество оборотов на импульс, у вас это 30)

Сообщение отредактировал Paulina - Aug 4 2009, 14:16
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 15:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016