اطلاعیه

Collapse
No announcement yet.

ریست شدن میکرو

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

    ریست شدن میکرو

    من یک برنامه نوشتم که چند هزار خطه
    برنامه بیشتر اوقات درست کار می کنه اما گاهی اوقات خود به خود ریست میشه چون watchdog فعاله
    به نظر شما برای رفع این مشکل چکار باید بکنم؟

    #2
    پاسخ : ریست شدن میکرو

    دو احتمال وجود داره یا به علت هنگ کردن میکرو به علل مختلف است و watchdog وظیفه ش رو درست انجام میده و علل احتمالی هنگ میکرو رو بررسی کنید.
    و احتمال دوم که من حدسم بیشتر روی اونه ،
    اینه که برنامه شما در بعضی قسمتها watchdog رو ریست نمیکنه و باعث عمل کردن اون میشه.
    شما قسمتهای مختلف مخصوصا جاهای که تکرار زیاد دارید مثل حلقه ها رو چک کنید که ایا watchdog رو در زمان مناسب ریست کردین یا نه
    مهم نیست چه مدرکى دارید
    مهم این است که چه درکى دارید . . .

    دیدگاه


      #3
      پاسخ : ریست شدن میکرو

      watchdog رو غیر فعال کن ببین بازم ریست میشه یا نه.
      اگر ریست نشه معلومه واسه watchdog هست وگرنه مال برنامت هست که یهجاش مشکل داره.

      دیدگاه


        #4
        پاسخ : ریست شدن میکرو

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

        دیدگاه


          #5
          پاسخ : ریست شدن میکرو

          تو حلقه while(1) تابع main() بنویس

          کد:
          #asm("WDR")
          راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
          کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
          نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
          http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
          انشالله به زودي تاپيک ها به روز رساني خواهد شد،

          دیدگاه


            #6
            پاسخ : ریست شدن میکرو

            اینم قبلا انجام دادم

            دیدگاه


              #7
              پاسخ : ریست شدن میکرو

              نوشته اصلی توسط Mr.X
              اینم قبلا انجام دادم
              پس احتمالا برنامت تو قسمتی داخل یک حلقه گیر میکنه(باید برنامه رو کامل بررسی کرد)

              واچ داگ رو فعال نکنید ،ببنید درست بتون جواب میده؟
              راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
              کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
              نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
              انشالله به زودي تاپيک ها به روز رساني خواهد شد،

              دیدگاه


                #8
                پاسخ : ریست شدن میکرو

                برنامه را بارها و بارها چک کردم :angry:
                چه عوامل نرم افزاری باعث هنگ کردن و ریست شدن می شود؟

                دیدگاه


                  #9
                  پاسخ : ریست شدن میکرو

                  فایل rom. برنامت را بزار که شامل دستورات به زبان ماشین است . 99 درصد احتمالا سخت افزاری ریست میشه(که واچ داگم سخت افزاریه) .(با دستور ریست شدن یعنی جامپ به آدرس بردار ریست که احتمالش کمه شما از این کارا کنی) rom. رو بزار
                  راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                  کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                  نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                  http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                  انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                  دیدگاه


                    #10
                    پاسخ : ریست شدن میکرو

                    همونطور که قبلا بهت گفتم اول شما واچ داگ را غیر فعال کن. ببین بازم ریست میشه یا نه . شاید الکی بنده خدا رو داری گناهگار میکنی !
                    مهمترین عوامل ریست شدن نرم افزاری عبارتند از :
                    overflow شدن متغیرها روی هم که ممکنه باعث ریست یا اشتباه کار کردن برنامه بشه.
                    مقدار دهی انتراپتهای میکرو اعم از سخت افزاری یا نرمافزاری یعنی INT0 یا TIMER0_OVF و عدم وجود روتین مربوطه .

                    ممکن هم هست که مشکل سخت افزاری باشه و با نویز محیط و یا اتصالات اشتباه (مخصوصا اگر از رم خارجی استفاده میکنید) هم میتونه باعث ریست شدن بشه.
                    منتها اول شما watchdog رو غیر فعال کن ببین درست میشـــــــــــه بعدش...

                    دیدگاه


                      #11
                      پاسخ : ریست شدن میکرو

                      نوشته اصلی توسط امیر . م
                      overflow شدن متغیرها روی هم که ممکنه باعث ریست یا اشتباه کار کردن برنامه بشه.
                      مقدار دهی انتراپتهای میکرو اعم از سخت افزاری یا نرمافزاری یعنی INT0 یا TIMER0_OVF و عدم وجود روتین مربوطه .
                      سرریز یک متغییر باعث ریست شدن نمیشود. اگر منظورتون اینه که مثلا ما مقداری از حافظه را برای کاری ،اعلان کنیم و مقدار بیشتری در آن بریزیم و جاهای کناری را خراب کنیم ، این هم باعث این مشکل نمیشود. چون میکرو از سیستم هاروارد برای حافظه بندی استفاده میکند که حافظه های دستور و دیتا در آن جدا است.

                      در رابطه با جمله دوم بله اگر چنین مشکلی در نرم افزار بوجود آید که روتین وقفه ای نوشته نشود و آن وقفه صورت بگیرد ، چون در حالت عادی (روتین تعریف نشده) در آدرس روتین وقفه یک جامپ به آدرس بردار وقفه ریست وجود دارد ، پس این حالت باعث ریست میکرو میشود.
                      (با دستور ریست شدن یعنی جامپ به آدرس بردار ریست که احتمالش کمه شما از این کارا کنی)
                      راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                      کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                      نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                      انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                      دیدگاه


                        #12
                        پاسخ : ریست شدن میکرو

                        نوشته اصلی توسط RubeuS
                        سرریز یک متغییر باعث ریست شدن نمیشود. اگر منظورتون اینه که مثلا ما مقداری از حافظه را برای کاری ،اعلان کنیم و مقدار بیشتری در آن بریزیم و جاهای کناری را خراب کنیم ، این هم باعث این مشکل نمیشود. چون میکرو از سیستم هاروارد برای حافظه بندی استفاده میکند که حافظه های دستور و دیتا در آن جدا است.
                        میشه بگید حافظه دستور چیه ، حافظه کد چیه ؟ و اینکه معماری هاروارد چه ربطی به بحثی که من کردم داره؟
                        برای خودم پیش اومده که مثلا یه ماتریس رو 20 تایی گرفتم اما در اثر یک اشتباه بیشتر از 20 تا ازش استفاده کردم.
                        به وقتایی فقط خرابکاری کرده ولی یه وقتایی هم کلا ریست کرده. من هم گفتم "ممکنه" نگقتم همیشه. نگقتم اگر متغیرت int هست تو long بریزی توش میکرو ریست میشه.

                        دیدگاه


                          #13
                          پاسخ : ریست شدن میکرو

                          نوشته اصلی توسط امیر . م
                          میشه بگید حافظه دستور چیه ، حافظه کد چیه ؟ و اینکه معماری هاروارد چه ربطی به بحثی که من کردم داره؟
                          شما فرمودید با سرریز متغییر امکان ریست شدن میکرو (exception (استثنا)) وجود دارد و من هم عرض کردم چون حافظه دستور یا همون کد (instruction memory) میکرو (که همون حافظه فلش است) از حافظه دیتا (data memory) (که همون sram است) جداست پس امکان ریست شدن به این دلیل وجود ندارد. ولی علت دومی که گفتید امکان بوجود آمدن ریست را بوجود می آورد.
                          راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                          کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                          نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                          http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                          انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                          دیدگاه


                            #14
                            پاسخ : ریست شدن میکرو

                            نوشته اصلی توسط امیر . م
                            میشه بگید حافظه دستور چیه ، حافظه کد چیه ؟ و اینکه معماری هاروارد چه ربطی به بحثی که من کردم داره؟
                            برای خودم پیش اومده که مثلا یه ماتریس رو 20 تایی گرفتم اما در اثر یک اشتباه بیشتر از 20 تا ازش استفاده کردم.
                            به وقتایی فقط خرابکاری کرده ولی یه وقتایی هم کلا ریست کرده. من هم گفتم "ممکنه" نگقتم همیشه. نگقتم اگر متغیرت int هست تو long بریزی توش میکرو ریست میشه.
                            اون خراب کاری در sram بوجود می آید و مشکلی برای پردازنده بوجود نمی آورد. و فقط روی نتیجه نهایی شما تاثیر میگذارد
                            راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                            کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                            نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                            انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                            دیدگاه


                              #15
                              پاسخ : ریست شدن میکرو

                              بنا به فرمایش شما کلا بحث Stack Overflow منتفی میشه. درسته؟؟؟؟ oo:

                              دیدگاه

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