اطلاعیه

Collapse
No announcement yet.

رجیستر PINCON->PINSEL در LPC1768

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

    رجیستر PINCON->PINSEL در LPC1768

    سلام دوستان
    من طریقه ی کار با این رجیستر رو به مقدار خیلی کم در حد اینکه بدونم PINSEL0 باشه یا 1 یا ...رو فهمیدم

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

    دیدم بعضی ها این طوری مینویسن مثلا
    LPC_PINCON->PINSEL0 |=(3<<30);
    یا مثلا اینجوری
    LPC_PINCON->PINSEL1 |=(0xf<<2);
    من این قسمت های آخر رو نفهمیدم تا حدودی . در بعضی جا ها دیدم که اون قسمت آخر رو نمینویسن و فقط یه عدد مینویسن
    البته یه جدول مخصوص داره که اونم یه نگاهی کردم
    اگه میشه یه توضیح بدید و منو رها کنید
    تشکر
    جدیدترین ویرایش توسط Ramin1768; ۰۱:۴۵ ۱۳۹۵/۰۴/۱۸.

    #2
    پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

    سلام
    پاسخ شما در پست زیر نوشته شده است:
    سلام مدتی در این فکر بودم که روشی واسه مقدار دادن به رجیسترها در زبان سی پیدا کنم که هم نیازی به تایپ وقت گیر نداشته باشه و هم از طرفی خوانایی برنامه رو افزایش بده جوری که با یه نگاه به اون خط بشه فهمید کدوم بیت ها از رجیستر مورد نظرمون 1 شده...این شد که سعی کردم یه برنامه با سی شارپ واسه این کار بنویسم که شرحش در ادامه هست...


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

    www.intelart.ir


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

    دیدگاه


      #3
      پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

      سلام
      ممنون از پاسخ تون
      بله شیوه ی نوشتن مقدار در رجیستر ها رو بلدم اما یه جدول که واسه PINSELهست رو نفهمیدم که مثلا کانال ADC ۷ که میشه P0.2 رو از PIO به ADC که فکر میکنم وظیفه ی سوم اون پایه میشه رو تبدیل کنم من هر کاری کردم نشد
      اگه میشه یه توضیحی تو نوشتنش بدید که ببینم مشکلش کجاست

      دیدگاه


        #4
        پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

        خواهش مکینم

        ببینید مثلا قراره P0.2 رو تغییر کاربری بدید و AD0.7 رو بهش متصل کنید.
        خب با نگاه به جدول متوجه میشیم که باید بیت های 5 و 4 رو تغییر بدیم.(داخل پرانتز عرض کنم که بیت 5 یعنی بیت شماره ششم از سمت راست.چون که شروع شمارش از 0 هست نام بیت ها رو به این صورت هم بیان میکنند:بیت0 یا بیت 1 یا بیت 5 یا ...)

        طبق جدول باید بیت 5 مقدار 1 و بیت 4 مقدار 0 داشته باشه.
        خب پس میتونیم به این صورت مقدار دهی کنیم:


        LPC_PINCON->PINSEL0=(1<<5);


        الان رجیستر PINSEL0 از منظر باینری به این صورت هست:


        PINSEL0=0B00000000000000000000000000100000;


        دقت کنید که اگر قرار هست مقدار یک رجیستر رو آپدیت کنید و مایلید که بیتهای دیگرش تغییر نکنند باید حتما مقدار مدنظرتون رو با اون رجیستر OR بیتی کنید.به این صورت:


        LPC_PINCON->PINSEL0=|(1<<5);


        خب کاری که کردیم این بود که عدد 1 رو 5بار به سمت چپ شیفت دادیم و سپس از عدد حاصل برای مقدار دهی یک رجیستر استفاده کردیم(در حالت اول مقدارش رو درون رجیستر ریختیم و در حالت دوم مقدار رجیستر رو با عدد جدید آپدیت کردیم)


        (1<<5)=0B10000
        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

        www.intelart.ir


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

        دیدگاه


          #5
          پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

          سلام .واقعا ممنون. خیلی کمک کرد .پس بیت 4 رو تغییرش نمیدیم و بیت 5 رو 1 میکنیم ؟همیشه اون عدد بزرگ ه رو تغییر میدیم؟و یه سوال دیگه این که من الان این تغییر رو تو برنامم دادم و adc فعال شد حالا اگه بخوام txd0 که وظیفه دوم اون پایه هست ش بکنم باید چیکار کنم؟ممنون

          دیدگاه


            #6
            پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

            نوشته اصلی توسط Ramin1768 نمایش پست ها
            سلام .واقعا ممنون. خیلی کمک کرد .پس بیت 4 رو تغییرش نمیدیم و بیت 5 رو 1 میکنیم ؟همیشه اون عدد بزرگ ه رو تغییر میدیم؟و یه سوال دیگه این که من الان این تغییر رو تو برنامم دادم و adc فعال شد حالا اگه بخوام txd0 که وظیفه دوم اون پایه هست ش بکنم باید چیکار کنم؟ممنون
            نه ببینید شما باید مقدار رو از جدول بخونید.جدول زیر رو ببینید:




            همونطور که میبینید برای P0.2 نوشته 5:4 ...معنیش این هست که بیت های 5 و 4 باید برای کاربری مدنظرتون تغییر بدید...حالا اون بالای جدول رو ببنید ...یه جا نوشته Function when 00 کنارش نوشته Function when 01 و به همین ترتیب..یعنی شما برای متصل کردن AD0.7 باید از Function when 10 استفاده کنید....یعنی چی؟



            10->5:4


            یعنی مقدار 10 رو روی بیت 5 و 4 قرار بدید.یعنی بیت 5 مقدار 1 و بیت 4 مقدار 0 داشته باشه....از اونجایی ه در سمت راست مقدار دیفالت بیت ها رو 0 در نظر گرفته یعنی شما کافیه تنها بیتهایی رو بنویسید که باید مقدار 1 داشته باشند..

            حالا اگر بخواهید TXD0 رو متصل کنید باید از function when 01 استفاده کنید.یعنی به صورت زیر:


            LPC_PINCON->PINSEL0=(1<<4);


            حالا فرض کنید که MAT2.0 را میخواهید به P0.6 متصل کنید.باید از function when 11 استفاده کنید...یعنی باید بیت های 13:12 مقدار 1 بگیرند...به صورت زیر:


            LPC_PINCON->PINSEL0=(3<<13);


            در بالا عدد 11 باینری که معادل 3 دسیمال هست رو 13 بار به سمت چپ شیفت دادیم...نتیجه این میشه که عدد 11 باینری در خونه های 13 و 12 رجیستر مذکور قرار میگیره...
            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

            www.intelart.ir


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

            دیدگاه


              #7
              پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

              آهان
              حالا فهمیدم
              خیلی ممنون . خیلی بهم کمک کرد
              حالا یه سوال خارج از بحث
              من خواستم دو کانال 6و7 adc رو با کتابخانه ی cmsis راه بندازم . هر کاری کردم نشد دو تا رو با هم بخونم فقط کانال 6 خونده میشد . مشکل دست چی میتونه باشه؟

              دیدگاه


                #8
                پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

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

                www.intelart.ir


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

                دیدگاه


                  #9
                  پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

                  به نظر شما cmsis سخت تره یا رجیستر؟

                  دیدگاه


                    #10
                    پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

                    خب مسلما CMSIS برای این طراحی شد که سرو کله زدن با رجیسترها کم بشه و بشه خیلی راحت با انواع میکروکنترلرها کار کرد...
                    به همین خاطر باید آسونتر باشه ولی من کار کردن با رجیستر ها رو ترجیح میدم
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


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

                    دیدگاه


                      #11
                      پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

                      بله .حق با شماست
                      من الان دوست دارم با رجیستر کار کنم و کتاب آقای خوش باطن رو هر چی مطالعه میکنم توش گیر میکنم
                      و بع رفتم کتاب آقای سهند سید سجادی رو خریدم که با cmsis هست و ان رو هم مطالعه میکنم میبینم برای یه مبتدی سنگینه و قشنگ مثال کار نکرده
                      و من میان این دو گیر کردم و مزاحم eca و شما میشم
                      به نظر شما من باید چیکار کنم؟

                      دیدگاه


                        #12
                        پاسخ : رجیستر PINCON-&gt;PINSEL در LPC1768

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

                        ببنید هر کدوم مزیت های خودش رو داره دیگه...اگه میخاید که به سخت افزار نزدیک بشید خب باید برید سراغ رجیستر ها ولی اگه میخاید سریع کارتون راه بیفته میتونید برید سراغ CMSIS

                        هرکس یه روش واسه کار خودش داره...مثلا ممکنه یک نفر با CMSIS راحته...خب با همون کدهاش رو مینویسه و میدونه که در آینده اگه بره سراغ میکروی دیگه نمیخاد ک مطلب جدیدی یاد بگیره و همون CMSIS اونجا به کمکش میاد...یک نفر ممکنه کار کردن مستقیم با رجیسترها رو ترجیح بده و ممکنه حتی شخص دیگه خودش واسه خودش کتابخانه بنویسه...یعنی با رجیسترها کار کنه ویکبار برای همیشه کتابخانه های مفیدی واسه خودش طراحی کنه...
                        مطالعه لینک زیر میتونه مفید باشه:
                        So I'm switching from PICs to ARM and I bought an STM32F4 discovery board. So far I understand that to program it you can either access all registers directly in memory (obvious way) and also there...
                        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                        www.intelart.ir


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

                        دیدگاه

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