سلام
تقریبا 8 ماهی میشه که سراغ arm نرفتم ، اما تا اونجا که یادمه :
شما باید برای pwm یک منبع کلاک مشخص کنید که نکردید ( هر چند در حالت پیش فرض بر روی mck تنظیمه )
اول باید pwm رو فعال کنید و بعد مقدار دهی رو انجام بدید ( ظاهرا شما اول مقدار دادید و بعد فعالش کردید )
رجیستر MDER رو هم باید مقدار دهی کنید .
ممکنه *AT91C_PWMC_CH1_CMR = 0x201; هم اشتباه باشه ، بهتره به جای قرار دادن عدد هگز در رجیستر از واژه های معادل اون که در فایل AT91SAM7X256.h وجود دارد استفاده کنید ، مثلا :
کد:
*AT91C_PWMC_CH1_CMR =0X00|AT91C_PWMC_CPOL; //Channel Pre-scaler=MCK & The output waveform starts at a low level.
*AT91C_PIOA_MDER= AT91C_PB20_PWM1 ;
و در نهایت برای مقدار دهی pwm یا باید مقدار ضریب وظیفه ( دیوتی سایکل ) رو مقدار دهی کنید یا مقدار زمان تناوب .
کد:
*AT91C_PWMC_CH0_CDTYR=x;