اطلاعیه

Collapse
No announcement yet.

کمک! مشکل عجیب با تایمر صفر!!

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

    کمک! مشکل عجیب با تایمر صفر!!

    سلام
    من برای atmega16 یه برنامه نوشتم که از دو تاوقفه استفاده می کنه یکی وقفه ADC و دیگری overflow مربوط به تایمر صفر
    دیدم رو مدار چرت و پرن جواب می ده با شبیه سازی توی avrstudio و می بینم که اول یه نمونه از سیگنال مورد نظر می گیره و بعد به برنامه اصلی بر می گرده بعد از گذشتن مدت کمی در یک حلقه وقفه تایمر در TCNT=43hex (با دیدن مقادیر ثباتها ) اتفاق می افته!!!!! در صورتی که من اون رو در مد نرمال قرار دادم و فقط براش فرکانس تعیین کردم!
    مگه نباید تا ff بشمره و بعد وقفه تایمر صفر بیاد؟!
    راستی وقتی تو avrstudio بیت پرچم tov0 رو نگاه کردم دیدم بدون 1 شدن اون وارد روال وقفه تایمر 0 می شه!!!!!!
    کسی می تونه کمکی به من بکنه لطفا؟
    پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

    #2
    پاسخ : مشکل عجیب با تایمر صفر!!

    البته الان که فک می کنم می بینم شاید بهتر بود این سوال رو تو بخش شبیه سازی می پرسیدم !
    ولی بازم اگه آره بفرمایین برم اونجام بپرسم!! :mrgreen:
    پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

    دیدگاه


      #3
      پاسخ : کمک! مشکل عجیب با تایمر صفر!!

      نوشته اصلی توسط shamim_no
      سلام
      من برای atmega16 یه برنامه نوشتم که از دو تاوقفه استفاده می کنه یکی وقفه ADC و دیگری overflow مربوط به تایمر صفر
      دیدم رو مدار چرت و پرن جواب می ده با شبیه سازی توی avrstudio و می بینم که اول یه نمونه از سیگنال مورد نظر می گیره و بعد به برنامه اصلی بر می گرده بعد از گذشتن مدت کمی در یک حلقه وقفه تایمر در TCNT=43hex (با دیدن مقادیر ثباتها ) اتفاق می افته!!!!! در صورتی که من اون رو در مد نرمال قرار دادم و فقط براش فرکانس تعیین کردم!
      مگه نباید تا ff بشمره و بعد وقفه تایمر صفر بیاد؟!
      راستی وقتی تو avrstudio بیت پرچم tov0 رو نگاه کردم دیدم بدون 1 شدن اون وارد روال وقفه تایمر 0 می شه!!!!!!
      کسی می تونه کمکی به من بکنه لطفا؟
      سلام

      برنامتو بذار دوستان بهتر متوجه بشن .

      مطمئن هستید که تایمر در مد Normalهستش ؟ ctc نباشه؟
      یادش بخیر یه وقتایی هر روز میومدم اینجا !

      دیدگاه


        #4
        پاسخ : کمک! مشکل عجیب با تایمر صفر!!

        http://www.mediafire.com/file/7fkvg450lr3pevd/edame_11_tst_aakharin_ha_ta_inja_ro_dorost!.c

        این کد ولی من که می دونم حالا تا کد رو نگاه کلی انداختین می گین اوووه این چی نوشته! حوصله تون نمی شه و بی خیالش می شین!! :mrgreen:

        ولی نه نرینا! آخه اصلا ربطی به کاری که تو این کد انجام می شه نداره فک کنم همه چی مربوط به اون 3 خط راه اندازی تایمره :
        TCCR0=0X04;
        TCNT0=0X00;
        TIMSK=0X01;
        الان این پروژه تو عمل به نسبت کار می کنه ولی تو شبیه سازی همین طور وقفه تایمر رو تکرار می کنه!!
        فقط چون می خوام زمان بندی رو دقیق تر یاد بگیرم و کار یکم مطمئن تر باشه می خوام بدونم چرا این جوری میشه؟!!
        و اینکه تا چه حد میشه به این شبیه ساز اعتماد کرد و ...

        بله دیگه واسه مد معمولی فقط کافیه 3 ثبات TCCR0 و TIMSK و TCNT رو درست مقداردهی کنیم دیگه مگه نه؟
        فعلا چون فقط می خوام مشکل اینکه وقفه کی بیاد حل بشه همون 0 رو گذاشتم تو TCNT که تا FF بشمره و بعد وقفه بیاد ولی همون طور که گفتم سر 45hex وقفه میاد!!
        تازه تو شبیه سازم که اصلا نمی بینم بیت tov0 یک بشه!! oo:
        ممنون
        پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

        دیدگاه


          #5
          پاسخ : کمک! مشکل عجیب با تایمر صفر!!

          احتمالا در وقفه هاتون ادخال میشه .
          با توجه به اینکه برنامه ی داخل وقفه ی تایمرتون طولانیه ، اول وقفه ، تایمرو غیر فعال کنین و وقتی تموم شد دو باره فعال کنین .
          ببینین اگه امکانش هست برنامه ی داخل وقفه ی تایمرو بیارین تو MAIN .

          دیدگاه


            #6
            پاسخ : کمک! مشکل عجیب با تایمر صفر!!

            نوشته اصلی توسط hadi_hashemi_85
            احتمالا در وقفه هاتون ادخال میشه .
            با توجه به اینکه برنامه ی داخل وقفه ی تایمرتون طولانیه ، اول وقفه ، تایمرو غیر فعال کنین و وقتی تموم شد دو باره فعال کنین .
            ببینین اگه امکانش هست برنامه ی داخل وقفه ی تایمرو بیارین تو MAIN .
            ممنون از توجهتون
            این کار رو قبلا هم انجام دادم ولی بازم مشکل حل نمی شد منم گفتم حالا که کارآیی نداره برش داشتم از توی روال وقفه! :biggrin:
            الانم که شما گفتین باز این کار رو کردم ولی نتیجه همونی بود که قبلا!
            پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

            دیدگاه


              #7
              پاسخ : کمک! مشکل عجیب با تایمر صفر!!

              من avr studio کار نکردم تا حالا . نکنه اشتباه میکنین . وقفه ای که سر 45 هگز میاد ، وقفه ی مربوط به ADC باشه . وتا بره وقفه ADC اجرا بشه وتموم بشه وقفه تایمر دوباره بخوره و از اول شروع بشه .

              دیدگاه


                #8
                پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                نوشته اصلی توسط hadi_hashemi_85
                من avr studio کار نکردم تا حالا . نکنه اشتباه میکنین . وقفه ای که سر 45 هگز میاد ، وقفه ی مربوط به ADC باشه . وتا بره وقفه ADC اجرا بشه وتموم بشه وقفه تایمر دوباره بخوره و از اول شروع بشه .
                نه اتفاقا همون طور که تو کد هست وقفه ADC هم تو برنامه م هست که اول می ره داخل روال اون و اجرا می کنه بعدش که اومد بیرون و یه سری دستورات رو انجام داد دوباه میره داخل روال وقفه تایمر و این بار دیگه( البته تو شبیه سازی ) نمی ره توی روال ADC که در عمل چیز دیگه ای نشون می ده!( چون نمونه گیری انجام میشه)

                اگه این شبیه ساز خوبی نیست میشه شبیه ساز بهتری بهم معرفی کنید لطفا؟

                راستی اینم یادم رفت تو پست قبلی بگم که با توجه به نیازم نمی تونم روال وقفه مو کوتاه تر کنم متاسفانه!
                پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

                دیدگاه


                  #9
                  پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                  سلام شمیمه گلم. :">
                  عزیزه دلم.
                  یه عذر خواهی بکنم به خاطر اینکه بعد این همه مدت تازه دارم بت جواب میدم.اونم دست و پاشکسته. :redface:

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

                  از تایمر 1 هم واس این کار استفاده کردی.؟

                  سرعت پردازشت رو هم بالا ببر.
                  ?Why not

                  دیدگاه


                    #10
                    پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                    نوشته اصلی توسط QUARK
                    سلام شمیم گلم. :">
                    عزیز دلم.
                    یه عذر خواهی بکنم به خاطر اینکه بعد این همه مدت تازه دارم بت جواب میدم.اونم دست و پاشکسته. :redface:

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

                    از تایمر 1 هم واس این کار استفاده کردی.؟

                    سرعت پردازشت رو هم بالا ببر.
                    سلام quarkجان

                    وا! دشمنت شرمنده
                    اختیار داری شما کارت درسته
                    الانم ممنونتم :job:

                    والا از تایمر 1 نه!چه طور مگه؟
                    باشه خبرشو میدم .
                    پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

                    دیدگاه


                      #11
                      پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                      1.یه برنامه کوچیک رو امتحان کردم درست کار کرد

                      2.فرکانس رو بالاتر بردم ولی ...

                      3.یه سوال دیگه پروگرمر من بیشتر از 8 meg امکان بالابردن فرکانس رو نداره میشه باهاش برنامه های فرکانس بالاتر رو رو میکرو ریخت و میکرو با همون فرکانس بالاتر کار کنه؟

                      بذارین دقیق سوال اصلیم رو بپرسم راستش فرکانس رو 8 گذاشتم ولی آنچه که نشون می داد خیلی پرش داشت و خیلی چیزها اصلا معلوم نبود زود می رفت
                      یه سری delay اضافه کردم به برنامه م ولی ... حالا با فاصله های بیشتر اما قابل خوندن پرش داره
                      گفتم شاید اگه فرکانس میکرو رو بالاتر ببرم درست شه!

                      4.برای فرکانس های بالاتر از 1 کریستال خارجی باید وصل کنم آره؟ مقدارش چه جوریا باید باشه؟ مثلا برای 8 meg باید چه کریستالی بذارم رو مدار؟

                      ممنون از همگی
                      پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

                      دیدگاه


                        #12
                        پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                        بیا توی یکی از وقفه هات در شروع تابع وقفه سراسری رو خاموش کن و در پایان تابع وقفه سراسری رو فعال کن~

                        دیدگاه


                          #13
                          پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                          ولی بیشتر می خوام بدونم چرا بدون اینکه من ثباتی رو مقدار بدم تا 45hex بیشتر نمی شمره و بعد وارد روال وقفه می شه!!
                          از کجا می دونید تا 45h بیشتر نمیشمره؟! در ضمن من با تست در عمل بیشتر موافقم تا شبیه سازی، فرکانس تایمر رو بیارید پایین و در عمل زمان رخ دادن وقفه رو بسنجید و ببینید واقعا چندتا میشمره تا وقفه رخ بده

                          نوشته اصلی توسط shamim_no
                          1.یه برنامه کوچیک رو امتحان کردم درست کار کرد

                          2.فرکانس رو بالاتر بردم ولی ...

                          3.یه سوال دیگه پروگرمر من بیشتر از 8 meg امکان بالابردن فرکانس رو نداره میشه باهاش برنامه های فرکانس بالاتر رو رو میکرو ریخت و میکرو با همون فرکانس بالاتر کار کنه؟

                          بذارین دقیق سوال اصلیم رو بپرسم راستش فرکانس رو 8 گذاشتم ولی آنچه که نشون می داد خیلی پرش داشت و خیلی چیزها اصلا معلوم نبود زود می رفت
                          یه سری delay اضافه کردم به برنامه م ولی ... حالا با فاصله های بیشتر اما قابل خوندن پرش داره
                          گفتم شاید اگه فرکانس میکرو رو بالاتر ببرم درست شه!

                          4.برای فرکانس های بالاتر از 1 کریستال خارجی باید وصل کنم آره؟ مقدارش چه جوریا باید باشه؟ مثلا برای 8 meg باید چه کریستالی بذارم رو مدار؟

                          ممنون از همگی
                          1-
                          2- :rolleyes:
                          3- این یعنی چی؟
                          پروگرمر من بیشتر از 8 meg امکان بالابردن فرکانس رو نداره
                          به هر حال شما هر برنامه ای رو میتونید روی میکرو پروگرم کنید و ربطی به فرکانس پروگرمر نداره، اما فیوزبیت ها رو باید با توجه به فرکانس کار میکروتون تنظیم کنید
                          4- برای بالاتر از 8مگ باید کریستال خارجی بذارید وفیوزبیت های مربوطه رو تنظیم کنید، توصیه می کنم اول با نحوه تنظیم فیوزبیت ها آشنا بشید بعد بذارید روی خارجی تا به مشکل نخورید(یک تاپیک در این مورد داخل انجمن هست)
                          اونچیزی که در دانشگاه یاد میگیرید، "الفبایی" هست برای نوشتن یک "رمان" !!

                          دیدگاه


                            #14
                            پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                            45 رو از روی شبیه سازی و دنبال کردن محتوای TCNT گفتم
                            بله . چشم
                            درباره 3 باید بگم خب وقتی progISP رو باز می کنم کنارش 4 تا گزینه داره که 1 ، 2 ، 4 و 8 مگاهرتز هستش
                            اون رو گفتم بالاتر از این نداره
                            اگه به اینا مربوط نیست پس اینا واسه ی چین؟!
                            oo:

                            ok ممنون
                            پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

                            دیدگاه


                              #15
                              پاسخ : کمک! مشکل عجیب با تایمر صفر!!

                              سلام شمیمِ عزیز.

                              بیا هر بار که تایمر سرریز میشه مقدار تایمر رو بخون.(البته تو عمل).

                              در مورد این فیوزبیت ها هم بگم که اینا مقادیری هست که میکرو داخلی اینا رو ساپورت میکنه.

                              اگه میخوای از این مقادیر بیشترش کنی باید از کریستالهای خارجی استفاده کنی. همونطور که دوست گلم جنابِ ☺بابابرقی☺ عزیز گفتن.
                              ?Why not

                              دیدگاه

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