نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

انواع روش ریست نرم افزاری میکرو

347

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

انواع روش ریست نرم افزاری میکرو

انواع روش ریست نرم افزاری میکرو

توجه : تو این مطلب من میکرویی که استفاده میکنم آردوینو هستش ولی این مطلب برای تمام میکروکنترلرها هستش و صرفا برای آردوینو فقط نیست، چون آردوینو یکم سریع تره، ازش استفاده کردم تا مطلب رو سریع تر بنویسم.

انواع روش های ریست کردن میکرو از داخل خود میکرو به صورت زیر هستش : 

  1. این که یه تابع تعریف کنید که آدرسش ۰ باشه! و وقتی تابع فراخونی میشه میکرو میره به موقعیت ۰ حافظه، یعنی جایی که میکرو وقتی ریست میشه، میره اونجا.
  2. راه بعدی اینه که یه پایه میکرو رو به پایه ریست میکرو وصل کنیم و اینطوری میکرو رو ریست کنیم که اگه میکرو پایه کم داشته باشه شاید روش خوبی نباشه.
  3. یه سری روش دیگه برا ریست میکرو هستش که اونا میرن تو بحث ریست سخت افزاری که مربوط به این مطلب نمیشه، یه وصل کردن یه دکمه به پایه ریست که اینم مربوط نمیشه به این مطلب!؛ اگه روش دیگه ای میدونید بگید…

 

۱ – استفاده از یک پایه میکروکنترلر برای ریست کردن میکرو

تو این روش یکی از پایه های میکرو رو خروجی تعریف کنید و به پایه ریست وصل کنید، و با یک کردن پایه مد نظر، میکرو ریست میشه، به همین راحتی ^_^
نکته مهم : اول به صورت شکل زیر، پایه مد نظرتون رو به پایه Reset وصل نکنید، بعد از این که میکرو رو پروگرام کردید، وصل کنید، وگرنه میکرو پروگرام نمیشه.
شماتیک پروژه : 
استفاده از یک پایه میکروکنترلر برای ریست کردن میکرو

کد پروژه :

 

۲ – ریست کردن نرم افزاری میکرو بدون استفاده از پایه

تو این روش همون طور که قبلا گفتم و از عنوان معلومه، از هیچ پایه میکرو استفاده نمیکنیم و یه تابع تعریف میکنیم که آدرسش ۰ هستش ( توابع هم مثل متغییر ها آدرس دارن ) و وقتی تابع مربوطه فراخوانی بشه، میکرو میره به حافظه ۰ – به همین راحتی ^_^ نحوه تعریف این تابع با آدرس ۰ به صورت زیر هستش :

کد پروژه :

توجه : در پروژه بالا، در نرم افزار آردوینو، کد هگزو از پروژه بگیرید و در شبیه ساز پروتئوس، به میکرو بدید تا شبیه ساز کار کنه!

 

خب امیدوارم این مطلب ناچیز مفید باشه براتون، فعلا یا علی، خدافظ.

