سلام وقتتون بخیر ببخشید یه سوال داشتم شما در تدریستون اشاره کردین که زمانی که 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 اضافهاش کنید تا مقدارش رو ببینید.