اطلاعیه

Collapse
No announcement yet.

سوالات کتاب at91 (نص)

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

    #91
    پاسخ : سوالات کتاب at91 (نص)

    من تو کتاب رو نگاه کردم دیدم این تابع PUTS ورودیش از نوع LONG هست ، شما متغیر t1 رو به صورت unsigned char تعریف کنید ببنید درست میشه .

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

    دیدگاه


      #92
      پاسخ : سوالات کتاب at91 (نص)

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

      دیدگاه


        #93
        پاسخ : سوالات کتاب at91 (نص)

        تو پیغام خصوصی براتون توضیح دادم اگه متوجه نشدید همینجا کپی پیست کنید .

        ممنون

        دیدگاه


          #94
          پاسخ : سوالات کتاب at91 (نص)

          بابت کتابخونه ها ممنونم.

          آقا من الان یه تست کردم این تابع puts که مشکلی در رابطه با نشون دادن اعداد نداره حتی متغیر از اون جنسی که شما تعریف کردید !

          دیدگاه


            #95
            پاسخ : سوالات کتاب at91 (نص)

            خوب من یه برنامه نوشتم تقریبا فکر میکنم مثل اونچیزی هست که شما کار کردید گفتم بزارم تا اگه شد از روش برای رفع مشکلتون ایده بگیرید ، تو برنامه زیر یه موج مربعی روی پایه PA0 با فرکانس نیم هرتز ایجاد میشه و یک متغیر هم هر 2 ثانیه یک واحد زیاد میشه و مقدارش روی LCD نشون داده میشه و بعد از اینکه به مقدار 150 رسید مقدارش صفر و دوباره از اول .



            کد:
            //---------I/O header ----------------------------------------------------------
            #include <Atmel/ioat91sam7x256.h>
            //---------addetional header ---------------------------------------------------
            #include <intrinsics.h>
            #include <stdbool.h>
            //-----lcd hedears --------------------------------------------------------------
            #include "lcd.h"
            
            //-----Led macros -------------------------------------------------------------
            #define LED1ON		AT91C_BASE_PIOA->PIO_CODR=(1<<0);
            #define LED1OFF		AT91C_BASE_PIOA->PIO_SODR=(1<<0);
            
            //----- global variables ------------------------------------------------------- 
            unsigned char count;
            bool ovf=false;
            
            //----timer/counter0 ISR -------------------------------------------------------
            void timer0_irq_handler(void)
            {
            unsigned int dummy;
            dummy = AT91C_BASE_TC0->TC_SR;
            dummy = dummy;
            if ((AT91C_BASE_PIOA->PIO_ODSR&0x1)!=0)
             {
             LED1ON;
             if(++count>150)count=0,ovf=true;
             }
             else
             {
             LED1OFF;
             }
            }
            
            //---------Main function -------------------------------------------------------
            void main()
            {
            //--------------------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;
            //------------------------------------------------------------------------------
            AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_PIOA ); // AT91C_ID_PIOA=2
            AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_TC0 ); // AT91C_ID_TC0=12
            //------------------------------------------------------------------------------
            AT91C_BASE_PIOA->PIO_PER=(1<<0);
            AT91C_BASE_PIOA->PIO_OER=(1<<0);
            LED1OFF;
            
            //------LCD initialization------------------------------------------------------------
            lcd_pininit(11,12,13,14,15,16,17,18,19,20);
            lcd_init ();
            
            lcd_clear ();
            
            lcd_gotoxy(0,0);
            lcd_putsf("ARM");
            
            lcd_gotoxy(1,0);
            lcd_puts(count);
            
            //-----Interrupt settings -------------------------------------------------------
            AT91C_BASE_TC0->TC_CMR = 0x4004;
            AT91C_BASE_TC0->TC_RC = 46928;
            AT91C_BASE_TC0->TC_CCR = 0x5;
            AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned int) timer0_irq_handler;
            AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = 0x00000007;
            AT91C_BASE_AIC->AIC_ICCR = (1<<AT91C_ID_TC0);
            AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS; // AT91C_TC_CPCS=(1<<4)
            AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_TC0);
            //-------Clear I bit of CPSR register ------------------------------------------
            __enable_interrupt();
            
            //------Main loop -------------------------------------------------------------- 
            while (1){
             if(ovf){
                 ovf=false;
                 lcd_clear ();
                 lcd_gotoxy(0,0);
                 lcd_putsf("ARM");
                 }
             
                 lcd_gotoxy(1,0);
                 lcd_puts(count);
            
                 }
            //--------End main loop---------------------------------------------------------
            }
            //--------End main function-----------------------------------------------------

            دیدگاه


              #96
              پاسخ : سوالات کتاب at91 (نص)

              سلام.یعنی واقعا هیچ مشکلی نداشت؟؟؟؟
              عجیبه.من در اولین فرصت برنامه ای که شما گذاشتین را تست میکنم.

              دیدگاه


                #97
                پاسخ : سوالات کتاب at91 (نص)

                سلام مجدد
                بله هیچ مشکلی نداشت ،شاید اشکال کارتون تو تنظیمات کامپایلر هست.

                دیدگاه


                  #98
                  پاسخ : سوالات کتاب at91 (نص)

                  باسلام
                  برنامه های کتاب at91رو در کامپایلر iar کامپایل می کنم و اروری نمیده.
                  به نظر همه چیز مرتب است ولی وقتی برنامه کامپایل شده bin رو روی ای سی می ریزم at91sam7s64
                  هیچ اتفاقی نمی افتد.
                  توضیح اینکه داخل کتاب سی دی موجود کل پروژه را دارد ومن پروژه را باز می کنم
                  وقتی کامپایل می کنم خروجی در عمل کار نمی کند .
                  مشکل در کجاست.
                  نکته تنضیمات کامپایلر در حالت arm هست و فایل icf درست اضافه شده

                  دیدگاه


                    #99
                    پاسخ : سوالات کتاب at91 (نص)

                    باسلام
                    مشکل حل شد :applause:

                    دیدگاه


                      پاسخ : سوالات کتاب at91 (نص)

                      با سلام
                      من میخوام با برد آموزشی at91sam7x256 کار کنم آیا میتونم برنامه های این کتاب رو روی این برد هم پیاده کنم.منظورم اینه که آیا میشه کدهای sam7s64رو برای بردsam7x256 استفاده کنم؟ :rolleyes:

                      دیدگاه


                        پاسخ : سوالات کتاب at91 (نص)

                        باسلام
                        مشکل بنده برمیگشت به ویندوز 7 در موقع نصب برنامه در حالت adminestrator باید باشد .
                        فایل کرک راهم در همان حالت باید اجرا کرد :applause:

                        دیدگاه


                          پاسخ : سوالات کتاب at91 (نص)

                          فصل چهارده مربوط به وقفه ها این کتاب خیلی خوب، بد گفته شده یا من خیلی خوب ،بد میگیرم.
                          بجای دستور enable_interrupt__توی keilآ‌چی باید بنویسیم.

                          دیدگاه


                            پاسخ : سوالات کتاب at91 (نص)

                            نوشته اصلی توسط soheyl_60
                            فصل چهارده مربوط به وقفه ها این کتاب خیلی خوب، بد گفته شده یا من خیلی خوب ،بد میگیرم.
                            بجای دستور enable_interrupt__توی keilآ‌چی باید بنویسیم.
                            در مورد وقفه، به صفحه قبل همین تاپیک مراجعه کنید اونجا تو یک پست نحوه کار رو به صورت ساده شده مطالب کتاب گفتم. ولی توجه کنید که مطالب این کتاب بر مبنای کامپایلر IAR هست.

                            دیدگاه


                              پاسخ : سوالات کتاب at91 (نص)

                              نوشته اصلی توسط تیبا
                              [hr]پس تا الان متوجه شدم که:

                              3stage pipeline در نسل اولیه arm تا arm 7 بوده البته با معماری von-neumann

                              5stage pipeline در خانواده arm 9 بوده البته با معماری harvard که به قول دوستمون دارای گذرگاه داده و آدرس مجزاست

                              6stage pipeline در خانواده arm 10 بوده البته با معماری harvard

                              8stage pipeline در خانواده arm 11 بوده البته با معماری harvard

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

                              :biggrin:[move]خیلی جالبه[/move]
                              باسلام
                              چرا پایپ لاین بیشتر باشه بهتره؟

                              دیدگاه


                                پاسخ : سوالات کتاب at91 (نص)

                                نوشته اصلی توسط Reza_f
                                باسلام
                                چرا پایپ لاین بیشتر باشه بهتره؟
                                دقیق مطمئن نیستم ولی میدونم که خط لوله یک صف از دستورات ایجاد میکنه تا در زمانی که یک دستور در حال اجرا شدن هست بتونه دستورات بعدی رو لود کنه و آماده اجرا کردن کنه
                                به این ترتیب در روند اجرای برنامه زمان لود شدن هر دستور حذف میشه و سرعت بالا میره
                                حالا هر چی این خط لوله بزرگتر باشه دستور بیشتر ی لود میکنه و در نتیجه سرعت بهتر میشه
                                زندگی یعنی امید و حرکت
                                کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                                سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                                برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                                به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                                دیدگاه

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