Copyright © 2018-2021 てきーらサンドム
リセット | ||
↓ | ||
スタートアップ・ルーチン(自動組み込み) startup_atsamc20j18a.c |
→ ← |
ユーザー初期化関数 void _on_bootstrap(void) |
↓ | ||
main関数 |
CPU、バス用クロック(内蔵高速発振)設定 (1)ウエイト数(デフォルト0)変更 >38MHz時 NVMCTRL->CTRLB.bit.RWS = 2; >19MHz時 NVMCTRL->CTRLB.bit.RWS = 1; (2)GCLK0の分周比(デフォルト1)変更 GCLK->GENCTRL[0].bit.DIV = 内蔵高速発振出力周波数 / CPU周波数; ただしクロックソース変更時は後で設定。 (3)内蔵高速発振(デフォルト4MHz)変更 OSCCTRL->OSC48MDIV.bit.DIV = 48MHz / 出力周波数 − 1; |
必要に応じてGCLK1〜8設定 GCLK->GENCTRL[1〜8].bit.SRC = ソース; GCLK->GENCTRL[1〜8].bit.DIV = 分周比; GCLK->GENCTRL[1〜8].bit.OE = 1; GCLK->GENCTRL[1〜8].bit.GENEN = 1; |
|
ADCキャリブレーション(注参照) ADC0,ADC1のバスクロックを有効にすること ADC0->CALIB.bit.BIASCOMP = wk & 0x7; ADC0->CALIB.bit.BIASREFBUF=(wk>>3)&0x7; ADC1->CALIB.bit.BIASCOMP =(wk>>6)&0x7; ADC1->CALIB.bit.BIASREFBUF=(wk>>9)&0x7; |
||
内部32K発振設定 OSC32KCTRL->OSC32K.bit.CALIB = (wk >> 12) & 0x7F; //注参照 OSC32KCTRL->OSC32K.bit.ENABLE = 1; OSC32KCTRL->OSC32K.bit.EN32K = 1; |
ウオッチドッグ開始 WDT->CONFIG.bit.PER = 7; //約1秒. WDT->CTRLA.reg = WDT_CTRLA_ENABLE; |
|
外部32K発振設定 OSC32KCTRL->XOSC32K.bit.XTALEN = 1; OSC32KCTRL->XOSC32K.bit.ENABLE = 1; OSC32KCTRL->XOSC32K.bit.EN32K = 1; |
スリープ設定(IDLEに設定。CPU,バスのみ停止) PM->SLEEPCFG.bit.SLEEPMODE = 0x02; |
|
PLL設定(VCO=48MHz設定、外部32K基準) OSCCTRL->DPLLRATIO.bit.LDR = 1463; OSCCTRL->DPLLRATIO.bit.LDRFRAC = 14 OSCCTRL->DPLLPRESC.bit.PRESC = VCO周波数 / 出力周波数 − 1; |
空きピンの出力設定 空きピンを出力にする場合など、他に適当な 設定ソースが無い場合は、ここで設定します。 (「ポートの設定」参照) |
項目 | 出力設定 (初期値0) |
出力設定 (初期値1) |
入出力設定 (初期値0) |
入出力設定 (初期値0) |
入力設定 (Hi-z) |
入力設定 (プルダウン) |
入力設定 (プルアップ) |
---|---|---|---|---|---|---|---|
yyy | CLR* | SET | CLR* | SET | 不要 | CLR* | SET |
zzz | SET | SET | SET | SET | CLR* | CLR* | CLR* |
d | 0* | 0* | 2 | 2 | 2 | 6 | 6 |