Вы не вошли.
Я хочу сделать хронограф - прибор для измерения скорости полета пули
Для измерения скорости полёта пули и дробового заряда, устройство съёма информации о скорости одно, или есть отличия?
ps Простите за офтоп.
Вне форума
есть мнение что это т.н. "Гауссганн"....
я угадал ?
Активен
есть мнение что это т.н. "Гауссганн"....
я угадал ?
<offTop>
В первую очередь для страйкбола (калибр 6мм, скорость 80...150 м/с)
Но гауссган в макетном виде у меня тоже валяется - на 5 метров стреляет
</offTop>
Вне форума
А какие еще прерывания по таймеру я могу использовать чтобы отмерять более короткие промежутки времени?
Можно использовать прерывание по совпадению. Когда счетчик совпадет с регистром сравнения, произойдет прерывание. Можно включить режим, когда счетчик в этот момент сбросится. Изменяя содержимое регистра сравнения можно получить любой интервал прерываний.
Каким образом мне можно реализовать такое измерение времени?
То, что обсуждалось выше, относится к ФОРМИРОВАНИЮ временных интервалов с помощью таймера. А ИЗМЕРЕНИЕ временных интервалов - это совсем другая задача. Для этого у таймера есть схема захвата. По внешнему сигналу содержимое счетчика копируется в регистр захвата. Тут же в прерывании это значение нужно "переложить" в память. При следующем захвате сохраняется второе значение. Разность значений и даст искомый интервал времени с дискретностью до такта таймера. Если разрядности таймера не хватит, ее можно нарастить программно, т.е. в прерывании по переполнению считать эти переполнения.
Вне форума
Liv, не могли бы вы объяснить в чем преимущество измерения временных интервалов по указанному вами методу по сравнению со способом, в котором в обработчике таймера по прерыванию будет инкрементироваться переменная? Ведь временные интервалы в обоих случаях одинаковы. Если конечно обработка прерывания не будет занимать больше времени чем ей отводится.
Отредактировано Xumuk (22.03.2007 09:06:02)
Вне форума
в чем преимущество измерения временных интервалов по указанному вами методу по сравнению со способом, в котором в обработчике таймера по прерыванию будет инкрементироваться переменная? Ведь временные интервалы в обоих случаях одинаковы.
Вы не можете сделать прерывания таймера чаще, чем процессор сможет успеть их обработать. Минимум, в обработчике понадобится десяток команд, плюс накладные расходы на вызов обработчика. Поэтому частота прерываний как минимум на порядок меньше тактовой частоты процессора. К тому же, в таком режиме процессор будет занят на 100% обработкой прерываний.
А если использовать схему захвата, прерывания будут возникать только два раза: в начале и в конце измеряемого интервала. Всё остальное время будет работать счетчик таймера, который реализован аппаратно и не загружает процессор. И работает он на тактовой часте ядра. Поэтому точность измерения будет как минимум в 10 раз выше при практически нулевой загруженности процессора.
Вне форума
Ага, осилил
Большое спасибо, буду дальше разбираться
Вне форума
Урррааа! Оно работает!!!
Пистолет выдает 104 м/сек гггг
Круто!
Liv, огромное спасибо за помощь в освоении AVR
Пока что мой хронограф представляет собой кусок макетной платы с "месивом" из шлейфов, МК, индикатора и прочих навесных элементов. Остается довести все это дело до ума как в плане железа, так и в плане софта.
При считывании состояния оптических датчиков, столкнулся с проблемой - даже не подключенный вывод порта выдает 011100010110011101001... т.е. мигает с неясной частотой, меняющейся даже от движения рук вблизи МК. Чего это такое с ним происходит? (Питание брал от компьютера +5v)
Проблему решил подтягиванием вывода порта к земле через резистор 4,7 ком.
А как вообще правильно бороться с такой проблемой?
Отредактировано Xumuk (24.03.2007 20:30:23)
Вне форума
так и боротся. резисторами подтягивать (или конфигурировать как выход), выводы в воздухе ни в коем случае нельзя оставлять.
А происходит следующее, ловит наводки, так как очень высокое входное сопротивление (порядка 5 МОм).
Отредактировано Pyku_He_oTTyda (24.03.2007 20:56:39)
Андрей Смирнов
Вне форума
не подключенный вывод порта выдает 011100010110011101001... т.е. мигает с неясной частотой, меняющейся даже от движения рук вблизи МК. Чего это такое с ним происходит?
Скорее всего, Вы оставили висящим вход без подтягиващего резистора. Так поступать с любыми КМОП-входами нельзя. Или включите внутреннюю подтяжку записью единицы в соответствующий разряд регистра PORTx, или подключите внешний подтягивающий резистор.
Вне форума
[ Сгенерировано за 0.061 сек, 7 запросов выполнено - Использовано памяти: 601.78 Кбайт (Пик: 652.15 Кбайт) ]