ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 5 از 5
  1. #1
    2014/10/30
    isf
    282
    56

    pwm با فرکانس های مختلف در lcp1768

    سلام خدمت همه دوستان!
    من با تابع زیر بخش pwm میکرو lpc1768 را راه انداختم!
    ولی الان یه مشکلی دارم و اونم اینه که فرکانس همه ی کانال های pwm با هم برابره و فقط میشه دیوتی سایکل را تغییر داد.
    من نیاز به چند فرکانس مختلف برای pwm دارم.
    به نظرتون راه حل مشکل چیه؟؟
    کد:
    void pwm1_init(int dt)
    {
     LPC_PINCON->PINSEL4 = (1<<0) | (1<<2) | (1<<4) | (1<<6); //1.2.3.4   
     LPC_PWM1->TCR = 0x01; 
     LPC_PWM1->MCR = 0x02; 
     LPC_PWM1->PCR =  (1<<11) ;
     LPC_PWM1->MR0 = 24000;
     LPC_PWM1->MR1 = dt;
     LPC_PWM1->MR2 = dt;
     LPC_PWM1->MR3 = dt;
     LPC_PWM1->MR4 = dt;
     LPC_PWM1->LER = (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4); 
     LPC_PWM1->PCR = (1<<9) | (1<<10) | (1<<11) | (1<<12);
    }
    یه سوال دگ هم داشتم! توی دیتاشیت lcp1768 گشتم ولی اصن یه خط کد هم ندیدم توی user manul هم چیزی نبود.
    می خوام بدونم این رجیستر ها و محاسباتشون دقیقا کجا نوشته شده؟
  2. #2
    2008/04/02
    43
    11

    پاسخ : pwm با فرکانس های مختلف در lcp1768

    سلام
    دیتا شیت بصورت کامل توضیح داده محاسبات رو دوست من
    در LPC_PWM1 شما شش تا کانال دارید که همه شون از MR0 فرکانس خودشون رو میگیرن
    وبقیه MR1..MR6 برای تعیین اندازه دیدتی سایکل هستند
    بنابراین حداقل برای یک سیکل فرکانس هر شش کانال یکی هستش
    و اگه نیاز دارید در حین کار فرکانس رو تغییر بدید اینتراپتش رو فعال کنید و بعد در اونجا بسته به شرایط برنامه تون مقدار فرکانس رو با MR0 تغییر بدید
    مطمنم این کدی که نوشتم میتونه کمکتون کنه
    [FONT=Yekan]void pwm1_init(void)[/FONT]
    {
    //--void PWMSingleEdgeInit(void)
    LPC_SC->PCONP |= (1 << 6); //PCPWM1 PWM1 power/clock control bit
    LPC_SC->PCLKSEL0 |= ((1<<13) | (1<<12));//CCLK/8, bits 13:12 PCLK_PWM1 Peripheral clock selection for PWM1
    //-- 5:4 P1.18 GPIO Port 1.18 USB_UP_LED PWM1.1 CAP1.0 00
    LPC_PINCON->PINSEL3 |= (1<<5);//-- Red LED on header board p1.18
    LPC_PINCON->PINSEL3 &= ~(1<<4);
    //--
    // LPC_PINCON->PINMODE3 &= ~((1<<5) | (1<<4)); //-- page 123
    //--
    LPC_PWM1->MR0 = (unsigned int)((SystemCoreClock/8*0.618)-1);// PERIOD
    LPC_PWM1->MR1 = (unsigned int)((SystemCoreClock/8*0.600)-1); // On time
    //--
    //PWM Control Register. Enables PWM outputs and selects PWM channel
    LPC_PWM1->PCR |= (1<<9);// bite [14..9] The PWM6..PWM1 output enabled.
    //--
    //PWM Latch Enable Register
    LPC_PWM1->LER |= ((1<<1) | (1<<0)); // (1<<0) better is removed Match0
    //--
    //PWM Match Control Register
    // 1 : Reset on PWMMR0: the PWMTC will be reset if PWMMR0 matches it.
    // 0 : Interrupt on PWMMR0: an interrupt is generated when PWMMR0 matches the value in the PWMTC.
    LPC_PWM1->MCR |= ((1<<1)|(1<<0));
    //--
    //PWM Timer Control Register
    LPC_PWM1->TCR |= ((1<<3) | (1<<0));//-- PWM Enable
    //--
    NVIC_EnableIRQ(PWM1_IRQn);//
    //--
    return;
    [FONT=Yekan]}[/FONT]





    [FONT=Yekan]/**********************************************************************/[/FONT]

    void PWM1_IRQHandler(void)
    {
    //--
    LPC_PWM1->IR |= (1u<<0); // Reset the MR0 Interrupt;
    // LPC_PWM1->LER |= ((1<<1) | (1<<0)); // (1<<0) better is removed Match0
    // LPC_PWM1->MR0 = (SystemCoreClock/8*2)-1;// PERIOD = 2 sec
    // LPC_PWM1->MR1 = (SystemCoreClock/8*1)-1; // 1 sec on "Period = 1 secend"
    LPC_WDT->WDFEED = 0xAA; // feed sequence.
    LPC_WDT->WDFEED = 0x55;
    //--
    return;
    }
    [LEFT][FONT=Yekan]/**********************************************************************/[/FONT][/LEFT]

  3. #3
    2014/10/30
    isf
    282
    56

    پاسخ : pwm با فرکانس های مختلف در lcp1768

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

    یک سوال؟
    من دیوتی سایکل را از طریق usart تغییر میدم و برحسب درصد یک عددی را واسه میکرو میفرستم ولی توی درصد های پایین مثلا وقتی 40 در صد به پایین را میفرستم میکرو هنگ میکنه.
    گاهی اوقاتم اینطور نیست.
    ممنون میشم اگه راهنماییم کنید
  4. #4
    2008/04/02
    43
    11

    پاسخ : pwm با فرکانس های مختلف در lcp1768

    دوست من سلام
    کم و زیاد کردن دیوتی سایل هرگز نمیتونه باعث هنگ کردن میکرو بشه
    مشکل رو در جای دیگه جستجو کنید
    پاک نکردن فلگ مربوط به اینتراپت های فعال شده پس از اجرای روتین وقفه - میتونه یکی از دلایل مشکل شما باشه
  5. #5
    2014/10/30
    isf
    282
    56

    پاسخ : pwm با فرکانس های مختلف در lcp1768

    نقل قول نوشته اصلی توسط kazem1010

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    دوست من سلام
    کم و زیاد کردن دیوتی سایل هرگز نمیتونه باعث هنگ کردن میکرو بشه
    مشکل رو در جای دیگه جستجو کنید
    پاک نکردن فلگ مربوط به اینتراپت های فعال شده پس از اجرای روتین وقفه - میتونه یکی از دلایل مشکل شما باشه
    شما درست میگید.
    چون خودم هم با تایمر ها یک pwm شبیه سازی کردم ولی بازم این مشکلو توی ارسال مقدار از خط سریال به میکرو داشتم.
    من برای دریافت اطلاعات از وقفه استفاده نکردم.
نمایش نتایج: از 1 به 5 از 5

موضوعات مشابه

  1. پاسخ: 1
    آخرين نوشته: 2016/01/08, 23:42
  2. پاسخ: 24
    آخرين نوشته: 2015/11/04, 01:39
  3. ايجاد دو موج با فرکانس مختلف
    توسط pesson در انجمن Orcad-Pspice
    پاسخ: 3
    آخرين نوشته: 2015/02/12, 11:34
  4. اندازه گیری سه تا فرکانس مختلف با مگا 8
    توسط زوار در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2011/09/11, 03:04
  5. تفکیک فرکانس دو صدای مختلف محیط با avr توسط یک میکروفن
    توسط mjs1990s در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2010/02/08, 10:54

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •