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

Поиск:

Тип: Сообщения; Пользователь: Oleg 9

Страница 1 из 25 1 2 3 4

Поиск: На поиск затрачено 0.08 сек.

  1. Ответов
    713
    Просмотров
    163,125
    Не верный. там нет выравнивания до 16 бит. veso74 компилировал один и тот же код си. Из-за разной архитектуры, для PIC получилось 245 words, для ATTiny13A 192 байт вот и думайте что хотите, но не...
  2. Ответов
    713
    Просмотров
    163,125
    И то уже хорошо. Видимо действительно постарались над компилятором для ATtiny13A, он находит, что деление fvco / с уже выполнялось и не вставляет этот код повторно при вычислении %.
    Именно так. Всё...
  3. Ответов
    713
    Просмотров
    163,125
    Не ясно, как это понимать, одинаковый размер для обоих вариантов?

    uint32_t b = fvco - a * c;
    и
    uint32_t b = fvco % с;
  4. Ответов
    713
    Просмотров
    163,125
    veso74, занятно :smile: А попробуйте так ради интереса, по смыслу абсолютно тоже самое:

    void si5351_set_freq(uint32_t f) {
    uint32_t fvco = (FVCO_MAX / f) & 0xFFFFFFFE; // fvco = 600 ... 900 MHz...
  5. Ответов
    713
    Просмотров
    163,125
    fvco, a и FXTAL какие типы имеют? По одной строчке кода не поймёшь, в чём причина такой странности. По любой логике так быть не должно. У меня как не старайся, вычисление остатка от деления...
  6. Ответов
    713
    Просмотров
    163,125
    В PIC контроллере word это 14 бит, если правильно помню. У PIC размер Flash изначально указывается в words а не в байтах. Для Atmel, вследствие другой архитектуры, тот же исходник на си...
  7. Ответов
    713
    Просмотров
    163,125
    Есть функция, которая принимает в качестве аргументов номер регистра, значение регистра и засылает их непосредственно в I2C. Если её добавить в проект без обращения к ней и специального описания, то...
  8. Ответов
    713
    Просмотров
    163,125
    Драйвер I2C с однократным вызовом добавляет 40 words. Для малого размера кода надо брать дисплеи со встроенными шрифтами типа 1602. Его обслуживание занимает тоже совсем немного памяти. Графический...
  9. Ответов
    713
    Просмотров
    163,125
    Откуда ж я знаю. Вывод на дисплей сами писали или готовую библиотеку взяли?
  10. Ответов
    713
    Просмотров
    163,125
    Помнится кто-то хотел засунуть программу простого синтезатора на Si5351 в Tiny с 1 KB. Теперь может быть получится. Если ещё учитывать из #661, что P2 = b << 7;
  11. Ответов
    713
    Просмотров
    163,125
    Насколько компиляторы разные. У меня для PIC такая замена даёт выигрыш в 48 words. 237 против 285 ;-)
  12. Ответов
    713
    Просмотров
    163,125
    Вот уже лучше, а зачем заменили

    fr = 900000000 - XTAL_FREQ * mult;
    на
    fr = pllFreq % XTAL_FREQ;
    У меня такая замена увеличивает размер и время выполнения?
  13. Ответов
    713
    Просмотров
    163,125
    veso74, у вас символ не правильный в строке 21, там не восклицательный знак ! , а вертикальная черта |.
    Не правильно b != 1;
    Правильно: b |= 1;
  14. Ответов
    713
    Просмотров
    163,125
    Попробуйте у себя скомпилировать такой же код, как у меня, без Serial и micros. Интересно, что получится.

    #define XTAL_FREQ 25001866
    unsigned long frequency = 10987654, pllFreq, b = 0, fr; ...
  15. Ответов
    713
    Просмотров
    163,125
    Скомпилировал код из вашего файла для PIC контроллера. Размер на выходе 237 байт. Картинка ниже. Откуда в ардуинах накачиваются 2 с лишним килобайта неведомо.
    400485
  16. Ответов
    713
    Просмотров
    163,125
    Это всё так, но умение и привычка писать оптимальный код могут пригодится на любом контроллере, особенно если нужно отслеживать события близко к реальному времени. В нашем деле, применительно к...
  17. Ответов
    713
    Просмотров
    163,125
    Здесь нет никакого assembler-a, чистый классический си, плюс небольшое знание численных методов :smile:.
  18. Ответов
    713
    Просмотров
    163,125
    Так она и есть в герцах. Для вашего примера будет tcxo_F = 25001866;

    unsigned char i;
    unsigned long b, fr, tcxo_F;
    ......
    ......
    fr = 24000000;
    tcxo_F = 25001866;

    i=20;
  19. Ответов
    713
    Просмотров
    163,125
    veso74, не понял, к чему ваш пример. Если при частоте кварца 25000000 остаток от деления на целую часть 24000000, то оставаясь в 32 битной арифметике не получится 24000000 * 1048576, чтобы потом...
  20. Ответов
    713
    Просмотров
    163,125
    С любыми компиляторами умножение на 1048575 и умножение на 1048576 (сдвиг на 20 разрядов влево) это абсолютно разные операции. Первая дольше выполняется и занимает больше места, а также не...
Показано с 1 по 20 из 500
Страница 1 из 25 1 2 3 4