اطلاعیه

Collapse
No announcement yet.

شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

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

    شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

    سلام
    یک شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr احتیاج دارم
    کدشو میخوام
    مرسی%

    #2
    پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

    یه همچین فرکانسی بعید می دونم بشه با AVR ساخت. شاید با ARM بشه.

    آخه فرکانس AVR معمولا تا 16meg هستش و تا بخوای یه دستور بدی چند تا سیکل می گذره و حداکثر فرکانسی که می تونی بسازی پایین میاد.

    دیدگاه


      #3
      پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

      با اسمبلی بنویس شاید بشه البته بعید میدونم بشه
      آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
      آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
      آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
      آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

      دیدگاه


        #4
        پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

        16 مگا هرتز سرعت باس میکرو کنترلر است نه سرعت وسایل ارتباطی جانبی
        مثلا adc یک سرعت داره و Io یک سرعت و همچنینی تایمر و کانتر و usrt و حافظه ایپرام و ..... هرکدام سرعت خودشون رو دارن
        شما باید ببنید ماکزیمم سرعت io میکرو چقدره
        تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زيادتر از دیگر آدم ها است

        دیدگاه


          #5
          پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

          سلام.
          طبق برگه اطلاعات AVR عملیات IO در آن ها در یک کلاک انجام میشه شما می تونی از یک avr سریع مثل atmega48 استفاده کنی که تا 20MHz می تونید فرکانس کاریش رو بالا ببرید به امتحانش می ارزه.

          دیدگاه


            #6
            پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

            نوشته اصلی توسط hamid_ec
            سلام.
            طبق برگه اطلاعات AVR عملیات IO در آن ها در یک کلاک انجام میشه شما می تونی از یک avr سریع مثل atmega48 استفاده کنی که تا 20MHz می تونید فرکانس کاریش رو بالا ببرید به امتحانش می ارزه.
            کجا نوشته ؟شاید با خواندن و نوشتن در ریجستر اشتباه گرفتید ؟
            تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
            داشتن عقله زيادتر از دیگر آدم ها است

            دیدگاه


              #7
              پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

              نوشته اصلی توسط hamid_ec
              سلام.
              طبق برگه اطلاعات AVR عملیات IO در آن ها در یک کلاک انجام میشه شما می تونی از یک avr سریع مثل atmega48 استفاده کنی که تا 20MHz می تونید فرکانس کاریش رو بالا ببرید به امتحانش می ارزه.
              برای دسترسی به یه پین از یه پین میکرو حداقل 2 دستور میکرو نیاز هست. پس یعنی برای 0 و 1 کردن به 4 سیکل نیازه که میشه حداکثر 5مگا هرتز......
              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

              دیدگاه


                #8
                پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                نوشته اصلی توسط aliila
                کجا نوشته ؟شاید با خواندن و نوشتن در ریجستر اشتباه گرفتید ؟
                درجواب باید بهتون بگم که حداکثر فرکانس یک سخت افزار را اجزای منطقی (سخت افزاری) داخلی آن تشکیل می دهند یعنی وقتی ATMEL حداکثر فرکانس کاری mega16 را 16MHZ اعلام میکنه یعنی گیت های منطقی داخلی تراشه در این فرکانس به خوبی کار می کنند که این گیت ها شامل پورت های I/O هم می باشد. البته کارخانه سازنده حاشیه اطمینان زیادی بکار می برد. خودم در یک پروژه مربوط به اتصال TV به میکرو فرکانس کاری ATMEGA32 را تا 24MHZ افزایش دادم که میکرو در این فرکانس به خوبی کار میکرد . البته جریان مصرفی کمی بالا رفته بود و میکرو هم کمی گرم می شد ولی مشکلی در کار کردش مشاهده نمی شد. برای اینکه از کارکر پورت های AVR مطمئن بشید اگر اسیلوسکوپ در اختیار دارید می تونید کلاک خوروجی از ماژول SPI میکرو را با کلاک 16MHz مشاهده کنید که دقیقا 16MHz است . نوشتن روی رجیستر پورت خروجی دقیقا با تغییر وضعیت پورت در یک زمان رخ میدهد و تاخیر خیلی خیلی جزئی است.

                دیدگاه


                  #9
                  پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                  سلام
                  در avr به راحتی میشه به نصف فرکانس کلاک دست یافت. بنابراین اگر فرکانس میکرو رو 14 مگاهرتز بذاری می تونی به فرکانس 7 مگ برسی.
                  این بدون صفر و یک کردن io انجام میشه. چون همونطور که گفته شد صفر رو یک کردن io خودش چند سیکل کاری میکرو زمان لازم داره و در ضمن میکرو رو هم در گیر می کنه.
                  ولی میشه کاری کرد که بدون اینکه میکرو درگیر بشه فرکانس خاصی روی یکی از پایه های میکرو (که پایه های خاصی هستند) تولید بشه. این کار به صورت سخت افزاری انجام میشه.
                  حالا باید چکار کرد. فرض کنیم فرکانس میکرو 14 مگ هست و ما می خواهیم فرکانس 7 مگا هرتز تولید کنیم. نوع avr فرض کنیم atmega8 هست.
                  حالا تو کدویژن کدویزاد رو باز کن.
                  توی قسمت timers ، timer1 رو انتخاب کن.
                  clock source رو بذار system clock
                  clock value ر. بذار 14Mhz
                  mode رو بذار ctc top=ocr1a این در واقع قسمت اصلیه
                  حالا outa یا outb رو بذار toggle با انتخاب outa فرکانس مورد نظر روی پایه OCA که در atmega8 پایه PB1 هست تولید میشه. و با انتخاب outb فرکانس روی پایه OC1B (پایه PB2) تولید میشه.

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


                  مـن هیچ ندانم که مرا آن که سرشت
                  از اهل بهشت کرد یا دوزخ زشت
                  جامی و بتی و بربطی بر لب کشت
                  اين هر سه مرا نقد و تو را نسیه بهشت

                  دیدگاه


                    #10
                    پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                    اینم کد که روی پایه های PB1 و PB2 فرکانس 7 مگ تولید می کنه:

                    #include <mega8.h>

                    // Declare your global variables here

                    void main(void)
                    {
                    // Declare your local variables here

                    // Input/Output Ports initialization
                    // Port B initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In
                    // State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=T
                    PORTB=0x00;
                    DDRB=0x06;

                    // Port C initialization
                    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                    PORTC=0x00;
                    DDRC=0x00;

                    // Port D initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                    PORTD=0x00;
                    DDRD=0x00;

                    // Timer/Counter 0 initialization
                    // Clock source: System Clock
                    // Clock value: Timer 0 Stopped
                    TCCR0=0x00;
                    TCNT0=0x00;

                    // Timer/Counter 1 initialization
                    // Clock source: System Clock
                    // Clock value: 14000.000 kHz
                    // Mode: CTC top=OCR1A
                    // OC1A output: Toggle
                    // OC1B output: Toggle
                    // Noise Canceler: Off
                    // Input Capture on Falling Edge
                    // Timer 1 Overflow Interrupt: Off
                    // Input Capture Interrupt: Off
                    // Compare A Match Interrupt: Off
                    // Compare B Match Interrupt: Off
                    TCCR1A=0x50;
                    TCCR1B=0x09;
                    TCNT1H=0x00;
                    TCNT1L=0x00;
                    ICR1H=0x00;
                    ICR1L=0x00;
                    OCR1AH=0x00;
                    OCR1AL=0x00;
                    OCR1BH=0x00;
                    OCR1BL=0x00;

                    // Timer/Counter 2 initialization
                    // Clock source: System Clock
                    // Clock value: Timer 2 Stopped
                    // Mode: Normal top=FFh
                    // OC2 output: Disconnected
                    ASSR=0x00;
                    TCCR2=0x00;
                    TCNT2=0x00;
                    OCR2=0x00;

                    // External Interrupt(s) initialization
                    // INT0: Off
                    // INT1: Off
                    MCUCR=0x00;

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

                    // Analog Comparator initialization
                    // Analog Comparator: Off
                    // Analog Comparator Input Capture by Timer/Counter 1: Off
                    ACSR=0x80;
                    SFIOR=0x00;

                    while (1)
                    {
                    // Place your code here

                    };
                    }

                    حلا روی این پایه ها فرکانس مورد نظر تولید شده و شما میتونید همزمان کد های دیگتون رو هم اجرا کنید. بدون اینکه اختلالی در تولید این موج پیش بیاد.
                    مـن هیچ ندانم که مرا آن که سرشت
                    از اهل بهشت کرد یا دوزخ زشت
                    جامی و بتی و بربطی بر لب کشت
                    اين هر سه مرا نقد و تو را نسیه بهشت

                    دیدگاه


                      #11
                      پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                      مرسی از دوستان
                      من تا 5 مگا هرتز درست کردم کدویژنو امتحان کردم نشد
                      امید وارم اون دوستی که گفته بودن تا 5 مگا بیشتر نمیشه بیشتر توضیح بدن
                      در ضمن من 5 مگارو با مد مقایسه تایمر یک تولید کردم
                      بدرود

                      دیدگاه


                        #12
                        پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                        البته برنامه کدویژنو دوباره امتحان کردم جواب داد
                        ولی یه کم در باره برنامه توضیح بدید که مقدار رجیستر مقایسه ای A چقدر تعیین شده وکجا مشخص کردید چرا aو b رومقدار ندادید

                        دیدگاه


                          #13
                          پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                          setting ها برای ابن کار در این قسمت انجام شده:

                          Timer/Counter 1 initialization
                          // Clock source: System Clock
                          // Clock value: 14000.000 kHz
                          // Mode: CTC top=OCR1A
                          // OC1A output: Toggle
                          // OC1B output: Toggle
                          // Noise Canceler: Off
                          // Input Capture on Falling Edge
                          // Timer 1 Overflow Interrupt: Off
                          // Input Capture Interrupt: Off
                          // Compare A Match Interrupt: Off
                          // Compare B Match Interrupt: Off
                          TCCR1A=0x50;
                          TCCR1B=0x09;
                          TCNT1H=0x00;
                          TCNT1L=0x00;
                          ICR1H=0x00;
                          ICR1L=0x00;
                          OCR1AH=0x00;
                          OCR1AL=0x00;
                          OCR1BH=0x00;
                          OCR1BL=0x00

                          در اینجا تایمر بین صورت تعریف شده که در لبه پالسها toggle بشه. toggle یعنی اگر صفر بود یک و اگر 1 بود 0 بشه. نیازی به مقدار دهی نیست.
                          اما میشه تایمر 2 رو روی مد کپچر گذاشت که با رسیدن به عدد خاصی toggle بشه. در این صورت میشه با مقدار دهی به فرکانس خروجی دلخواه رسید. در واقع میشه به هر تقسیمی ار فرکانس مرجع رسید.
                          مـن هیچ ندانم که مرا آن که سرشت
                          از اهل بهشت کرد یا دوزخ زشت
                          جامی و بتی و بربطی بر لب کشت
                          اين هر سه مرا نقد و تو را نسیه بهشت

                          دیدگاه


                            #14
                            پاسخ : شکل موج مربعی با فرکانس 7مگا هرتز با میکروهای avr

                            سپاس فراوان هموطن

                            دیدگاه

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