Свежие обсуждения
Микроконтроллеры

Частотомер на AVR

1 5 7

Пока пользовался CodeVisionAVR, у него есть стандарная библиотека. Мне не понравилось в ней то , что выбор выводов которые работают с LCD строго определен, поэтому использую следущую.

153044.lib

 

И хидер, в библиотеке нужно определить выводы к которым подключен LCD.
Забыл сказать, библиотека только для 4-х битного режима.

 

Блин забыл прицепить файл.

153046.h

 

Сенкс за библиотечку, бум пробывать.
А ваш проект справиться с таким заданием: необходимо измерить частоту входного сигнала в диапазоне 1000 - 3500 Гц как можно более точно, просто далее в программе необходимо умножить данную частоту на константу с точностью до десятитысячной?

 

Такую частоту он померяет, но про проблемы с точностью я писал немного выше. Побробуй написать сам, может удачней бедет.

 

To GM: Вы мне помогли и так много, за что большое спасибо, но хочу спросить Вас еще, я уже кажется спрашивал, но ни кто не ответил.
Так вот.
Со стабильностью измерений кажется разобраля, но вот точностьи не получается добится. Показания такие, как будто я меряю не методом захвата, а методом ворот: на секундном интервале получаю постоянно +/-1Гц. Как мне кажется, это из-за того, что число импульсов входной частоты тоже гуляет от -1 до +1 такта, хотя должно быть числом точным.
---------------------------------------------------------
Хочу спросить еще, вход в прерывание строго выполняется за определнное количство машинных циклов или тоже гуляет +/-1такт .

 

Если прерывание попадает на многотактную команду, скажем, 2-3-4 такта, то процессор ждёт завершения команды, и только потом разрешает работу прерывания. Так что, время от начала прерывания до реального выполнения тела процедуры может меняться от 0 до 3 тактов, при прочих равных условиях.

Максимальная погрешность для 1 МГц и МК с тактовой 20 МГц составляет +-0.05 Гц. Подчеркну, максимальная. К слову сказать, с помощью метода захвата можно делать 1000 независимых измерений в течение того же самого секундного окна, затем вычислять среднее, результат улучшится более, чем на 2 порядка. Не бойтесь выжимать точность из вашей сишной программы.

 

GM: Не бойтесь выжимать точность из вашей сишной программы.
Да я и не боюсь, наоборот очень хочу, но видемо знаний нехватает.

 

Немного изменил схему измерения, переписал код. Работать столо точнее, но все равно бывает плавает число М на +/-1, хотя не должно т.к. по идее это число импульсов входной частоты.
--------------------------------------------
Схема и код.

156797.c

 

Поразмыслив понял, что представленая схема с кодом работает не так как надо. Она не способна обеспечить точный подсчет числа импульсов входной частоты.