Страница 1 из 1
Счетчик количества импульсов за единицу времени
Добавлено: Ср сен 27, 2006 15:00:41
ostrige
Нужно сделать счетчик количества импульсов за единицу времени на ATMega8.
Сабж нужен для того, чтоб считать количество импульсов появляющихся на контакте прерывателя автомобиля с контактной системой зажигания для определение скорости вращения коленчатого вала.
Помогите мне пожалуйста. Лучше б конечно кодом на С, а если еще и для CodeVision, то вообще было б классно.
Re: Счетчик количества импульсов за единицу времени
Добавлено: Ср сен 27, 2006 17:54:06
avr123.nm.ru
ostrige писал(а):Нужно сделать счетчик количества импульсов за единицу времени на ATMega8.
Лучше б конечно кодом на С, а если еще и для CodeVision, то вообще было б классно.
либо поиском google.com поищите готовые, либо админа спросите есть курс как раз на CVAVR, либо топик "с чего начать програмить" посмотрите.
Имхо - прекрасная задача для обучения!
примеры прерываний как раз под вашу задачу на странице 3 курса.
Добавлено: Ср сен 27, 2006 22:12:31
teoretic
где-то на сайте(кажется с котом....или нет...может на электронике...) был проект - определение частоты вращения ДВС для модели самолета - смотри и рыдай. даже индикатор есть.
если хочется сделать с нуля, то наиболее НАДЕЖНЫЙ способ - сделать таймер, который будет считать время и подцепить копыто аналогового компаратора на вывод катушки зажигания (другое копыто - на делитель напряжения), и считать перепады. этим гарантируется то, что даже при "неправильном"(ну например мммммедленном) перепаде напряжения не случится ужас в железной логике контроллера(а 2.5В на пару десятков тактов могут ввести железо в ступор, особенно D триггеры

. до самовозгорания), да и rc фильтр не помешал-бы.
в принципе можно повесить вывод на копыто прерывания, но с этим сложнее ибо надо развязывать, стабилизировать.... вобщем делать из 9....16В что-то около 5В+-10%....а оно надо?
чтобы исключить разные проблеммы с помехами и утечкой тока не туда, куда надо - лучше сделать развязку - либо приделать собственный трансформатор, либо оптопару (последнее предпочтительнее ибо оно, пожалуй, будет не сильно обижаться на повышенное напряжение и позволит обойтись без аналогового компаратора)
так как все это бред и домыслы ни разу не спаявшего сие изделие человека, прошу воспринимать это как намек на возможный вариант
Добавлено: Чт сен 28, 2006 00:35:54
Гость
Спасибо конечно за ответы и внимание, но не мог бы кто поделится хоть наброском кода, т.к. я даже не знаю с чего начать...
Добавлено: Чт сен 28, 2006 00:42:01
ostrige
Предидущий пост мой, хотя и так все догадались.

Добавлено: Чт сен 28, 2006 04:46:06
Незнайка
Я делал нечто похожее, только импульсы считались для форсунки. Зная сколько форсунка выплевывает за минуту можно было считать расходы топлива и т.д. вобщем это не важно. У меня есть наброски кода, но они дома, а я на работе, вечером постараюсь прикрепить.
Добавлено: Чт сен 28, 2006 07:03:59
Max
Добавлено: Пт сен 29, 2006 19:49:08
ostrige
Не, ну как подключать я и так догадывался, но вникать в АСМ код такого объема это с вашех стороны садизм, с моей - мазахизм.
2 Незнайка Выложите пожалуйста то что у вас есть.
Добавлено: Вс окт 01, 2006 21:16:43
dx40
Вот программа простейшего частотомера, выводит частоту сточностью до 10 Гц на символьный ЖКИ.
unsigned int cp,lp;
unsigned char p;
// прерывание по переполнению таймера 0
// Таймер 0 работает в режиме счетчика, соответственно на его вход и надо подавать импульсы
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{ cp++; }
// Таймер 1 работает как таймер, при переполнении начинает считать заново
// От значения B до значения A проходит ровно 0.1с
// Совпадение A - сохранение результатов счета
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
p=TCNT0;
lp=cp;
}
// Совпадение B - обнуление
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
{
TCNT0=0;
cp=0;
}
Программа не 100% правильная (иногда подглючивает) но простая и работоспособная.
Добавлено: Вс окт 01, 2006 23:04:48
ostrige
Большое спасибо, завтра на свежую голову попытаюсь подправить под свои условия и свой контроллер, потом отпишусь о результатах.
Добавлено: Пт сен 28, 2007 11:01:17
ostrige
Не получилось тогда, закинул по нехватке времени
Вот решил вернуться к поставленой задаче.
Посмотрите пожалуйста, что я не так делаю. В ПРОТЕУСе симулировал, на вывод внешнего прерывания подавал сигнал с генератора пульсов, и ни в какую...
Добавлено: Пт сен 28, 2007 12:43:46
Artem333
жаль что нужен СИ. У меня есть на асме готовый тахометр, определяет частоту по двум импульсам значение частоты выдаётся мгновенно (задержка для глаз может варьироваться)