<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IWDG | 即戦力モノづくり!エンジニアへの道標</title>
	<atom:link href="https://depfields.com/tag/iwdg/feed/" rel="self" type="application/rss+xml" />
	<link>https://depfields.com</link>
	<description>組み込み（マイコン）スキルを楽しんで学びながら身につけて短期間で効率よく自由自在に扱えるようになりたいと思いませんか？</description>
	<lastBuildDate>Mon, 11 Apr 2022 06:40:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3</generator>

<image>
	<url>https://depfields.com/wp-content/uploads/2020/07/cropped-favicon-1-32x32.png</url>
	<title>IWDG | 即戦力モノづくり!エンジニアへの道標</title>
	<link>https://depfields.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>独立型ウォッチドッグタイマ【STM32のIWDG詳細】</title>
		<link>https://depfields.com/iwdg/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iwdg</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Wed, 10 Jun 2020 02:45:00 +0000</pubDate>
				<category><![CDATA[各周辺機能(ペリフェラル)詳細]]></category>
		<category><![CDATA[IWDG]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=2894</guid>

					<description><![CDATA[<p>ウォッチドッグタイマとは 独立型ウォッチドッグタイマ 関数実行例：　IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 関数実行例：　IWDG_SetPrescaler(IWDG_ [&#8230;]</p>
<p>The post <a href="https://depfields.com/iwdg/">独立型ウォッチドッグタイマ【STM32のIWDG詳細】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img fetchpriority="high" width="640" height="480" src="https://depfields.com/wp-content/uploads/2020/06/dog-2367797_640.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/06/dog-2367797_640.jpg 640w, https://depfields.com/wp-content/uploads/2020/06/dog-2367797_640-300x225.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>




<h2 class="wp-block-heading">ウォッチドッグタイマとは</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ウォッチドッグタイマとはプログラムが暴走・フリーズしてしまったときに、これを検出してプログラムを終了させてリセットかける機能のことです。プログラムの異常を見張る役目のため<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ウォッチドッグ（番犬）タイマ</span></strong>と呼ばれています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>PCで何らかの影響でアプリケーションプログラムが突然フリーズすることはよくあると思います。これは何らかのはずみで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プログラムが無限ループに入ってしまい</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外からの操作を受け付けることができなくなる</span></strong>、つまり固まってしまう状態になってしまっているのです。こうなればPCの場合は強制的に電源を再投入して再起動するしかないのですが、組み込み機器ではそうはいきません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そこで、ウォッチドッグタイマ機能を使用して問題が発生した異常時にプログラムを終了し、自動的に強制リセットかけます。ウォッチドッグタイマ機能が異常を検出するのではなく、正常であればカウンタ値をクリアされるところをクリアされずに<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>タイムアウトに達してしまうことで異常とみなし</strong>、</span>プログラムを終了させ強制リセットをかけるのです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>趣味の電子工作では必要ないかもしれませんが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">24時間稼働の産業機器や医療機器などでは必要な機能</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/iwdg.jpg" alt="" class="wp-image-2896" width="377" height="223" srcset="https://depfields.com/wp-content/uploads/2020/06/iwdg.jpg 376w, https://depfields.com/wp-content/uploads/2020/06/iwdg-300x177.jpg 300w" sizes="(max-width: 377px) 100vw, 377px" /><figcaption>独立ウォッチドッグタイマ</figcaption></figure>



<h2 class="wp-block-heading">独立型ウォッチドッグタイマ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32マイコンではウォッチドッグタイマの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロックはLSI内部クロックを使用</span></strong>しています。システムクロックは外部HSEまたは内部HISから供給したものですので、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">独立したクロック</span></strong>で、万一システムクロックにトラブルが発生しても影響を受けずに問題を検出できます。このため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">独立型ウォッチドッグ</span></strong>と呼ばれています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>タイマは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ダウンカウンタ</span></strong>となっていて、カウント値クリア直後の設定値からスタートしてダウンカウントしていきます。カウント値が途中でクリアされずにアンダーフローに達するとマイコンは強制リセットされます。そのため、アンダーフローつまり<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">タイムアウトに達する前にカウンタ値をクリアする必要</span></strong>があります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/iwdg-setting.jpg" alt="" class="wp-image-2897" width="646" height="273" srcset="https://depfields.com/wp-content/uploads/2020/06/iwdg-setting.jpg 780w, https://depfields.com/wp-content/uploads/2020/06/iwdg-setting-300x127.jpg 300w, https://depfields.com/wp-content/uploads/2020/06/iwdg-setting-768x325.jpg 768w" sizes="(max-width: 646px) 100vw, 646px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実際のプログラムおける設定を解説していきます。<br>プログラム起動直後、独立型ウォッチドッグはデフォルトでレジスタへの書き込みは禁止ですので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">IWDG_WriteAccessCmd関数</span></strong>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">書き込みアクセス許可</span></strong>します。引数は、<strong>IWDG_WriteAccess_Enableでアクセス許可、IWDG_WriteAccess_Disableでアクセス禁止</strong>です。</p>
</div></div></div>



<p>関数実行例：　IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>次にウォッチドッグタイマのクロック分周比を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">IWDG_SetPrescaler関数</span></strong>で設定します。関数の引数は4から256まで7通りあります。下表はLSIが40kHzであるときに分周比による設定できる時間をまとめたものです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="584" height="255" src="https://depfields.com/wp-content/uploads/2020/06/iwdg-prescaler.jpg" alt="" class="wp-image-2898" srcset="https://depfields.com/wp-content/uploads/2020/06/iwdg-prescaler.jpg 584w, https://depfields.com/wp-content/uploads/2020/06/iwdg-prescaler-300x131.jpg 300w" sizes="(max-width: 584px) 100vw, 584px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>LSIは内部クロックですので多少の周波数のばらつきはありますが約2500msにウォッチドッグタイマを設定したい場合は分周比32を指定します。</p>
</div></div></div>



<p>関数実行例：　IWDG_SetPrescaler(IWDG_Prescaler_32);</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>カウント数の設定はIWDG_SetReload関数で指定します。関数の引数は0x0から0xFFF(4095)の範囲内で、3000を指定します。</p>
</div></div></div>



<p>関数実行例：　IWDG_SetReload(3000);</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ウォッチドッグタイマのカウンタ値クリアは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">IWDG_ReloadCounter関数</span></strong>で行います。設定したカウンタ値（3000で約2500ms）で強制リセットとなりますので、この期間以内、例えば100ms間隔で実施するTaskD内で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カウンタクリアを行います</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カウンタクリア</span></strong>はウォッチドッグの機能を考えると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">優先度の最も低いタスクで実施する</span></strong>ことが好ましいです。正常運転中は最低優先度のTaskDでもほぼ設定周期100msで実施されますのでカウンタクリアはできますが、何らか異常が発生してフリーズしている場合はTaskDが実施されずカウンタクリアはできず、ウォッチドッグタイマはタイムアウトに到達して強制リセットに至ります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/iwdg-action.jpg" alt="" class="wp-image-2903" width="463" height="243"/><figcaption>IWDG動作の様子</figcaption></figure>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/iwdg/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/b11a08c789631eacce8a55ac08b7de523f55fb74ba87d03b57cabddfd282fa24.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Independent Watchdog timer of STM32 | Most Powerful Bible to Become an Embedd...</div></div><div class="lkc-url">https://en.depfields.com/iwdg/</div><div class="lkc-excerpt">What is a watchdog timer?A watchdog timer is a function that detects when a program has runaway or frozen, terminates the program, and resets it. It is called a watchdog timer because of its role in watching for program abnormalit</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/iwdg/">独立型ウォッチドッグタイマ【STM32のIWDG詳細】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
