اطلاعیه

Collapse
No announcement yet.

خروج از چرخه تاخیر در avr

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

    خروج از چرخه تاخیر در avr


    سلام
    من با میکرو AVR برنامه ای را نوشتم .که دارای حلقه تاخیر 120 ثانیه زیر است.می خواهم در طی این حلقه تاخیر به وقفه سخت افزاری int0 نیز پاسخ داده شودکه البته دراین مورد هم مشکلی وجود ندارد و با در یافت لبه بالارونده پالس روی int0 وقبه اتفاق می افتد و روند پاسخ گویی ان دنبال می گردد. مشکل من اینجا است که پس از وقفه نمی خواهم برنامه مجددا به حلقه تاخیر برگردد.تا اسیر چرخه تاخیر شود.به عبارتی می خواهم به محل مشخص شده توسط علامت فلاش < ==== بعد از دستور brcc برود. چگونه می توانم مشکلم را حل کنم؟ پیشاپیش از راهنمایی شمال تشکر می نمایم.
    Lpdel_120sec:
    subi r17,1
    sbci r18,0
    sbci r19,0
    sbci r20,0
    brcc lpdel_120sec
    < =====

    #2
    پاسخ : خروج از چرخه تاخیر در avr

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

    دیدگاه


      #3
      پاسخ : خروج از چرخه تاخیر در avr

      سلام.

      من با اسمبلی کار نکردم . ولی یه کاری بهت پیشنهاد میکنم ببین عملیه یا نه.

      وقتی برنامه داخل تاخیره و اینتراپت میاد و به برچسب مورد نظر پرش میکنه دیگه آخر اون برچسب return نکن که بپره به همان تاخیر در آخر برچسب اینتراپت از دستور jmp استفاده کن . یعنی با jmp به برچسبی که بعد از < ==== هست بپر.
      www.icesi.ir

      دیدگاه


        #4
        پاسخ : خروج از چرخه تاخیر در avr

        فکرمیکنم روشی که study جان نوشته بهتر باشه.

        روشی که آقای موسوی پیشنهاد کردن باعث کثیف شدن پشته میشه و ممکنه عواقبی هم داشته باشه. (البته جسارت نشه :redface
        چگونه هوشمندانه بپرسیم

        دیدگاه


          #5
          پاسخ : خروج از چرخه تاخیر در avr

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

          دیدگاه


            #6
            پاسخ : خروج از چرخه تاخیر در avr

            نوشته اصلی توسط Study
            فکر کنم با دستورهای Push و Pop بتونید این کار رو بکنید.
            امروز صبح تو رختخواب یادم افتاد که این نکته رو اضافه کنم ( البته احتمالا خودتون این کار رو کردید ):
            اول برنامه وقفه مقدار SREG رو توی پشته یا جای دیگه نگه دارید موقع خروج از وقفه هم دوباره SREG رو برگردونید که یک موقع توی برنامه اصلی اختلال ایجاد نشه.
            موفق باشید.
            از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
            هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
            اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
            اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
            شاد و موفق باشید

            دیدگاه

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