Есть LPC2468. Есть нога на которую нужно выдать частоту порядка единиц мегагерц. Так вышло что на этой ноге есть функция PWM. Ну очередной аппгрейд догнал на неизменной плате.
Делаю так:
Код
PCONP_bit.PCPWM0 = 1;
PCLKSEL0_bit.PCLK_PWM0 = 1;// PCLK = CCLK
PINSEL7_bit.P3_19=2; //PWM0.4
PWM0TCR_bit.PWMEN = 0; // PWM Enable
PWM0TCR_bit.CE = 0; // Counter Enable
PWM0TCR_bit.CR = 1; // RESET timer PWM
PWM0CTCR_bit.CM = 0; // TC is incremented
PWM0MCR_bit.PWMMR4R=1; // PWMTC reset if PWMMR4 matches
PWM0PCR_bit.PWMENA4 = 1;
PWM0PR = 0;
TMP=6000;
PWM0MR4 = TMP;
PWM0TCR_bit.PWMEN = 1;
PWM0TCR_bit.CR = 0;
PWM0TCR_bit.CE = 1;
Но что то принцип понять не могу, как оно работает.
В начале цикла пин ставится в единицу, когда счетчик достигает значения МАТЧ регистра пин обнуляется и счетчик обнуляется?
Реально, при изменении TMP вижу что меняется длительность единицы, а длительность нуля остается неизменной.