私はFreeRTOSがArduinoウォッチドッグタイマーを使って動作することを知っています。 FreeRTOSと競合することなく、自分自身のウォッチドッグリセットタイマーをセットアップできますか?ArduinoでFreeRTOSとハードウェアウォッチドッグタイマーを同時に使用できますか?
#include <avr/wdt.h>
wdt_enable(WDTO_2S);
とフィードする:
wdt_reset();
私はFreeRTOSがArduinoウォッチドッグタイマーを使って動作することを知っています。 FreeRTOSと競合することなく、自分自身のウォッチドッグリセットタイマーをセットアップできますか?ArduinoでFreeRTOSとハードウェアウォッチドッグタイマーを同時に使用できますか?
#include <avr/wdt.h>
wdt_enable(WDTO_2S);
とフィードする:
wdt_reset();
ウォッチドッグタイマの使用はhttp://www.arduinolibraries.info/libraries/free-rtosで「公式」Arduinoのポートとのできない機能に固有の設定で例えば
、特にFreeRTOS。この実装については、https://feilipu.me/2015/11/24/arduino_freertos/に詳しく説明されています。
ウォッチドッグタイマーはシステムチックタイマとして使用されます(他のすべてのタイマーはArduinoフレームワークで使用するように設定されているため)。その場合、ウォッチドッグ・タイマは通常の目的には使用できません。また、非同期にリセットすると、スケジューラのタイミングが乱れることがあります。
このようなウォッチドッグタイマーを使用すると、単一のポートがすべてのArduinoデバイスで使用可能なタイマーソースであり、Arduinoフレームワークが制御権を握らないため、すべてのAVRベースのArduinoハードウェアで動作するようになります。オンチップの128KHzオシレータは特に正確でも温度安定でもないため、これは最適ではありません。
ウォッチドッグが意図された目的のために必要な場合は、使用しない(アプリケーションによって)標準タイマーを使用するようにポートを変更することをお勧めします。ウォッチドッグの使用は、タイマの使用に関係なく、すべてのArduinosおよびすべてのアプリケーションへのポートの移植性を確保することでした。ただし、ハードウェアとアプリケーションで作業するだけで済みますので、それに合わせることはまったく正当なものです。
代わりに、Arduinoのフレームワークとライブラリを完全に放棄して、未使用のAtmel AVRマイクロコントローラとして扱うだけです。たとえば、this Arduino FreeRTOSポート以外のポートは、ATMega323でタイマー1を使用しますが、他のAVRデバイスに合わせて変更するための情報を提供します。