اطلاعیه

Collapse
No announcement yet.

وقفه تایمر در کدویژن

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

    وقفه تایمر در کدویژن

    سلام
    وقتی داخل code vizard وقفه تایمر رو فعال کنیم با سرریز کردن تایمر به سابروتین وقفه میریم یا باید دستی اونو به روتین وقفه ببریم؟
    چون من وقفه رو فعال کردم اما با سرریز شدن تایمر خودکار به روتین وقفه نمیره :eek: :eek:
    انقدر احمق نیستم که فکر کنم کارم تموم شده

    #2
    پاسخ : وقفه تایمر در کدویژن

    سلام دادا.
    اگه قراره دستی ببریم توی روتین پس چرا روتین رو میسازه؟!!!! احتمالاً یه جای کارت میلنگه دادا.
    تشکر لازم نیست!

    دیدگاه


      #3
      پاسخ : وقفه تایمر در کدویژن

      نوشته اصلی توسط iman-63
      سلام دادا.
      اگه قراره دستی ببریم توی روتین پس چرا روتین رو میسازه؟!!!! احتمالاً یه جای کارت میلنگه دادا.
      آقا گرفتم
      احتمالا ایراد از مقدار داهی به تایمره. تایمر1, 16بیتی هست پس باید مقدار دهیش تو 2تا مرحله(بایت کم ارزش و پرارزش) صورت بگیره.
      حتما کدویژن دستوری داره که از 1عدد 16بیتی 2تا بایت کم ارزش وپر ارزشش رو جدا کنم.
      مثلا برای بار کردن عددt تو تایمر1 چکار باید بکنم؟
      قبلا این کارو کرده بودم:
      TCNT1=T
      انقدر احمق نیستم که فکر کنم کارم تموم شده

      دیدگاه


        #4
        پاسخ : وقفه تایمر در کدویژن

        منظورتو نفهمیدم دادا.
        یعنی میخوای یه عدد 16 بیتی رو به دوقسمت 8 بیتی تقسیم کنی؟
        تشکر لازم نیست!

        دیدگاه


          #5
          پاسخ : وقفه تایمر در کدویژن

          نوشته اصلی توسط iman-63
          منظورتو نفهمیدم دادا.
          فکر کنیم که tیه عدد 16بیتی مثل60356 باشه (که البته مقدار واقعیشو نمیدونیم)
          خوب حالا این عدد t رو چجوری داخل تایمر1 بار کنیم؟
          انقدر احمق نیستم که فکر کنم کارم تموم شده

          دیدگاه


            #6
            پاسخ : وقفه تایمر در کدویژن

            راهی که به ذهن خودم میرسه اینه:
            tl=t & 0x00ff
            th=t & 0xff00
            tcnt1h=th
            tcnt1l=tl
            همین درست باید باشه نه؟ :applause: :applause:
            انقدر احمق نیستم که فکر کنم کارم تموم شده

            دیدگاه


              #7
              پاسخ : وقفه تایمر در کدویژن

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

              دیدگاه


                #8
                پاسخ : وقفه تایمر در کدویژن

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


                #define LOBYTE(n) ((unsigned char)(n))
                #define HIBYTE(n) ((unsigned char)((unsigned short)(n) >> 8))


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

                دیدگاه


                  #9
                  پاسخ : وقفه تایمر در کدویژن

                  این کار رو خود wizard برنامه برات انجام میده دیگه چرا انقدر ریز میشی به هر حال کد زیر یه نمونه برای atmega 32 که تایمر 1 ش فعال شده و موقع سرریز به اونجایی که باید بره میره و ضمنا یادت باشه اون کد فعال سازی وقفه رو که به اسمبلی هست به کدت اضافه کنی
                  کد:
                  TCCR1A=0x00;
                  TCCR1B=0x01;
                  TCNT1H=0x00;
                  TCNT1L=0x00;
                  ICR1H=0x00;
                  ICR1L=0x00;
                  OCR1AH=0x00;
                  OCR1AL=0x00;
                  OCR1BH=0x00;
                  OCR1BL=0x00;
                  // Timer(s)/Counter(s) Interrupt(s) initialization
                  TIMSK=0x04;
                  // Global enable interrupts
                  #asm("sei")

                  دیدگاه


                    #10
                    پاسخ : وقفه تایمر در کدویژن

                    دقیقا
                    منم مثل شما هین مقدارارو در نظر داشتم
                    اما تو 3تا کدویژن مختلف با کدویزارد این کد بدست میومد.
                    میگید نه یه چک بکنید
                    TIMSK=0x80
                    انقدر احمق نیستم که فکر کنم کارم تموم شده

                    دیدگاه


                      #11
                      پاسخ : وقفه تایمر در کدویژن

                      کسی نیست؟ :cry: :cry: :cry: :cry:
                      انقدر احمق نیستم که فکر کنم کارم تموم شده

                      دیدگاه


                        #12
                        پاسخ : وقفه تایمر در کدویژن

                        اشتباه نکردی؟؟؟؟؟

                        دیدگاه


                          #13
                          پاسخ : وقفه تایمر در کدویژن

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

                          دیدگاه


                            #14
                            پاسخ : وقفه تایمر در کدویژن

                            دوستان بابت وقتی که گذاشتید ممنونم.
                            متوجه مشکل شدم. جالبه که بدونید:
                            داخل دیتاشیت tiny2313رو نگاه کردم و خیلی عجیب بود که ترتیب بیت های اکثر رجیسترهاش متفاوت ب.د :eek: :eek:
                            البته شاید فقط tiny2313 اینجوری نباشه.
                            نتیجه اینکه دوستان من سعی کنید به منابع آموزشی اعتماد کامل نکنید و حتما با هر آیسی که سروکار دارید یه نگاهی به دیتاشیتشم داشته باشید :read:
                            با تشکر :bye
                            انقدر احمق نیستم که فکر کنم کارم تموم شده

                            دیدگاه


                              #15
                              پاسخ : وقفه تایمر در کدویژن

                              دیدی گفتم اشتباه کردی !!!!!
                              :mrgreen: :mrgreen:
                              من کد رو از رو پروژه خودم که کار میکرد برداشته بودم!!!
                              :eek:
                              به هر حال تبریک میگم که موفق شدین
                              :applause: :applause: :applause:

                              دیدگاه

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