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

В любом случае, отфильтровать глазами© у меня получается довольно быстро и дискомфорта не вызывает.
avatar
Желательно добавить ограничение диапазона ошибок результата. Например, здесь tqfp.org/calculatoria/lm317_current/?Vin=10&Vload_min=1&Iout_target=100mA&Series=E24%20%C2%B15%25 вываливает несколько десятков результатов, из которых только пара попадает в допуск 10%, зачем остальные — не понятно. Нужно поле «максимальное отклонение» и не выдавать результаты, которые ему не соответствуют.
avatar
Все ввелось, спасибо, я же для себя… Смотрел на вторую функцию примера и все не мог понять почему мой ответ не подходит
avatar
0.2

EXPLANATION
Answer 2^24 *12.5ns = 209,715,200ns = 0.2sec ± 10%

А что не позно сейчас вводить результат?
avatar
а мне подскажите quiz 10 второй вопрос, какое число должно быть…
avatar
Кто сделал 10ю лабу?
avatar
Все! нашел! Спасибо тебе СЕРЕГА!
avatar
BSVI! А куда подевались ранние курсы по альтиуму? то чет никак не найду :(
avatar
Опытным путем выяснил, что от того значения нужно отнять 3 такта. Так что остается 4 такта, при малом уровне оптимизации.
avatar
в Keil тоже при малом уровне оптимизации получается побольше трех команд
avatar
Такое бывает с любым поставщиком.
Нашей конторе фирма олчип вообще поддельные генераторы прислала. А сириус-телеком вместо нового паяльного оборудования поставила явно Б/У. Так что можно сказать, в вашем случае легко отделались.
З.Ы. У меня уже десятка полтора организаций, с которыми дела иметь нельзя ни в коем разе.
avatar
Спасибо, теперь ясно.
avatar
Вы забыли про GPIOA->BSRR. Для того, чтобы понять куда писать, нужно взять из таблицы констант адрес GPIOA->BSRR и сохранить его в регистр, потом записать GPIO_BSRR_BS6 во второй регистр, потом записать по адресу в первом регистре то, что во втором регистре.

Раз у вас 7 тактов, то, возможно, ваш компилятор вставляет что-то еще. К примеру, реально читает BSRR из GPIOA.

Вот дизассемблер:
avatar
Насколько я понял из даташита, такая запись должна выполнятся за 1 такт. 3 такта должно уходить на запись/сброс ODR? Что здесь не так?
avatar
Должно транслироваться в 3 команды — загрузить, изменить, сохранить. В итоге 3 такта + заполнение конвейера — 3 такта. В итоге, получается 6. Ну и один — погрешность измерений, похоже.
avatar
Ну, это не самая жестока ошибка, со всеми бывает. Даже digikey и тот периодически ошибается, правда потом бесплатно отправляет недостающее UPSом :)

А хамское отношение к покупателям — это фирменная фишка больших наших магазинов (тот-же космодром можно вспомнить). Вообщем, пока твой заказ не представляет существенную долю выручки магазина, о хорошем отношении можешь и не думать :)
avatar
Странно, но в Coocox операция
GPIOA->BSRR = GPIO_BSRR_BS6;
занимает 7 тактов. Не много ли?
avatar
Можно использовать любой таймер. Запустить до начала операции, остановить после и посмотреть что получилось в счетчике. Для точности, можно прогнать несколько циклов исследуемого кода между стартом и стопом.

Как ваирант, можно включать и выключать ножку и смотреть на осциллографе.
avatar
Это понятно. Хотел спросить насколько медленнее работает программная эмуляция, но передумал. Есть ли способ измерить сколько(в тактах) на STM32 уходит времени на выполнение команд? Пробовал способ, описанный тут, но результаты получаются странными.
avatar
Одно их двух. Если в контроллере есть FPU (сопроцессор для работы с плавающей запятой), то генерируются обращения к нему. Если такого нету, то подключается библиотека, которая программно эмулирует плавающую запятую.