мой английский не настолько хорош, но я понял, что читать можно только регистр:
During this time the device will ignore further instructions except for the Read Status Register
and Erase/Program Suspend instruction (see tW, tPP, tSE, tBE, and tCE in AC Characteristics).
BUSY — это бит только для чтения в регистре состояния (S0). Он устанавливается в 1, когда устройство выполняет одну из следующих операций: Page Program, Quad Page Program, Sector Erase, Block Erase, Chip Erase, Write Status Register или Erase/Program Security Register.
Пока выполняется одна из этих операций, устройство игнорирует все остальные команды, кроме Read Status Register и Erase/Program Suspend (см. времена tW, tPP, tSE, tBE и tCE в разделе AC Characteristics).
Когда операция программирования, стирания или записи регистра состояния/безопасности завершается, бит BUSY сбрасывается в 0, что означает, что устройство готово принимать новые команды.
я это понимаю в буквальном смысле, а что подразумевается в даташите у меня хрустального шара нет, но можно попробовать прочитать данные )
PS в смысле команда чтения это остальная команда или нет?
PPS если бы было остальные из перечисленного списка, то вопроса не возникало… с английским у меня очень плохо, соглашусь…
да, конечно.
При чем тут это?
Конечно следующая операция делается исключительно после окончания предыдущей.
Никто и не запускает чтение во время записи.
Не пойму что я делаю не так… “Не работает”…
“Включаю” привычный мне формат и ничего не происходит…
Почему? Раньше работало. Я что-то забыл/пропустил?
Ничего не понимаю…
Раньше (на старом ПК) работало общее форматирование по керниган/риччи, а сейчас только если я свой код пишу, при генерации изменений периферии - всё по старому… ((
Прошу уточнить - верно ли я рассуждаю?
ШИМ
Допустим я хочу иметь ШИМ с частотой 1кГц и управлять им с разрядностью в 10 бит. Тогда результирующая частота будет = 1кГц * 10бит = 1кГц * 1024 = 1.024МГц, то есть предделитель при тактовой частоте в 72МГц должен быть = 70,3125, но можно использовать только целые числа, поэтому предделитель = 70, счет будет = 1028.
Это верный расчет?
@xDriver , огромное спасибо!
Лучше взять предделитель 72, частота тиков будет ровно 1Мгц, а а результате получим классический Ардуиновский ШИМ частотой 976Гц
обновилась линейка продуктов от ST
Ты - маньяк! ![]()
Но в хорошем смысле этого слова и спасибо тебе огромное!!! ![]()
А они, продукты от ST, вроде как сами умеют обновляцца. Или я в очередной раз ересь нацарапал на камне?
в России, без спец средств, не умеют.
Средствами HAL минимальная задержка = 1 мс.
А как сделать микросекундные задержки, как тут?
Я думал свой Делей написать нужно, но… Что-то с расчетами у меня не так? 72МГц тактовой это равно 13.89 мкс за такт, правильно?
Чтобы перевести частоту из мегагерц (МГц) в микросекунды (мкс), используйте обратную зависимость: Период (в мкс) = 1000 / Частота (в МГц) , поскольку 1 МГц = 1 миллион герц (циклов в секунду), а микросекунда — миллионная доля секунды.
Ну и как же тогда 5мкс сделать?))
Тем более на авр тактовая ещё ниже…
Брехло эти ваши ии (нахрен его в поисковик встраивают?). 1 такт на 72МГц = 13.89 наносекунды (а не микро). Тогда delay на 5мкс будет если «крутануть» пустой цикл от 0 до 359 971. Так? Или как-то иначе можно?
В инете все есть, таймер есть, который на частоте мк работает
unsigned long micros(void) {
return (M7_DWT_CYCCNT / divMicros);
}
// https://stackoverflow.com/questions/36378280/stm32-how-to-enable-dwt-cycle-counter
void h743initDWTmicros(void) {
M7_DEMCR |= 0x01000000; // enable trace
M7_ETR_LAR = 0xC5ACCE55; // Enable write access
M7_DWT_CTRL |= DWT_CTRL_CYCCNTENA_Msk; // enable DWT cycle counter
M7_DWT_CYCCNT = 0;
divMicros = SystemCoreClock / 1000000UL;
}
void delay_us(unsigned long period_us) {
unsigned long startTimer = micros();
while ((micros() - startTimer) < period_us) {/*__NOP();*/};
}
ты же в ардуино пишешь, разве нет? delayMicroseconds() куда дел?
не-а
Во-первых с чего ты взял, что пустой цикл исполняется ровно один такт? - скорее всего больше
А во-вторых, если цикл и правда пустой, велика вероятность, что оптимизатор его просто выкинет.
Нет. В кубе. Вчера просто для теста кода ардуино иде запускал…
