Здравствуйте.
Возникла необходимость использования PWM на микроконтроллере SAM7S512.
Использую следующий код для инициализации:
void Init_PWM(void)
{
AT91F_PWMC_InterruptDisable(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
AT91F_PWMC_CfgPMC ();
AT91F_PWMC_StopChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC, 0, 1 | AT91C_PWMC_CPOL, 8000, 4000);
AT91F_PWMC_UpdateChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0, 0);
AT91F_PWMC_StopChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA11_PWM0);
AT91F_PWMC_StartChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
}
PWM запускается и работает (на осциллографе хороший меандр)...
Но почему то резко падает производительность микроконтроллера (причем как при работе PWM на 100 кГц, так и на 3 кГц).
Собственно вопрос и заключается в том, на сколько при использовании PWM упадет общая производительность микроконтроллера и может есть какая либо особенность его использования.
Кроме PWM используются прерывания от TC1 (10 кГц), TC2 (80 кГц), DBGU, IRQ0, SPI.
Спасибо.