اطلاعیه

Collapse
No announcement yet.

کار با پورت و پین ها

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

    کار با پورت و پین ها

    سلام
    من با دقت دیتاشیت را خواندم ولی به غیر از رجیستر های DIR و OUT و IN که برای ورودی خروجی کردن-ست و ریست کردن-نمایش وضعیت پایه هستند رجیسترهایی با پسوند SET-CLR-TGL را تا حدودی سر در آوردم ولی دقیق نفهمیدم اگه میشه این و Virtual Port یک توضیح کامل دهید و فواید آن را بیان کنید باتشکر

    #2
    پاسخ : کار با پورت و پین ها

    یکی از امکانات جالبی که در خانواده XMEGA به منظور افزایش سرعت در تغییر پورتها وجود دارد، رجیستر های OUTSET و OUTCLR و OUTTGL و همچنین DIRSET و DIRCLR و DIRTGL برای هر پورت است. در AVR های معمولی برای تغییر همزمان چند خروجی و یا تغییر همزمان جهت چند بیت در یک پورت و بدون اینکه در وضعیت بقیه بیت ها تغییری ایجاد شود، باید یک عملیات Read-Modify-Write انجام شود. یعنی ابتدا باید وضعیت فعلی خوانده شود و تغییر مورد نظر روی آن انجام شود و مجددا در جای خود نوشته شود. اینکار در برنامه نویسی سطح بالا ممکن است ظاهرا در یک دستور انجام شود اما در سطح اسمبلی حداقل 3 دستور را اشغال می کند. اما وجود این رجیسترها باعث می شود که بدون خواندن وضعیت فعلی پورت از نظر مقدار یا جهت، مقدار هر بیت دلخواه آنرا Set یا Reset یا Toggle کنیم. نوشتن یک در هر بیت این رجیسترها، این عمل را روی پورت متناظر آن از نظر مقدار یا جهت انجام می دهد.
    مثلا اگر قرار دهیم PORTA_OUTTGL=0X0F در اینصورت 4 بیت پائین PORTA همگی NOT می شوند. در معادل اسمبلی این امکان می تواند سرعت عملیات را تا 3 برابر افزایش دهد و وجود این رجیسترها می تواند منجر به یک بهبود کلی در سرعت اجرای برنامه به ازای یک کلاک ثابت گردد.
    بحث Virtual port در تاپیک برنامه نویسی اسمبلی توضیح داده خواهد شد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #3
      پاسخ : کار با پورت و پین ها

      با تشکر از جناب طراح
      استاد اگر ما بخواهیم مثلا پورت A رو مساوی یه متغییر و B رو مساوی یه متغییر دیگه قرار بدیم بطوریکه که بالا ترین سرعت رو داشته باشیم توی اسمبلی باید چی کار کنیم؟
      :read:
      الهم عجل لولیک الفرج

      فقط 313 نفر...

      دیدگاه


        #4
        پاسخ : کار با پورت و پین ها

        نوشته اصلی توسط FAM
        اگر ما بخواهیم مثلا پورت A رو مساوی یه متغییر و B رو مساوی یه متغییر دیگه قرار بدیم بطوریکه که بالا ترین سرعت رو داشته باشیم توی اسمبلی باید چی کار کنیم؟
        مثال برای XMEGA

        LDI R16,100
        STS PORTA_OUT,R16
        LDI R16,5
        STS PORTB_OUT,R16


        مثال برای AVR

        LDI R16,100
        OUT PORTA,R16
        LDI R16,5
        OUT PORTB,R16
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #5
          پاسخ : کار با پورت و پین ها

          Virtual Port را همینجا توضیح دهید من علاقه ای به اسمبلی ندارم :NO: اگه میشه مثال C هم به کار ببرید :applause:

          دیدگاه


            #6
            پاسخ : کار با پورت و پین ها

            استفاده از Virtual port بخاطر استفاده از دستورات IN و OUT در زبان اسمبلی است و برای افزایش بیشتر سرعت است. به همین دلیل لازم است در همان بخش برنامه نویسی اسمبلی توضیح داده شود. اما مثال C آن هم ذکر خواهد شد.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #7
              پاسخ : کار با پورت و پین ها

              در مورد CLR هم توضیح بدید وظیفه اش را

              دیدگاه


                #8
                پاسخ : کار با پورت و پین ها

                نوشته اصلی توسط شهریار رجب زاده
                در مورد CLR هم توضیح بدید وظیفه اش را
                نوشتن یک در هر بیت رجیستر PORTx_OUTCLR، بیت متناظر آنرا در PORTx_OUT صفر می کند.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #9
                  پاسخ : کار با پورت و پین ها

                  لطفا
                  در مورد رجیستر های اینتراپت توضیح دهید
                  لطفا به سوالات زیر پاسخ دهید
                  یک سوال XMEGA دو اینتراپت دارد که توسط هر پایه ای از پورت ها قابل فعال شدن است؟
                  در رجیستر PINxCTRL کنترل پایه ای با شماره خاص در همه پورت ها انجام میگیرد؟
                  رجیستر های MASK چطور؟
                  رجیستر های Virtual Port ,Actual Port با یکدیگر تفاوت خاصی ندارند پس با توجه به اینک می شود حداثر چهار پورت را به عنوان Virtual Port تعریف کرد مزیت Virtual Port نسبت به Actual Port در برنامه نویسی C چیست؟اسمبلی نه :NO:

                  دیدگاه


                    #10
                    پاسخ : کار با پورت و پین ها

                    نوشته اصلی توسط شهریار رجب زاده
                    لطفا
                    در مورد رجیستر های اینتراپت توضیح دهید
                    لطفا به سوالات زیر پاسخ دهید
                    یک سوال XMEGA دو اینتراپت دارد که توسط هر پایه ای از پورت ها قابل فعال شدن است؟
                    در رجیستر PINxCTRL کنترل پایه ای با شماره خاص در همه پورت ها انجام میگیرد؟
                    رجیستر های MASK چطور؟
                    رجیستر های Virtual Port ,Actual Port با یکدیگر تفاوت خاصی ندارند پس با توجه به اینک می شود حداثر چهار پورت را به عنوان Virtual Port تعریف کرد مزیت Virtual Port نسبت به Actual Port در برنامه نویسی C چیست؟اسمبلی نه :NO:
                    شما در هر موردی که اشکال دارید ابتدا با دقت Datasheet و Application note مربوط به سوال را از سایت Atmel مطالعه کنید و بعد اگر مورد سوال برای شما برطرف نشد در اینجا بصورت جزئی و موردی و نه یک پرسش کلی سوال بپرسید تا اگر کسی در این مورد اطلاعات کافی داشت و وقت او هم اجازه می داد، به سوال شما پاسخ بدهد.

                    در پاسخ به آخرین پرسش شما، استفاده از virtual port از منظر برنامه نویس در زبان C هیچ تفاوتی ایجاد نمی کند و بلکه کد را پیچیده تر هم می کند. اما در سطح کد معادل اسمبلی، اجرای برنامه را در زمان کمتری میسر می کند.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      #11
                      پاسخ : کار با پورت و پین ها

                      راستش من صبح تا شب شایدم شب تا صبح oo: دیتاشیت را دستم گرفتم وهر چه قدر سوادم اجازه بدهد می فهمم حداقل در مورد در مورد
                      نوشته اصلی توسط شهریار رجب زاده
                      در مورد رجیستر های اینتراپت توضیح دهید
                      توضیح نمی دادید
                      و به بقیه می پرداختید مثلا:
                      یک سوال XMEGA دو اینتراپت دارد که توسط هر پایه ای از پورت ها قابل فعال شدن است؟
                      در رجیستر PINxCTRL کنترل پایه ای با شماره خاص در همه پورت ها انجام میگیرد؟
                      رجیستر های MASK چطور؟
                      خلاصه اینکه من تلاشم را میکنم که دیتاشیت رابفهمم و اینکه سوالات کلی میپرسم روی بیسوادی من حساب کنید

                      دیدگاه


                        #12
                        پاسخ : کار با پورت و پین ها

                        نوشته اصلی توسط شهریار رجب زاده
                        یک سوال XMEGA دو اینتراپت دارد که توسط هر پایه ای از پورت ها قابل فعال شدن است؟
                        در رجیستر PINxCTRL کنترل پایه ای با شماره خاص در همه پورت ها انجام میگیرد؟
                        رجیستر های MASK چطور؟
                        تمام پورت های XMEGA قابلیت تولید دو وقفه خارجی را دارند.
                        هر پین یک پورت برای خود رجیستر مخصوصی دارد که مد آن پورت را تعیین می کند. بنابراین برای 8 بیت از یک پورت عملا 8 رجیستر مجزا وجود دارد. مثلا برای PORTA این رجیسترها از PORTA_PIN0CTRL تا PORTA_PIN7CTRL نامگذاری می شوند. برای امکان تغییر سریع در محتوای همه این رجیسترها، رجیستری با نام PORTCFG_MPCMASK وجود دارد که ابتدا بیت هایی در یک پورت را که می خواهیم تغییر دهیم در این رجیستر یک می کنیم و بعد اگر در یکی از رجیسترهای PINx_CTRL مقداری نوشته شود، روی تمام رجیسترهایی که بیت متناظر آنها در PORTCFG_MPCMASK یک باشد، همان مقدار نوشته می شود.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه


                          #13
                          پاسخ : کار با پورت و پین ها

                          یعنی XMEGA فقط دارای دو اینتراپت است؟؟؟؟؟؟؟؟؟؟ :eek: :eek: :eek:

                          دیدگاه


                            #14
                            پاسخ : کار با پورت و پین ها

                            شهریارجان، جناب طراح فرمودند "تمام پورت های XMEGA قابلیت تولید دو وقفه خارجی را دارند."
                            یعنی اگه مثلا 4تا پورت داشته باشه، 4*2=8 تا اکسترنال اینتراپت داره.
                            تازه این غیراز کلی اینتراپت دیگه مثل آنالوگ و تایمر/کانتر و کپچر و ....... است.

                            /

                            ......
                            icon_wink
                            {خلاف قوانین - امضا ویرایش شد}

                            دیدگاه


                              #15
                              پاسخ : کار با پورت و پین ها

                              1- برای خوندن یک پین در xmega چه کار باید کرد ؟ مثلا پین 5 ام پورت آ
                              2- در سری mega میشد 0 و 1 ها رو تو یک حلقه for روی یک پین ارسال کرد.
                              مثلا PORTD.2=test[i]
                              حالا تو xmega میخوام یک آرایه از 0 و1 ها رو روی یک پین ارسال کنم چطوری باید این کارو انجام بدم؟

                              دیدگاه

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