EUSARTを試してみようとしたのですが、オシレータモジュールが理解できてないと始まらないことに気付いたのでメモしておきます。

 

参考資料はEUSARTと同じデータシート日本語版(P15~P27)です。こちら

PDFファイルへの直リンクですが実際に使用される場合は、メーカーのページから最新版をダウンロードして下さい。

 

ブロック図

 

 

レジスタ

 

 

 

 

 

CONFIG1Hの既定値:0010 0111

 

 

システムクロックの選択

 

OSCCONレジスタのSCSビットによって以下のクロック源のいずれかを選択する。

・プライマリ外部オシレータ

・セカンダリ外部オシレータ

・内部オシレータ

既定状態のSCSビットは、システムクロックとして、CONFIG1HのFOSCビットで定義するオシレータを選択する。

システムクロックはSCSビットがソフトウェアによって変更されない限り、常にFOSCビットによって定義される。

 

システムクロックとして内部オシレータを選択した場合、OSCCONレジスタのIRCFビットおよびOSCTUNEレジスタのINTSRCビットによってLFINTOSCまたはHFINTOSCのいずれかが選択される。

IRCF<2:0>=000かつINTSRCビットがクリアされていると、システムクロックとしてLFINTOSCが選択される。

これ以外のIRCFビットとINTSRCビットの組み合わせではHFINTOSCが選択される。

 

プライマリ外部オシレータ 省略

セカンダリ外部オシレータ 省略

 

内部オシレータ

 

以下の2つの独立したオシレータがある。

・LFINTOSC 低周波内部オシレータ

・HFINTOSC 高周波内部オシレータ

 

LFINTOSC

 

31kHzの内部クロック源。

 

以下の回路のクロック源として使用する。

・パワーアップタイマ

・ウォッチドッグタイマ

・フェイルセーフクロックモニタ

 

以下の条件のいずれか1つが真の場合に有効になる。

・パワーアップタイマが有効(PWRTEN=0)

・ウォッチドッグタイマが有効(WDTEN=1)

・ウォッチドッグタイマがソフトウェアによって有効にされた場合(WDTEN=0かつSWDTEN=1)

・フェイルセーフクロックモニタが有効(FCMEM=1)

・SCS1=1かつIRCF<2:0>=000かつINTSRC=0

・FOSC<3:0>が内部オシレータをプライマリクロックとして選択し、さらにIRCF<2:0>=000かつINTSRC=0の場合

・IESO=1(2段階起動)かつIRCF<2:0>=000かつINTSRC=0の場合

 

HFINTOSC

16MHzで動作するように工場出荷時に校正済みの高精度オシレータ。

出力は、ポストスケーラとマルチプレクサに接続されている。

OSCCONレジスタのIRCF<2:0>ビットによって、8つの周波数から1つを選択する。

HFINTOSCで使用できる周波数は以下の通り。

16MHz,8MHz,4MHz,2MHz,1MHz(リセット後の既定値),500kHz,250kHz,31kHz

 

OSCCONレジスタのHFIOFSビットは、HFINTOSCの動作が安定しているかどうかを示す。

 

HFINTOSCオシレータの周波数として31kHzを選択するには、IRCF<2:0>=000に設定し、さらにOSCTUNEレジスタのINTSRCビットをセットする必要がある。INTSRCビットをクリアすると、システムクロックはLFINTOSCから供給される。

 

HFINTOSCの周波数は、OSCTUNEレジスタによってさらに調整できる。詳細はレジスタ2-3参照

 

HFINTOSCは、以下の条件のいずれか1つが真の場合に有効になる。

・SCS1=1かつIRCF<2:0>≠000

・SCS1=1かつIRCF<2:0>=000かつINTSRC=1

・FOSC<3:0>が内部オシレータをプライマリクロックとして選択し、さらに

    IRCF<2:0>≠000 または

    IRCF<2:0>=000 かつ INTSRC=1

・IESO=1(2段階起動)かつ

    IRCF<2:0>≠000 または

    IRCF<2:0>=000 かつ INTSRC=1

・FCMEM=1(フェイルセーフクロックモニタ使用)

    かつ

    IRCF<2:0>≠000 または

    IRCF<2:0>=000 かつ INTSRC=1

 

オシレータ起動タイマ 省略

クロックの切り換え 省略

 

4xPLL周波数マルチプライヤ

 

PLL回路は、低周波外部オシレータを使用するか、HFINTOSCを32MHzで動作させる必要のあるユーザー向けのオプション。

入力周波数4~12MHzに対して設計されている。

 

CONFIG1HのPLLENビットおよびOSCTUNEレジスタのSPLLENビットによって制御される。

PLLENビットをセットするとPLLが有効になり、PLLENビットをクリアするとソフトウェア制御になる。

 

CPUクロック分周器

 

同じクロック源を共用していながら、システムクロックだけをロースピード/フルスピードUSBモジュールのクロックよりも低速で駆動する事ができる。

CPUクロック分周器を適用できるのは、CONFIG1HのFOSCビットが定義するオシレータだけ。

CONFIG1LのCPUDIVビットによって以下のように設定される。

・USBモジュールと同じクロック速度

・USBモジュールの半分のクロック速度

・USBモジュールの1/3のクロック速度

・USBモジュールの1/4のクロック速度

 

USB動作

 

USBモジュールは以下の2つのモードで動作するよに設計されている。

・ロースピード

・フルスピード

 

USBの仕様によって決まるタイミング要件からUSBモジュールにはプライマリ外部オシレータが必要になる。

CONFIG1HのFOSCビットは、周波数6/12/48MHzの外部クロック(EC)大電力モードまたはHSモードに設定する。

 

ロースピード動作

 

ロースピード動作では、USBモジュールに6MHzのクロックが必要。

6MHzのクロックを発生するには、以下の2つのオシレータモードしか使用できない。

・EC大電力モード

・HSモード

USBをロースピードで動作させるには、CPUクロック周波数を24MHz以下にする必要がある(6MHzが最適)。

24MHzよりも高い周波数を使用する場合、14命令サイクル以上のファームウェア遅延が必要。

 

フルスピード動作

 

フルスピード動作では、USBモジュールに48MHzのクロックが必要。

48MHzのクロックを生成するには、以下の2つのオシレータモードしか使用できない。

・EC大電力モード

・HSモード

 

2段階起動モード 省略

フェイルセーフクロックモニタ 省略

 

MENUに戻る