پرش به محتوای اصلی
حل شده

زمان دقیق شروع شمارش در IWDG

تصویر محمد کیا نی نسبمحمد کیا نی نسبپرسیده شده ۱ سال پیش۴۱ بازدید۱ پاسخ
سلام وقتتون بخیر ببخشید یه سوال داشتم شما در تدریستون اشاره کردین که زمانی که IWDG راه اندازی اولیه (init) می شه start هم می شه و شروع به شمارش می کنه اگر اینطور باشه باید در برنامه ای که نوشتین 3 ثانیه هم برای toggle شدن led استفاده بشه و با 0.2 ثانیه نگه داشتن led میکرو ریست بشه در حالیکه باید 3.2 ثانیه کلید را نگه داریم تا این اتفاق بیفته میشه بگین کدوم قسمت از استدلالم اشتباهه؟ و یک سوال دیگه اینکه این مقداری که به صورت نزولی شمارش میشه در چه رجیستری هست؟ من چنین رجیستری در رجیستر های IWDG پیدا نکردم(می خواستم در حالت دیباگ در SFRs مقدار این رجیستر را ببینم ولی چنین چیزی پیدا نکردم.من از cube ide استفاده می کنم)

پاسخ منتخب

تصویر مرتضی بهبوییمرتضی بهبوییاستاد· ۱ سال پیش
پاسخ منتخب
بله، در میکروکنترلرهای STM32، وقتی که IWDG رو Init می‌کنید، تایمر شروع به کار می‌کنه (start) و نیازی به دستور Start مجزا نیست. شما احتمالاً قبل از ورود به حلقه اصلی (main loop) یا قبل از اولین تأخیر 3 ثانیه‌ای، یه بار IWDG رو ریفرش کردید (یا زمان زیادی طول کشیده تا برنامه وارد حلقه شه). بنابراین شمارنده IWDG که مثلاً برای 3.2 ثانیه تنظیم شده، از اون لحظه شروع به شمارش کرده، و اگر شما بخواید ریست اتفاق بیفته، باید از اون نقطه بیش از 3.2 ثانیه طول بکشه. در مورد رجیستر شمارش فعلی: IWDG->CNT رجیستر شمارنده‌ی فعلیه (read-only)، ولی ممکنه در پنجره SFRs نباشه. می‌تونید دستی در Watch اضافه‌اش کنید تا مقدارش رو ببینید.

پاسخ‌ها (۱)

    پاسخ شما

    برای پاسخ دادن به این سوال وارد شوید.