اطلاعیه

Collapse
No announcement yet.

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

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

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

    یک سوال دیگه!
    خب دیگه ناشی ام :mrgreen:
    می گویند سری جدید xmega یو اس بی دارند درسته؟
    خب باید به کدام پایه ها d+ و d- را وصل کرد!
    http://eshop.eca.ir/product_info.php?cPath=31_123_84&products_id=1 237
    ممنون. یک ذره هم برای ما وقت بگذارید دیگه!
    [glow=red,2,300]برنامه هاي آموزشي تست شده براي NXP LPC1768 با توابع CMSIS[/glow]
    http://www.eca.ir/forum2/index.php?topic=76623.0

    دیدگاه


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

      نوشته اصلی توسط Reza Sede
      خب فهمیدم ولی این میکرو چندین خروجی OC0A,OC0B,OC0C,OC0D داره خب وقتی روی یکی موجی می فرستیم روی همه میره oo:
      وای این جوری که خیلی بده!
      اگر جوری دیگه است توضیح دهید.
      ممنون
      ولی برنامه نویسی اش چطوری است!
      با توجه به نوع سوالات شما، من به شما توصیه می کنم که قبل از پرداختن به XMEGA، بخش هایی از فیلم آموزش AVR را که در مورد عملکرد تایمر 1 و خروجی های PWM است از سایت پارات دریافت و مشاهده کنید.

      نوشته اصلی توسط Reza Sede
      می گویند سری جدید xmega یو اس بی دارند درسته؟
      خب باید به کدام پایه ها d+ و d- را وصل کرد!
      در همان فصلی که در انتهای Datasheet برای عملکرد پین ها وجود دارد، قابل مشاهده است که PD6 برای -D و PD7 برای +D اختصاص داده شده است.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


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

        #define RESE PORTA_OUT.5
        #define CS PORTA_OUT.4
        #define SDATA PORTA_OUT.3
        #define CLKk PORTA_OUT.2
        #define BACKLIGHT PORTA_OUT.1
        من توی این کد ها که از کد ویژن وارد کردم مشکل دارم
        نمیدونم با چه دستوری میتونم یک بیت رو در یک بایت ریجیستر دست داری کنم
        مانند دستور بیسکامی
        SET PORTB.1
        یا تغیر نام بیسکامی
        PORTB.1 ALIAS HAMED

        اضافه شده در تاریخ :
        کد:
        #define RESE    PORTA_OUT.5
        #define CS      PORTA_OUT.4
        #define SDATA    PORTA_OUT.3
        #define CLKk     PORTA_OUT.2
        #define BACKLIGHT  PORTA_OUT.1

        اضافه شده در تاریخ :
        قضیع پرت مجازی چیه :cry2:
        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

        دیدگاه


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

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

          دیدگاه


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

            جناب کی نزاد متاسفانه نتونستم اطلاعاتی رو در این باره پیدا کنم
            فقط هدف من تغیر نام یک پایه هست
            توی یک لایب که در محیط کد ویژن نوشته شده و مخصوص lcd نوکیا است
            برنامه طوری نوشته شده که بشه هر پایه ای رو به عنوان خروجی برای پایه های lcd تعیرف کرد
            مثلا در کد ویژن
            کد:
            #define CS      PORTA_OUT.4
            پایه cs lcd رو به پورت a.4
            ربط میده
            حالا نمیدونم چهطور این دستور رو در اتمل استدیو کانفیگ کنم
            دستوری برای دسترسی به یک بیت از یک پورت میخوام
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


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

              برای کار با پین ها می توانید از انواع ماکروهای دلخواه استفاده کنید. مثلا سه ماکرو زیر برای Set و Clear و Toggle کردن پین دلخواه از پورت دلخواه می تواند مورد استفاده قرار بگیرد. در داخل پرانتز در محل اول نام پورت (که باید حتما با حروف بزرگ نوشته شود) و در محل دوم شماره بیت دلخواه در محدوده 0 تا 7 نوشته می شود:

              کد:
              #define SetPin(port,pin) PORT##port.OUTSET=1<<pin;
              #define ClearPin(port,pin) PORT##port.OUTCLR=1<<pin;
              #define TogglePin(port,pin) PORT##port.OUTTGL=1<<pin;


              مثلا:

              کد:
              SetPin(D,7);
              ClearPin(A,0);
              TogglePin(B,2);
              اوژن: به معنای افکننده و شکست دهنده است
              دانایی، توانایی است-Knowledge is POWER
              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

              دیدگاه


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

                با تشکر همین ایراد برنامه نویسی منو بسیار راهنمایی کرد و خیلی چیز ها یاد من داد نمونه کد بنده این شد شاید به درد بخوره ؟
                برنامه زیر پین k,1 از میکرو رو به ضورت خروجی قرار داده و ان را به صورت چشمک زن قرار میدهد
                لارم به ذکر است برنامه در یک حلقه پایه k 1 را روشن کرده بعد از 1 ثانیه دباره خاموش میکند بعد از یک ثانیه داخل حلقه for 9 بار پایه k1 را تغیر وضعیت میدهد
                (با فاصله زمانی 50 میلی ثانیه )
                کد در محیط اتمل استدیو تست شده و کاملا جواب میدهد
                میکرو مورد استفاده بنده
                atxmega64a1
                می باشد با تشکر فراوان از برادر و استاد ارجمند اقای کی نژاد
                کد:
                /*
                 * pin_alias.c
                 *
                 * Created: 6/27/2013 12:02:32 PM
                 * Author: hamed
                 */ 
                
                
                #include <avr/io.h>
                # define F_CPU 2000000UL
                #include <avr/delay.h>
                int main(void)
                {
                #define Pinoutput(port,n) PORT##port.DIRSET=1<<n; //out put for pin 
                #define Pininput(port,n) PORT##port.DIRCLR=1<<n; //input for pin
                #define TogglePin(port,n) PORT##port.OUTTGL=1<<n; // toggle pin status
                #define SetPin(port,n) PORT##port.OUT=1<<n;    // set one pin status
                #define resetPin(port,n) PORT##port.OUT=0<<n;     // reset one pin status 
                Pinoutput(K,1);
                int i;
                  while(1)
                  {
                		SetPin(K,1);
                	
                	 _delay_ms(1000);
                resetPin(K,1);
                
                _delay_ms(1000);
                
                
                 for ( i=0;i<=9;i++){
                 
                TogglePin(K,1);
                _delay_ms(50);
                 }
                
                  }
                }

                اضافه شده در تاریخ :
                یادتون نره نام پورت حتما حروف بزرگ باشد
                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                دیدگاه


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

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

                  دیدگاه


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

                    با سلام خدمت اساتید گرامی.

                    بنده مشکلی با یکی از سورس های اتمل در کامپایلر atmel-studio دارم.
                    در کتابخانه راه انداز پورت ها با نام port_driver توابعی برای راه اندازی پورت های مجازی وجود دارد که به شکل زیر هستند.
                    کد:
                    void PORT_MapVirtualPort0(PORTCFG_VP0MAP_t realPort);
                    void PORT_MapVirtualPort1(PORTCFG_VP1MAP_t realPort);
                    void PORT_MapVirtualPort2(PORTCFG_VP2MAP_t realPort);
                    void PORT_MapVirtualPort3(PORTCFG_VP3MAP_t realPort);
                    اما اصلا نوع هایی مثل PORTCFG_VP0MAP_t در کامپایلر شناخته نمی شوند.

                    دیدگاه


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

                      در header های برخی شماره های جدید مانند سری AU، بعضی از تعاریف تغییر کرده که باعث این خطا می شود. مثلا برای ATXMEGA128A3 جزئیات enum به این صورت است:

                      کد:
                      typedef enum PORTCFG_VP0MAP_enum
                      {
                        PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */
                        PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */
                        PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */
                        PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */
                        PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */
                        PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */
                        PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */
                        PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */
                        PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */
                        PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */
                        PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */
                        PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */
                        PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */
                        PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */
                        PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */
                        PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */
                      } PORTCFG_VP0MAP_t;


                      اما برای ATXMEGA128A3U محتوای enum به این شکل تغییر یافته است:

                      کد:
                      typedef enum PORTCFG_VP02MAP_enum
                      {
                        PORTCFG_VP02MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */
                        PORTCFG_VP02MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */
                        PORTCFG_VP02MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */
                        PORTCFG_VP02MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */
                        PORTCFG_VP02MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */
                        PORTCFG_VP02MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */
                        PORTCFG_VP02MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */
                        PORTCFG_VP02MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */
                        PORTCFG_VP02MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */
                        PORTCFG_VP02MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */
                        PORTCFG_VP02MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */
                        PORTCFG_VP02MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */
                        PORTCFG_VP02MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */
                        PORTCFG_VP02MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */
                        PORTCFG_VP02MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */
                        PORTCFG_VP02MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */
                      } PORTCFG_VP02MAP_t;


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

                      دیدگاه


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

                        سلام دوستان
                        میتونم همزمان با اینکه از ADC استفاده میکنم، از پایه های خالی XMEGA به عنوان ورودی وخروجی معمولی استفاده کنم؟
                        مثلا:
                        PORTA.0 ---> ADC Refrence
                        PORTA.1 ---> ADC0
                        PORTA.2 ---> ADC1
                        PORTA.4 ---> LED
                        زندگي را تو بساز ،
                        نه بدان ساز که سازند و پذيري بي حرف ،
                        زندگي يعني جنگ ، تو بجنگ ،
                        زندگي يعني عشق ، تو بدان عشق بورز.

                        دیدگاه


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

                          اصلاح میکنم: منظورم از پایه های خالی همون پایه های خالی ADC بود مثل PORTA.4
                          زندگي را تو بساز ،
                          نه بدان ساز که سازند و پذيري بي حرف ،
                          زندگي يعني جنگ ، تو بجنگ ،
                          زندگي يعني عشق ، تو بدان عشق بورز.

                          دیدگاه


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

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

                            دیدگاه


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

                              سلام دوستان
                              من توی این بخش تازه کارم اگر سوال ام یخورده خنده دار بود شما ببخشید .
                              توی این تصویر دقت کنید (ترکیب پایه های میکرو ATXmega32a4u-au هستش )




                              1 - پورت A و B همش سبز هست . یعنی فقط آنالوگ هستن و نمی تونم مثلا برای LCD ازشون استفاده کنم ؟ یا خروجی ورودی ساده دیجیتال ؟
                              2- یک کریستال به پایه های 36 و 37 وصل کنم کافی هست ؟ (یعنی پایه های 32 و 33 رو بی خیال شم .) ؟
                              3- آیا پایه 35 پایه reset هست ؟
                              4 - برای پروگرام کردن فقط پایه های 34 و 35 کافیه؟
                              5- TC مخفف چیه ؟ که روی پورت های C , D, E هست ؟
                              6- روی پورت مثلا D اومده گفته ما اینا رو داریم TC و USART و USB و SPI خوب کدوم پایه مال کدوم هست رو باید چی کار کنم ؟ فرقی نمی کنه ؟ یعنی بعدا از توی نرم افزار مشخص میشه ؟
                              7- برای SPI باید 4 تا پین در نظر بگیرم دیگه درسته ؟ پایه ریستش که همون 35 میشه ؟ آره ؟
                              8 - منظورش از General Purpose I/O روی پایه های 36 و 37 چیه؟
                              9 - آیا برای اتصال یه انکودر خروجی A و B رو به هر کدوم از پایه های میکرو بدم فرقی نداره ؟
                              10 - توی یه جایی دیدم پایه ای برای کلاک UASRT در نظر گرفته . این دیگه چیه در Mega که من دوتا سیم رو با زمین کلا 3 تا سیم وصل می کردم اینجا گیج شدم .


                              سوالات زیاد شد . ببخشید . :redface:
                              - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

                              دیدگاه


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

                                به نظر می رسد شما تازه شروع کردی
                                نگاه به دیتا شیت تقریبا سوال های شما رو جواب خواهد داد
                                1.مثال سری مگا در این سری هم a2d وجود دارد و این به معنی اینست که شما میتوانید رو این پورت ها ورودی انالوگ را فعال کنید و وقتی فعال کنید توانایی استفاده به صورت 1 و 0 از بین خواهد رفت برروی این پین ها
                                2.خود چیپ نوسان ساز لازم برای راهندازی رو دارد،اگر نیاز به نوسان ساز خارجی باشد جهت کلاک خود xmega از پایه های 36 و 37 استفاده و سایر قسمت ها 33 و 32 کریستال یا نوسان ساز خارجی استفاده میتوانید داشته باشید
                                3.4.بله و همچنین جهت پروگرم هم استفاده می شود
                                5.تایمرو کانتر
                                6.در دیتاشیت ذکر شده
                                7.برروی پوت های مختلف قابلیت استفاده از spi رو دارید در واقع 3 پین لازم هست پین چهارم جهت فعال کردن اسلیو استفاده میشود
                                8.یعنی میتونید در صورتی که از قابلیت پین ها استفاده نکردید از حالت 0 1 عادی استفاده کنید
                                9.بسته به سرعت مورد نظر دارد،ای سی قابلیت زیادی دارد
                                10.سریال معمولی که در mega استفاده میشود از نوع اسنکرون میباشد یعنی کلاک در داخل قسمت گیرنده و فرستنده جدا تنظیم میشود،در صورتی که سنکرون استفاده شود کلاک می بایست از مستر به اسلیو ارسال شود که پین سوم می باشد،تقریبا میشود spi

                                مطالعه دیتاشیت اولویت اول است
                                هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                                بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                                میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                                تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                                دیدگاه

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