измерил на STM32F103 условия измерений:
SYSCLK = HCLK = PCLK2 = 72MHz
дискретность измерений - 5 нсек
while (1)
{
TEST0_GPIO->BRR = TEST0_PIN;
TEST0_GPIO->BSRR = TEST0_PIN;
}
0x0800032E 6148 STR r0,[r1,#0x14]
197: TEST0_GPIO->BSRR = TEST0_PIN;
0x08000330 6108 STR r0,[r1,#0x10]
194: while (1)
0x08000332 E7FC B 0x0800032E
измеренная частота = 8.000 МГц
измеренная длительность лог.0 - 40нсек, лог.1 - 85нсек
неравномерность визуально не замечена, имеется дрожание фронтов +/-5нсек, связанное с дискретностью измерений
можно сказать, что все три команды выполняются за 3 такта каждая
while (1)
{
TEST0_GPIO->BRR = TEST0_PIN;
TEST0_GPIO->BSRR = TEST0_PIN;
TEST0_GPIO->BRR = TEST0_PIN;
TEST0_GPIO->BSRR = TEST0_PIN;
TEST0_GPIO->BRR = TEST0_PIN;
TEST0_GPIO->BSRR = TEST0_PIN;
TEST0_GPIO->BRR = TEST0_PIN;
TEST0_GPIO->BSRR = TEST0_PIN;
}
0x0800032E 6148 STR r0,[r1,#0x14]
197: TEST0_GPIO->BSRR = TEST0_PIN;
0x08000330 6108 STR r0,[r1,#0x10]
198: TEST0_GPIO->BRR = TEST0_PIN;
0x08000332 6148 STR r0,[r1,#0x14]
199: TEST0_GPIO->BSRR = TEST0_PIN;
0x08000334 6108 STR r0,[r1,#0x10]
200: TEST0_GPIO->BRR = TEST0_PIN;
0x08000336 6148 STR r0,[r1,#0x14]
201: TEST0_GPIO->BSRR = TEST0_PIN;
0x08000338 6108 STR r0,[r1,#0x10]
202: TEST0_GPIO->BRR = TEST0_PIN;
0x0800033A 6148 STR r0,[r1,#0x14]
203: TEST0_GPIO->BSRR = TEST0_PIN;
0x0800033C 6108 STR r0,[r1,#0x10]
194: while (1)
0x0800033E E7F6 B 0x0800032E
вот здесь интереснее:
измеренная частота 14.400 МГц
последовательность показана на картинке (в масштабах 50нсек/дел и 20 нсек/дел)
и имеет такие длительности:
лог.1 - 25 нсек, лог.0 - 30 нсек,
лог.1 - 25 нсек, лог.0 - 30 нсек,
лог.1 - 25 нсек, лог.0 - 30 нсек,
лог.1 - 70 нсек, лог.0 - 40 нсек,
с учётом дискретности измерений (дрожание фронтов) +/-5нсек имеем:
лог.1 - 2 такта, лог.0 - 2 такта,
лог.1 - 2 такта, лог.0 - 2 такта,
лог.1 - 2 такта, лог.0 - 2 такта,
лог.1 - 5 тактов, лог.0 - 3 такта,
всего 20 тактов
Здесь получается что запись в порт выполняется за 2 такта, а переход и последующая запись - за 3 такта.
Так что указанные Вами 2 такта имеют место только в определённых условиях, реально время несколько больше
-
- Все верно, переход не учитывал, поскольку имел в виду собственно доступ к порту по шине. sbb(559 знак., 22.02.2010 15:25)