Seeeduino XIAO (ATSAMD21G18) のGCLKライブラリ

Arduinoの機能だけなら利用価値はないかもしれないが、CPUが持つ機能をフル活用するには多種多様なクロック管理が必要となってくるためペリフェラル・クロックを管理するためのGCLKライブラリを作ってみた。
 
ペリフェラルとジェネレータの割当管理を行い、クロック・ジェネレータを追加したりクロックをポート出力することが可能だ。

【XIAOがセットアップするクロック・ソースとジェネレータ】

※上記以外のクロックが必要な場合はセットアップ済みのクロック・ソースから新しいクロック・ジェネレータを追加することができる。

【メソッドの概要】

規定のジェネレータをGCLOCK_GEN_GCLK0(48MHz)で初期化する。

ペリフェラル(id)に接続するジェネレータ(gen)を指定する。

ペリフェラル(id)へのクロック出力(enable)を制御。他のライブラリやアプリが利用する。

同じソース(src)で同じクロック(divider and divsel)を持つジェネレータがあればそのジェネレータを、ない場合は新たにジェネレータをセットアップし返す。失敗した場合はGCLOCK_GEN_NONEを返す。なお、ソース(src)自体のセットアップは行なわないことに注意すべし。

指定ポート(pin)にクロック(src and divider and divsel)を出力する。XIAOではD2/D3ポートのみ利用可能。

【サンプル・スケッチ】

【修正履歴】
2020-05-18
begin()にWDT/RTC用のジェネレータ初期設定を追加。control()が完璧に間違っていたので修正。

【ライブラリ】

【参照ライブラリ】
IOBUS.h … Seeeduino XIAO (ATSAMD21G18) のGPIO速度

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください