Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 8 из 8 ПерваяПервая ... 5678
Показано с 71 по 76 из 76

Тема: Микроконтроллеры PIC

  1. #71

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    664
    Позывной
    LZ2WSG
    Более подходящей темы не нашел. И разбудим тему:

    Подходящий метод для масштабирования дроби?

    У нас есть дробь: a/b
    uint32_t a, uint32_t b
    Есть условие, напр. b <= 0xFFFFF. нужно уменьшить знаменатель.

    С калкуляторе: a/b = ((a * 1048575) / b) / 1048575

    На компиляторе с uint64_t все как на листе с карандашом (Arduino IDE -> Arduino, AVR через Arduino IDE и др.). Но при компилятор без uint64_t (PIC CCS для выбранного микроконтроллера) нахожу трудности.
    Вынужден либо считать с меньшими числами (/10 /100 /1000 ...) (шаг будет не самый маленький из возможных). Либо знаменатель и числитель напр /2, пока знаменатель не подходит. И следствие: потеря разрешения (напр. 1 Hz) или потеря точности.

    Или иногда использую float. Опять же с некоторой точностью более-менее одинакова (6-7 знаков после запятой?). А не хочу - значительно увеличивает использование памяти и снижает скорость.

    Код:
        if (b > 1048575) {  // if b is too large -> data scaling
          uint64_t a64 = a;
          a64 = a64 * 1048575 / b;
          a = (uint32_t)a64;
          b = 1048575;
        }
    Код:
      while (b > 0xFFFFF) {  // if b is too large
        а >>= 1;
        b >>= 1;
      }
    Любой другой простой, более точный способ? Цифры большие. Не могу их уменьшить. (Si5351, AD4351 ... )
    --- --- ---
    Пример:
    a = 843 429;
    b = 2 438 152;
    ---
    max b = 1 048 575
    --- --- ---
    метод 1: a / b = 843 429 / 2 438 152 = (843 429 * 1 048 575) / (2 438 152 * 1 048 575) = 362 733 / 1 048 575 = 0,345929475 ...
    метод 2: a / b = 843 429 / 2 438 152 = 421 714 / 1 219 049 = 210 857 / 609 538 = 0,345929211 ...

    A так как у нас шаг 1 или 10 герц на VHF, то по второму способу вижу как шаг неровный и прыгает.
    (Не то чтобы кварцевый резонатор и его температурный коэффициент не портят счет ...).

    Вопрос принципиальный.
    Последний раз редактировалось veso74; 25.06.2022 в 17:13.


  2. #72
    Вы от чего (и на чем) пытаетесь точность в 1...10Гц добиться? На VHF...
    Блог - r0aek.me, Телеграм канал - t.me/r0aek_me

  3. #73

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    664
    Позывной
    LZ2WSG
    Мой вопрос скорее принципиальный, математический.

    Но ответ о чипах: да. Как начало: Fопора из GPS модулья к точного калибровочного генератора на Si.
    Последний раз редактировалось veso74; 25.06.2022 в 17:18.

  4. #74
    Цитата Сообщение от veso74 Посмотреть сообщение
    Но ответ о чипах: да.
    На любом из двух выше озвученных, НО, при стабильной опоре....

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

    Цитата Сообщение от veso74 Посмотреть сообщение
    Fопора из GPS модулья к точного калибровочного генератора на Si
    Если получится, хотя верный шаг, поделитесь
    Последний раз редактировалось R0AEK; 25.06.2022 в 17:35.
    Блог - r0aek.me, Телеграм канал - t.me/r0aek_me

  5. #75

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    664
    Позывной
    LZ2WSG
    Цитата Сообщение от R0AEK Посмотреть сообщение
    ... Если получится, хотя верный шаг, поделитесь
    Etherkit Si5351 библиотека работает оч. хорошо. Шаг 0,01 Hz, uint64_t и часто пользуюсь. Все выхода управляется, все функции доступны, даже с внешними пользовательскими данными.
    Но есть "цена": код занимает много памяти и для малоресурсных микроконтроллеров не вариант.

  6. #76

    Регистрация
    14.05.2020
    Адрес
    Санкт-Петербург
    Сообщений
    1,305
    Цитата Сообщение от veso74 Посмотреть сообщение
    Etherkit Si5351 библиотека
    В какой среде работаете? Мне для microC for PIC Pro тоже нужна мудрёная математика (нахождение производной, и тому подобное). Что посоветуете?
    Исполняться код будет в PIC16F18877.
    Пытаюсь построить "Радио-76М2" на двухзатворных FET.

Страница 8 из 8 ПерваяПервая ... 5678

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

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

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

Похожие темы

  1. Микроконтроллеры AVR
    от Serg_PRQ в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 1367
    Последнее сообщение: 04.07.2022, 20:56
  2. СОМ порт и микроконтроллеры
    от alex74 в разделе Технический кабинет
    Ответов: 1
    Последнее сообщение: 31.03.2008, 11:04

Ваши права

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