اطلاعیه

Collapse
No announcement yet.

مقدار Hex مربوط به هر پایه

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

    #31
    پاسخ : مقدار Hex مربوط به هر پایه

    با سلام

    برای این که فرکانس رو بخواهم روی 50mhz تنظیم کنم باید مقادیر ضرب یا تقسیم رو چگونه وارد کنم ؟
    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

    دیدگاه


      #32
      پاسخ : مقدار Hex مربوط به هر پایه

      نوشته اصلی توسط Soodi
      با سلام

      برای این که فرکانس رو بخواهم روی 50mhz تنظیم کنم باید مقادیر ضرب یا تقسیم رو چگونه وارد کنم ؟
      دلیل اینی که میگم رو خودم درست نفهمیدم هنوز، اما جناب حبیبی میگن نکته مهمیه، توی وبلاگشون هم نوشته:

      شما اگه بخوای فرکانس رو روی 50 مگ بذاری، باید از اون لینکی که دادم (این: http://www.atmel.com/dyn/resources/prod_documents/AT91SAM_pll.htm) استفاده کنی. اما Targeted PLL Output رو بذار روی 100 مگ، بعد اعداد رو بهت میده. حالا وقتی داری رجیستر PMC_MCKR رو تنظیم می کنی، Prescale رو میذاری رو 2. یعنی مقدار خروجی PLL رو تقسیم به 2 کن.

      اما اگه بخوای روی 48 مگ تنظیم کنی رجیسترهایی که نیاز داری همین دوتان:
      کد:
      CKGR_PLLR = 0x2903FFC
      PMC_MCKR = 0x3

      دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

      دیدگاه


        #33
        پاسخ : مقدار Hex مربوط به هر پایه

        با سلام

        من مبتدی هستم و حدود ۳ روز از که کار با ARM رو شروع کردم اگر لطف کنید و رجیستر های واحد PLL رو معرفی کنید و این که چه مقادیری رو برای تایین فرکانس توی این رجیستر ها قرار دهم خیلی خیلی ممنون میشوم مثلابرای فرکانس ۴۸ مگاهرتز
        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

        دیدگاه


          #34
          پاسخ : مقدار Hex مربوط به هر پایه

          خوب من که دیتا شیت رو بهت دادم، می تونی از روی همونا رجیسترها رو پیدا کنی. اما اگه با اونها مشکل داری، بهتره از همین اول بری سراغ یکی از کتابا و با اونها شروع کنی. در این مورد کلی توی انجمن بحث شده.
          دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

          دیدگاه


            #35
            پاسخ : مقدار Hex مربوط به هر پایه

            با سلام

            من الان اینجا هستم مقادیر رو چگونه تغییر دهم ؟



            با سپاس
            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

            دیدگاه


              #36
              پاسخ : مقدار Hex مربوط به هر پایه

              بر اساس این عکسی که گذاشتم:

              شما باید div رو قرار بدی 221 (با ماشین حساب به هگز تبدیل کنی میشه DD)

              و Multiplier رو هم بذاری 1199 (با ماشین حساب به هگز تبدیل کنی میشه 4AF)

              بقیه موارد هم همینی که هست باشه.
              فایل های پیوست شده
              دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

              دیدگاه


                #37
                پاسخ : مقدار Hex مربوط به هر پایه

                با سلام

                به همین صورتی که فرمودید تغییر دادم ولی باز هم جوابی نگرفتم فقط پایه ای که در برنامه معرفی شده ولتاژ بیشتری دارد و LED متصل به آن نسبت به دیگر پایه ها نور بیشتری دارد ، راستی یک بار با همون فرکانس 18.432 امتحان کردم کار کرد یعنی بعضی مواقع کار میکند و بعضی مواقع نه
                یعنی این مشکلی هست که همه تازه کار ها با اون مواجه هستند ، راستی من می توانم که کریستال روی برد رو به صورت پرتابل بگزارم یعنی یک پین هدر بگزارم که وقتی میخواهم با میکرو کار کنم کریستال 48 مگاهرتز رو جایگزین کنم

                با سپاس
                http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                دیدگاه


                  #38
                  پاسخ : مقدار Hex مربوط به هر پایه

                  ببین تو نباید انقدر نسبت به مقدار فرکانس حساس باشی. وقتی تنظیمات رو انجام میدی، فرکانس روی 48 مگ میمونه. شک نکن، مگر اینکه غلط انجام داده باشی.
                  احتمالاً اشکال از تابع تاخیرت هست. مقدارش یا خیلی کمه، یا خیلی زیاده. در ضمن یه طور دیگه ای هم میتونی تست کنی. اگه توی کدت اول روشن داری و بعد خاموش، جاشون رو عوض کن. ببین چی میشه.

                  کدت رو هم بذار.
                  دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                  دیدگاه


                    #39
                    پاسخ : مقدار Hex مربوط به هر پایه

                    با سلام

                    من برنامه زیر رو پروگرام کردم ولی LED ، زمان زیادی رو روشن است و فقط برای یک لحظه چشمک سریعی می زند

                    # include <AT91SAM7S64.H> /* AT91SAMT7S64 definitions */
                    void delay_s(void);
                    int main (void) {
                    *AT91C_PIOA_PER = 0xF000; // Set in PIO mode
                    *AT91C_PIOA_OER = 0xF000; // Configure in Output
                    while(1){
                    *AT91C_PIOA_SODR = 0xF000; // PB.19 to be set
                    delay_s();
                    *AT91C_PIOA_CODR = 0xF000; // PB.19 to be cleared
                    delay_s();
                    *AT91C_PIOA_SODR = 0xF000; // PB.19 to be set
                    delay_s();
                    *AT91C_PIOA_CODR = 0xF000; // PB.19 to be cleared
                    delay_s();
                    }
                    }
                    void delay_s (void)
                    {
                    unsigned int i,j;
                    for (i=0;i<1000000;i++);
                    for (j=0;j<1000000;j++);
                    }
                    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                    دیدگاه


                      #40
                      پاسخ : مقدار Hex مربوط به هر پایه

                      من باز هم فکر می کنم اشکال کار شما از تابع تاخیرت باشه. آخه اگه فرکانس 50 مگ باشه که تا 2 میلیون شمردن به جائیش نمیرسه!!! شما اصلاً خاموش و روشن شدن رو نمیبینی!!!

                      شما از این کدهایی که اینجا نوشتم برای تاخیرت استفاده کن:
                      http://www.eca.ir/forum2/index.php?topic=48607.msg260241#msg260241
                      دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                      دیدگاه


                        #41
                        پاسخ : مقدار Hex مربوط به هر پایه

                        با سلام

                        من مقادیر رو طبق گفته شما در پست ششم در تنظیمات Keil وارد کردم و در مورد برنامه هم موقعی که دستور Reset رو در اول قرار میدهم LED به مدت چندین ثانیه خاموش است و برای یک لحظه روشن میشود و دوباره خاموش میشود و این چرخه ادامه دارد و موقعی که SET رو در اول قرار میدهم برعکس توضیحات مذکور و خاموش یا روشن شدن LED برای یک لحظه قابل مشاهده است
                        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                        دیدگاه


                          #42
                          پاسخ : مقدار Hex مربوط به هر پایه

                          زمان صبر رو زیاد کردی؟ مثلاً بکنش 40 میلیون.
                          دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                          دیدگاه


                            #43
                            پاسخ : مقدار Hex مربوط به هر پایه

                            با سلام

                            ولی اگر به این صورت بود که شما می فرمایید پس چرا یکی از زمان ها کوتاه و دیگری طولانی است یعنی مثلا زمان خاموش بودن LED طولانی ولی زمان روشن بودن آن برای یک لحظه است با توجه به این که تابع Daley_s در تمامی برنامه یکسان است
                            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                            دیدگاه


                              #44
                              پاسخ : مقدار Hex مربوط به هر پایه

                              نوشته اصلی توسط Soodi
                              با سلام

                              ولی اگر به این صورت بود که شما می فرمایید پس چرا یکی از زمان ها کوتاه و دیگری طولانی است یعنی مثلا زمان خاموش بودن LED طولانی ولی زمان روشن بودن آن برای یک لحظه است با توجه به این که تابع Daley_s در تمامی برنامه یکسان است
                              دلیلی که میشه براش آورد اینه که زمان صبر انقدر کمه که شما روشن و خاموش شدن رو نمی بینی. و با این شرایط وقتی یکی از حالت ها اول بوجود میاد (یا خاموش و یا روشن) دیگه همون حالت توی چشم شما باقی می مونه.

                              شما دوتا کار می تونی بکنی، اول از همه اینکه مقدار صبرت رو خیلی کم کنی، مثلاً در حد 20 هزار. دومی اینه که مقدارش رو خیلی زیاد کنی. مثلاً در حد 20 میلیون. ببین با کدوم یکی از این حالت ها روشن و خاموش شدن درست انجام میشه.
                              دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                              دیدگاه


                                #45
                                پاسخ : مقدار Hex مربوط به هر پایه

                                با سلام

                                من با یک مشکل دیگر هم مواجه شدم و این است که هنگام پروگرام کردن میکرو و سپس فشار دادن کلید Reset موجود روی هدر برد ، برنامه شروع به اجرا نمیکند و حتما باید برد رو یک بار خاموش و دوباره روشن نمود ؟؟؟؟؟؟؟؟

                                __________________________________________________ __________________________________________________ _________________

                                من برنامه رو مانند زیر تغییر دادم و حالا طبق فرمول زیر می خواهم که مقادیر موجود در قسمت Configoration Wizard و واحد PMC رو تغییر دهم تا فرکانس رو روی 48MHz تنظیم کنم

                                فرمول :

                                (PLLCLKOUT=PLLCLKIN* ((MUL+1 /DIV
                                18432000*((656+1) /252) =48054857 Hz

                                برنامه :

                                # include <AT91SAM7S64.H> /* AT91SAMT7S64 definitions */
                                void delay_s(void);
                                int main (void)
                                {
                                //------------------Start UP ----------------------------
                                AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
                                // AT91C_WDTC_WDDIS= (1<<15)
                                AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
                                //----------------- Speed UP ----------------------------
                                AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
                                AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC;
                                AT91C_BASE_PMC->PMC_MCKR = 0x3;
                                AT91C_BASE_PMC->PMC_SCER = 0x1;
                                //----------------------- Main --------------------------
                                *AT91C_PIOA_PER = 0xF000; // Set in PIO mode
                                *AT91C_PIOA_OER = 0xF000; // Configure in Output
                                while(1){
                                *AT91C_PIOA_SODR = 0xF000; // PB.19 to be set
                                delay_s();
                                *AT91C_PIOA_CODR = 0xF000; // PB.19 to be cleared
                                delay_s();
                                *AT91C_PIOA_SODR = 0xF000; // PB.19 to be set
                                delay_s();
                                *AT91C_PIOA_CODR = 0xF000; // PB.19 to be cleared
                                delay_s();
                                }
                                }
                                void delay_s (void)
                                {
                                unsigned int i,j;
                                for (i=0;i<20000;i++);
                                for (j=0;j<20000;j++);
                                }
                                http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                                دیدگاه

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