flammmable 4 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба Добрый день. Если в качестве источника тактирования STM32F103 выбран внутренний высокоскоростной источник HSI (8 МГц), а все делители в древе тактирования установлены в единицу, то на какой частоте будет работать АЛУ? Я пишу прошивку для STM32F103 и некоторые её фрагменты необходимо выполнять за минимально возможное время. В ходе отладки я вывел на пин MCO тактирование HSI и обнаружил, что GPIO переключается то по переднему фронту HSI, то по заднему, то ровно посередине между фронтами. Такое ощущение, что АЛУ работает в 4 раза быстрее, чем HSI. Я попробовал вывести на MCO тактирование от SYSCLK (путём установки RCC_MCO1SOURCE_SYSCLK в функции HAL_RCC_MCOConfig), но линия MCO установилась в верхний уровень и не выдала ничего. Собственно, основной вопрос: на какой частоте будет работать АЛУ? И побочный - почему SYSCLK не выводится на MCO, хотя HSI - вполне выводится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба 1 hour ago, flammmable said: то на какой частоте будет работать АЛУ? На этот вопрос даёт ответ схема тактирования микроконтроллера. Она приводится в разделе Reset and Clock Control (RCC). Для каждой модификации микроконтроллера эта схема может отличаться даже внутри подсемейства, например для STM32F091 и STM32F051. Таже возле переключателей и мультиплексоров указаны биты регистров, отвечающих за конфигурацию. Всё это нужно собрать вместе, и это даст Вам ответ. Просто так ответить нельзя. 1 hour ago, flammmable said: АЛУ работает в 4 раза быстрее, чем HSI ФАПЧ? 1 hour ago, flammmable said: то на какой частоте будет работать АЛУ? HCLK 8 МГц, если всё так, как Вы говорите. Теперь смотрите по схеме, что у Вас там включено. 1 hour ago, flammmable said: Я попробовал вывести на MCO тактирование от SYSCL HSI частота должна появиться на MCO один к одному без деления. Это не забыли выполнить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 81 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба Внутренняя схема АЛУ подразумевает несколько активных фронтов одного тактового сигнала. Но в широком доступе этой схемы конечно же нету. Однако, сигналы на выходах синхронизируются по тактам шины ABP2 (в F103). Получившиеся же непонятки, вероятно, связаны с плохим качеством эксперимента. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 198 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба 2 часа назад, flammmable сказал: ощущение, что АЛУ работает в 4 раза быстрее Из определения архитектуры, безусловная команда выполняется за один такт, но не каждый тип памяти настолько быстрый, поэтому между ними и АЛУ вставлен конвейер, отсюда и разное время для одного и того же кода, а в целом это выглядит так: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 173 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба Начинать надо не с этого вопроса, а с ознакомления сообщества с тем, что явилось предпосылкой к нему... 2 часа назад, flammmable сказал: Я пишу прошивку для STM32F103 и некоторые её фрагменты необходимо выполнять за минимально возможное время. В ходе отладки я вывел на пин MCO тактирование HSI и обнаружил, что GPIO переключается то по переднему фронту HSI, то по заднему, то ровно посередине между фронтами. Сколько ж времени должно пройти, чтобы люди осознали, что измерения ногодрыгами GPIO на ARM это словно измерять радиус экватора резинкой от трусов 2 часа назад, flammmable сказал: Если в качестве источника тактирования STM32F103 выбран внутренний высокоскоростной источник HSI (8 МГц), а все делители в древе тактирования установлены в единицу, то на какой частоте будет работать АЛУ? На 8 МГц, разумеется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба 3 hours ago, flammmable said: Добрый день. Если в качестве источника тактирования STM32F103 выбран внутренний высокоскоростной источник HSI (8 МГц), а все делители в древе тактирования установлены в единицу, то на какой частоте будет работать АЛУ? Я пишу прошивку для STM32F103 и некоторые её фрагменты необходимо выполнять за минимально возможное время. В ходе отладки я вывел на пин MCO тактирование HSI и обнаружил, что GPIO переключается то по переднему фронту HSI, то по заднему, то ровно посередине между фронтами. Такое ощущение, что АЛУ работает в 4 раза быстрее, чем HSI. Я попробовал вывести на MCO тактирование от SYSCLK (путём установки RCC_MCO1SOURCE_SYSCLK в функции HAL_RCC_MCOConfig), но линия MCO установилась в верхний уровень и не выдала ничего. Собственно, основной вопрос: на какой частоте будет работать АЛУ? И побочный - почему SYSCLK не выводится на MCO, хотя HSI - вполне выводится. DWT и гугл в помощь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 2 октября, 2023 Опубликовано 2 октября, 2023 · Жалоба и по поводу смены состояния ножки. если оно делается HAL, то ничего нельзя сказать (там целая цепочка вызовов). если делается логической операцией с номером ножки и регистром ODR то это занимает порядка 5 ассемблерных команд , если регистром BSRR то 2 ассемблерных команды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 3 октября, 2023 Опубликовано 3 октября, 2023 · Жалоба 8 hours ago, Arlleex said: Сколько ж времени должно пройти, чтобы люди осознали, что измерения ногодрыгами GPIO на ARM это словно измерять радиус экватора резинкой от трусов Там же пин MCO Он аппаратно дёргается. 8 МГЦ - не такая большая частота, чтобы показать её. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 173 3 октября, 2023 Опубликовано 3 октября, 2023 · Жалоба 5 часов назад, haker_fox сказал: Там же пин MCO Он аппаратно дёргается. 8 МГЦ - не такая большая частота, чтобы показать её. Моя внутренняя ванга сообщает мне, что ТС вывел на MCO частоту (клоки) CPU, и относительно них смотрит на программно переключаемый GPIO (который не MCO) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 81 3 октября, 2023 Опубликовано 3 октября, 2023 · Жалоба Насколько я помню свои старые эксперименты, ногу можно переключить за 2 такта одной асмовой инструкцией str. Таким образом, самый быстрый ногодрыг вдвое медленнее системной частоты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 3 октября, 2023 Опубликовано 3 октября, 2023 · Жалоба Всем спасибо, но короче отбой. Я затупился и в сгенерённый Кубом код скопипастил инициализацию тактирования с включённым PLL. Когда я нашёл ошибку и переключился на чистый HSI всё заработало как надо - GPIO щёлкают исключительно по восходящему фронту HSI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 3 октября, 2023 Опубликовано 3 октября, 2023 · Жалоба 35 minutes ago, flammmable said: Я затупился и в сгенерённый Кубом код скопипастил инициализацию тактирования с включённым PLL. РРР! Я даже когда инициализирую регистры сам, а я делаю это всегда, иногда проверяю их содержимое хотя бы в отладчике... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться