Armadilloフォーラム

RTC アラーム割り込みでのSleepからの起床のタイマー値

ka_satou

2023年5月26日 16時41分

aiot-set-wake-trigger rtcで起動までの時間をセットする際に、
rtcの最小値は60秒とマニュアルに記載されていますが上限値があれば教えてください。
例:1日一回起動で86,400、1年に1回なら31,536,000になりますが設定可能ですか?

コメント

at_shinya.koga

2023年5月29日 15時02分

アットマークテクノの古賀です。

ka_satou さん:
>aiot-set-wake-trigger rtcで起動までの時間をセットする際に、
>rtcの最小値は60秒とマニュアルに記載されていますが上限値があれば教えてください。
>例:1日一回起動で86,400、1年に1回なら31,536,000になりますが設定可能ですか?

搭載している RTC モジュールのハードウェア仕様により、31日後に対応する秒数(2678400)が実効的な上限値になるかと思います:
 https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/RV…
 https://manual.atmark-techno.com/armadillo-iot-a6/armadillo-iota6_produ…

Armadillo-IoT A6 に搭載している RTC は、サブユニットのリビジョンが rev 4 以前のもので使用している NR3225SA と、rev 4 以降で使用している RV-8803-C7 共に、アラーム日時を設定するレジスタが日、時、分しかありません。このため、1年後に対応する秒数を与えても、これらの RTC モジュールのドライバが実装しているアラーム日時設定関数で、日付の年の部分が捨てられてしまいます。
 https://github.com/atmark-techno/linux-4.14-at/blob/master/drivers/rtc/…
 https://github.com/atmark-techno/linux-4.14-at/blob/master/drivers/rtc/…
 https://github.com/atmark-techno/linux-4.14-at/blob/master/drivers/rtc/…

ですので、1日1回起動用に 86,400 を指定することは可能ですが、1年に1回起動を意図する 31,536,000 を指定した場合、エラーにならないものの、すぐに起床するかまたは、一ヶ月近く後に起床するなどの動作になると思われます。