示例#1
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);
}
示例#2
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);
}
示例#3
0
//----------------------------------------------------------------------------
// Функция настройки канала 0 PWM
//----------------------------------------------------------------------------
void AT91F_Set_PWM_Channel0(U16 PERIOD, U16 DUTY)
{
        //         - используется делитель A
	//         - CALG=0 выравнивание по левой границе
	//         - CPOL=1 старт с высокого уровня
 	AT91C_BASE_PWMC_CH0->PWMC_CMR = AT91C_PWMC_CPRE_MCKA | CPOL_ON | CALG_OFF ;

    //активизация заданных установок мгновенно
            AT91C_BASE_PWMC_CH0->PWMC_CPRDR = PERIOD; //период
	    AT91C_BASE_PWMC_CH0->PWMC_CDTYR = DUTY;   //рабочий цикл

    //запуск канала  0 PWM
        AT91F_PWMC_StartChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0);
}