اطلاعیه

Collapse
No announcement yet.

تغییر فرکانس PWM در حین کار

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تغییر فرکانس PWM در حین کار

    سلام دوستان
    من یک برنامه نوشتم که توی اون ابتدا PWM با یک فرکانس کار می کنه و بعد از سه ثانیه باید فرکانسش عوض بشه . ولی این اتفاق رخ نمی ده به نظر شما مشکل کجاست :
    کد:
    /************************************************************************************
      Code created using the ARMwizard, visit http://alexan.edaboard.eu 
    ************************************************************************************/
    
    #include <LPC17xx.h>
    void delay (unsigned long tick) {    /* Delay Function           */
    unsigned long dly = tick*300;
    	while(dly--);
    }
    
    int main(void)
    {
    
    
      
    
      LPC_PINCON->PINSEL3 = 0x00000800;   /* binary: 00000000_00000000_00001000_00000000 */
      
    
    
      LPC_SC->PCONP = (LPC_SC->PCONP & 0xEFEFF7DE) | (1UL<<6);  /* Enable peripheral clock for PWM1 (default is enabled) */
    
      LPC_PWM1->MCR = 0x00000002;   /* binary: 00000000_00000000_00000000_00000011 */
      LPC_PWM1->MR0 = 0x0016E360;   /* decimal 1500000 */
      LPC_PWM1->MR3 = 0x000186A0;   /* decimal 100000 */
      LPC_PWM1->CTCR = 0x00;   /* binary: 00000000 */
      LPC_PWM1->PCR = 0x00000800;   /* binary: 00000000_00000000_00001000_00000000 */
      LPC_PWM1->TCR = 0x09;   /* binary: 00001001 */
    
      while(1)
     {
     delay(3000);
     LPC_PWM1->MR0 = 0x0007A120;
      }
    
    }
    انجمن LABVIEW
    http://www.eca.ir/forum2/index.php?board=279.0
    اموزش ميكروكنترلرهاي AVR به زبان ساده
    http://www.eca.ir/forum2/index.php/topic,7070.0.html

    #2
    پاسخ : تغییر فرکانس PWM در حین کار

    خوبه باز تا همینجا پیش رفتی
    من که به همینجا هم نرسیدم آخرش هم بی خیال شدم

    دیدگاه


      #3
      پاسخ : تغییر فرکانس PWM در حین کار

      سلام
      شما باید اول خروجی pwm را غیر فعال کنید بعد به رجیستر ها مقدار بدهید و بعد دوباره خروجی را فعال کنید.
      با cmsis به این شکل یه تابع نوشتم:
      کد:
      void MatchUP (unsigned int MatchCH,unsigned int Value,unsigned int Type){
      	
      if (Type == 1){
      	PWM_Cmd(LPC_PWM1,DISABLE);
      	PWM_MatchUpdate(LPC_PWM1,MatchCH,Value,PWM_MATCH_UPDATE_NOW);
      	PWM_Cmd(LPC_PWM1, ENABLE);}
      
      if (Type == 2){
      	PWM_Cmd(LPC_PWM1,DISABLE);
      	PWM_MatchUpdate(LPC_PWM1,MatchCH,Value,PWM_MATCH_UPDATE_NEXT_RST);
      	PWM_Cmd(LPC_PWM1, ENABLE);}
      }
      [glow=red,2,300]برنامه هاي آموزشي تست شده براي NXP LPC1768 با توابع CMSIS[/glow]
      http://www.eca.ir/forum2/index.php?topic=76623.0

      دیدگاه


        #4
        پاسخ : تغییر فرکانس PWM در حین کار

        سلام :smile:
        مشکل حل شد . برای تغییر فرکانس در حین کار باید TC ریست شود .(با تشکر از اقای زرکوب)
        یک مشکل دیگه هم ایجاد شده بود به این صورت که در حین کار میکرو دیتی سایکل تغییر میکرد ولی توی خروجی هیچ تغییر ایجاد نمیشد . رفتم دیتاشیت روخوندم دیدم باید بیت 1 مربوط به رجیستر LER رو ست کنم به صورت زیر :
        کد:
        LPC_PWM1->LER=1<<1;
        انجمن LABVIEW
        http://www.eca.ir/forum2/index.php?board=279.0
        اموزش ميكروكنترلرهاي AVR به زبان ساده
        http://www.eca.ir/forum2/index.php/topic,7070.0.html

        دیدگاه


          #5
          پاسخ : تغییر فرکانس PWM در حین کار

          نوشته اصلی توسط gbg
          خوبه باز تا همینجا پیش رفتی
          من که به همینجا هم نرسیدم آخرش هم بی خیال شدم
          مشکل کجاست . اگه بتونم راهنمایی می کنم
          انجمن LABVIEW
          http://www.eca.ir/forum2/index.php?board=279.0
          اموزش ميكروكنترلرهاي AVR به زبان ساده
          http://www.eca.ir/forum2/index.php/topic,7070.0.html

          دیدگاه


            #6
            پاسخ : تغییر فرکانس PWM در حین کار

            نوشته اصلی توسط nex2004
            مشکل کجاست . اگه بتونم راهنمایی می کنم
            می خوام با CMSIS قسمت PWM رو راه بندازم و روی پایه فرکانس مورد نظرم رو ایجاد کنم
            روی پایه P3.16
            ممنون

            دیدگاه

            لطفا صبر کنید...
            X