اطلاعیه

Collapse
No announcement yet.

تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

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

    #16
    پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

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

    در هر صورت اصلا هواسم نبود که میتونم جاهایی از برنامه که نمیخام با تحریک int7 بره تو لیبل اینتراپت، میتونم اینتراپت مورد نظر رو غیرفعال کنم و بعد آخر بلاک دوباره فعالش کنم. غیر فعال یا فعال کردن اینتراپت در جاهای مختلف کد، غیر استاندارد یا مشکلی نیست از نظر شما؟


    سوال دوم اینکه شما فرض کنید من یه خط کد نوشتم، خوب این خط کد باید تبدیل بشه به زبان ماشین که بیت ها هستن. حالا بر فرض مثال این خط کد تبدیل شده به 20 بیت، و cpu هم داره برنامه رو اجرا میکنه و یه اینتراپت در هنگامی که cpu داره بیت 10 رو اجرا میکنه رخ میده، حالا چه اتفاقی میاوفته؟ آیا cpu میره به اینتراپت پاسخ میده یا اول این 20 بیت رو تموم میکنه و بعد میره سراغ اینتراپت؟



    با تشکر.
    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
    (پیش به سوی هدف)

    دیدگاه


      #17
      پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

      در هر صورت اصلا هواسم نبود که میتونم جاهایی از برنامه که نمیخام با تحریک int7 بره تو لیبل اینتراپت، میتونم اینتراپت مورد نظر رو غیرفعال کنم و بعد آخر بلاک دوباره فعالش کنم. غیر فعال یا فعال کردن اینتراپت در جاهای مختلف کد، غیر استاندارد یا مشکلی نیست از نظر شما؟
      مشکلی نداره...به هر حال بعضی جاها میخاید یک تکه از کدتون به طور کامل اجرا بشه و هیچ وقفه ای بینش نیفته...میتونید ابتدای اون کد اینتراپت رو غیر فعال کنید و در انتها دوباره فعالش کنید...در کامپایلر AVR-GCC این کار با دیفاین atomic انجام میشه...ولی در بسکام نمیدونم..میتونید هم خودتون دستی فعال و غیر فعال کنید

      سوال دوم اینکه شما فرض کنید من یه خط کد نوشتم، خوب این خط کد باید تبدیل بشه به زبان ماشین که بیت ها هستن. حالا بر فرض مثال این خط کد تبدیل شده به 20 بیت، و cpu هم داره برنامه رو اجرا میکنه و یه اینتراپت در هنگامی که cpu داره بیت 10 رو اجرا میکنه رخ میده، حالا چه اتفاقی میاوفته؟ آیا cpu میره به اینتراپت پاسخ میده یا اول این 20 بیت رو تموم میکنه و بعد میره سراغ اینتراپت؟
      هیچ وقت سایز کدتون 20 بیت نمیشه!باید مضربی از 8 باشه!
      در هر جای برنامه که درخاست اینتراپت بشه اون دستور انجام میشه و آدرس دستور بعدی در stack ذخیره میشه...بعدش روتین اینتراپت درخاستی پرش میشه و روتین اجرا میشه و در برگشت آدرس اون خط که باید اجرا میشد از استک برداشته میشه و ادامه کار انجام میشه...

      ممکنه شما 2+2 دارید انجام میدید و وسطش درخاست اینتراپت میشه...از همون وسط پرش میشه به اینتراپت و ادامه جمع کردن پس از خاتمه اینتراپت انجام میشه!
      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

      www.intelart.ir


      ساخت کنترلر دما PID فازی با AVR [آموزشی]

      دیدگاه


        #18
        پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

        حالا یه سوال از خود خودتون ، شما چطور اینقدر درک درستی از میکروکنترلر ها دارین ؟؟ چی خوندین ، من بعد اتمام این پروژه با بسکام ، دیگه دارم میآم رو سی ، واقعا فوقالعادست ، حالا سی هم به اندازه اسمبلی به رجیستر ها و مثلا همین reti که گفتین و دیگر رجیسترها دسترسی داره ؟؟
        چون آموزش کدویژن بیشتر بود ، من این ide رو انتخاب کرده بودم ، ولی خیلی دوست دارم دیباگ کردن و دیگر تغییرات رو به عین ببینم تا بتونم تصمیم بگیرم ، اتمل استدیو با این حال بهتر از کدویژن خواهد بود انگار ، درسته ؟؟
        البته هرچی که به معجزه ی قرن یعنی ویژال استدیو ربط پیدا کنه ، که فوقالعاده میشه، این به کنار.



        ممنون.
        به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
        (پیش به سوی هدف)

        دیدگاه


          #19
          پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

          والا من چند سال پیش خودم AVR رو با زبان سی شرو کردم به کار کردن...بعد یک سال درس میکروپروسسور داشتیم و استادمون تماما با AVR Studio درس داد و البته قبلش معماری AVR رو درس داد...خودمم چون علاقه داشتم خوب گوش میکردم سر کلاس...اینجوری شد دیگه

          شما اگه میخاین بیاین سراغ سی دو راه دارین:یکی اینکه با کدویژن کار کنین و بابت خیلی چیزا خودتونو راحت کنین..از لحاظ کد نوشتن منظورمه

          یکی هم اینکه بیاین سراغ اتمل استودیو و همه چیو رو حساب کتاب انجام بدین...مثلا شما بخای یه دیتا داخل فلش ذخیره کنی با کدویژن فقط کافیه کلمه flash رو به ابتدای تعریف اضافه کنی ولی در اتمل استودیو دردسرش بیشتره و برای اینکه بتونی باهاش کار کنی حتما باید یه درک ساده از از معماری میکرو داشته باشی که به نظر من ارزشش رو داره بیشتر وقت بذاری ولی اصولی یاد بگیری...
          قطعا مثال های کدویژن خیلی بیشتر از اتمل استودیو هست...

          به هر حال وقتی با اتمل استودیو کار کنی داری واقعا با زبان برنامه نویسی سی کار میکنی ولی در کدویژن اینطور نیست و خیلی چیزا اضافه شده یا بعضی چیزا هم کم شده!

          البته هرچی که به معجزه ی قرن یعنی ویژال استدیو ربط پیدا کنه ، که فوقالعاده میشه، این به کنار.
          این یه بخش قضیه س...قسمت دیگه ش استفاده از کامپایلر قدرتمند AVR-GCC هست!اینو هم دست کم نگیر...
          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

          www.intelart.ir


          ساخت کنترلر دما PID فازی با AVR [آموزشی]

          دیدگاه


            #20
            پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

            کتابی چیزی برای آموزش مدنظرتون هست ؟؟
            به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
            (پیش به سوی هدف)

            دیدگاه


              #21
              پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

              واسه شروع کتاب جابر الوندی بد نیست که البته با کدویژن توضیح داده....
              بهترین کتاب خود دیتاشیت هست!
              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

              www.intelart.ir


              ساخت کنترلر دما PID فازی با AVR [آموزشی]

              دیدگاه


                #22
                پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

                حالا که بحث تا اینجا کشیده شده ،
                یعنی چی بهترین کتاب خود دیتا شیت هست؟؟
                مگه دستورات تو دیتاشیت نوشته ؟؟ یا مثلا گرامر زبان برنامه نویسی رو گفته ؟؟ مگه نباید اول یه زبان یاد بگیریم و بعدا بیایم رو میکرو کار کنیم ، پس چجوری دیتا شیت میتونه بهترین کتاب برای برنامه نویسی باشه؟؟

                میشه شما یه لطف کنید توضیح بدید دیتاشیت چه ربطی به آموزش های مثلا اتمل استدیو داره ؟؟ قبلا دوستان دیگه گفتن که اگه سی بدونی با دیتا شیت میتونی خودت برنامه بنویسی ، حالا نگرفتم منظورشون چیه.


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


                با تشکر/.
                به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                (پیش به سوی هدف)

                دیدگاه


                  #23
                  پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

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

                  در نتیجه اگه استاد برنامه نویسی باشید ولی از معماری میکرو چیزی ندونید حتی یه LED هم نمیتونید خاموش روشن کنید...

                  پس برای کسی که تازه میخاد رویکردشو عوض کنه و حرفه ای بشه این کارها لازمه:

                  1-ابتدا بشینید برنامه نویسی C رو یاد بگیرید...منبع خیلی زیاده...بهترینش کتاب Deitel هست...بعضی ها هم کتاب آقای جعفرنژاد قمی رو پیشنهاد میکنم که به نظرم اون کتاب سواد برنامه نویسیتونو کم میکنه!!!بله..چون که جزئیات رو نگفته و اگه بخاید از روی اون برنامه نویس بشید هیچی یاد نمیگیرید به جز یه مشت سینتکس!

                  2-قدم دوم اینه که کار با دیتاشیت رو بلد بشین...مثلا خود من تا بحال خیلی سرو کارم به تایمر افتاده ولی الان از حفظ هیچی بلد نیستم!حتی از حفط بلد نیستم چطور تایمر 1 رو بذارم رو مد PWM...اولین کاری که میکنم میرم سراغ دیتاشیت...رجیسترهای تایمر 1 رو نگاه میکنم و خیلی راحت با رجیستر مد دلخواهمو تنظیم میکنم...

                  واسه شما که با بسکام کار کردید بهتره که ابتدا یه مقدار معماری AVR رو بخونید...ببینید حافظه و CPU و بخش های جانبی چطور به هم مربوط میشن...در کنارش برنامه نویسی هم کار کنین و بعد از اون کم کم میتونید حرفه ای بشین..اگه هم عجله دارین بهتون پیشنهاد میکنم تاپیک: "کوچ کردن از کدویژن به اتمل استودیو" نوشته آقای مرتضوی که در همین انجمن هست رو پیدا کنید و بخونید...اونجا هم خوب یاد میگیرین به شرطی که بیس برنامه نویسی C رو بلد باشین...واسه شما که بسکام کار کردین و الگوریتم میتونین طراحی کنین شیفت کردن از VB به C کار سختی نیست...

                  خود من وقتی خاستم برم سراغ آرم اول نشستم دوبار معماری LPC168 رو خوندم...بعدش رفتم سراغ رجیستر ها!
                  تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                  www.intelart.ir


                  ساخت کنترلر دما PID فازی با AVR [آموزشی]

                  دیدگاه


                    #24
                    پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

                    خوشبختانه سی/سی++ رو بلدم ، و برا همینم میخام بیام سراغ سی تو میکرو.
                    کلا بسکام خیلی کلی هست ، و اصلا یجوریه ، بستست ، برای کسایی که پروژهای متوسط و متوسط رو به پایین دارن خوبه، اصلا به رجیسترها دسترسی نداری ، اصلا فاز نمیده ، من که بعد یسال برگشته بودم سراغ بسکام ، چون داشتم سی یاد میگرفتم ، یعنی عذاب بود ، کلا شکل و شمایل سی بهش دادم تا بفهمم کجا به کجاست.


                    میخام زحمتتون بدم و بپرسم معماری رو باید از کجا بخونم ؟؟ باید از کجا گیرش بیارم تا بخونم ، ترجیحا فارسی ؟؟!!


                    با تشکر فراوان.
                    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                    (پیش به سوی هدف)

                    دیدگاه


                      #25
                      پاسخ : تداخل دو اینتراپت int و timer0 در برنامه و عمل نکردن timer0

                      بله درسته همینطوره...

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

                      www.intelart.ir


                      ساخت کنترلر دما PID فازی با AVR [آموزشی]

                      دیدگاه

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