Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
MC56F8323 нужна помощь в конфигурации PWM (+)
Отправлено
Syuha 14 апреля 2008 г. 09:05
Уже неделю бьюсь,всю кровь он у меня выпил гад!Кто работал,подскажите что не так.
void init_pwm()
{
/* Enable clocking PWMA */
/* GPIOA2->PWM2,GPIOA3->PWM3 */
asm (bfset #$0001,X:SIM_PCE);
asm(bfclr #$0003,X:SIM_GPS);
/* Write-protectable registers may be written */
asm (bfclr #$0001,X:PWMA_CFG);
/* Refresh every PWM cycle,PWM_clock = FIPB/1 */
/* No interrupts */
asm (move.w #$0001,X:PWMA_CTRL);
/* No interrupts from FAULTn */
asm (move.w #$0055,X:PWMA_FCTRL);
/* PWMA0,PWMA1,PWMA2,PWMA3 are enabled */
asm (move.w #$8F0F,X:PWMA_OUT);
/* PWM_FR = 60MHz/(2*3000) = 10kHz */
asm (move.w #$0BB8,X:PWMA_CM);
/* Center Aligned PWM,independant work,proper polarity */
asm (move.w #$612E,X:PWMA_CFG);
/* Unmask all PWM */
asm (bfset #$8000,X:PWMA_CCR);
asm (move.w #$C000,X:PWMA_CCR);
asm (bfclr #$8000,X:PWMA_CCR);
renew_pwm(1500);
/* Write-protectable registers are write protected */
asm (bfset #$0001,X:PWMA_CFG);
}
void renew_pwm(unsigned int pwm_val)
{
asm (move.w pwm_val,X:PWMA_VAL1); /* PWMA1 -> HIN1 */
asm (move.w pwm_val,X:PWMA_VAL2); /* PWMA2 -> LIN2 */
pwm_val = pwm_val + 600; /* 5us delay */
asm (move.w pwm_val,X:PWMA_VAL0); /* PWMA0 -> HIN2 */
asm (move.w pwm_val,X:PWMA_VAL3); /* PWMA3 -> LIN1 */
asm (bfset #$0002,X:PWMA_CTRL); /* Enable writing to PWM_VAL */
}
Составить ответ | Вернуться на конференцию
Ответы
- (+) — TimAtTU (14.04.2008 14:00:57 91.151.248.128, 1903 байт)