اطلاعیه

Collapse
No announcement yet.

تایمر 1 و 3 atmega64

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

    تایمر 1 و 3 atmega64

    سلام بچه ها..... من به دوتا تایمر 16 بیتی نیاز داشتم ، برای همین هم رفتم سراغ atmega64 ...حالا یه مشکلی دارم....تایمر 1 این ic خروجیش رو میشه بصورت 16بیتی ازش گرفت (TCNT1) ولی تایمر شماره 3 خروجش رو به صورت 8 بیتی میده.... TCNT3L و TCNT3H ......حتما میشه که این دوتا رو بصورت 16 بیتی در آورد ولی یه سری دستور اضافه میشه که باعث ایجاد تاخیر و خطا تو برنامه میشه....چیکار کنم......؟ :cry2:

    #2
    پاسخ : تایمر 1 و 3 atmega64

    فکر میکنم اشتباه میکنید. در تایمر یک هم بایت بالا و پایین اش جداست چون AVR یک ماشین هشت بیتی است و بنابراین دیتا باس اش هم هشت بیتیه.
    There is nothing so practical as a good theory. — Kurt Lewin, 1951

    دیدگاه


      #3
      پاسخ : تایمر 1 و 3 atmega64

      سلام آقا رضا....شما درست میگید در تایمر یک بایت بالا و پایین از هم جداست ولی اگه داخل فایل mega32.h برید میبینید که علاوه بر TCNT1L , TCNT1H یه رجیستر دیگه هم به نام TCNT1 برای دسترسی 16 بیت وجود داره که میتونید ازش استفاده کنید....من به صورت عملی هم ازش جواب گرفتم.....ولی برای تایمر 3 این رجیستر رو نداره..... :cry:

      دیدگاه


        #4
        پاسخ : تایمر 1 و 3 atmega64

        نوشته اصلی توسط محسن قاسم پور
        سلام آقا رضا....شما درست میگید در تایمر یک بایت بالا و پایین از هم جداست ولی اگه داخل فایل mega32.h برید میبینید که علاوه بر TCNT1L , TCNT1H یه رجیستر دیگه هم به نام TCNT1 برای دسترسی 16 بیت وجود داره که میتونید ازش استفاده کنید....من به صورت عملی هم ازش جواب گرفتم.....ولی برای تایمر 3 این رجیستر رو نداره..... :cry:
        اون رو کامپایلر تعریف کرده و هیچ AVRی همچنین رجیستری نداره، از دیتاشیت ATmega64:

        کد:
        The TCNTn, OCRnA/B/C, and ICRn are 16-bit registers that can be accessed by the
        AVR CPU via the 8-bit data bus. The 16-bit register must be byte accessed using two
        read or write operations. Each 16-bit timer has a single 8-bit register for temporary storing
        of the high byte of the 16-bit access. The same Temporary Register is shared
        between all 16-bit registers within each 16-bit timer. Accessing the low byte triggers the
        16-bit read or write operation. When the low byte of a 16-bit register is written by the
        CPU, the high byte stored in the Temporary Register, and the low byte written are both
        copied into the 16-bit register in the same clock cycle. When the low byte of a 16-bit register
        is read by the CPU, the high byte of the 16-bit register is copied into the Temporary
        Register in the same clock cycle as the low byte is read.
        There is nothing so practical as a good theory. — Kurt Lewin, 1951

        دیدگاه


          #5
          پاسخ : تایمر 1 و 3 atmega64

          شما فقط به خاطر تایمر رفتی به مگا 64

          میتونستی یه کاری هم بکنی .............. از آرایه ها استفاده کن

          یادمه از یه تایمر 8 بیتی 10 تا تایمر مجزا با استفاده از آرایه ها جدا کرده بودم /..............همگی مستقل

          دیدگاه


            #6
            پاسخ : تایمر 1 و 3 atmega64

            نوشته اصلی توسط رضا سپاس یار


            اون رو کامپایلر تعریف کرده و هیچ AVRی همچنین رجیستری نداره، از دیتاشیت ATmega64:

            کد:
            The TCNTn, OCRnA/B/C, and ICRn are 16-bit registers that can be accessed by the
            AVR CPU via the 8-bit data bus. The 16-bit register must be byte accessed using two
            read or write operations. Each 16-bit timer has a single 8-bit register for temporary storing
            of the high byte of the 16-bit access. The same Temporary Register is shared
            between all 16-bit registers within each 16-bit timer. Accessing the low byte triggers the
            16-bit read or write operation. When the low byte of a 16-bit register is written by the
            CPU, the high byte stored in the Temporary Register, and the low byte written are both
            copied into the 16-bit register in the same clock cycle. When the low byte of a 16-bit register
            is read by the CPU, the high byte of the 16-bit register is copied into the Temporary
            Register in the same clock cycle as the low byte is read.
            به هر حال من ازش استفااه کردم...... :cry: .

            دیدگاه


              #7
              پاسخ : تایمر 1 و 3 atmega64

              نوشته اصلی توسط فرزاد ثانی
              شما فقط به خاطر تایمر رفتی به مگا 64

              میتونستی یه کاری هم بکنی .............. از آرایه ها استفاده کن

              یادمه از یه تایمر 8 بیتی 10 تا تایمر مجزا با استفاده از آرایه ها جدا کرده بودم /..............همگی مستقل
              بله آقا فرزاد ...فقط به خاطر تایمر رفتم سراغ stmega64 ......برای اندازه گیری پهنای پالس های adxl202 نیاز به دوتا تایمر داشتم...... پالس ها فقط با یه کوچولو تاخییر نسبت به هم میان و نمیشه از یه تایمر برای دوتاشون استفاده کرد..... :cry2:

              دیدگاه


                #8
                پاسخ : تایمر 1 و 3 atmega64

                منم از OCR1A میتونم تو تایمر 1 استفاده کنم اما همین رجیستر تو تایمر 3 میشه OCR3A که مینویسم ارور میده ، چکار باید کرد؟

                دیدگاه


                  #9
                  پاسخ : تایمر 1 و 3 atmega64

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

                  دیدگاه

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