اطلاعیه

Collapse
No announcement yet.

کمک در نوشتن برنامه

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

    کمک در نوشتن برنامه

    سلام . من برنامه ای با کدویژن میخوام که به ازای زاویه ی 10 تا 170 درجه ی سینوسی و 190 تا 350 درجه پالس داشته باشم.و فرکانس این پالس ها هم قابل تغییر باشه.چیکار باید بکنم؟
    ممنون میشم اگر سریع کمک کنید.خیلی گیرم :angry: :cry:

    #2
    پاسخ : کمک در نوشتن برنامه

    یه مقدار واضحتر سوالتو بپرسی شاید بشه کاری کرد

    دیدگاه


      #3
      پاسخ : کمک در نوشتن برنامه

      میخوام مثل این برنامه ای که اینجا هست باشد : در این برنامه نمونه های سینوسی رو دارم و دیوتی سایکل با اونها تغییر میکنه .من خودم فکر کردم به نظرم اومد که از مد phase correct استفاده کنم و مثه برنامه ی زیر جدول درجه ها یی رو که به ازای اون میخوام پالس داشته باشم رو هم به عنوان ocr بدم و بعد با تغییر icr1l فرکانسمو تغییر بدم.ولی جواب نداد :sad:
      در واقع میخوام در کل دوره ی یک سینوسی 2 پالس به جای این 255 پالس داشته باشم و فرکانس سینوسی ام هم تغییر بکنه . به زبانی میخوام spwm درست کنم.نمیدونم تونستم منظورمو برسونم؟؟؟
      #include <mega16.h>

      flash char sinewave[]={
      0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x03, 0x03,0x04,0x05,0x06,0x07,0x08,
      0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17, 0x19,0x1b,0x1d,0x1f,0x21,0x23,
      0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b, 0x3e,0x40,0x43,0x46,0x49,0x4c,
      0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a, 0x6d,0x70,0x73,0x76,0x79,0x7c,
      0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c, 0x9f,0xa2,0xa5,0xa8,0xab,0xae,
      0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9, 0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
      0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec, 0xed,0xef,0xf0,0xf2,0xf3,0xf5,
      0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe, 0xfe,0xff,0xff,0xff,0xff,0xff,
      0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc, 0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
      0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8, 0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
      0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4, 0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
      0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95, 0x92,0x8f,0x8c,0x89,0x86,0x83,
      0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63, 0x60,0x5d,0x5a,0x57,0x54,0x51,
      0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36, 0x33,0x31,0x2e,0x2c,0x2a,0x27,
      0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13, 0x12,0x10,0x0f,0x0d,0x0c,0x0a,
      0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01, 0x01,0x01,0x01,0x01,0x01,0x01
      };

      char i=0;

      interrupt [TIM1_COMPA] void timer1_compa_isr(void)
      {
      OCR1A=sinewave[i];
      i++;
      if(i==255)
      i=0;
      }

      void main(void) {

      DDRD=0xFF;

      // Timer/Counter 1 initialization
      // Clock source: System Clock
      // Clock value: 8000.000 kHz
      // Mode: Fast PWM top=00FFh
      // OC1A output: Non-Inv.
      // OC1B output: Discon.
      // Noise Canceler: Off
      // Input Capture on Falling Edge
      TCCR1A=0x81;
      TCCR1B=0x09;
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;

      // Timer(s)/Counter(s) Interrupt(s) initialization
      TIMSK=0x10;

      //enable global interrups
      #asm("sei"

      while (1);
      }

      دیدگاه


        #4
        پاسخ : کمک در نوشتن برنامه

        واقعا هیچکی نیس جواب سوال منو بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :angry: :cry:

        دیدگاه

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