اطلاعیه

Collapse
No announcement yet.

کاربرد کد زیر در avr

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

    کاربرد کد زیر در avr

    سلام دوستان علت تولید کد زیر که قبل از کد اصلی توسط اتمل استدیو قرار میگیره و 52 بایت از حافظه فلش رو اشغال میکنه چیه و چه کاربردی داره ایا میشه این قسمت کد اصلا استفاده نکرد چون حتی گاهی اوقات اون 52 بایت هم نیاز میشه; من تست کردم بدون این کد ها هم برنامه اصلی به صورت درستی اجرا میشه
    کد:
      0:    12 c0           rjmp    .+36         ; 0x26 <__ctors_end>
       2:    19 c0           rjmp    .+50         ; 0x36 <__bad_interrupt>
       4:    18 c0           rjmp    .+48         ; 0x36 <__bad_interrupt>
       6:    17 c0           rjmp    .+46         ; 0x36 <__bad_interrupt>
       8:    16 c0           rjmp    .+44         ; 0x36 <__bad_interrupt>
       a:    15 c0           rjmp    .+42         ; 0x36 <__bad_interrupt>
       c:    14 c0           rjmp    .+40         ; 0x36 <__bad_interrupt>
       e:    13 c0           rjmp    .+38         ; 0x36 <__bad_interrupt>
      10:    12 c0           rjmp    .+36         ; 0x36 <__bad_interrupt>
      12:    11 c0           rjmp    .+34         ; 0x36 <__bad_interrupt>
      14:    10 c0           rjmp    .+32         ; 0x36 <__bad_interrupt>
      16:    0f c0           rjmp    .+30         ; 0x36 <__bad_interrupt>
      18:    0e c0           rjmp    .+28         ; 0x36 <__bad_interrupt>
      1a:    0d c0           rjmp    .+26         ; 0x36 <__bad_interrupt>
      1c:    0c c0           rjmp    .+24         ; 0x36 <__bad_interrupt>
      1e:    0b c0           rjmp    .+22         ; 0x36 <__bad_interrupt>
      20:    0a c0           rjmp    .+20         ; 0x36 <__bad_interrupt>
      22:    09 c0           rjmp    .+18         ; 0x36 <__bad_interrupt>
      24:    08 c0           rjmp    .+16         ; 0x36 <__bad_interrupt>
    
    00000026 <__ctors_end>:
      26:    11 24           eor    r1, r1
      28:    1f be           out    0x3f, r1    ; 63
      2a:    cf e5           ldi    r28, 0x5F    ; 95
      2c:    d4 e0           ldi    r29, 0x04    ; 4
      2e:    de bf           out    0x3e, r29    ; 62
      30:    cd bf           out    0x3d, r28    ; 61
      32:    02 d0           rcall    .+4          ; 0x38 <main>
      34:    06 c0           rjmp    .+12         ; 0x42 <_exit>
    
    00000036 <__bad_interrupt>:
      36:    e4 cf           rjmp    .-56         ; 0x0 <__vectors>
    سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

    #2
    پاسخ : کاربرد کد زیر در avr

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

    دیدگاه


      #3
      پاسخ : کاربرد کد زیر در avr

      نوشته اصلی توسط طراح نمایش پست ها
      ناحیه ابتدایی حافظه flash مربوط به بردارهای وقفه است و برای هر وقفه ای بسته به شماره میکروکنترلر و سایز flash آن به اندازه یک دستور اسمبلی rjmp یا jmp فضا وجود دارد تا در هنگام پذیرش وقفه و پرش به این آدرس ها بتوان پرشی را به آدرس هایی با فضای کافی برای نوشتن روتین وقفه انجام داد. در این رابطه به فصل وقفه در دیتاشیت میکروکنترلر مورد استفاده مراجعه کنید.
      خیلی ممنون استاد بخاطر پاسختون یه سوال دیگه در رابطه با کدهای بالا ما اگه بخوایم توسط بوتلودر حافظه فلش رو پروگرام کنیم و تو برنامه بوتلودر هم اگه از وقفه استفاده کرده باشیم کد های بالا رو هم باید تو قسمت ابتدایی حافظه فلش همراه برنامه بوتلودر پروگرام کنیم؟به این صورت که به صورت ثابت باقی بمونه و بوتلودر بایت های بعدی رو پاک و بنویسه یا کلا قضیه بوتلودر فرق میکنه؟
      با تشکر
      سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

      دیدگاه


        #4
        پاسخ : کاربرد کد زیر در avr

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

        دیدگاه

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