ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
69678 Топик полностью
smartleds (21.09.2006 13:55, просмотров: 1) ответил 0men на Думаю IODIR трогать не надо, а PINSEL правильно установлен?
Вот я тут написал как я это понимаю и установки привел, мысли кончились. PWM у меня на пине p0.21 ШИМ (PWM5) Идея такая в регистр сравнения PWMMR0 записывается значение устанавливающее период ШИМ, у меня это значение 16-ти разрядное и равно 65530. И конфигурируется PWM Match Control Register так чтобы при достижении этого значение счетчиком он обнулялся в позиции номер 3 это сделано. В регистр PWMMR5 записывается текущие значение ШИМ у меня оно в цикле while постепенно изменяется от 0 до 65530 При начале периода выход P0.21 должен быть "1", после того как значение таймера достигнет значения в регистре PWMMR5 ,P0.21 обнулится до конца периода. Еще момент после того как записывается значение а регистр сравнения PWMMR5 нужно, устанровить бить PWMLER_bit.EM5L = 1 для того чтобы это значение переписалось в теневой регистр откуда происходит сравнение со значение счетчика. Может я что-то недопонял? Вот как я конфигурировал PWM 1).//----------- PWM Inicialization ---------------- PINSEL1_bit.P0_21 = 1; // Конфигурирую пин P0.21 на работу в режиме ШИМ (PWM5) 2).//--------- PWM Control Register ------------- PWMPCR_bit.SEL5 = 0; //ШИМ работает по одному перепаду PWMPCR_bit.ENA5 = 1; //PWM5 output enable 3).//--------- PWM Match Control Register ------- PWMMCR_bit.MR0RES = 1; // Обнуляю регистр сравнения PWMMMR0 когда таймер досчитает до 65530 4).//--------- ШИМ регистры сравнения -------------- PWMMR0 = 65530 ; // ШИМ зарядил на 16 разрядов PWMMR5=0; // В этот регистр сравнения пока ноль 5).//--------- PWM Latch Enable Register ------- PWMLER_bit.EM0L =1; //Переписываю из регистра сравнения PWM0 в теневой регистр сравнения из которого собственно и производится сравнение со значением счетчика PWMLER_bit.EM5L =1; // Тоже только для регистра 5 6).//--------- PWM Prescaller Register -------- PWMPR = 0x00000001;// Setup PWM Prescaller Register 7).//-------- PWM Timer Control Register -------- PWMTCR_bit.CR = 1; // Counter Reset PWMTCR_bit.CE = 1; // Counter Enable PWMTCR_bit.PWMEN = 1; // PWM Enable //======= WORK part program ======== while(1) { for (i=0;i<65530;i++) { PWMMR5 = i; PWMLER_bit.EM5L = 1; //Latch Enable registr for PWM5 for (j=0;j<5000;j++) b=1; // типа задержка } }