اطلاعیه

Collapse
No announcement yet.

چند سوال در رابطه با LPC1768

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

    چند سوال در رابطه با LPC1768

    1)برنامه bootloader میکروهای مختلف LPC را از کجا گیر آورد؟
    2)چرا این برنامه کار نمی کنه؟ چرا خروجی ها معکوس نمی شن؟

    کد:
    void delay()
    {
        int i,j;
        for(i=0;i<2000;i++)
            for(j=0;j<5000;j++);
    }
    
    int main()
    {
    LPC_GPIO0->FIODIR=(1<<21);
        while(1){
        LPC_GPIO0->FIOCLR=~ (LPC_GPIO0->FIOCLR);
            delay();
        }
    }
    3) در برنامه Jflash که می خوام میکرو را پاک کنم خطای Ram check failed @ address 0x2000000 می گیرم و میکرو که شناسایی شده را پاک نمی کنه.
    حسرت PCB

    #2
    پاسخ : چند سوال در رابطه با LPC1768

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

    دیدگاه


      #3
      پاسخ : چند سوال در رابطه با LPC1768

      برای فعال شدن پین ها باید از رجیستر FIOSET و برای غیرفعال شدن از رجیستر FIOCLR استفاده کنید.
      آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

      دیدگاه


        #4
        پاسخ : چند سوال در رابطه با LPC1768

        ممنونم
        من کلی گشتم ولی bootloader پیدا نکردم روی سی دی برد آموزشی LPC1768 هم بوت لودری برای این میکرو وجود نداشت.اگر آدرسی که بشه ازش دانلود کرد را بذارین عالیه

        راهی وجود نداره که بشه با نات کردن ریجیسترهای خود میکرو وضعیت پایه را عوض کرد؟چون می شه متغییر تعریف کرد اما می خوام خودکار باشه
        حسرت PCB

        دیدگاه


          #5
          پاسخ : چند سوال در رابطه با LPC1768

          فکر نمیکنم بشه پایه رو نات کرد چون رجیستر های ست و ریستش جداست
          وضعیت پایه رو بخونید و با یه شرط وضعیتش رو معکوس کنید
          بوت لودر هم داخل همین سایت دیدم یه سرچ بکن هست

          دیدگاه


            #6
            پاسخ : چند سوال در رابطه با LPC1768

            با سلام
            برای not کردن کل پورت یا بخشی از اون میتونید از رجیستر FIOnPIN استفاده کنید...هر مقداری که درون این رجیستر قرار بگیره بلافاصه روی پورت هم اعمال میشه والبته برای خواندن پورت هم کاربرد داره...
            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

            www.intelart.ir


            ساخت کنترلر دما PID فازي با AVR [آموزشی]

            دیدگاه


              #7
              پاسخ : چند سوال در رابطه با LPC1768

              سلام
              من در کد زیر به میکرو سویچ به پین 16 پورت صفر وصل کردم و به پین 20 پورت صفر هم یک ال ای دی، اما با روشن شدن میکرو ال ای دی همش روشن هست

              کد:
              #include <LPC17xx.H>
              
              
              
              void delay()
              {
                  int i,j;
                  for(i=0;i<2000;i++)
                      for(j=0;j<5000;j++);
              }
              
              int main()
              {
              LPC_GPIO0->FIODIR=0x0;
              LPC_GPIO0->FIODIR=(1<<20);
                  
                      while(1){
                          LPC_GPIO0->FIOPIN=(~(LPC_GPIO0->FIOPIN & (1<<16)))<<20;
                      
                  }
                  }
              مشکل من چیه؟
              حسرت PCB

              دیدگاه


                #8
                پاسخ : چند سوال در رابطه با LPC1768

                خب این کد رو در هر دوحالت که بررسی کنید پین 20 مقدار 1 میگیره...
                قصدتون از این کد چی هست؟
                تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                www.intelart.ir


                ساخت کنترلر دما PID فازي با AVR [آموزشی]

                دیدگاه


                  #9
                  پاسخ : چند سوال در رابطه با LPC1768

                  نوشته اصلی توسط Ehsantech نمایش پست ها
                  سلام
                  من در کد زیر به میکرو سویچ به پین 16 پورت صفر وصل کردم و به پین 20 پورت صفر هم یک ال ای دی، اما با روشن شدن میکرو ال ای دی همش روشن هست

                  کد:
                  #include <LPC17xx.H>
                  
                  
                  
                  void delay()
                  {
                      int i,j;
                      for(i=0;i<2000;i++)
                          for(j=0;j<5000;j++);
                  }
                  
                  int main()
                  {
                  LPC_GPIO0->FIODIR=0x0;
                  LPC_GPIO0->FIODIR=(1<<20);
                      
                          while(1){
                              LPC_GPIO0->FIOPIN=(~(LPC_GPIO0->FIOPIN & (1<<16)))<<20;
                          
                      }
                      }
                  مشکل من چیه؟
                  شما میکرو رو انداختی تو یه لوپ بینهایت و بدون هیچ گونه تاخیری داری پین رو قطع و وصل میکنی .... یعنی این LED بیچاره داره یه چیزی حدود 5 میلیون بار در ثانیه روشن و خاموش میشه ... چطوری میخوای روشن و خاموش شدنشو ببینی ؟؟؟؟

                  دیدگاه


                    #10
                    پاسخ : چند سوال در رابطه با LPC1768

                    ایشون متد delay رو تعریف کردن ولی یادشون رفته استفاده کنن...
                    به جز اون اصلا مقدار پین 20 همیشه 1 هست!
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


                    ساخت کنترلر دما PID فازي با AVR [آموزشی]

                    دیدگاه


                      #11
                      پاسخ : چند سوال در رابطه با LPC1768

                      سلام
                      ببینین من کجا را اشتباه رفتم
                      کد:
                      LPC_GPIO0->FIODIR=0x0;
                      LPC_GPIO0->FIODIR=(1<<20);
                      تمام پین های پورت صفر به عنوان ورودی( به جز پین 20 به صورت خروجی) تعریف شده


                      کد:
                      while(1){
                                  LPC_GPIO0->FIOPIN=(~(LPC_GPIO0->FIOPIN & (1<<16)))<<20;
                              
                          }
                      در کد بالا مقدار پایه ورودی (پین 16) با مقدار 1000000000000000 اند می شود که در صورتی که دکمه فشار داده شود( وقتی دکمه زده می شه ورودی باید صفر بخونه) مقدار LPC_GPIO0->FIOPIN & (1<<16) مقدار صفر برگشت می ده و با معکوس کردن این مقدار(مثلا صفر را به یک تبدیل می کنه) و با شیفت این مقدار به مکان 20 ام این ریجیستر وضعیت پایه شماره بیست را تغییر می دهد.

                      شما میکرو رو انداختی تو یه لوپ بینهایت و بدون هیچ گونه تاخیری داری پین رو قطع و وصل میکنی .... یعنی این LED بیچاره داره یه چیزی حدود 5 میلیون بار در ثانیه روشن و خاموش میشه ... چطوری میخوای روشن و خاموش شدنشو ببینی ؟؟؟؟
                      مفهوم برنامه این هست که تا وقتی دکمه فشار داده شده باشه خروجی فعال و با قطع دکمه خروجی غیرفعال شود . در صورتی که دکمه فشار داده نشود یا شود تغییر وضعیت که نداره که در میکرو ثانیه خاموش و روشن بشود!(یا شاید من طرز کارش را نفهمیدم)
                      حسرت PCB

                      دیدگاه


                        #12
                        پاسخ : چند سوال در رابطه با LPC1768

                        آها ...
                        ببین شما داری کل پورت رو با 16 AND میکنی ..... تا اینجن مشکل نیست ....
                        ولی نتیجه اینو داری 20 تا شیفت میدی ....
                        مشکلت همینجاست .....
                        خروجی AND پورت با یک بیت یک عدد 32 بیتی هستش و شما میخوای یک عدد 32 بیتی رو N بار شیفت بدی ....
                        یعنی مثلا اگر مقدار پورت شما شد 0x1000000000000 یعنی داری همچین عددی رو 20 تا شیفت میدی ک این اشتباهه ....
                        اگر مشکلی هست بگو تا بهت بگم ...


                        دلیل: ادغام دو پست برای جلوگیری از اسپم

                        مثلا میتونی اینطوری بنویسی :

                        while(1)
                        ( LPC_GPIO0->FIOPIN & (1<<16) ) ? ( LPC_GPIO0->FIOPIN |= 1<<20 ) : ( LPC_GPIO0->FIOPIN &= ~(1<<20) );

                        یا اینطوری :

                        while(1)
                        LPC_GPIO0->FIOPIN = ( ~( LPC_GPIO0->FIOPIN & (1<<16) ) ) << 4;
                        جدیدترین ویرایش توسط microprocesor_2002; ۱۴:۲۷ ۱۳۹۵/۰۴/۲۹.

                        دیدگاه


                          #13
                          پاسخ : چند سوال در رابطه با LPC1768

                          برای ست کردن یا ریست کردن یا خواندن به صورت بیتی از یک رجیستر از ماکرو های زیر استفاده کنید:

                          #ifndef gbi
                          #define gbi(port,bit) ( ( (port) & (1 << (bit) ) ) >> (bit) )
                          #define cbi(port, bit) (port) &= ~(1 << (bit))
                          #define sbi(port, bit) (port) |= (1 << (bit))
                          #endif
                          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                          www.intelart.ir


                          ساخت کنترلر دما PID فازي با AVR [آموزشی]

                          دیدگاه

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