Пример #1
0
void Init_PWM(void)
{
  AT91F_PWMC_InterruptDisable(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
  AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
  AT91F_PWMC_CH0_CfgPIO();
  AT91F_PWMC_CfgPMC();    
  AT91F_PWMC_StopChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
  AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC, 0, 1 | AT91C_PWMC_CPOL, 100000, 66000);
  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_PA23_PWM0);
  AT91F_PWMC_StartChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
}
Пример #2
0
void setForce(int force)
{
    AT91F_PWMC_StopChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
    AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC, 0, 1 | AT91C_PWMC_CPOL, 100000, force);
    AT91F_PWMC_UpdateChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0, 0);
    AT91F_PWMC_StartChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID0);
}
Пример #3
0
//----------------------------------------------------------------------------
// Функция инициализации PWM
//----------------------------------------------------------------------------
void AT91F_PWM_Open(U8 SIGN_SINHR, U8 DIVIDER)
{
    //Разрешение выхода PWM в контроллере PIO (PA11, канал 0 PWM)
        AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA11_PWM0);

    //Разрешение синхронизации PWM
        AT91F_PWMC_CfgPMC ();

    //Остановка канала 0 PWM
        AT91F_PWMC_StopChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0);

    //Установки делителя A (выбор источника синхрочастоты и задание коэфф деления делителя)
        AT91C_BASE_PWMC->PWMC_MR = (( SIGN_SINHR << 8 ) | DIVIDER);
}