Страница 3 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 21 по 30 из 77

Тема: Частотомер на МК

  1. #21
    Вот конструкция известного автора. Есть исходник, просмотрев который все станет ясно, как досчитывается прескалер и пр. и, все вопросы отпадут.
    http://msevm.com/2012/freq/index.htm
    А если что не ясно будет, тогда можно уточнить. А начинать на форуме с вопроса как извлечь цифру из прескалера.... то это до второго пришествия..


  2. #22
    1. 156 kHz - это совсем немного, и много меньше тактовой при практически произвольном выборе оной (аппаратное ограничение - частота на выходе прескалера должна быть меньше тактовой, поделенной на 4, т.е. даже при тактовой 1 MHz никаких проблем не будет) . Переполнения же будут происходить еще в 256 раз реже (чуть чаще 600 Hz). Ну и в чем же проблема ?

    2. Да, бит T0SE определяет активный фронт. Ну так и изменение состояния T0SE аналогично изменению состояния входа T0CKI согласно функциональной схеме модуля TMR0. Соответственно, манипуляцией хоть этим битом, хоть состоянием входной ноги, можно получить произвольное количество импульсов на входе прескалера. Неужели и дальше надо объяснять ?

  3. #23
    Аватар для RX3QRD
    Регистрация
    24.09.2009
    Адрес
    Воронеж
    Сообщений
    281
    Позывной
    ex RX3QRD
    Цитата Сообщение от rx3apf Посмотреть сообщение
    Ну так и изменение состояния T0SE аналогично изменению состояния входа T0CKI
    О как... Переключая этот бит в незамкнутом цикле с 0 на 1 и обратно мы получаем тот же эффект, что и подача импульса на ногу МК?.....Ну тогда все понятно.
    Цитата Сообщение от rx3apf Посмотреть сообщение
    Переполнения же будут происходить еще в 256 раз реже
    Точно! Забыл, что надо учитывать 256 в самом таймере и еще делитель 256. Итого получаем 65536.
    Последний раз редактировалось RX3QRD; 13.09.2017 в 00:16.

  4. #24
    Аватар для RX3QRD
    Регистрация
    24.09.2009
    Адрес
    Воронеж
    Сообщений
    281
    Позывной
    ex RX3QRD
    Может, кому-то будет интересно продвижение проекта... А профессионалов прошу не истерить по поводу примитивизма. Мы все начинаем с малого, не так ли?
    Итак, я решил, что проще будет, если число, соответствующее измеряемой частоте, будет изначально разбито на разряды:единицы,деся тки,сотни. В проекте всего 8 разрядов, но горячие головы могут и "увеличиться". Это позволит напрямую выводить числа на индикаторы. Единицы-на свой,десятки- на свой и т.д.
    Но для этого надо и соответствующим образом считать. Но и алгоритм должен быть как можно короче. Вот мой вариант (тестировал в Дельфи):
    for i:=1 to 8 do
    begin
    Cx[i,1]:=Cx[i,1]+Cx[i,2];
    if Cx[i,1]>9 then
    begin
    Cx[i+1,1]:=Cx[i+1,1]+1;
    Cx[i,1]:=Cx[i,1]-10;
    end;
    end;

    где
    Сх(i,j) - это массив чисел
    i - это разряды
    j - (1,2) это сами числа: 1 - число, которое считается, 2 - число, на которое идет увеличение. Оно может быть любым. Этот кусок можно оформить как процедуру и применять в любом вашем проекте. В том числе тогда, когда надо учесть промежуточную частоту, если частотомер используется как ЦШ. Только надо написать аналогичную процедуру вычитания.
    Ведь чем короче и быстрее счет, тем меньшее число можно закладывать в предделитель (или вообще от него отказаться!).
    Предупреждение: массив должен резервировать на один разряд больше, чем используете в программе. В данном примере это Сх(9,2)

  5. #25
    Не понимаю, к чему столь изощренные извращения ? Все делается просто до примитивизма - счет и вычисление в многоразрядной двоичной арифметике, результат преобразовывается в упакованный BCD, затем выводится на индикатор (с подавлением незначащих нулей и установки десятичной точки в нужную позицию). Не надо изобретать велосипед с треугольными колесами...

  6. #26
    Аватар для RX3QRD
    Регистрация
    24.09.2009
    Адрес
    Воронеж
    Сообщений
    281
    Позывной
    ex RX3QRD
    Я с описанной вами технологией не знаком, поэтому иду своим путем. Кстати, мой не хуже. Это те же Фаберже, только чуть иначе. Он уже преобразован. Его только останется перевести в семисегментный код.

    Добавлено через 33 минут(ы):

    Вот кусок программы, обеспечивающий вычитание
    for i:=1 to 8 do
    begin
    if Cx[i,1]<Cx[i,2] then
    begin
    Cx[i,1]:=Cx[i,1]+10;
    j:=i+1;
    x:
    if Cx[j,1]=0 then
    begin
    Cx[j,1]:=9;
    Inc(j);
    goto x;
    end
    else
    begin
    Cx[j,1]:=Cx[j,1]-1;
    end;
    end;
    Cx[i,1]:=Cx[i,1]-Cx[i,2];
    end;
    Последний раз редактировалось RX3QRD; 13.09.2017 в 21:28.

  7. #27
    Аватар для RX3QRD
    Регистрация
    24.09.2009
    Адрес
    Воронеж
    Сообщений
    281
    Позывной
    ex RX3QRD
    В сети лежат разные варианты частотомеров на 628 ПИКе: либо заводится входной сигнал на RA4,либо на RB6.
    Так все-же, куда рекомендуете? Логика подсказывает, что счетчик с бОльшим числом разрядом (а это вход RB6 и там 16 бит) рассчитан на более высокую входную частоту...

  8. #28
    Аватар для UN7GCE
    Регистрация
    18.01.2004
    Адрес
    АЛМА-АТА
    Сообщений
    1,690
    Записей в дневнике
    1
    Цитата Сообщение от RX3QRD Посмотреть сообщение
    В сети лежат разные варианты частотомеров на 628 ПИКе: либо заводится входной сигнал на RA4, либо на RB6.
    Выше я уже писал, что в 84 ПИКе нет команд управления 0 таймером. А 1 таймера там нет. Поэтому и изобретен гемор с пределителем и до счетом.
    Если используется серии ПИКов выше чем, 84, то счет можно делать непосредственно подавая исследуемую частоту на ногу RB6, где может быть задействован 1 таймер. При этом начало счета и останов производится программно. Поскольку 1 таймер двух байтный, это TMR1H и TMR1L, то в него можно записать максимум число FF FF. Что в переводе даёт число 65535. Поэтому производят его наращивание, до 3- 4- 5… и т.д. байт. Наращивание до 3 байта проводят через флаг переполнения таймера TMR1. Флаг называется TMR1IF и сидит он в регистре прерываний 1 таймера PIR1.
    Т.е. поднялся флаг TMR1IF, добавили единицу в третий регистр счетчика, сбросили флаг, счет продолжается. Опять поднялся флаг – процедура повторяется. И так можно забить в три байта уже число FF FF FF или 16777215 в десятичном формате. Если мало, то добавляем единицу в четвертый регистр через признак переполнения третьего регистра в регистре STATUS,C (флаг С) и так хоть до 10 регистров. Счёт закончился, остановили 1 таймер. Считываем число из TMR1H, TMR1L, + из регистра что добавили. И нет никаких до счётов и дёргания ног.
    Последний раз редактировалось UN7GCE; 14.09.2017 в 06:19.
    Евгений (since 1975 UL7RAW, 1977 UL7GCE, 1991 UN7GCE)

  9. Спасибо от RX3QRD

  10. #29
    Аватар для Tadas
    Регистрация
    12.06.2002
    Адрес
    KO24AV
    Сообщений
    2,170
    Позывной
    LY1CE
    UN7GCE,
    Цитата Сообщение от UN7GCE Посмотреть сообщение
    ... то счет можно делать непосредственно подавая исследуемую частоту на ногу RB6, где может быть задействован 1 таймер.
    А какая макс. частота счёта по этому входу ?
    Хороша теория, но что ты с ней будешь делать ?
    73 de LY1CE


  11. #30
    Аватар для alexis
    Регистрация
    11.09.2006
    Адрес
    УрФО
    Сообщений
    2,401
    Позывной
    ex RV9CAG
    Цитата Сообщение от UN7GCE Посмотреть сообщение
    Выше я уже писал, что в 84 ПИКе нет команд управления 0 таймером. А 1 таймера там нет. Поэтому и изобретен гемор с пределителем и до счетом.
    Да, но зато вход предделителя в 84 ПИКе более высокочастотный и работает без доп.делителя до 90 МГц.
    73! Alexis, ex RV9CAG

Страница 3 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Частотомер
    от 4L1FL в разделе Измерения
    Ответов: 30
    Последнее сообщение: 05.02.2017, 17:51
  2. частотомер Ч3-63
    от aleksandr130 в разделе Технический кабинет
    Ответов: 13
    Последнее сообщение: 21.02.2016, 16:40
  3. Частотомер
    от Yrec24 в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 97
    Последнее сообщение: 15.02.2011, 15:06
  4. Частотомер
    от UR5WPR в разделе Бытовая техника, мой автомобиль
    Ответов: 6
    Последнее сообщение: 09.12.2008, 21:59
  5. Частотомер ч3-38
    от rz3abk в разделе Антенны
    Ответов: 9
    Последнее сообщение: 06.03.2007, 20:59

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •