[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
/*------------------------------------------------------------------------------------------*/
/*【****】FSEC,FBSLIM(ブートセグメント)*/
/*------------------------------------------------------------------------------------------*/
#pragma config BWRP = OFF // ブートセグメント書き込み保護ビット(ブートセグメントは書き込み可能)
#pragma config BSS = DISABLED // ブートセグメントコード保護レベルビット(保護なし(BWRP以外))
#pragma config BSEN = OFF // ブートセグメント制御ビット(ブートセグメントなし)
#pragma config GWRP = OFF // 一般セグメント書き込み保護ビット(一般セグメントは書き込み可能)
#pragma config GSS = DISABLED // 一般セグメントコード保護レベルビット(保護なし(GWRP以外))
#pragma config CWRP = OFF // 構成セグメント書き込み保護ビット(構成セグメントは書き込み可能)
#pragma config CSS = DISABLED // コンフィギュレーションセグメントコード保護レベルビット(保護なし(CWRP以外))
#pragma config AIVTDIS = OFF // 代替割り込みベクタテーブルビット(AIVT無効))
/*------------------------------------------------------------------------------------------*/
/*【****】FOSCSEL*/
/*------------------------------------------------------------------------------------------*/
#pragma config FNOSC = PRIPLL // 発振器ソースの選択(ポストスケーラ付き内蔵高速RC(FRC)発振器)
#pragma config IESO = OFF // 2速オシレータ起動許可ビット(FRCでデバイスを起動してから、ユーザが選択したオシレータソースに切り替える)
/*------------------------------------------------------------------------------------------*/
/*【****】FOSC(マスターオシレータ設定)*/
/*------------------------------------------------------------------------------------------*/
#pragma config POSCMD = EC // プライマリオシレータモード選択ビット(外部クロック)
#pragma config OSCIOFNC = OFF // OSC2端子機能ビット(OSC2はクロック出力)
#pragma config FCKSM = CSECMD // クロック切り替えモードビット(クロック切り替えは有効、フェールセーフクロックモニターは無効)
#pragma config PLLKEN = PLLKEN_ON // PLLロックステータス制御
#pragma config XTCFG = G1 // XT Config(8〜16 MHzクリスタル)
#pragma config XTBST = ENABLE // XT Boost(キックスタートを後押し)
/*------------------------------------------------------------------------------------------*/
/*【****】FWDT(マスターウォッチドッグ)*/
/*------------------------------------------------------------------------------------------*/
#pragma config RWDTPS = PS2147483648 // ランモードウォッチドッグタイマポストスケーラ選択ビット(1:2147483648)
#pragma config RCLKSEL = LPRC // ウォッチドッグタイマクロック選択ビット(常にLPRCを使用)
#pragma config WINDIS = ON // ウォッチドッグタイマウィンドウイネーブルビット(ウォッチドッグタイマはノンウィンドウモードで動作)
#pragma config WDTWIN = WIN25 // ウォッチドッグタイマウィンドウ選択ビット(WDTウィンドウはWDT周期の25%)
#pragma config SWDTPS = PS2147483648 // スリープモードウォッチドッグタイマポストスケーラ選択ビット(1:2147483648)
#pragma config FWDTEN = ON_SW // ウォッチドッグタイマ有効ビット(SWでWDT制御、WDTCON.ONビットを使用)
/*------------------------------------------------------------------------------------------*/
/*【****】FPOR(ブートスペースオプション)*/
/*------------------------------------------------------------------------------------------*/
#pragma config BISTDIS = DISABLED // メモリBIST機能の無効化(リセット時のmBIST機能の無効化)
/*------------------------------------------------------------------------------------------*/
/*【****】FICD(マスター書き込み/デバッグ設定)*/
/*------------------------------------------------------------------------------------------*/
#pragma config ICS = PGD2 // ICD通信チャネル選択ビット(PGC2とPGD2で通信)
#pragma config JTAGEN = OFF // JTAGイネーブルビット(JTAGはディセーブル)
#pragma config NOBTSWP = OFF // BOOTSWP命令無効ビット(BOOTSWP命令は無効)
/*------------------------------------------------------------------------------------------*/
/*【****】FDMTIVTL,FDMTIVTH,FDMTCNTL,FDMTCNTH,FDMT(デッドマンタイマ)*/
/*------------------------------------------------------------------------------------------*/
#pragma config DMTIVTL = 0xFFFF // デッドマンタイマ間隔下位ワード(32ビットDMTウィンドウ間隔の下位16ビット(0-0xFFFF))
#pragma config DMTIVTH = 0xFFFF // デッドマンタイマー間隔上位ワード(32ビットDMTウィンドウ間隔のうち16ビット(0-0xFFFF)まで)
#pragma config DMTCNTL = 0xFFFF // 32ビットDMT命令数タイムアウト値(0〜0×FFFF)の下位16ビット(32ビットDMT命令数タイムアウト値(0〜0×FFFF)の下位16ビット)
#pragma config DMTCNTH = 0xFFFF // 32ビットDMT命令カウントタイムアウト値(0-0xFFFF)の上位16ビット(32ビットDMT命令カウントタイムアウト値(0-0xFFFF)の上位16ビット)
#pragma config DMTDIS = OFF // デッドマンタイマー無効ビット(デッドマンタイマーは無効で、ソフトウェアで有効にできます)
/*------------------------------------------------------------------------------------------*/
/*【****】FDEVOPT(その他)*/
/*------------------------------------------------------------------------------------------*/
#pragma config ALTI2C1 = OFF // 代替I2C1ピンビット(I2C1はSDA1 / SCL1ピンにマッピング)
#pragma config ALTI2C2 = OFF // 代替I2C2ピンビット(I2C2はSDA2 / SCL2ピンにマッピング)
#pragma config SMBEN = SMBUS // SMバスイネーブル(SMBus入力しきい値がイネーブル)
#pragma config SPI2PIN = PPS // SPI2ピン選択ビット(SPI2はI / Oリマップ(PPS)ピンを使用)
/*------------------------------------------------------------------------------------------*/
/*【****】FALTREG(コンテキスト切り替え)*/
/*------------------------------------------------------------------------------------------*/
#pragma config CTXT1 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 1 bits (未割当)
#pragma config CTXT2 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 2 bits (未割当)
#pragma config CTXT3 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 3 bits (未割当)
#pragma config CTXT4 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 4 bits (未割当)
/*------------------------------------------------------------------------------------------*/
/*【****】FMBXM(メールボックス方向)*/
/*------------------------------------------------------------------------------------------*/
#pragma config MBXM0 = M2S // メールボックス0のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM1 = M2S // メールボックス1のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM2 = M2S // メールボックス2のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM3 = M2S // メールボックス3のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM4 = M2S // メールボックス4のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM5 = M2S // メールボックス5のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM6 = M2S // メールボックス6のデータ方向(マスタデータ書き込み用に設定されたメールボックスレジスタ(マスタからスレーブへのデータ転送))
#pragma config MBXM7 = S2M // メールボックス7のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM8 = S2M // メールボックス8のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM9 = S2M // メールボックス9のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM10 = S2M // メールボックス10のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM11 = S2M // メールボックス11のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM12 = S2M // メールボックス12のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM13 = S2M // メールボックス13のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM14 = S2M // メールボックス14のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
#pragma config MBXM15 = S2M // メールボックス15のデータ方向(マスターデータ読み取り用に設定されたメールボックスレジスタ(スレーブからマスターへのデータ転送))
/*------------------------------------------------------------------------------------------*/
/*【****】FMBXHS1,FMBXHS2*/
/*------------------------------------------------------------------------------------------*/
#pragma config MBXHSA = MBX6 // メールボックスハンドシェイクプロトコルブロックAレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックAに割り当てられたMSIxMBXD6)
#pragma config MBXHSB = MBX13 // メールボックスハンドシェイクプロトコルブロックBレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックBに割り当てられたMSIxMBXD13)
#pragma config MBXHSC = MBX15 // メールボックスハンドシェイクプロトコルブロックCのレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックCに割り当てられているMSIxMBXD15)
#pragma config MBXHSD = MBX15 // メールボックスハンドシェイクプロトコルブロックDのレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックDに割り当てられているMSIxMBXD15)
#pragma config MBXHSE = MBX15 // メールボックスハンドシェイクプロトコルブロックEレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックEに割り当てられたMSIxMBXD15)
#pragma config MBXHSF = MBX15 // メールボックスハンドシェイクプロトコルブロックFレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックFに割り当てられたMSIxMBXD15)
#pragma config MBXHSG = MBX15 // メールボックスハンドシェイクプロトコルブロックGレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックGに割り当てられたMSIxMBXD15)
#pragma config MBXHSH = MBX15 // メールボックスハンドシェイクプロトコルブロックHレジスタ割り当て(メールボックスハンドシェイクプロトコルブロックHに割り当てられたMSIxMBXD15)
/*------------------------------------------------------------------------------------------*/
/*【****】FMBXHSEN*/
/*------------------------------------------------------------------------------------------*/
#pragma config HSAEN = ON // メールボックスAデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの有効化)
#pragma config HSBEN = ON // メールボックスBデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの有効化)
#pragma config HSCEN = ON // メールボックスCデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの有効化)
#pragma config HSDEN = OFF // メールボックスDデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの無効化)
#pragma config HSEEN = OFF // メールボックスEデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの無効化)
#pragma config HSFEN = OFF // メールボックスFデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの無効化)
#pragma config HSGEN = OFF // メールボックスGデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの無効化)
#pragma config HSHEN = OFF // メールボックスHデータフロー制御プロトコルブロックの有効化(メールボックスデータフロー制御ハンドシェイクプロトコルブロックの無効化)
/*------------------------------------------------------------------------------------------*/
/*【****】FCFGPRA0(PortAピンオーナーシップビット)*/
/*------------------------------------------------------------------------------------------*/
#pragma config CPRA0 = MSTR // ピン RA0 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRA1 = SLV1 // ピン RA1 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRA2 = MSTR // ピン RA2 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRA3 = MSTR // ピン RA3 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRA4 = MSTR // ピン RA4 オーナーシップビット (マスターコアがピンを所有.)
/*------------------------------------------------------------------------------------------*/
/*【****】FCFGPRB0(PortBピンオーナーシップビット)*/
/*------------------------------------------------------------------------------------------*/
#pragma config CPRB0 = MSTR // ピン RB0 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB1 = MSTR // ピン RB1 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB2 = SLV1 // ピン RB2 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRB3 = MSTR // ピン RB3 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB4 = MSTR // ピン RB4 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB5 = MSTR // ピン RB5 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB6 = MSTR // ピン RB6 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB7 = MSTR // ピン RB7 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB8 = MSTR // ピン RB8 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB9 = MSTR // ピン RB9 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB10 = MSTR // ピン RB10 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB11 = SLV1 // ピン RB11 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRB12 = SLV1 // ピン RB12 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRB13 = MSTR // ピン RB13 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB14 = MSTR // ピン RB14 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRB15 = MSTR // ピン RB15 オーナーシップビット (マスターコアがピンを所有.)
/*------------------------------------------------------------------------------------------*/
/*【****】FCFGPRC0(PortCピンオーナーシップビット)*/
/*------------------------------------------------------------------------------------------*/
#pragma config CPRC0 = SLV1 // ピン RC0 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRC1 = MSTR // ピン RC1 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC2 = MSTR // ピン RC2 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC3 = MSTR // ピン RC3 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC4 = MSTR // ピン RC4 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC5 = SLV1 // ピン RC5 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRC6 = MSTR // ピン RC6 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC7 = MSTR // ピン RC7 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC8 = MSTR // ピン RC8 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC9 = MSTR // ピン RC9 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC10 = MSTR // ピン RC10 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC11 = MSTR // ピン RC11 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC12 = MSTR // ピン RC12 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRC13 = SLV1 // ピン RC13 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRC14 = SLV1 // ピン RC14 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRC15 = SLV1 // ピン RC15 オーナーシップビット (スレーブコアがピンを所有)
/*------------------------------------------------------------------------------------------*/
/*【****】FCFGPRD0(PortDピンオーナーシップビット)*/
/*------------------------------------------------------------------------------------------*/
#pragma config CPRD0 = MSTR // ピン RD0 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD1 = MSTR // ピン RD1 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD2 = MSTR // ピン RD2 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD3 = MSTR // ピン RD3 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD4 = MSTR // ピン RD4 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD5 = MSTR // ピン RD5 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD6 = MSTR // ピン RD6 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD7 = MSTR // ピン RD7 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD8 = MSTR // ピン RD8 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD9 = SLV1 // ピン RD9 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRD10 = SLV1 // ピン RD10 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRD11 = MSTR // ピン RD11 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD12 = MSTR // ピン RD12 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD13 = MSTR // ピン RD13 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD14 = MSTR // ピン RD14 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRD15 = MSTR // ピン RD15 オーナーシップビット (マスターコアがピンを所有.)
/*------------------------------------------------------------------------------------------*/
/*【****】FCFGPRE0(PortEピンオーナーシップビット)*/
/*------------------------------------------------------------------------------------------*/
#pragma config CPRE0 = MSTR // ピン RE0 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE1 = SLV1 // ピン RE1 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRE2 = MSTR // ピン RE2 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE3 = MSTR // ピン RE3 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE4 = MSTR // ピン RE4 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE5 = MSTR // ピン RE5 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE6 = MSTR // ピン RE6 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE7 = MSTR // ピン RE7 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE8 = MSTR // ピン RE8 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE9 = SLV1 // ピン RE9 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE10 = MSTR // ピン RE10 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE11 = MSTR // ピン RE11 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE12 = MSTR // ピン RE12 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE13 = MSTR // ピン RE13 オーナーシップビット (マスターコアがピンを所有.)
#pragma config CPRE14 = SLV1 // ピン RE14 オーナーシップビット (スレーブコアがピンを所有)
#pragma config CPRE15 = SLV1 // ピン RE15 オーナーシップビット (スレーブコアがピンを所有)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1OSCSEL(スレーブオシレータ)*/
/*------------------------------------------------------------------------------------------*/
#pragma config S1FNOSC = PRIPLL // 発振器ソースの選択(ポストスケーラ付き内蔵高速RC(FRC)発振器)
#pragma config S1IESO = OFF // 2速オシレータ起動許可ビット(FRCでデバイスを起動してから、ユーザが選択したオシレータソースに切り替える)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1OSC(スレーブオシレータ)*/
/*------------------------------------------------------------------------------------------*/
#pragma config S1OSCIOFNC = OFF // スレーブOSC2端子機能ビット(OSC2はクロック出力)
#pragma config S1FCKSM = CSECMD // クロック切り替えモードビット(クロック切り替えは有効、フェールセーフクロックモニターは無効)
#pragma config S1PLLKEN = S1PLLKEN_ON // S1PLLKEN (S1PLLKEN_ON)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1WDT(スレーブウォッチドッグタイマ)*/
/*------------------------------------------------------------------------------------------*/
#pragma config S1RWDTPS = PS1048576 // ランモードウォッチドッグタイマポストスケーラ選択ビット(1:1048576)
#pragma config S1RCLKSEL = LPRC // ウォッチドッグタイマクロック選択ビット(常にLPRCを使用)
#pragma config S1WINDIS = ON // ウォッチドッグタイマウィンドウイネーブルビット(ウォッチドッグタイマはノンウィンドウモードで動作)
#pragma config S1WDTWIN = WIN25 // ウォッチドッグタイマウィンドウ選択ビット(WDTウィンドウはWDT周期の25%)
#pragma config S1SWDTPS = PS1048576 // スリープモードウォッチドッグタイマポストスケーラ選択ビット(1:1048576)
#pragma config S1FWDTEN = ON_SW // ウォッチドッグタイマイネーブルビット(WDTCはWDTCON.ONビットで制御)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1POR(スレーブブートセグメント)*/
/*------------------------------------------------------------------------------------------*/
#pragma config S1BISTDIS = DISABLED //リセットディセーブルビットのスレーブBIST(リセット機能のスレーブBISTディセーブル)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1ICD(スレーブ書き込み/デバッグ) */
/*------------------------------------------------------------------------------------------*/
#pragma config S1ICS = PGD2 // ICD通信チャネル選択ビット(PGC2とPGD2で通信)
#pragma config S1ISOLAT = ON // デバッグ中にスレーブコアサブシステムをマスターサブシステムから分離します(MSIのSLVENビットが0の場合でも、スレーブは(デバッグモードで)動作できます)。
#pragma config S1NOBTSWP = OFF // BOOTSWP命令有効/無効ビット(BOOTSWP命令は無効)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1DEVOPT(スレーブその他)*/
/*------------------------------------------------------------------------------------------*/
#pragma config S1ALTI2C1 = OFF // 代替I2C1ピンビット(I2C1はSDA1 / SCL1ピンにマッピング)
#pragma config S1SPI1PIN = PPS // S1 SPI1ピン選択ビット(スレーブSPI1はI / Oリマップ(PPS)ピンを使用)
#pragma config S1SSRE = ON // スレーブリセットイネーブル(スレーブで生成されたリセットはMSIモジュールのスレーブイネーブルビットをリセットします)
#pragma config S1MSRE = ON //マスタスレーブリセットイネーブル(マスタソフトウェア指向のRESETイベント(RESETオペコード、ウォッチドッグタイムアウト、TRAPリセット、illegalInstruction)によっても、スレーブサブシステムがリセットされます。)
/*------------------------------------------------------------------------------------------*/
/*【****】FS1ALTREG(スレーブコンテキストスイッチ)*/
/*------------------------------------------------------------------------------------------*/
#pragma config S1CTXT1 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 1 bits (未割当)
#pragma config S1CTXT2 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 2 bits (未割当)
#pragma config S1CTXT3 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 3 bits (未割当)
#pragma config S1CTXT4 = OFF // 代替作業レジスター関連割り込み優先順位レベル(IPL) 4 bits (未割当)
#define CORE_MASTER 0
#define CORE_SLAVE 1
#define CORE_TYPE CORE_MASTER /* CORE_MASTER or CORE_SLAVE */
/*----- OSCCONbits.COSC か OSCCONbits.NOSCで使用 -----*/
#define AUX_OSC_FRC 0u /* 高速 RC オシレータ */
#define AUX_OSC_FRCPLL 1u /* PLL 併用高速 RC オシレータ */
#define AUX_OSC_PRI 2u /* プライマリ オシレータ */
#define AUX_OSC_PRIPLL 3u /* PLL 併用プライマリ オシレータ */
#define AUX_OSC_SOSC 4u /* セカンダリ オシレータ */
#define AUX_OSC_LPRC 5u /* 低消費電力 RC オシレータ */
#define AUX_OSC_FRCDIV16 6u /* 16 分周高速 RC オシレータ */
#define AUX_OSC_FRCDIVN 7u /* N 分周高速 RC オシレータ */
/*----- OSCCONbits.OSWENで使用 -----*/
#define AUX_OSC_SWITCH_STAT 0u /* オシレータ切り換えは完了した */
#define AUX_OSC_SWITCH_EN 1u /* オシレータへの切り換えを要求する */
/*----- OSCCONbits.LOCKで使用 -----*/
#define AUX_OSC_LOCK_OFF 0u /* PLL はロック解除中、または起動タイマが作動中、または PLL は無効になっている */
#define AUX_OSC_LOCK_ON 1u /* PLL はロック中、または PLL 起動タイマは終了した */
/*----- CANCLKCONbits.CANCLKSELで使用 -----*/
#define AUX_DRV_CANCLK_NO 0u
#define AUX_DRV_CANCLK_FVCO 1u
#define AUX_DRV_CANCLK_FPLLO 2u
#define AUX_DRV_CANCLK_FVCO_DIV2 3u
#define AUX_DRV_CANCLK_FVCO_DIV3 4u
#define AUX_DRV_CANCLK_FVCO_DIV4 5u
#define AUX_DRV_CANCLK_AFPLLO 6u
#define AUX_DRV_CANCLK_AFVCO 7u
#define AUX_DRV_CANCLK_AFVCO_DIV2 8u
#define AUX_DRV_CANCLK_AFVCO_DIV3 9u
#define AUX_DRV_CANCLK_AFVCO_DIV4 10u
/*------------------------------------------------------------------------------------------*/
/* 動作クロックの設定をする */
/* FVCO = FPLLI * M/N1 (Range = 400MHz to 1.6GHz)*/
/* FPLLO = FPLLI * M/(N1 * N2 * N3) */
/* = 8 * 180 / (1 * 2 * 4) = 360MHz*/
/* FOSC = FPLLO / 2 = 180MHz*/
/* FCY = FOSC / 2 = 90MHz*/
/*------------------------------------------------------------------------------------------*/
static void vds_Main_Init_Clock_Register(void)
{
#if (CORE_TYPE == CORE_MASTER)
PLLFBDbits.PLLFBDIV = 180u; /* M = 180 */
PLLDIVbits.POST2DIV = 1u; /* N3 = 1 */
PLLDIVbits.POST1DIV = 4u; /* N2 = 4 */
CLKDIVbits.PLLPRE = 1; /* N1 = 1 */
#elif (CORE_TYPE == CORE_SLAVE)
PLLFBDbits.PLLFBDIV = 180u; /* M = 180 */
PLLDIVbits.POST2DIV = 1u; /* N3 = 1 */
PLLDIVbits.POST1DIV = 4u; /* N2 = 4 */
CLKDIVbits.PLLPRE = 1; /* N1 = 1 */
#else
#error "error";
#endif
/*------------------------------------------------------------------------------------------*/
/* オシレータの種類を選択し切り替える */
/*------------------------------------------------------------------------------------------*/
__builtin_write_OSCCONH(AUX_OSC_PRIPLL);
__builtin_write_OSCCONL(OSCCON | AUX_OSC_SWITCH_EN);
/*------------------------------------------------------------------------------------------*/
/* FRC オシレータ調整レジスタ */
/*------------------------------------------------------------------------------------------*/
while (OSCCONbits.OSWEN != 0u) {;}
/*------------------------------------------------------------------------------------------*/
/* PLLがロックするまで待機する */
/*------------------------------------------------------------------------------------------*/
while (OSCCONbits.LOCK != AUX_OSC_LOCK_ON) {;}
#endif
/*------------------------------------------------------------------------------------------*/
/* FRC オシレータ調整レジスタ */
/*------------------------------------------------------------------------------------------*/
#if (CORE_TYPE == CORE_MASTER)
OSCTUN = 0x0000u;
#endif
/*------------------------------------------------------------------------------------------*/
/* 補助クロック制御レジスタ 1 */
/* AFVCO = AFPLLI * M/N1 (Range = 400MHz to 1.6GHz)*/
/* AFPLLO = AFPLLI * M/(N1 * N2 * N3) */
/*------------------------------------------------------------------------------------------*/
ACLKCON1 = 0x0000u;
ACLKCON1bits.APLLPRE = 1u; /* APLL 位相検出器入力分周比ビット */
ACLKCON1bits.FRCSEL = 1u; /* APLL 用参照クロック源 FRC 選択ビット */
ACLKCON1bits.APLLCK = 0u; /* APLL 位相ロック ステータスビット */
ACLKCON1bits.APLLEN = 0u; /* 補助PLL有効化選択ビット */
/*------------------------------------------------------------------------------------------*/
/* APLLフィードバック分周比レジスタ */
/*------------------------------------------------------------------------------------------*/
APLLFBD1 = 125u;
/*------------------------------------------------------------------------------------------*/
/* PLL VCO 出力分周比選択レジスタ */
/*------------------------------------------------------------------------------------------*/
APLLDIV1 = 0x0000u;
APLLDIV1bits.APOST2DIV = 2u; /* APLL VCO 出力分周比選択ビット1 */
APLLDIV1bits.APOST1DIV = 1u; /* APLL VCO 出力分周比選択ビット2 */
APLLDIV1bits.AVCODIV = 0u; /* APLL VCO 出力分周比選択ビット */
ACLKCON1bits.APLLEN = 1u; /* 補助PLL有効化選択ビット */
/*------------------------------------------------------------------------------------------*/
/* PLLがロックするまで待機する */
/*------------------------------------------------------------------------------------------*/
while (ACLKCON1bits.APLLCK == AUX_OSC_LOCK_ON);
/*------------------------------------------------------------------------------------------*/
/* CANクロック制御レジスタ */
/*------------------------------------------------------------------------------------------*/
#if (CORE_TYPE == CORE_MASTER)
CANCLKCON = 0x0000u;
#endif
}