اطلاعیه

Collapse
No announcement yet.

lpc1768

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

    #16
    پاسخ : lpc1768

    بچه ها من اومدم خطوط رو برا خودم معنی کنم
    اصن یه وضی شد
    #define ها رو که نمیشناسم ولی اینا تعابیر منه:
    #define LED_NUM 8
    اینجا میخواد اعلام کنه اقا ما میخوایم 8 تا ال ای دی روشن کنیم نه؟
    خط بعدش میگه که کدوم پین ها رو میخواد روشن کنه،البته تو یک ارایه ریخته که بعدا با تغییر اندیس هر پینی که میخوادو روشن کنه
    1UL رو چطوری این دستور معنی میده برام خیلی سواله! :cry:
    volatile unsigned long SysTickCnt;این شمارنده تعداد خاموش روشن شدناس؟
    void SysTick_Handler (void از این شمارنده بالایی برای دونه دونه زیاد شدنش تو تابع استفاده کرده که با تابع زیادش کنه که کارش تمیز دربیاد
    من خیلی تو تعریف تابع delay حیرت زده ام اخه یه جورایی نمیدونم چرا باید کار کنه
    این 2 خطو ببینید:

    systickcnt = SysTickCnt;
    while ((SysTickCnt - systickcnt) < tick);
    خب وقتی این 2تا پشت سر هم اجرا میشن SysTickCnt - systickcnt تفاضلشون همیشه صفره!و این یک while همیشه برقرار میشه!
    SysTick_Config(SystemCoreClock/1000 - 1);اینو از همون دیفاین ها یا هدر فایلا اورده دیگه نه؟تو کامنت جلوشم که کاراش معلومه
    GPIO_SetDir(2, 0x0000007C, 1); اینم شکل دیگه ای از در حالت output قرار دادن یک پورته که بخوایم بنویسیم به ابن شکل هم میشه نوشت:

    LPC_GPIO2->FIODIR = 0x0000007c;
    جالبه که برای یک کار 2تا دستور گذاشتن،کلا ادما به فکری بودنا

    GPIO_ClearValueاین تابع هم برای خاموش کردنه نه؟جالبه اینم یه دستور معادل داره ها :smile:

    GPIO_SetValueاینم برا روشن کردن ال ای دیه دیگه
    for (; هم همون کار while(1) رو میکنه
    حال میکنم اینهمه دستورات یکسان یافتم :biggrin:


    num += dir;
    if (num == LED_NUM) { dir = -1; num = LED_NUM-1; }
    else if (num < 0) { dir = 1; num = 0; }
    اینم دونه دونه ال ای دی ها رو سرشماری میکنه؟ :eek:که چی بشه؟ :eek:
    LED_NUMچطوری کار میکنه؟طریقه کار کردنش تو هدرفایلاس؟
    if (num < 3)اینم که خیلی شیکو مجلسی میخواد بگه 3تا اندیس اول مال پورت 1 و بقیه مال پورت 2 هستن



    #ifdef DEBUG

    void check_failed(uint8_t *file, uint32_t line)
    {

    while(1);
    }
    #endif
    این بودو نبودش به چه درد میخوره؟فکر کنم چون تعریفش نکرده پس تو همون هدرفایلاس که وقتی برنامه اشتباه نوشته شده باشه بهمون میگه

    define ها رو لطفا توضیح بدید و همچنین هدرفایلایی که گرفته مخصوص چه کارایین؟ :sad:

    دیدگاه


      #17
      پاسخ : lpc1768

      منم کلا گیج شدم rashin بزار یکی یکی بررسی کنیم بریم خط های بعد
      اولین نکته این define برای چیه؟؟
      کد:
      #ifdef MCB_LPC_1768
       /* Number of user LEDs */
      #define LED_NUM   8
      const unsigned long led_mask[] = { 1<<28, 1<<29, 1UL<<31, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6 };
      #endif
      برای اینکه بیام پایه ها را مشخص کنیم این کار می کنیم :eek:
      ul چیه؟؟
      I'm Very Question and I have more Question,Please Answer All of my Questions


      [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

      دیدگاه


        #18
        پاسخ : lpc1768

        من همین الان برنامه ی چشمک زنم جواب داد :wow: ؛ اما اصلا نفهمیدم درون این توابع چه اتفاقاتی افتاده و چی به چی شده اینجا :cry:
        فقط برنامه ای که نوشتمو با دردسر و سلام و صلوات کامپایل کردم و روی میکرو ریختم و جواب گرفتم!
        بحث خیلی عالیه ، ادامه بدید لطفاً :read:
        Reveng will surely come... Your hard time are ahead
        // - - - - - - - - - -
        برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
        // - - - - - - - - - -
        اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
        // - - - - - - - - - -

        دیدگاه


          #19
          پاسخ : lpc1768

          نوشته اصلی توسط very question
          منم کلا گیج شدم rashin بزار یکی یکی بررسی کنیم بریم خط های بعد
          اولین نکته این define برای چیه؟؟
          کد:
          #ifdef MCB_LPC_1768
           /* Number of user LEDs */
          #define LED_NUM   8
          const unsigned long led_mask[] = { 1<<28, 1<<29, 1UL<<31, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6 };
          #endif
          برای اینکه بیام پایه ها را مشخص کنیم این کار می کنیم :eek:
          ul چیه؟؟
          #define LED_NUM 8
          داره میگه کلا 8 تا ال ای دی داریم که برای حلقه ها استفاده میشه!!

          const unsigned long led_mask[] = { 1<<28, 1<<29, 1UL<<31, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6 };
          داره به نوعی ادرس پین های که قراره روشون کار بشه رو ذخیره میکنه که باز این روش هم در حلقه ها استفاده میشه!!

          انجام پروژه های برنامه نویسی اندروید
          [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
          http://cafebazaar.ir/app/?id=com.atxdroid

          دیدگاه


            #20
            پاسخ : lpc1768

            const unsigned long led_mask[] = { 1<<28, 1<<29, 1UL<<31, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6 };
            این دستور مثل همون دستورات AVR که عدد 1 شیفت می دادیم می مونه که مثلا با 28 شیفت پایه 28 انتخاب می شه

            معجزه این است که هرچه داشته هایت را بیشتر با دیگران سهیم شوی،داراتر می شوی (لئونارد نیموی)
            اگر مغزانسان،چنان ساده می بود که ما از آن سر در می آوردیم،هنوز چنان احمق بودیم که هیچ از آن سر در نمی آوردیم!
            آموزش Modelsim

            دیدگاه


              #21
              پاسخ : lpc1768

              من هنوز جریان این UL نفهمیدم که چیه و چی کار می کنه oo: oo: :angry: :angry:
              I'm Very Question and I have more Question,Please Answer All of my Questions


              [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

              دیدگاه


                #22
                پاسخ : lpc1768

                سلام فکر کنم بهتره اول یک مثال ساده تر بررسی کنیم که از همین سایت برداشتم خواهش می کنم اساتید در مورد برنامه زیر راهنمایی بفرمایند @};- @};- @};-
                کد:
                 ******************************************************************************
                 **********************************www.ECA.ir**********************************
                 ******************************************************************************/
                
                #include "LPC17xx.h"
                
                
                volatile uint32_t msTicks;              /* counts 1ms timeTicks */
                /*----------------------------------------------------------------------------
                 SysTick_Handler
                 *----------------------------------------------------------------------------*/
                void SysTick_Handler(void) {
                 msTicks++;            /* increment counter necessary in Delay() */
                }
                
                /*------------------------------------------------------------------------------
                 delays number of tick Systicks (happens every 1 ms)
                 *------------------------------------------------------------------------------*/
                __INLINE static void Delay (uint32_t dlyTicks) {
                 uint32_t curTicks;
                
                 curTicks = msTicks;
                 while ((msTicks - curTicks) < dlyTicks);
                }
                
                /*------------------------------------------------------------------------------
                 configer LED pins
                 *------------------------------------------------------------------------------*/
                __INLINE static void LED_Config(void) {
                
                 LPC_GPIO2->FIODIR = 0x000000ff;        /* LEDs PORT2 are Output */
                 LPC_GPIO0->FIODIR = 0x00200000; 
                 LPC_GPIO0->FIOPIN |= 0x00200000; 
                }
                
                /*------------------------------------------------------------------------------
                 Switch on LEDs
                 *------------------------------------------------------------------------------*/
                __INLINE static void LED_On (uint32_t led) {
                
                 LPC_GPIO2->FIOPIN |= (led);         /* Turn On LED */
                }
                
                /*------------------------------------------------------------------------------
                 Switch off LEDs
                 *------------------------------------------------------------------------------*/
                __INLINE static void LED_Off (uint32_t led) {
                
                 LPC_GPIO2->FIOPIN &= ~(led);         /* Turn Off LED */
                }
                
                /*----------------------------------------------------------------------------
                 MAIN function
                 *----------------------------------------------------------------------------*/
                int main (void) {
                 uint8_t location;
                 	
                 if (SysTick_Config(SystemCoreClock / 1000)) { /* Setup SysTick Timer for 1 msec interrupts */
                  while (1);                 /* Capture error */
                 }
                 
                 LED_Config();               
                 
                 while(1) 
                 {
                 	LED_On (0xff);
                	Delay (500);
                	LED_Off(0xff);
                 	for(location=0;location<8;location++)
                	{
                  	LED_On ((1<<location));           /* Turn on the LED. */
                  	Delay (100);                /* delay 100 Msec */
                  	LED_Off ((1<<location));          /* Turn off the LED. */
                  	Delay (100);                /* delay 100 Msec */
                	}
                 }
                 
                }
                I'm Very Question and I have more Question,Please Answer All of my Questions


                [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

                دیدگاه


                  #23
                  پاسخ : lpc1768

                  نوشته اصلی توسط very question
                  من هنوز جریان این UL نفهمیدم که چیه و چی کار می کنه oo: oo: :angry: :angry:
                  مخفف unsigned long هست چون 1>>31 عدد بزرگ ه و باید توی متغیر بدون علامت ذخیره بشه!!



                  جناب پر سوال (very question) شما بهتره خودت برنامه رو بخونی بعد قسمت قسمت بگی اینجاش چرا این جوره ه!!!
                  انجام پروژه های برنامه نویسی اندروید
                  [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
                  http://cafebazaar.ir/app/?id=com.atxdroid

                  دیدگاه


                    #24
                    پاسخ : پاسخ : lpc1768

                    نوشته اصلی توسط محسن فاریابی
                    مخفف unsigned long هست چون 1>>31 عدد بزرگ ه و باید توی متغیر بدون علامت ذخیره بشه!!
                    جناب پر سوال (very question) شما بهتره خودت برنامه رو بخونی بعد قسمت قسمت بگی اینجاش چرا این جوره ه!!!
                    بالاخره یکی جواب داد و باز اقا محسن اگه شما نبوددی ما چی کارم ی کردیم ، خیلی ممنون محسن جان @};- @};- @};- @};-
                    منم دارم همین کار می کنم دیگه خط به خط بررسی می کنم ومی گم اینجا داره چی کار می کنه
                    و همین جا هم قرارش می دم

                    I'm Very Question and I have more Question,Please Answer All of my Questions


                    [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

                    دیدگاه


                      #25
                      پاسخ : lpc1768

                      خب سوال بعدی اینه این خط چی کار می کنه؟؟ (کلا یک جایی بگید ما بریم از اینها سر در بیاریم :angry: :angry
                      volatile uint32_t msTicks; /* counts 1ms timeTicks */
                      I'm Very Question and I have more Question,Please Answer All of my Questions


                      [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

                      دیدگاه


                        #26
                        پاسخ : lpc1768

                        نوشته اصلی توسط very question
                        خب سوال بعدی اینه این خط چی کار می کنه؟؟ (کلا یک جایی بگید ما بریم از اینها سر در بیاریم :angry: :angry
                        volatile uint32_t msTicks; /* counts 1ms timeTicks */
                        تعریف یک متغیر ساده هست به این شکل که
                        volatile به متغیر های اختصاص داده میشه که قراره غبر از مین برنامه از جایه دیگه هم تغیر کنن و در موقع Optimize کردن برنامه توسط کامپایلر این متغیر هیچ جا Optimize نمیشه!!!
                        مثال نیاز بود بگین بزنم!!

                        وuint32_t
                        unsigned integer 32 types
                        متفیر 32 بیتی بدون علامت!!!!!!

                        از کجا یاد بگیریم؟
                        و خداوند گوگل را افرید!!!!
                        انجام پروژه های برنامه نویسی اندروید
                        [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
                        http://cafebazaar.ir/app/?id=com.atxdroid

                        دیدگاه


                          #27
                          پاسخ : lpc1768

                          نوشته اصلی توسط محسن فاریابی
                          تعریف یک متغیر ساده هست به این شکل که
                          volatile به متغیر های اختصاص داده میشه که قراره غبر از مین برنامه از جایه دیگه هم تغیر کنن و در موقع Optimize کردن برنامه توسط کامپایلر این متغیر هیچ جا Optimize نمیشه!!!
                          مثال نیاز بود بگین بزنم!!
                          محسن جان ممنون اینکه گفتی این متغیر هیچ جا توسط کامپایلر optimize نمی شه یعنی چی؟؟
                          خب فکر کنم کلا این دستور یعنی اینکه ما یک متغیر global به نام msTicks درست کردیم که بعدا با اون 1ms می سازیم تا اینجا درسته؟؟
                          I'm Very Question and I have more Question,Please Answer All of my Questions


                          [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

                          دیدگاه


                            #28
                            پاسخ : lpc1768

                            نوشته اصلی توسط very question
                            محسن جان ممنون اینکه گفتی این متغیر هیچ جا توسط کامپایلر optimize نمی شه یعنی چی؟؟
                            خب فکر کنم کلا این دستور یعنی اینکه ما یک متغیر global به نام msTicks درست کردیم که بعدا با اون 1ms می سازیم تا اینجا درسته؟؟
                            پست دوم این رو ببین
                            http://www.eca.ir/forum2/index.php?topic=35819.0
                            msticks هم فقط یه متغیر هست که ممکنه از هر نقطه عدد ش تغیر کنه!!!
                            یعنی باید حتما مثلا توی برنامه ساعت این متغیر تعریف باشه تا تغیر کنه نه این که هر 1 میلی ثانیه تغیر کنه!!!
                            انجام پروژه های برنامه نویسی اندروید
                            [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
                            http://cafebazaar.ir/app/?id=com.atxdroid

                            دیدگاه


                              #29
                              پاسخ : lpc1768

                              نوشته اصلی توسط محسن فاریابی
                              پست دوم این رو ببین
                              http://www.eca.ir/forum2/index.php?topic=35819.0
                              msticks هم فقط یه متغیر هست که ممکنه از هر نقطه عدد ش تغیر کنه!!!
                              یعنی باید حتما مثلا توی برنامه ساعت این متغیر تعریف باشه تا تغیر کنه نه این که هر 1 میلی ثانیه تغیر کنه!!!
                              محسن جان ممنون از پستی که معرفی کردی من تا حالا توی AVR ها این دستورvolatile ندیده بودم و با توضیحاتی که اقایان رستمی و ErfanEA دادند متوجه شدم که چرا کاربرد زیادی در اونجا نداشت ولی شما یک کلمه optimize گفتی ویک دنیا سوال به روی من باز کردی :biggrin:
                              خب الان من هنوز این جمله شما که گفتید موقع Optimize کردن برنامه توسط کامپایلر این متغیر هیچ جا Optimize نمیشه!!! را نفهمیدم
                              من level بندی optimize داخل avrstudio دیده بودم اینجا هم در کامپایلر keil یا IAR چنین چیزی داریم؟؟؟ :eek:
                              I'm Very Question and I have more Question,Please Answer All of my Questions


                              [img width=156 height=100]http://uploadtak.com/images/u3536_555_Timer_as_Astable.gif[/img]

                              دیدگاه


                                #30
                                پاسخ : lpc1768

                                در مورد لول بندی چیزی نمیدونم ولی اپتومیس باعث میشه که حجم کد بیاد پایین مثلا ممکنه شما چند زیر برنامه نوشته باشی که تفاوتشون توی تعریف اسم متغیر و چند خط ساده باشه کامپایلر جای این که بیاد برای هر زیر برنامه یک حجم کد قرار بده میاد از توی اون دوتا یکی میکشه بیرون ولی با همون کارایی و حجم کمتر!!
                                معایبش هم میشه به طولانی شدن محاسبه هر زیر برنامه گفت که ....
                                انجام پروژه های برنامه نویسی اندروید
                                [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
                                http://cafebazaar.ir/app/?id=com.atxdroid

                                دیدگاه

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