اطلاعیه

Collapse
No announcement yet.

تبدیل کد یک برنامه به زبان C به بیسکام

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

    #16
    پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

    نوشته اصلی توسط mehdi_nxp
    سلام.
    برنامه ای که گذاشتید یه مقداری ناقصه.البته نه خیلی.
    من AVR رو با C کار نکردم.
    ولی اصلاح شده کد C رو قرار میدم شاید دوستان دیگه بتونن پاسخ بدن.
    کد PHP:
    #include <stdlib.h>
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    #include <avr/sleep.h>
    #include <math.h>
    #include <stdio.h>


    unsigned char wave[]{
    0x800x830x860x890x8C0x900x930x96,
    0x990x9C0x9F0xA20xA50xA80xAB0xAE,
    0xB10xB30xB60xB90xBC0xBF0xC10xC4,
    0xC70xC90xCC0xCE0xD10xD30xD50xD8,
    0xDA0xDC0xDE0xE00xE20xE40xE60xE8,
    0xEA0xEB0xED0xEF0xF00xF10xF30xF4,
    0xF50xF60xF80xF90xFA0xFA0xFB0xFC,
    0xFD0xFD0xFE0xFE0xFE0xFF0xFF0xFF,
    0xFF0xFF0xFF0xFF0xFE0xFE0xFE0xFD,
    0xFD0xFC0xFB0xFA0xFA0xF90xF80xF6,
    0xF50xF40xF30xF10xF00xEF0xED0xEB,
    0xEA0xE80xE60xE40xE20xE00xDE0xDC,
    0xDA0xD80xD50xD30xD10xCE0xCC0xC9,
    0xC70xC40xC10xBF0xBC0xB90xB60xB3,
    0xB10xAE0xAB0xA80xA50xA20x9F0x9C,
    0x990x960x930x900x8C0x890x860x83,
    0x800x7D0x7A0x770x740x700x6D0x6A,
    0x670x640x610x5E0x5B0x580x550x52,
    0x4F0x4D0x4A0x470x440x410x3F0x3C,
    0x390x370x340x320x2F0x2D0x2B0x28,
    0x260x240x220x200x1E0x1C0x1A0x18,
    0x160x150x130x110x100x0F0x0D0x0C,
    0x0B0x0A0x080x070x060x060x050x04,
    0x030x030x020x020x020x010x010x01,
    0x010x010x010x010x020x020x020x03,
    0x030x040x050x060x060x070x080x0A,
    0x0B0x0C0x0D0x0F0x100x110x130x15,
    0x160x180x1A0x1C0x1E0x200x220x24,
    0x260x280x2B0x2D0x2F0x320x340x37,
    0x390x3C0x3F0x410x440x470x4A0x4D,
    0x4F0x520x550x580x5B0x5E0x610x64,
    0x670x6A0x6D0x700x740x770x7A0x7D
    }

    void InitSinTable(){
        
    //sin period is 2*Pi
        
    const float step = (2*M_PI)/(float)256;
        
    float s;
        
    float zero 128.0;
        
    //in radians
        
        
    for(int i=0;i<256;i++){
            
    sinstep );
            
    //calculate OCR value (in range 0-255, timer0 is 8 bit)
            
    wave[i] = (uint8_tround(zero + (s*127.0));
        }
    }

    void InitPWM(){
    /*
    TCCR0 - Timer Counter Control Register (TIMER0)
    -----------------------------------------------
    BITS DESCRIPTION
    NO: NAME DESCRIPTION
    --------------------------
    BIT 7 : FOC0 Force Output Compare
    BIT 6: WGM00 Wave form generartion mode [SET to 1]
    BIT 5: COM01 Compare Output Mode [SET to 1]
    BIT 4: COM00 Compare Output Mode [SET to 0]
    BIT 3: WGM01 Wave form generation mode [SET to 1]
    Page | 43
    BIT 2: CS02 Clock Select [SET to 0]
    BIT 1: CS01 Clock Select [SET to 0]
    BIT 0: CS00 Clock Select [SET to 1]
    Timer Clock = CPU Clock (No Pre-scaling)
    Mode = Fast PWM
    PWM Output = Non Inverted
    */

        
    TCCR0|=(1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
        
    TIMSK|=(1<<TOIE0);
        
    //Set OC0 PIN as output. It is PB3 on ATmega16 ATmega32
        
    DDRB|=(1<<PB3);
    }

    ISR(TIMER0_OVF_vect){
        
    OCR0 wave[sample];
        
    sample++;
        if( 
    sample >= 255 )
        
    sample 0;

    main این برنامه کجاست؟
    با این آرایه wave میخواهید موج سینوسی با چه فرکانسی ایجاد کنید؟ اگر میخواید سینوسی ایجاد کنید که خیلی سادس . باید دوتا تایمر ست کنید که یکیش باید PWM ایجاد کند و دیگری باید مقدار دیوتی سایکل PWM را ( باتوجه به آرایه) تغییر دهد. اگر همینه بفرمایید تا نحوه محاسبات و در کل الگوریتم را توضیح دهم.


    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

    دیدگاه


      #17
      پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

      ممنون دوست عزیز
      در سایت اصلی نوشته تولید SPWM در فرکانس انگار 15 کیلو هرتز
      خروجی هم در دو پایه OC1A - OC1B میکرو مگا 8 ریخته میشه
      بعد SPWM تولیدی در یک H-Bridge و فیلتر LC تبدیل به موج سینوسی خالص با فرکانس 50 هرتز میشه
      وارد ترانس شده و به 220 تبدیل میشه...
      آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
      مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
      _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

      دیدگاه


        #18
        پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

        این هم یک نمونه از برنامه دیگه هست:
        http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/
        آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
        مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
        _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

        دیدگاه


          #19
          پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

          بحث اصلی هم در این تاپیک هست:
          http://www.eca.ir/forum2/index.php?topic=80278.120
          ممنون میشم کمکمون کنید
          آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
          مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
          _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

          دیدگاه


            #20
            پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

            من رفتم داخل سایتی که دادید و برنامه رو خوندم ، چیز خاصی نیست . میاد همون sPWM را روی OC0 ایجاد میکنه . یه سری توضیحات میدم ، همین که الگوریتمش تو ذهنتون بیاد ، خودتون میتونید بنویسید:
            فرضیات : کلاک میکرو روی 8 مگاهرتز .
            ببینید شما برای تغییر در دیوتی سایکل موج خروجی یک آرایه 256 تایی دارید و میخواهید یک موج سینوسی 50 هرتز ایجاد کنید. یعنی باید در 20 میلی ثانیه ، کل اعضای این آرایه یه دور خونده شود. خوب پس باید هر 20ms /256 یک عضو خوانده شود که در این صورت آرایه کامل در 20 میلی ثانیه خونده میشود در نتیجه باید یک زمان گیری به مدت زیر با تایمر بسازیم و در روتین وقفه اون تایمر اعضای آرایه را به نحوی بخونیم (که بعدا میگم چه جوری)
            20ms/256 = 78.125us
            خوب برفرض ما از تایمر 1 در میکرو مگا 16 استفاده میکنیم ( یا مشابهات)
            برای کلاک تایمر از کلاک خود میکرو با پری اسکیلر 1 استفاده میکنیم
            پس برای ساختن زمان 78.125us باید تایمر به تعداد زیر بشمرد:
            8 * 78.125 = 625
            عدد 625 از 8 بیت بیشتر است پس اگر تایمرتون 8 بیتی است باید برای ایحاد این زمان نرم افزاری عمل کنیم . ولی خوب تایمر 1 یک تایمر 16 بیتی است.
            پس باید رجیستر های ربوط به تایمر 1 به صورت زیر تنظیم شود:
            کد:
            TIMSK=0x10;
            OCR1A=624;
            TCCR1A=0x00;
            TCCR1B=0x09;
            نکته :منظور از ##0x یک عدد هگزا دسیمال است. باید رجیستر های ذکر شده را با مقادیر ذکر شده مقدار دهی کرد.( برای اطلاعات بیشتر به توضیحات رجیسترها در دیتاشیت مراجعه کنید)(درضمن از مد CTC استفاده شده)

            خوب ما الان تایمر 1 را برای عمل نمونه برداری( sampling ) ست کردیم.
            حالا میریم برای ست کردن یک تایمر دیگه برای ایجاد PWM روی پین مثلا OC0 ( به عنوان مثال از تایمر0 برای اینکار استفاده میکنیم)
            برای اینکه به راحتی بتونیم یک موج مربعی با دیوتی سایکل متغییر ایجاد کنیم بهتره از یکی از مدهای fastPWM یا phase correct PWM استفاده کنیم.
            که من میخوام از مد Phase correct استفاده کنم:
            مهم ترین تنظیمات در این مد یکی فرکانس کاری تایمر و دیگری قرار دادن مقدار مناسب در رجیستر OCR0 است.
            1- فرکانس کاری : برای تعیین فرکانس موج مربعی روی پایه oc0 (البته هیچ ربطی اون 50 هرتز ندارد ، اون 50 هرتز را با تایمر 1 ساختیم تموم شد رفت) در ادامه میگم چرا تنظیم این مهمه.
            2- مقداردهی OCR0 : مقدار OCR0 دیوتی سایکل موج مربعی را تعیین میکند که بسیار مهم است و باید به نسبت موج سینوسی تغییر کند به عنوان مثال موقعی که دیوتی سایکل 100 در صد میشود ، موج سینوسی در قله میرود.
            خوب قبل از اینکه به تنظیمات تایمر 0 بپردازیم، برمیگردیم به تایمر1 : ما مقدار تایمر 1 را ست کردیم تا بتوانیم نمونه برداری کنیم ولی حالا که یک زمانگیری مناسب انجام دادیم توی روتین وقفه مقایسه تایمر1 چی بنویسیم:
            ما باید مقادیر درون آرایه را دونه دونه هربار که وقفه ایجاد میشود درون رجیستر OCR0 که وظیفه تغییر در دیوتی سایکل موج مربعی داشت بریزیم:
            پس یک متغییر سراسری به نام مثلا sample میگیریم و مقدار اولیه اون را صفر میگیریم و درون روتین وقفه هر بار یک عضو از آرایه را که اندیس آن را متغییر sample نشان میدهد، درون رجیستر OCR0 میریزیم و سپس یک واحد یه sample اضافه میکنیم که دفعه بعد عضو بعدی خوانده شود.
            خوب حالا برسیم سروقت تایمر 0 که گفتیم تو مد phase correct ازش استفاده میکنیم و مقادیر OCR0 هم که متغییره با استفاده از تایمر 1 و آرایه تعیین کردیم. میمونه تعیین فرکانس تایمر 0:
            باید رابطه زیر را رعایت کنیم :
            همیشه باید زمان یک پریود تایمر0 کمتر از زمان تغییر در مقدار ocr0 باشد که مشکلی پیش نیاید . زمان تغییر OCR0 هم که همون زمان وقفه تایمر 1 است. پس:
            باید زمان یک پریود تایمر 0 کمتر 78.125 میکرو ثانیه باشد.
            فرض میکنیم همون کلاک 8 مگاهرتز را به تایمر0 هم میدهیم . پس زمان یک پریود تایمر 0 میشود:
            510/8MHz = 63.75 us
            که کمتر از 78.125us است پس درسته . در نتیجه رجیسترهای تایمر0 باید به شکل زیر مقدار دهی شوند:
            کد:
            OCR0=wave[0]; //baraye meghdar avalie dadan be ocr0 bayad ozve avale araye wave ra bedahim
            TCCR0=0x61; // Mode : Phase Correct PWM , timer0 clk=8MHz
            و تمام. اگر سوالی هست درخدمتم
            راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
            کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
            نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
            انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

            دیدگاه


              #21
              پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

              سلام دوست عزیز دستتون درد نکنه
              خوب شد شما را پیدا کردیم :mrgreen:
              یک خواهش داشتم
              یک برنامه با بسکام می نویسید که SPWM تولید کنه با فرکانس 30 کیلو هرتز؟
              آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
              مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
              _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

              دیدگاه


                #22
                پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                نوشته اصلی توسط sina1359
                سلام دوست عزیز دستتون درد نکنه
                خوب شد شما را پیدا کردیم :mrgreen:
                یک خواهش داشتم
                یک برنامه با بسکام می نویسید که SPWM تولید کنه با فرکانس 30 کیلو هرتز؟
                30 کیلو هرتز؟!!!!!! :eek:

                خوب شما الان مقایسه کنید . تو پست قبل توضیح دادم و تونستیم 50 هرتز تولید کنیم که برای اینکار از دوتا تایمر استفاده کردیم و هر دوتاش رو کلاک 8 مگاهرتز دادیم(بیشترین حدی که میشد) فوق فوقش بتونید 20 مگاهرتز بدید به میکرو و همونو بدید به تایمر.

                خوب بزارید محاسبه کنیم:
                اگر بخواهیم با استفاده از همون آرایه 256 تایی اینکار را کنیم پس برای تولید موج سینوسی 30 کیلو هرتز باید این آرایه را در زمان یک تقسیم بر 30 کیلو هرتز یعنی حدود 33.3 میکرو ثانیه که تازه برای هر عضو میشه 33.3 تقسیم بر 256 که امکان نداره بتونید با میکرو عمل sampling را در این زمان انجام دهید.
                درنتیجه اینکار با میکرو شدنی نیست (حتی اگر طول آرایه را کم کنیم)
                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                دیدگاه


                  #23
                  پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                  سلام دوست عزیز
                  خیلی خیلی زحمت کشیدید
                  من تازه مطالبتونو در اون تاپیک مطالعه کردم
                  واقا خوب توضح دادید , دستتون درد نکنه
                  این مشکل بی سوادی منه که خوب متوجه نمیشم
                  اگر این کار را بکنید و برنامه را زحمت بکشید و طراحی کنید که
                  بینهایت ممنونتون میشم
                  هر سوالی هم که داشتید در زمینه بسکام بفرمایید , اگر بلد بودم در خدمتون هستم
                  پ.ن: یک برنامه در همین تاپیک در صفحه یک هست که با بسکام نوشته شده ولی موج سینوسی تولیدیش برای کار دیگری هست
                  کدها و دستوراتش فکر کنم بدردتون بخوره (بسکام زیاد پیشرفته نیست و با نگاه کردن به دستورات , با راحتی میتونید آن را بیاموزید...) :redface:

                  آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
                  مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
                  _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

                  دیدگاه


                    #24
                    پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                    نوشته اصلی توسط RubeuS
                    30 کیلو هرتز؟!!!!!! :eek:

                    خوب شما الان مقایسه کنید . تو پست قبل توضیح دادم و تونستیم 50 هرتز تولید کنیم که برای اینکار از دوتا تایمر استفاده کردیم و هر دوتاش رو کلاک 8 مگاهرتز دادیم(بیشترین حدی که میشد) فوق فوقش بتونید 20 مگاهرتز بدید به میکرو و همونو بدید به تایمر.

                    خوب بزارید محاسبه کنیم:
                    اگر بخواهیم با استفاده از همون آرایه 256 تایی اینکار را کنیم پس برای تولید موج سینوسی 30 کیلو هرتز باید این آرایه را در زمان یک تقسیم بر 30 کیلو هرتز یعنی حدود 33.3 میکرو ثانیه که تازه برای هر عضو میشه 33.3 تقسیم بر 256 که امکان نداره بتونید با میکرو عمل sampling را در این زمان انجام دهید.
                    درنتیجه اینکار با میکرو شدنی نیست (حتی اگر طول آرایه را کم کنیم)
                    چی بگم دوست عزیز :mrgreen:
                    آروین میگه 30 کیلو باشه
                    من که زیاد اطلاعاتی در این باره ندارم (در همون تاپیک اصلی که در بخش آنالوگ سایت هست)
                    آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
                    مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
                    _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

                    دیدگاه


                      #25
                      پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                      نکتهای که هست SPWM تولیدی باید در دو نیم سیکل و در دو پایه میکرو تولید بشه (تا جایی که من متوجه شدم):


                      OC1A میکرو به 2و 3 ماسفت در پل H
                      OC1B میکرو به 1و4 ماسفت در پل H


                      البته این عکس برای کار دیگهای هست ولی میکرو به همین صورت به پل H وصل میشه


                      آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
                      مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
                      _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

                      دیدگاه


                        #26
                        پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                        نوشته اصلی توسط sina1359

                        $regfile = "m8def.dat"
                        $crystal = 4000000

                        Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1
                        Enable Interrupts

                        Dim A As Byte , I As Byte
                        I = 1

                        Do

                        A = Lookup(i , Dat)
                        Pwm1a = A
                        Waitus 64
                        Incr I

                        Loop

                        End

                        Dat:
                        Data &H80 , &H83 , &H86 , &H89 , &H8C , &H8F , &H92 , &H95 , &H98 , &H9C , &H9F , &HA2 , &HA5 , &HA8 , &HAB , &HAE,
                        Data &HB0 , &HB3 , &HB6 , &HB9 , &HBC , &HBF , &HC1 , &HC4 , &HC7 , &HC9 , &HCC , &HCE , &HD1 , &HD3 , &HD5 , &HD8,
                        Data &HDA , &HDC , &HDE , &HE0 , &HE2 , &HE4 , &HE6 , &HE8 , &HEA , &HEC , &HED , &HEF , &HF0 , &HF2 , &HF3 , &HF5,
                        Data &HF6 , &HF7 , &HF8 , &HF9 , &HFA , &HFB , &HFC , &HFC , &HFD , &HFE , &HFE , &HFF , &HFF , &HFF , &HFF , &HFF,
                        Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFE , &HFE , &HFD , &HFC , &HFC , &HFB , &HFA , &HF9 , &HF8 , &HF7,
                        Data &HF6 , &HF5 , &HF3 , &HF2 , &HF0 , &HEF , &HED , &HEC , &HEA , &HE8 , &HE6 , &HE4 , &HE2 , &HE0 , &HDE , &HDC,
                        Data &HDA , &HD8 , &HD5 , &HD3 , &HD1 , &HCE , &HCC , &HC9 , &HC7 , &HC4 , &HC1 , &HBF , &HBC , &HB9 , &HB6 , &HB3,
                        Data &HB0 , &HAE , &HAB , &HA8 , &HA5 , &HA2 , &H9F , &H9C , &H98 , &H95 , &H92 , &H8F , &H8C , &H89 , &H86 , &H83,

                        Data &H80 , &H7C , &H79 , &H76 , &H73 , &H70 , &H6D , &H6A , &H67 , &H63 , &H60 , &H5D , &H5A , &H57 , &H54 , &H51,
                        Data &H4F , &H4C , &H49 , &H46 , &H43 , &H40 , &H3E , &H3B , &H38 , &H36 , &H33 , &H31 , &H2E , &H2C , &H2A , &H27,
                        Data &H25 , &H23 , &H21 , &H1F , &H1D , &H1B , &H19 , &H17 , &H15 , &H13 , &H12 , &H10 , &H0F , &H0D , &H0C , &H0A,
                        Data &H09 , &H08 , &H07 , &H06 , &H05 , &H04 , &H03 , &H03 , &H02 , &H01 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00,
                        Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H03 , &H03 , &H04 , &H05 , &H06 , &H07 , &H08,
                        Data &H09 , &H0A , &H0C , &H0D , &H0F , &H10 , &H12 , &H13 , &H15 , &H17 , &H19 , &H1B , &H1D , &H1F , &H21 , &H23,
                        Data &H25 , &H27 , &H2A , &H2C , &H2E , &H31 , &H33 , &H36 , &H38 , &H3B , &H3E , &H40 , &H43 , &H46 , &H49 , &H4C,
                        Data &H4F , &H51 , &H54 , &H57 , &H5A , &H5D , &H60 , &H63 , &H67 , &H6A , &H6D , &H70 , &H73 , &H76 , &H79 , &H7C
                        این هم نمونه برنامه ای هست که وحید خان برایه کار دیگری طراحی کرده بودند که در این تاپیک به من پیشنهاد کرده بودند (با زبان بیسیک):

                        http://www.eca.ir/forum2/index.php?topic=80283.0
                        آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
                        مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
                        _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

                        دیدگاه


                          #27
                          پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                          ممکنه بگید حالا تبدیلش به یه زبونه دیگه چه اهمیتی براتون داره؟
                          رفقا مهم نیست چطوری بازی می کنید؛ اگه شروع نکنید، قطعا بازنده هستید.

                          دیدگاه


                            #28
                            پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                            این تاپیک هم بی زحمت یک نگاهی بهش بیندازید
                            داخلش نوشته باید 15 کیلو هرتز تولید کنیم...


                            http://www.theengineeringprojects.com/2012/11/pure-sine-wave-inter-design-with-code.html
                            آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
                            مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
                            _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

                            دیدگاه


                              #29
                              پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                              نوشته اصلی توسط pencil
                              ممکنه بگید حالا تبدیلش به یه زبونه دیگه چه اهمیتی براتون داره؟
                              اهمیت نداره (همین که کامپایل و به صورت فایل HEX در بیاد بسه...) من فقط بلدم با بسکام کار کنم و اگر تغییری نیاز داشته باشه بتونم تویه برنامه اعمال کنم...
                              اون برنامه (پست اول این تاپیک) دوستان گفتند که برنامش مشکل داره
                              بحث سر این است که با میکرو یک موج سینوسی (SPWM) دیجیتالی تولید بشه که حاصل در فیلتر LC تبدیل به موج سینوسی آنالوگ بشه
                              فرکانسش هم در هر مقاله یک عدد خاصه (در یکی 10 کیلو و در دیگری 15 کیلو و در جایی 30 کیلو بیان شده...)
                              من هم خودم دقیقا نفهمیدم که چه کاری باید کرد...
                              این هم تاپیک اصلی که برنامه را برای اون تهیه میکنیم
                              http://www.eca.ir/forum2/index.php?topic=80278.120
                              آموزش ساخت دستگاه برف ساز خانگی : https://www.eca.ir/forums/thread55009.html
                              مقاله آموزشی 11 پروژه با AVR و بسکام: https://www.eca.ir/forums/thread31760.html
                              _*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡__*̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*̡̡_

                              دیدگاه


                                #30
                                پاسخ : تبدیل کد یک برنامه به زبان C به بیسکام

                                نوشته اصلی توسط sina1359
                                اهمیت نداره (همین که کامپایل و به صورت فایل HEX در بیاد بسه...)
                                اون برنامه (پست اول این تاپیک) دوستان گفتند که برنامش مشکل داره
                                بحث سر این است که با میکرو یک موج سینوسی (SPWM) دیجیتالی تولید بشه که حاصل در فیلتر LC تبدیل به موج سینوسی آنالوگ بشه
                                فرکانسش هم در هر مقاله یک عدد خاصه (در یکی 10 کیلو و در دیگری 15 کیلو و در جایی 30 کیلو بیان شده...)
                                من هم خودم دقیقا نفهمیدم که چه کاری باید کرد...
                                این هم تاپیک اصلی که برنامه را برای اون تهیه میکنیم
                                http://www.eca.ir/forum2/index.php?topic=80278.120
                                خوب شما چرا از همون زبون سی به کد هگز در نمیاریش
                                بعد اینکه فایلت لود شد Ctrl+F9 یا SHIFT+F9 رو بزن
                                اگه از نسخه 2.4 به بالا استفاده میکنی برو اونجایی که فایل سی برنامتو ذخیره کردی دنبال پوشه EXE که فایل HEX و ROM داخل اونه
                                اگه از نسخه پایین استفاده میکنی کنار همون فایل سی برنامت، HEX و ROM قرار میگیرن
                                :sad: امیدوارم اشتباه متوجه منظورتون نشده باشم
                                رفقا مهم نیست چطوری بازی می کنید؛ اگه شروع نکنید، قطعا بازنده هستید.

                                دیدگاه

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