писал именно
buff = GPIOA->IDR;
i++;
в случае buff[i++] команды асм могут быть другие
18 тактов - это максимум, может быть и 9 или нечто среднее, а если индексирование относительно SP, даже одного сложения хватит и добавится всего 1-2 такта, но это скорее всего нужно самому на ассме писать... А у тебя еще и внешний генератор, по нормальному нужно генерить тестовый сигнал тем же мк, которым захватываешь. Недавно меня в одной из тем пытались убедить, что кварц на 16MHz работает нормально если тактироваться от него напрямую, но если затактировать от него PLL, то частота кварца становится 4MHz. Стали разбираться и оказалось, что PLL тактируется от HSI/2На видео я меняю частоту и скважность, можете сравнить рисунок из 10 периодов при частоте 500кГц.Я с вами не спорю, еще раз говорю, я для себя выяснил - на F030 захват и сохранение происходит за 4 такта, линейность захвата проверял на пилообразном сигнале. Меня это устроило.
Задержка в 18 тактов в моем случае 0,28 мксек на фоне периода сигнала в 2 мксек была бы заметна (14% периода).
Тот товарищ меня убеждал, что дело точно в кварце, потому что сейчас у него частота делится на 4 на одной серии STM32, несколько лет назад такое было на другой и в добавок на STM8 та же картинаУверяю что с частотой все было в порядке, до сих пор настройка тактирования переходит из проекта в проект.
Ладно, наверно я сильно многого хочу, в конце концов не каждый готов выделить 5 мин своего времени чтобы замерять время выполнения тестового примера, тем более если он это делал раньше и уверен, что все работало как положеноПробовал подавать сигнал с собственного таймера F030. Тогда картинка вобще стоит ровно, не колышется. От внешнего генератора есть определенные искажения, их видно.
Код: Выделить всё
const uint32_t idr = (uint32_t)&GPIOB->IDR;
asm("PUSH {R0, R1, R2}");
asm("MOV R2, %0" : : "r" (arr));
asm("MOVW R1, %0" : : "n" (idr & 0xFFFF));
asm("MOVT R1, %0" : : "n" (idr >> 16));
asm("LDRB R0, [R1]");
asm("STRB R0, [R2], #1");
....
asm("POP {R0, R1, R2}");Разгоняют иногда для увеличения частоты тактирования периферии. Например нужен 16-ти битный ШИМ и чтобы повысить его частоту, нужно разогнать МК.protoder писал(а):А есть смысл в разгоне, если пропорционально латентность увеличивается?
64 ГБ QUAD SPI FLASH?Sergi писал(а):В современных дешевых телефонах очень часто стоит связка QUAD SPI FLASH и CPU