امام خامنه ای

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات :
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه
39
نظرات این مطلب بسته شده است.
  1. امیر

    مهمان

    امیر

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

    باید چی کار کنم؟

  2. علی

    مهمان

    علی

    سلام میخاستم بدونم که میشه میکروکنترلرها رو بدون پروگرامر برنامشون رو پاک کرد؟

  3. محمد

    مهمان

    محمد

    سلام
    ممنونم از شما
    خیلی عالی بود
    فقط نوشتن این سابروتین رو یه توضیحی بدید و اینکه نوشتن سابروتین در آردوینو
    به چه شکلی هست…
    void(*Reset) (void) = 0;
    Reset();
    ممنون از لطف شما

  4. محمد رضا

    مهمان

    محمد رضا

    نکته جالب و مهمی بود ، ممنون از توضیحاتتون

  5. امین

    مهمان

    امین

    سلام تو ریست نرم افزاری بدون استفاده از میکرو برنامه ای نوشتم که مثلا اگر پایه 10 در وضعیت high بود میکرو ریست بشه ولی نمیشه لطفا کمک میکنید

    مشاهده پاسخ ها (3)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام
      1-تو کدتون از LED_BUILTIN استفاده کردید ولی جایی تعریفش نکردید!
      2-این delay بعد reset برا چیه دیگه؟ باید قبل reset تابع delay رو قرار بدی!
      کدو و شماتیکی هم که من تست کردم رو هم نیم ساعت دیگه پیوست میکنم به مطلب / الان کار دارم.

      • مهدی دمیرچیلو

        نویسنده این مطلب

        مهدی دمیرچیلو

        به مطلب پیوست شد.

        • امین

          مهمان

          امین

          خدا خیرتون بده
          ممنون که وقت گذاشتید

  6. داریوش

    مهمان

    داریوش

    سلام مهندس در این کد در عمل هرگز نباید
    Serial.println(“never happens”);
    اجرا بشه درست متوجه شدم ؟
    چون قبلش تابع ریست اجرا میشه.

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-بله.

  7. امیرحسین مرادیان

    مهمان

    امیرحسین مرادیان

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-ممنون.اصلاح شد.

  8. رضا

    مهمان

    رضا

    سلام در مورد
    asm volatile(“jmp 0”):
    نتوضیح میدید؟

  9. موحد

    مهمان

    موحد

    سلام بزرگوار. لطفا کمکم کن . فک نکنم کسی جز شما بتونه کمکم کنه wacko
    من وقتی میخوام بوت لودر رو بریزم رو atmega8 با استفاده از uno دفه اول اوکی بود اما از دوم و سوم به بعد همش این ارور رو میده :
    avrdude: error: programm enable: target doesn’t answer. 1
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.
    چه کنم ؟
    (۱۰۰۰ بار اتصالات رو چک کردم درسته)

    مشاهده پاسخ ها (4)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-با uno نمیدونم – با پروگرامر این کارو میکردم موردی نبود- از بردهای آردینو تاحالا به عنوان پروگرامر من استفاده نکردم حقیقتا-شرمنده.

      • موحد

        مهمان

        موحد

        اوکی.ممنون good

    • m

      مهمان

      m

      یعنی دوبار میخای بوت لودرو رو یه میکرو بریزی؟

    • محمد

      مهمان

      محمد

      سلام.با یه میکرو دیگه تسط کن با کریستال ۱۶ مگا بذار.اگر بدون کریستال بذاری این خطا میاد و دیگه میکرو کار نمیکنه
      چون فیوزبیت میکرو گیر کرده

  10. روح الله

    مهمان

    روح الله

    دمت گرم داداش.

  11. hamedd

    مهمان

    hamedd

    سلام البته باید به گراند وصل بشه ریست

  12. parviz

    مهمان

    parviz

    سلام ممنون از سایت خودتون

  13. mehdi

    مهمان

    mehdi

    سلام
    میشه یکم بیشتر درباره کد ریست کردن در قسمت دوم توضیح بدید که چجور کار میکنه
    void(*Reset) (void) = 0; wacko

  14. محمد

    مهمان

    محمد

    سلام من کد بالا رو برای 1768 چک کردم و حواب نداد
    توی این سایت این کد رو معرفی کرده بود
    https://os.mbed.com/questions/4680/reset-command-soft-reset/
    NVIC_SystemReset();
    که جواب داد
    یاحق

  15. مسعود زاهدی

    مهمان

    مسعود زاهدی

    سلام آقا مهدی توی روش اول برای این که به مشکل پروگرام نشدن برخورد نکرد باید اول اون پایه رو ۱ کنیم و بعد به عنوان خروجی تعریفش کنیم هر وقتم خواستیم ریست کنیم پایه رو صفر کنیم.

  16. محمدحسن

    مهمان

    محمدحسن

    با سلام و خداقوت
    بنظرم یه روش دیگه میتونه ریست نرم افزاری با تایمر واچ داگ باشه، به این صورت که با فشار دادن یه باتن برنامه بره داخل
    یه حلقه while(1) گیر کنه و توسط واچ داگ تایمر، میکرو ریست شه

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام – خب چه کاریه – همون دکمه رو وصل میکنیم به پایه ریست میکرو دیگه smile ولی خب حرفت به عنوان یه روش قابل قبول هستش ولی منطقی نیست.

  17. علی

    مهمان

    علی

    من یه سوال دیگه داشتم یادم رفت ،
    مگه ولتاژ پین ها tx و rx ماژول hc05 نباید ۳٫۳ ولت باشه ، پس چرا مستقیم به میکرو avr وصل کردیم ، خروجی پین ها ۵ ولت هست؟
    البته من وصل کردم ، نسوخت.

    مشاهده پاسخ ها (3)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      یه تقسیم ولتاژ بزن – ولی همین کارو برا ماژول sim900 نکنی ( یعنی تقسیم ولتاژ نزنی ) درجا میسوزه

    • علی

      مهمان

      علی

      سلام
      الان من همین طوری استفاده کنم میسوزه ؟ چون تو شماتیک یکی از پروژه هاتون دیدم مستقیم وصل کردین به میکرو .
      ماژول من هدربوردی هست .
      باود ریت پروژه های hc05 رو ۹۶۰۰ بذارم بهتره یا ۱۱۵۲۰۰ ؟
      اگر استفاده طولانی از میکرو و بلوتوث بشه ، باید از وقفه استفاده کرد ؟ اگر نکنیم میسوزه؟ (برای چند ماه استفاده شبانه روزی).
      ممنون.

      • مهدی دمرچیلو

        نویسنده این مطلب

        مهدی دمرچیلو

        سیم۹۰۰ آره ولی بلوتوث رو نمیدونم دقیقا –
        B.R رو هم تو دیتاشیت میزان خطای هر کدوم رو زده – ولی من باشم ۱۱۵۲۰۰ رو انتخاب میکنم.
        سوختن ربطی به استفاده کردن/نکردن از وقفه نداره.

  18. علی

    مهمان

    علی

    سلام.
    راهی هست که بشه فلش ریست بشه یا حافظه اییپرام (پاک بشه)، مثلا با یه کد یا یا زدن کلید یا افت ولتاژ؟ یه فیوز بیت بود که از ۲٫۷ ولت پایین تر میومد ، حافظه موقت پاک میشد ، همچین چیزی برای اییپرام یا فلش وجود داره؟
    آخرین سوال : فروشگاه eca چطوره ؟ مثل ایران میکرو نیست؟
    ممنون.

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      حافظه فلش برا چی ریست بشه؟
      حافظه ایپرام رو ریست کنی در صورت کاهش ولتاژ؟ چراااااااااا؟
      eca مشکلات ایران میکرو رو نداره – حداقل من تاحالا ندیدم ازش.

  19. xxabasxx

    مهمان

    xxabasxx

    باعرض سلام خدمت دوست خوبم آقای مهدی دمرچیلو
    بسیار بسیار بسیار از سایت خوب شما ممنون و سپاسگذارم
    من از سایت شما خیلی مطالب یاد گرفتم ،چون تمام مطالب رو به زبان خیلی ساده بیان میکنید و این عالیه
    اگر امکان داره و اگر اشکال نداره ایمیل خودتون رو در اختیار من بگذارید تا مطالب و اشکالات و سوالاتم رو مستقیم به ایمیلتان بفرستم برای گرفتن پاسخ سریعتر
    انشالله که خداوند توفیق روز افزون به شما عطا کند
    ممنون و سپاسگذارم
    good good good

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-سوالات فقط در سایت یا گروه تلگرامی.

  20. مسعود قاسم زاده

    مهمان

    مسعود قاسم زاده

    سلام
    بابت سایت خوبتون تشکر می کنم
    خیلی خوبه .
    اجرتون با امام حسین علیه السلام .

  21. علی

    مهمان

    علی

    سلام.
    از کدوم سایت ها بخرم بهتره؟
    روبوایکیو خوبه؟
    ممنون.

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام – خوبه بد نیست

  22. علی

    مهمان

    علی

    سلام آقای دمرچیلو.
    من می خوام اینترنتی خرید کنم ، کلی قطعه سفارش دادم توی سایت ایران میکرو ، می خواستم بدونم ایران میکرو چجوریه؟ از بقیه بهتره ؟ همه چیز رو درست میفرسته؟(قطعات اشتباه نشن) آخه ۶۰۰ قلم جنسه.
    اگه میشه هرچه سریعتر جواب بدین، امروز آخرین مهلت ثبت سفارش هست.
    ممنونم. smile

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      دیر میفرسته – ممکنه بعضی چیزا رو از قلم بندازن و هزینش رو ندن ( برا خودم رخ داده این مشکل )