Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 11:25:03

Martian, и с функция PPS (Peripheral Pin Select) рабочий метод получился :).
Mощная функция! Что ж, заимствую еще один вывод :). Только идея важна в случае :beer:.
timer0 на PIN_A2, считаем, изм период заканчивается, PPS, timer0 на PIN_C3, CLC LC1POL в 0/1 и получили досчета.
А меньшим делителем, даже не мерцает +/-. И вижу температурьные изменения генераторов ... :)
Код:
#bit LC1POL = 0xF11.7
...
void main() {
  LC1POL = 1;

  setup_clc1(CLC_ENABLED | CLC_OUTPUT_INVERTED);
  ...
  while (TRUE) {
    t0_pre = 256;

    uint8_t tmp = get_timer0();

    pin_select("T0CKI", PIN_C3);

    while (tmp == get_timer0()) {
      LC1POL = 0;
      output_bit(PIN_C3, LC1OUT);

      LC1POL = 1;
      output_bit(PIN_C3, LC1OUT);

      t0_pre--;
    }

    pin_select("T0CKI", PIN_A2);

    freq = ((uint32_t)t0_hi * 256 + (uint32_t)t0_lo) * 256 + (uint32_t)t0_pre;  // prescaler = 256

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 11:36:49

меня только смущает умножение на 256 - я бы сделал сдвиг влево на 8

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 11:46:50

Компилятор оптимизирует :). Со << память больше. Я пробовал некоторое время назад на маленьких PICах. Даже не пытаюсь писать "коротко и правильнее, ближе к машине" :). А и чип: "большой".

PIC16F18326, MAX7219 8x LED дисплей (для теста).
Код:
* 256 в двух местах: ROM used: 943/16384 (6%), RAM used: 29/2048 (1%) at main() level, 85/2048 (4%) worst case
<< 8 в двух местах: ROM used: 959/16384 (6%), RAM used: 31/2048 (2%) at main() level, 85/2048 (4%) worst case

Даже есть функция x =_mul(val1, val2);
Код:
Performs an optimized multiplication. By accepting a different type than it returns, this function avoids the overhead of converting the parameters to a larger type.

Если бы это было только так: "калибрую" простым умножением с число плавающей запятой (не анализируя время задержки пока). Позже вероятно будет иначе, но и та работает :)) .

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 16:08:26

Я немного не понял, что это было? Досчет делителя без подачи импульсов на вход предделителя счетчика извне? Периодическим переключением состояния како-то периферии?

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 16:11:01

да, именно так. экономия ножки корпуса

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 17:47:59

Понятно. Меня тоже напрягала необходимость дергать одной ногой за другую. veso74 нашел красивое решение.

Re: AN592 Frequency Counter есть вопрос

Вс авг 21, 2022 18:20:08

Скорее просмотр из любопытства :) (см. первые сообщения). сообщ.
До сих пор к старым чипам использовал T0SE (TMR0SE) во многих конструкциях снова без использования какого-либо другого вывода для досчета (tnx botchin). В новом: напр. PIC16F18326, нет T0SE (TMR0SE), а ставили мультиплексор (с некоторыми минусами как видели, для нашего пользования в честотмере).

Re: AN592 Frequency Counter есть вопрос

Пт янв 20, 2023 15:29:05

Метод досчета немножко устарел, потому что на низких частотах дает большую погрешность измерения. Сейчас применяется метод обратного счета, который обеспечивает погрешность измерения на частоте 1Гц порядка 0,0001%.

Re: AN592 Frequency Counter есть вопрос

Пт янв 20, 2023 15:31:42

Привестите пример, пожалуйста. Если можно: ваш пример с кодом PIC-a на C.

Re: AN592 Frequency Counter есть вопрос

Пт янв 20, 2023 15:35:36

Журнал "Радио" №12 за 2021 год - частотомер на PIC18F252.
Ответить