اطلاعیه

Collapse
No announcement yet.

مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

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

    مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

    سلام
    نظرتون چیه در این باره؟ میشه متغییر ها رو هم جایی تعریف کرد تا مقدارشون در هر بار ریست از بین نره
    این بحث goto هم فک کنم به همین روش هستش درسته؟ مثلا یه جای برنامه رو که تعیین میکنیم و بعد به کمک دستور goto میریم اونجا فک کنم آدرسش رو داره که میره اونجا.
    این ریست نرم افزاری چه مشکلاتی رو میتونه ایجاد کنه اصلا کار درسته؟ تا حالا برنامه درست و درمونی رو ندیدم این کارو کنه--نظرتون؟

    اینم کد نمونه - تست کردم جواب میده - کد رو ساده کردم.
    کد:
    [FONT=Yekan]int Number = 0;[/FONT]int a = 1;
    
    
    #define Reset ((void (*)(void))(&a))
    
    
    void main()
    {
      print(Number);
      delay(1000);
      //lcd.print(313);
      Reset();
    [FONT=Yekan]}[/FONT]
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    #2
    پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

    دستور goto که مقدار عددی متغیّر رو تغییر نمیده به هیچ وجه.
    دستور ریست روهم اگه مقدار متغیّر رو قبل از void main تعریف کرد ، عوض نمیشه.


    دیدگاه


      #3
      پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

      متغیرها را وقتی که مقدار مهمی بهشون انتصاب داده میشه می تونید در EEPROM ذخیره کنید. در این صورت چه با ریست سخت افزاری یا نرم افزاری، آخریم مقداری که در حافظه ذخیره شده بوده فراخوانی میشه

      دیدگاه


        #4
        پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

        نوشته اصلی توسط MOOR نمایش پست ها
        دستور goto که مقدار عددی متغیّر رو تغییر نمیده به هیچ وجه.
        من نگفتم GOTO مقدار میده - به مکانی از حافظه میره - گفتم از همین روش توی کد بالا باس به نظرم استفاده شده باشه.

        متغیرها را وقتی که مقدار مهمی بهشون انتصاب داده میشه می تونید در EEPROM ذخیره کنید. در این صورت چه با ریست سخت افزاری یا نرم افزاری، آخریم مقداری که در حافظه ذخیره شده بوده فراخوانی میشه
        حرف شما صحیح ولی سوال من چیز دیگه ای هستش.
        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

        اگه دوس دارید سریع به جواب برسید :
        1) قبل از پرسیدن سوال، بسرچید.
        2) سوالاتون رو با جزئیات کامل مطرح کنید.

        دیدگاه


          #5
          پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

          سلام شما میخوای توسط خود میکرو ،میکرو رو ریست کنی درسته؟؟؟؟
          اگه اره میخوای این کارو بکنی...من این کارو در عمل انجام دادم مثلا یکی از پورت هارو می زاری اول 1باشه قبل از حلقه..حالا توی حلقه هرجای حلقه که میخوای میکرو ریست بشه میگی اون پورت 0بشه هرمدتی گزاشتی گزاشتی فرقی نداره(به محض 0شدن میکرو ریست میشه..)به همین راحتی البته نرم افزاری نیست..ولی با نرمافزار میشهکاری کرد که خودش خودشو ریست کنه...که اینم راهی که گفتم
          موفق باشی
          Proudly @real_ahmadi
          #real_ahmadi

          واسه اسمت بجنگ

          دیدگاه


            #6
            پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

            نوشته اصلی توسط مهندس احمدی نمایش پست ها
            سلام شما میخوای توسط خود میکرو ،میکرو رو ریست کنی درسته؟؟؟؟
            اگه اره میخوای این کارو بکنی...من این کارو در عمل انجام دادم مثلا یکی از پورت هارو می زاری اول 1باشه قبل از حلقه..حالا توی حلقه هرجای حلقه که میخوای میکرو ریست بشه میگی اون پورت 0بشه هرمدتی گزاشتی گزاشتی فرقی نداره(به محض 0شدن میکرو ریست میشه..)به همین راحتی البته نرم افزاری نیست..ولی با نرمافزار میشهکاری کرد که خودش خودشو ریست کنه...که اینم راهی که گفتم
            موفق باشی
            ریست نرم افزاری یا چیزی که شما گفتید چه فرقی داره؟
            حرف شما درست، میشه یکی از پایه های میکرو رو به پایه reset وصل کرد و میکرو رو ریست کرد - ولی منظور من از داخله همون طور که گفتید.
            من میگم مشکلات ریست کردن از داخلش چیه؟ چه مشکلاتی ممکنه رخ بده؟

            راستی یه سوال - من بخوام آدرس یه نقطعه خاص از برنامه رو به دست بیارم چطور میتونم این کارو کنم؟ که بعد یه تابع با اون آدرس تعریف کنم و هر موقع خواستم اون تابع رو فراخونی کنم و برنامه منتقل بشه به اون آدرس؟؟؟؟
            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

            اگه دوس دارید سریع به جواب برسید :
            1) قبل از پرسیدن سوال، بسرچید.
            2) سوالاتون رو با جزئیات کامل مطرح کنید.

            دیدگاه


              #7
              پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

              نوشته اصلی توسط md3848 نمایش پست ها
              ریست نرم افزاری یا چیزی که شما گفتید چه فرقی داره؟
              حرف شما درست، میشه یکی از پایه های میکرو رو به پایه reset وصل کرد و میکرو رو ریست کرد - ولی منظور من از داخله همون طور که گفتید.
              من میگم مشکلات ریست کردن از داخلش چیه؟ چه مشکلاتی ممکنه رخ بده؟

              راستی یه سوال - من بخوام آدرس یه نقطعه خاص از برنامه رو به دست بیارم چطور میتونم این کارو کنم؟ که بعد یه تابع با اون آدرس تعریف کنم و هر موقع خواستم اون تابع رو فراخونی کنم و برنامه منتقل بشه به اون آدرس؟؟؟؟
              من هم ریست نرم افزاری رو کار نکردم بهتره خودتون یه پروژه بنویسید وازش استفاده کنید و نتیجه رو در اختیار ما بزارید
              موفق باشی
              Proudly @real_ahmadi
              #real_ahmadi

              واسه اسمت بجنگ

              دیدگاه


                #8
                پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                نوشته اصلی توسط md3848 نمایش پست ها
                ریست نرم افزاری یا چیزی که شما گفتید چه فرقی داره؟
                حرف شما درست، میشه یکی از پایه های میکرو رو به پایه reset وصل کرد و میکرو رو ریست کرد - ولی منظور من از داخله همون طور که گفتید.
                من میگم مشکلات ریست کردن از داخلش چیه؟ چه مشکلاتی ممکنه رخ بده؟
                چه مشکلی ممکنه رخ بده !! مگه اینکه ریست ناخواسته باشه و داده های برنامه از دست بره.
                واسه ریست هم میشه واچ داگ رو فعال کرد که همه میکرو ها دارن (اگه درست متوجه منظورت شده باشم)


                نوشته اصلی توسط md3848 نمایش پست ها
                راستی یه سوال - من بخوام آدرس یه نقطعه خاص از برنامه رو به دست بیارم چطور میتونم این کارو کنم؟ که بعد یه تابع با اون آدرس تعریف کنم و هر موقع خواستم اون تابع رو فراخونی کنم و برنامه منتقل بشه به اون آدرس؟؟؟؟
                تابع رو که هر کجای برنامه فراخونی کنی اجرا میشه دیگه و برنامه میره به اون آدرس
                If the wind will not serve, take to the oars

                دیدگاه


                  #9
                  پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                  من هم ریست نرم افزاری رو کار نکردم بهتره خودتون یه پروژه بنویسید وازش استفاده کنید و نتیجه رو در اختیار ما بزارید
                  پست اولم رو ببینی کد تست شده گزاشتم/


                  تابع رو که هر کجای برنامه فراخونی کنی اجرا میشه دیگه و برنامه میره به اون آدرس
                  فک کن یه برنامه 2000 خطی داری - میخوای در اول پروژه توابعی رو تعریف کنی با آدرس مشخص که وقتی فراخونی میشن برنامه میپره به اون آدرس و برنامه از اون آدرس اجرا میشه، یه جورایی میخوام دستور goto رو بسازم - اینی که شما میگید بحث تابع تو در تو هستش که اونم نمومیدونم اگه امکانش باشه تعریف تابع تو در تو که بعید میدونم

                  [FONT=Yekan]int Number = 0;[/FONT]int a = 1;

                  #define Reset ((void (*)(void))(&a))

                  void main()
                  {
                  print(Number);
                  delay(1000);
                  Reset();
                  }
                  اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                  اگه دوس دارید سریع به جواب برسید :
                  1) قبل از پرسیدن سوال، بسرچید.
                  2) سوالاتون رو با جزئیات کامل مطرح کنید.

                  دیدگاه


                    #10
                    پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                    سلام
                    نمیدونم به نتیجه رسیدین یا نه...اینجور که من برداشت کردم میخاین توسط برنامه میکرو رو ریست کنین
                    دو مدل هست واسه اینکار:
                    1- اینکه Program Counter به ابتدای آدرس حافظه یعنی 0x00 بره.توضیحات بیشتر: ابتدای حافظه فلش رو نمیتونید برنامه نویسی کنید...یعنی کد اصلی برنامه شما اونجا قرار نمیگیره...ابتدا مربوط به کارهای خاصی هست که بهش میگن بردار (Vector)...مثلا وکتور مربوط به اینتراپت تایمر یا هر اینتراپت دیگه ...اولین وکتور در آدرس 0 قرار داره و مربوط به ریست میکرو هست.یعنی اگه کاری کنید که پروگرم کانتر بپره به اون آدرس باعث میشه که برنامه از اول اجرا بشه...خب در این حالت میکرو مثل وقتی که تازه روشن شده عمل میکنه ولی یه تفاوت اساسی داره:رجیسترهایی که مقدار دهی اولیه نشدن و در طول برنامه مقدارشون تغییر کرده دیگه مقدار اولیه نمیگیرن چون شما ریست سخت افزاری نکردید و فقط پروگرم کانتر رو به مکان دیگه ای منتقل کردید.

                    خب با این قطعه کد میتونید این کار رو انجام بدید:

                    #define RESET() ((void(*)(void))0)()

                    2- روش دیگه این هست که به وسیله نرم افزار کاری کنید که میکرو ریست سخت افزاری بشه...خب منابع ریست سخت افزاری رو هم که میدونید چی هست...یکیش پین فیزیکی ریست هست و یکی دیگه واچ داگ تایمر (منابع دیگه مثل Brown Out Detector هم هستند)...اگه شما بتونید کاری کنید که واچ داگ باعث ریست میکرو بشه تونستید میکروکنترلر رو کاملا به صورت سخت افزاری ریست کنید...خب واسه این کار کافیه یه دیفاین بنویسید که واچ داگ رو فعال کنه و بعدش میکرو رو بندازید داخل یه حلقه بینهایت تا واچ داگ عمل کنه و میکرو رو ریست کنه...مثل کد زیر:


                    #define RESET_BY_WATCH_DOG() WDTCR=(1<<WDE)|(1<<WDP1)|(1<<WDP0);while(1);




                    =====================
                    در مورد مشکلات سوال کرده بودید:
                    حالت دوم هیچ مشکلی نداره مثل اینه که میکرو از اول روشن بشه...

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

                    جایی در مورد goto صحبت کرده بودید...پیشنهاد میکنم از این دستور استفاده نکنید...سعی کنید برنامه رو طوری بنویسید که احاطه کامل بهش داشته باشید تا مجبور به استفاده از این دستور نشید...خیلی کار رو ساده میکنه ولی بهتره که ازش استفاده نکنید...چرا؟چون تقریبا کارش مثل همون ریست اولی هست که گفتم...به جایی از برنامه منتقل میشید که قبلا در اون نقطه پردازنده با مقادیر دیگه ای از رجیسترها و متغیرها کار میکرده که ممکنه خروجی اشتباه بده....
                    جدیدترین ویرایش توسط Mahdi.Faani; ۰۰:۱۴ ۱۳۹۵/۰۶/۰۹.
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


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

                    دیدگاه


                      #11
                      پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                      نوشته اصلی توسط md3848 نمایش پست ها
                      پست اولم رو ببینی کد تست شده گزاشتم/


                      [/FONT][/RIGHT]
                      فک کن یه برنامه 2000 خطی داری - میخوای در اول پروژه توابعی رو تعریف کنی با آدرس مشخص که وقتی فراخونی میشن برنامه میپره به اون آدرس و برنامه از اون آدرس اجرا میشه، یه جورایی میخوام دستور goto رو بسازم - اینی که شما میگید بحث تابع تو در تو هستش که اونم نمومیدونم اگه امکانش باشه تعریف تابع تو در تو که بعید میدونم

                      [FONT=Yekan]int Number = 0;[/FONT]int a = 1;

                      #define Reset ((void (*)(void))(&a))

                      void main()
                      {
                      print(Number);
                      delay(1000);
                      Reset();
                      }
                      نگران توابع تو در تو نباشید
                      تا بینهایت (هر چقدر که حافظه میکرو جا داشته باشه) میتونید تابع تو در تو تعریف کنید و هیچ مشکلی نداره
                      احتمالا تنها توی تعریف بلوک ها محدودیت هست (فکر میکنم ۸ بلوک تو در تو باشه) که مورد بسیار بسیار نادری هست کسی این تعداد بلوک تو در تو داشته باشه
                      واسه من تا حالا پیش نیومده بیشتر از چهار تا بلوک تو در تو تعریف کرده باشم
                      If the wind will not serve, take to the oars

                      دیدگاه


                        #12
                        پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                        تا بینهایت (هر چقدر که حافظه میکرو جا داشته باشه) میتونید تابع تو در تو تعریف کنید و هیچ مشکلی نداره
                        میشه بگید این تابع تو در تو تو کدوم کامپایلر جواب میده و این که این تعریف تابع تو در تو به چه صورته چون بلد نیستم! چون تا تعریف تابع تو در تو رو من بلد نیستم و اشتباه تعریف میکنم یا برداشت من از تابع تو در تو اشتباهه یا این که اون کامپیایلری که استفاده میکنم این ویژگی رو پشتیبان نمیکنه - غیر از این حالات نیست که - ممنون میشم راهنمایی کنید ببینمک مشکل کدومه.

                        کد اصلی برنامه شما اونجا قرار نمیگیره...ابتدا مربوط به کارهای خاصی هست که بهش میگن بردار (Vector)
                        حرف شما صحیح ولی طبق دیتاشیت مگا 32 ص 44 و متن زیر هر کدوم از وقفه ها یه برداری یا یه مکانی از حافظه مختص خودشون دارن همون طور که فرمودید ولی به شرطی که ازشون استفاده کنیم اگه ازشون استفاده نکنیم این مکان از حافظه اختصاص به برنامه پیدا میکنه.
                        If the program never enables an interrupt source, the Interrupt Vectors are not used, and regular program code can be placed at these locations.

                        ولی یه تفاوت اساسی داره:رجیسترهایی که مقدار دهی اولیه نشدن و در طول برنامه مقدارشون تغییر کرده دیگه مقدار اولیه نمیگیرن چون شما ریست سخت افزاری نکردید و فقط پروگرم کانتر رو به مکان دیگه ای منتقل کردید.
                        ممنون میشم اسم ریجستر ها رو ذکر کنید، چون تا جایی که میدونم ریجستر ها در همون اول پروژه مقدار دهی میشن و باز اگه میکرو رو سخت افزاری ریست کنیم یا بپریم رو آدرس 0 بازم ریجستر ها مقدار دهی میشن، ممنون میشم یکم در این مورد ریجستر هایی که منظورته توضیح بدید و اسم چندتاشون رو ذکر کنید.


                        خب دوستان یه سوال - جدول زیر مربوط به Interrupt Vectors میکرو مگا32 - الان اون نحوه آدزسی دهیش به چه صورته؟ $ یعنی هگز دسیمال باینری؟ این فرمتش به چه صورته؟ در ضمن ترتیب اجرای وقفه ها هم به همین صورت جدول زیر هستش؟ یا به صورت دیگری هستش؟ و اگه وسط وقفه INT2 وقفه INT0 رخ بده برنامه میپره تو بردار INT0 یا وای میسته تا کار INT2 تموم بشه؟



                        در ضمن من هنوز متوجه نشدم که چطور میشه دستوری مثل GOTO رو ساخت و ایجاد! کرد.
                        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                        اگه دوس دارید سریع به جواب برسید :
                        1) قبل از پرسیدن سوال، بسرچید.
                        2) سوالاتون رو با جزئیات کامل مطرح کنید.

                        دیدگاه


                          #13
                          پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                          نوشته اصلی توسط md3848 نمایش پست ها
                          میشه بگید این تابع تو در تو تو کدوم کامپایلر جواب میده و این که این تعریف تابع تو در تو به چه صورته چون بلد نیستم! چون تا تعریف تابع تو در تو رو من بلد نیستم و اشتباه تعریف میکنم یا برداشت من از تابع تو در تو اشتباهه یا این که اون کامپیایلری که استفاده میکنم این ویژگی رو پشتیبان نمیکنه - غیر از این حالات نیست که - ممنون میشم راهنمایی کنید ببینمک مشکل کدومه.

                          در ضمن من هنوز متوجه نشدم که چطور میشه دستوری مثل GOTO رو ساخت و ایجاد! کرد.
                          مهندس هیچ زبان برنامه نویسی ای اجازه تعریف تابع تو در تو رو نمیده - عذر میخوام اگه نتونستم واضح توضیح بدم
                          منظورم از تابع تو در تو ، فراخوانی تو در توی تابع بود که همه کامپایلر ها پشتیبانی میکنن

                          واسه بکار بردن دستور goto اول باید یه label تعریف کنی (یه نام که با : تموم میشه)

                          loop:
                          // your code goes here
                          goto loop;
                          If the wind will not serve, take to the oars

                          دیدگاه


                            #14
                            پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

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

                            این فراخوانی تابع درسته و منم میگم این روش باید انجام بشه ولی سوال اینه که میخوام آدرس تابع رو تعیین کنم تا برنامه تو اون آدرس بپره و کداش رو اجرا کنه - آدرس یه جای مد نظر از برنامه رو چطور میتونم پیدا کنم؟ البته بدون تعریف متغییر در اون مکان از برنامه؟؟؟؟؟


                            واسه بکار بردن دستور goto اول باید یه label تعریف کنی (یه نام که با : تموم میشه)
                            دستور goto رو میدونم به چه صورته - من میگم چطور میشه با آدرس دهی به توابع و فراخونی کردنشون کاری کنیم که برنامه به اون درس پرش کنه و یه کاری کرده باشیم مثل goto
                            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                            اگه دوس دارید سریع به جواب برسید :
                            1) قبل از پرسیدن سوال، بسرچید.
                            2) سوالاتون رو با جزئیات کامل مطرح کنید.

                            دیدگاه


                              #15
                              پاسخ : مشکلاتی که با ریست نرم افزاری میکرو ممکنه ایجاد بشه چیه؟ آیا اصلا این کار درستی هستش؟

                              حرف شما صحیح ولی طبق دیتاشیت مگا 32 ص 44 و متن زیر هر کدوم از وقفه ها یه برداری یا یه مکانی از حافظه مختص خودشون دارن همون طور که فرمودید ولی به شرطی که ازشون استفاده کنیم اگه ازشون استفاده نکنیم این مکان از حافظه اختصاص به برنامه پیدا میکنه.
                              بله درسته...این نکته رو یادم رفت بگم که اگه از اینتراپت استفاده نکنید اون مکان به برنامه اصلی اختصاص داده میشه...

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

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

                              www.intelart.ir


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

                              دیدگاه

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