|
|
|
|
Надо мерять длительность паузы между импульсами ( от спада до фронта,где-то 50-100 кГц) на АВР. Что лучше, использовать таймер с захватом или программно обнюхивать компаратор? Далее надо будет выдать импульс на ногу некой длительности , в зависимости от намерянного.(здесь просится таймер.) Это единственная задача для МК.
|
|
|
С таймером дискретность измерения будет равна периоду тактовой частоты. С программным обнюхиванием (хороший термин ) в несколько раз больше.
|
|
|
Tadas: дискретность измерения будет равна периоду тактовой частоты. А в некоторых есть ПЛЛ и 64 мГц, правда не знаю , есть ли там захват. И этот захват , он аппаратно закачивается , а начинать его надо программно, или тоже можно аппаратно, по входному сигналу?
|
|
|
Alexey: Что лучше, использовать таймер с захватом или программно обнюхивать компаратор? +1 за аппаратное решение. Я его пока не использовал, но по моему он "взводится" программно, затем по одному фронту запускается таймер, а по второму останавливается. Затем Вы программно считываете значение таймера и взводите. Можно включить прерывание по завершению. |
|
|
Сергей К: затем по одному фронту запускается таймер, а по второму останавливается. Помоему, он запускается программно , по фронту , спаду, обоим -фиксируется , и можно прерывание. Такшта программный геморой остается. |
|
|
Не совсем корректно использовать термин "захват заканчивается". Правильнее сказать: захват происходит при возникновении события. Можно задавать от какого фронта будет происходить захват. В рассматриваемом случае возможны два события - пришёл падающий фронт, пришёл нарастающий фронт. Навскидку делается так: Надо сконфигурировать таймер на прерывание от захвата, задать захват от падающего фронта. В обработчике прерывания переключить на захват от нарастающего фронта и запомнить захваченное значение таймера (Т1). При следующем прерывании зафиксировать захваченное значение (Т2) и выключить прерывание от захвата. Вычислить длительность паузы Т2-Т1. Выдать импульс по результату вычисления и повторить все сначала. |
|
|
Tadas: Навскидку делается так: Вычислить длительность паузы Т2-Т1. Вот-вот, я и говорю -геморойно. |
|
|
Что, вычесть одно число из другого геморойно ?
|
|
|
Ничего сложного. Все замеры выполняются по прерыванию. В основной программе просто забираем результат. Но это все дело привычки. Раньше я тоже прерывания обходил стороной и измерение времени между срабатываниями компаратора делал в основной программе. Плюс аппаратного способа в том, что значение таймера "защелкивается" в момент изменения фронта. Если делать это вручную или по прерыванию от ножки считывать значение таймера, то мы теряем несколько тактов таймера (на Си это может быть и десяток-другой, в зависимости от того насколько быстро получится считать значение таймера) |
|
|
Сергей К: Раньше я тоже прерывания обходил стороной Да не боюсь я их. Наоборот , все время использую. Tadas: Что, вычесть одно число из другого геморойно ? Вся эта возня. Плюс время на вход в прерывание. Еще минус , что программно можно контролировать возможные помехи : слишком малую длительность, например. Короче, для меня не все так однозначно. Сергей К: на Си это может быть и десяток-другой Си бывают разные. Но буду на Асм , все просто. |
|
|
|
|