اطلاعیه

Collapse
No announcement yet.

کار با تایمر SAM7X

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

    #46
    پاسخ : پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

    نوشته اصلی توسط gizmo89
    نه آخه pit جزو سیستمه،باید وقفه سیستم فعال بشه دیگه!؟
    بیت 24 مد رجیستر pit، واسه فعال کردن pit و بیت 25 برای فعال کردن وقفه pit هستش.pimr همون pit mode register است.
    یه تابع delay با pit داشتم از اون استفاده کردم واسه این .منتها اون دیگه وقفه نداشت و فقط به یک دور pit نیاز داشت.فکر کنم اصلا اون خط آخرش زیادی باشه.
    عجیبه،آخه چرا اولی رو اجرا نمی کنه ،یهو می ره دومی.بر عکسش با عقل بیشتر جور در میاد.
    آخ آخ
    من اصلا توی حال و هوای تایمر بودم
    میدونی چیه؟
    همه چی قاطی میشه آخه یکی تایمر میپرسه یکی pit منم قاطی کردم :sad:
    pit رو من درست حسابی کار نکردم
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

    دیدگاه


      #47
      پاسخ : پاسخ : پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

      نوشته اصلی توسط علی ایمانی فر
      آخ آخ
      من اصلا توی حال و هوای تایمر بودم
      میدونی چیه؟
      همه چی قاطی میشه آخه یکی تایمر میپرسه یکی pit منم قاطی کردم :sad:
      pit رو من درست حسابی کار نکردم
      pit کاری نداره که.از تایمر خیلی آسون تره.بهش یه شماره میدی تا اون میشمره، و هروقت بهش رسید صفر میشه و وقفه میده.:icon_razz:
      یعنی ممکنه مشکل کار من از این باشه که از تایمر کانتر استفاده نکردم؟

      دیدگاه


        #48
        پاسخ : پاسخ : پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

        نوشته اصلی توسط gizmo89
        pit کاری نداره که.از تایمر خیلی آسون تره.بهش یه شماره میدی تا اون میشمره، و هروقت بهش رسید صفر میشه و وقفه میده.:icon_razz:
        یعنی ممکنه مشکل کار من از این باشه که از تایمر کانتر استفاده نکردم؟
        نه به خاطر استفاده نکردن از تایمر نیست
        مشکل برنامه نویسی داری
        شاید تعیین لبه تحریک برای ایجاد وقفه مشکل داره
        اونو درست انتخاب کردی؟
        زندگی یعنی امید و حرکت
        کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
        سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
        برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
        به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

        دیدگاه


          #49
          پاسخ : پاسخ : پاسخ : پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

          نوشته اصلی توسط علی ایمانی فر
          نه به خاطر استفاده نکردن از تایمر نیست
          مشکل برنامه نویسی داری
          شاید تعیین لبه تحریک برای ایجاد وقفه مشکل داره
          اونو درست انتخاب کردی؟
          ببخشید اگه سوالم یکم داغونه،از بی تجربگیه، ولی درستش چجورى باید باشه؟

          دیدگاه


            #50
            پاسخ : پاسخ : پاسخ : پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

            نوشته اصلی توسط gizmo89
            ببخشید اگه سوالم یکم داغونه،از بی تجربگیه، ولی درستش چجورى باید باشه؟
            نه بابا این چه حرفیه
            منم منظوری نداشتم که (من کلا هجومی ام :mrgreen
            من برای فعال کردن وقفه RTT که اونم از وقفه سیستم استفاده میکنه این کد رو نوشتم
            کد:
            AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_SYS,7,AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE,RTT_irq_handler);
            	AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_SYS);
            همون طور که میبینی برای تعریف وقفه از AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE استفاده کرده و این عبارت به این صورت تعریف شده
            کد:
            #define 	AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE  ((unsigned int) 0x1 << 5) // (AIC) Internal Sources Code Label Positive Edge triggered
            و همون طور که پیداست اومده 101 رو توی بیت های 1 و 2 و 3 ریخته یا به عبارتی 1010 رو توی چهارتا بیت کم ارزش رجیستر ریخته
            ببین این جواب کارتو میده
            زندگی یعنی امید و حرکت
            کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
            سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
            برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
            به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

            دیدگاه


              #51
              پاسخ : کار با تایمر SAM7X

              ظاهرا توی keil برای تعریف روتین وقفه باید مقابلش عبارت __irq نوشته بشه.ولی من گشتم و به مطلبی برنخوردم که بگه برای iar هم همچین چیزی وجود داره.تو community خود اتمل گفته بودن برای حل مشکل یکبار مصرف شدن وقفه باید این کار رو کرد.این کتااب نص هم که من باهاش دارم آرم یاد می گیرم تو مثالاش هیچی در این رابطه نداره.به نظرتون چی کار کنم؟وقت تنگه و نمیشه سوییچ کرد به keil.باید با همین iar باید کار کنم.
              البته در iar برای avr چند تا مطلب بود که می گفت با pragma میشه مشخص کرد روتین وقفرو.
              در مورد حساسیت تریگر هم حساسیت به سطح high رو انتخاب کردم.
              این توابعی که شما استفاده میکنین واسه تعریف اینتراپت تو iar هم قابل استفاده ست؟؟

              دیدگاه


                #52
                پاسخ : کار با تایمر SAM7X

                نوشته اصلی توسط gizmo89
                ظاهرا توی keil برای تعریف روتین وقفه باید مقابلش عبارت __irq نوشته بشه.ولی من گشتم و به مطلبی برنخوردم که بگه برای iar هم همچین چیزی وجود داره.تو community خود اتمل گفته بودن برای حل مشکل یکبار مصرف شدن وقفه باید این کار رو کرد.این کتااب نص هم که من باهاش دارم آرم یاد می گیرم تو مثالاش هیچی در این رابطه نداره.به نظرتون چی کار کنم؟وقت تنگه و نمیشه سوییچ کرد به keil.باید با همین iar باید کار کنم.
                البته در iar برای avr چند تا مطلب بود که می گفت با pragma میشه مشخص کرد روتین وقفرو.
                در مورد حساسیت تریگر هم حساسیت به سطح high رو انتخاب کردم.
                این توابعی که شما استفاده میکنین واسه تعریف اینتراپت تو iar هم قابل استفاده ست؟؟
                درسته
                منم مثالای کتاب نص رو دیدم ولی چیزی به نام __irq استفاده نکرده بود.
                چرا از مثالای خود نص کمک میگیری؟
                والا من تاحالا iar کار نکردم و نمیتونم بگم کار میکنه یا نه ولی اگه با رجیستر بتونی کار کنی راحت میتونی اسم رجیستر و عدد اختصاص داده شده بهش رو بفهمی
                زندگی یعنی امید و حرکت
                کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                دیدگاه


                  #53
                  پاسخ : پاسخ : کار با تایمر SAM7X

                  نوشته اصلی توسط علی ایمانی فر
                  درسته
                  منم مثالای کتاب نص رو دیدم ولی چیزی به نام __irq استفاده نکرده بود.
                  چرا از مثالای خود نص کمک میگیری؟
                  والا من تاحالا iar کار نکردم و نمیتونم بگم کار میکنه یا نه ولی اگه با رجیستر بتونی کار کنی راحت میتونی اسم رجیستر و عدد اختصاص داده شده بهش رو بفهمی
                  منم تا الان با رجیسترا کار کردم و کلی هم چیز از این راه یاد گرفتم.منبع دیگه ای واسه اتمل آرم تو iar وجود داره جز نص؟

                  دیدگاه


                    #54
                    پاسخ : پاسخ : کار با تایمر SAM7X

                    نوشته اصلی توسط gizmo89
                    منم تا الان با رجیسترا کار کردم و کلی هم چیز از این راه یاد گرفتم.منبع دیگه ای واسه اتمل آرم تو iar وجود داره جز نص؟
                    والا بعید میدونم
                    خیلی مطمئن نیستم ولی فکر کنم تقریبا همین یکیه
                    زندگی یعنی امید و حرکت
                    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                    سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                    دیدگاه


                      #55
                      پاسخ : کار با تایمر SAM7X

                      آقای ایمانی فر من به این نتیجه رسیدم که بالاخره باید تایمر کانتر رو یاد بگیرم و به اصطلاح شاخش رو بشکونم.
                      حالا یه سوال دارم.من امروز این برنامه test که شما صفحه اول یا دوم تاپیک گذاشته بودین رو نگاه کردم ؛باید از وقفه TC برای ایجاد تاخیر موتور استفاده کنم؛به طوری که هر موقع تابع حرکت دادن موتور رو فراخوانی می کنم، تایمر فعال بشه و پس از حرکت موتور به مقدار خواسته شده، تایمر تا دفعه بعد که تابع فراخوانی می شه غیر فعال شه یا به نوعی کلا صفر بشه.
                      حالا باید این تابع که مثلا بهش میگیم move داخلش مقداردهی اولیه تایمر و فعال سازی وقفه ها انجام بشه و در روتین وقفه هم گذاشتن استپ ها در پین های خروجی و محاسبه تاخیر انجام بشه.در آخرین باری که وقفه اجرا میشه هم (توی یه شرط چک میکنیم آخرین باره یا نه) باید تایمر غیر فعال شه.این روند رو نظرتون درست متوجه شدم؟هدفم اینه که تابعم یک بار مصرف نشه و تو کل برنامه چندین بار باید صدا زده بشه!

                      دیدگاه


                        #56
                        پاسخ : کار با تایمر SAM7X

                        نوشته اصلی توسط gizmo89
                        آقای ایمانی فر من به این نتیجه رسیدم که بالاخره باید تایمر کانتر رو یاد بگیرم و به اصطلاح شاخش رو بشکونم.
                        حالا یه سوال دارم.من امروز این برنامه test که شما صفحه اول یا دوم تاپیک گذاشته بودین رو نگاه کردم ؛باید از وقفه TC برای ایجاد تاخیر موتور استفاده کنم؛به طوری که هر موقع تابع حرکت دادن موتور رو فراخوانی می کنم، تایمر فعال بشه و پس از حرکت موتور به مقدار خواسته شده، تایمر تا دفعه بعد که تابع فراخوانی می شه غیر فعال شه یا به نوعی کلا صفر بشه.
                        حالا باید این تابع که مثلا بهش میگیم move داخلش مقداردهی اولیه تایمر و فعال سازی وقفه ها انجام بشه و در روتین وقفه هم گذاشتن استپ ها در پین های خروجی و محاسبه تاخیر انجام بشه.در آخرین باری که وقفه اجرا میشه هم (توی یه شرط چک میکنیم آخرین باره یا نه) باید تایمر غیر فعال شه.این روند رو نظرتون درست متوجه شدم؟هدفم اینه که تابعم یک بار مصرف نشه و تو کل برنامه چندین بار باید صدا زده بشه!
                        درسته
                        توی تابع move تنظیمات تایمر رو انجام میدین و ریست میکنید تایمر رو. هر فلگی رو هم که دوس داری توی تابع وقفه مقدار دهی کن مثلا آخرین باره که میخاد تابع وقفه اجرا بشه و ...
                        زندگی یعنی امید و حرکت
                        کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                        سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                        برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                        به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                        دیدگاه


                          #57
                          پاسخ : پاسخ : کار با تایمر SAM7X

                          نوشته اصلی توسط علی ایمانی فر
                          درسته
                          توی تابع move تنظیمات تایمر رو انجام میدین و ریست میکنید تایمر رو. هر فلگی رو هم که دوس داری توی تابع وقفه مقدار دهی کن مثلا آخرین باره که میخاد تابع وقفه اجرا بشه و ...
                          آقا مژده بده، درست شد.ممنونم.

                          دیدگاه


                            #58
                            پاسخ : پاسخ : کار با تایمر SAM7X

                            نوشته اصلی توسط gizmo89
                            آقا مژده بده، درست شد.ممنونم.
                            خدارو شکر
                            تو مژده بده :mrgreen: چرا من؟ :icon_razz:
                            ایشالا همیشه موفق باشی :job:
                            زندگی یعنی امید و حرکت
                            کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                            سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                            برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                            به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                            دیدگاه


                              #59
                              پاسخ : پاسخ : کار با تایمر SAM7X

                              نوشته اصلی توسط علی ایمانی فر
                              سلام شرمنده دیر شد
                              برنامه رو با دیباگ تست کردم خوب جواب داد
                              شرمنده دیر شد
                              سلام،آقای ایمانی فر تو این دو خط که ccr رو مقدار دهی کردین،اولی واسه چیه؟

                              دیدگاه


                                #60
                                پاسخ : پاسخ : کار با تایمر SAM7X

                                نوشته اصلی توسط gizmo89
                                سلام،آقای ایمانی فر تو این دو خط که ccr رو مقدار دهی کردین،اولی واسه چیه؟
                                منظورتون اینجاست؟
                                کد:
                                AT91C_BASE_TC1->TC_CCR = 0x0000;
                                	AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKEN | AT91C_TC_SWTRG;
                                والا چون دفعخ اول بود با تایمر برنامه می نوشتم همه چیو سعی میکردم صفر کنم بعد مقدار بدم تا بدونم چی به چیه وگرنه دلیل خاصی نداشت. کلا مقدار دهی اولیه به متغییر ها توی دستور کارمه :mrgreen: رجیستر هم یه جور متغیر برام به حساب میاد دیگه :icon_razz:
                                زندگی یعنی امید و حرکت
                                کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                                سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                                برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                                به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                                دیدگاه

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