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 (сопроцессор для работы с плавающей запятой), то генерируются обращения к нему. Если такого нету, то подключается библиотека, которая программно эмулирует плавающую запятую.
avatar
А что делает компилятор когда мы работаем с не целыми числами на МК? Как это реализовано?
avatar
Хм, буквально пару дней назад заказал у них. Прислали rev. B
avatar
Кстати да. ИМХО конечно, но TM'ки удобнее и логичнее, чем STM'ки.

знаком с stm32-discovery (Cortex-m3) и stellaris-launchpad(cortex-m4).
avatar
Можно купить
TM4C123G LaunchPad Evaluation: https://www.ti.com/tool/ek-tm4c123gxl всего 13$ с доставкой. Переферия не хуже чем в SMT32F407 да и ядро Cortex M4 и программатор на борту)
avatar
Собственно, у китайцев есть и фри шиппинг