Определение частоты входного сигнала на Atmega168/328 с помощью таймера. Код скетча: drive.google.com/file/d/0B7Yh... Видео про простейший осциллограф на AVR: • Oled Oscilloscope Plus
Спасибо за наводку, до этих нюансов таймеров еще не дошел. Немного доработал проект, чтобы он подстраивал прескаллер под частоту. Работает с запозданием, конечно, особенно на 1024 делении, но зато измерения максимально точные. Ну и вывод на семисегментный индикатор сам напрашивается ;)
Привет! А по чему бы тебе не сделать осциллограф на серьезной платформе? К примеру на STM32 как ни как 72 мегагерца. С Arduino можно партировать на SMT32. Вернее STM32 можно интегрировать в IDE Arduino.
По моему можно считать импульсы на максимальной частоте таймера, а потом простыми расчетами привести накопленные данные к нужному окну. Например интервал 4 мс, импульсы идут редко, считаем не по одному интервалу, а сразу 25 например, 0, 0, 0, 1, 0, 0.. ... Итого 1 импульс за 100 мс, частота 2.5 Гц. Сразу широкий диапазон, от единиц Гц до максимально возможных 200 кГц. И количество импульсов при высокой частоте уже не ограниченно 65536, а больше будет (нужна 32-битная переменная), что повысит точность. Буквально одна строчка в программе и не нужно динамически переключать предделитель. Если перед микроконтроллером поставить предделитель исходного сигнала на какой-нибудь простейшей микросхеме, можно будет измерять до сотен МГц, до 200 точно.
можно настроить таймер0 на тактирование от внешнего источника а его шим выход пустить на вход захвата таймера 1 и допустим по замеренному времени от 256 импульсов поступивших на т0 высчитать их частоту, так получится намного точнее и подавать на вход можно сигналы до 16МГц
Прошу прощения за некропостинг: выше 200 кГц может не захватывать из-за включенного Noise Canseller
Спасибо за наводку, до этих нюансов таймеров еще не дошел. Немного доработал проект, чтобы он подстраивал прескаллер под частоту. Работает с запозданием, конечно, особенно на 1024 делении, но зато измерения максимально точные. Ну и вывод на семисегментный индикатор сам напрашивается ;)
Привет! А по чему бы тебе не сделать осциллограф на серьезной платформе? К примеру на STM32 как ни как 72 мегагерца. С Arduino можно партировать на SMT32. Вернее STM32 можно интегрировать в IDE Arduino.
По моему можно считать импульсы на максимальной частоте таймера, а потом простыми расчетами привести накопленные данные к нужному окну. Например интервал 4 мс, импульсы идут редко, считаем не по одному интервалу, а сразу 25 например, 0, 0, 0, 1, 0, 0.. ... Итого 1 импульс за 100 мс, частота 2.5 Гц. Сразу широкий диапазон, от единиц Гц до максимально возможных 200 кГц. И количество импульсов при высокой частоте уже не ограниченно 65536, а больше будет (нужна 32-битная переменная), что повысит точность.
Буквально одна строчка в программе и не нужно динамически переключать предделитель.
Если перед микроконтроллером поставить предделитель исходного сигнала на какой-нибудь простейшей микросхеме, можно будет измерять до сотен МГц, до 200 точно.
можно настроить таймер0 на тактирование от внешнего источника а его шим выход пустить на вход захвата таймера 1 и допустим по замеренному времени от 256 импульсов поступивших на т0 высчитать их частоту, так получится намного точнее и подавать на вход можно сигналы до 16МГц
Да ну нафиг, опять без ардуинщиков никого ? :)
Чето не то. У меня частотомер на attiny13 с внешним генератором на кварц 25мгц хорошо измеряет до 12мгц.Измените метод, влоб плохо.