F. K. schrieb:
Alle Kapitel die du zitierst, fehlen in dem immerhin 1200 Seiten dicken
AtSamC20/C21 Family Data Sheet .... die sind nur im expliziten
Datenblatt des C21 enthalten....das witzigerweise sogar weniger Seiten
hat....
Was soll denn bitte fehlen?
Und was meinst Du mit "expliziten Datenblatt des C21"? Link?
Die PLL ist im Kapitel "20. OSCCTRL" beschrieben.
ASF ist übrigens inzwischen auch offiziell tot, siehe die START Seite.
Init aus 16MHz Quarz ohne die PLL zuerst durch eine GCLK Einheit zu schicken:
1 |
void init_clock(void)
|
2 |
{
|
3 |
NVMCTRL->CTRLB.reg = NVMCTRL_CTRLB_RWS(2); /* set the NVM Read Wait States to 2, since the operating frequency will be 48 MHz */
|
4 |
|
5 |
OSCCTRL->XOSCCTRL.reg =
|
6 |
OSCCTRL_XOSCCTRL_STARTUP(6) | /* 1,953 ms */
|
7 |
OSCCTRL_XOSCCTRL_RUNSTDBY |
|
8 |
OSCCTRL_XOSCCTRL_AMPGC |
|
9 |
OSCCTRL_XOSCCTRL_GAIN(3) |
|
10 |
OSCCTRL_XOSCCTRL_XTALEN |
|
11 |
OSCCTRL_XOSCCTRL_ENABLE;
|
12 |
while(0 == OSCCTRL->STATUS.bit.XOSCRDY);
|
13 |
|
14 |
/* configure the PLL, source = XOSC, pre-scaler = 8, multiply by 24 -> 48MHz clock from 16MHz input */
|
15 |
OSCCTRL->DPLLCTRLB.reg = OSCCTRL_DPLLCTRLB_DIV(3) | OSCCTRL_DPLLCTRLB_REFCLK(1);
|
16 |
OSCCTRL->DPLLRATIO.reg = OSCCTRL_DPLLRATIO_LDRFRAC(0x0) | OSCCTRL_DPLLRATIO_LDR(23);
|
17 |
OSCCTRL->DPLLCTRLA.reg = OSCCTRL_DPLLCTRLA_RUNSTDBY | OSCCTRL_DPLLCTRLA_ENABLE;
|
18 |
while(0 == OSCCTRL->DPLLSTATUS.bit.CLKRDY); /* wait for the pll to be ready */
|
19 |
|
20 |
/* configure the clock-generator for the core to use the PLL -> run at 48MHz */
|
21 |
GCLK->GENCTRL[0].reg =
|
22 |
GCLK_GENCTRL_DIV(0) |
|
23 |
GCLK_GENCTRL_RUNSTDBY |
|
24 |
GCLK_GENCTRL_GENEN |
|
25 |
GCLK_GENCTRL_SRC_DPLL96M |
|
26 |
GCLK_GENCTRL_IDC ;
|
27 |
while(1 == GCLK->SYNCBUSY.bit.GENCTRL0); /* wait for the synchronization between clock domains to be complete */
|
28 |
}
|
Ja, die PLL hat einen Takt Vor-Teiler, die Bezeichner und die Reihenfolge in START sind etwas unglücklich gewählt.
Und ja, auf die Namen für die PCHCTRL Register muss man erstmal kommen, bzw. das es überhaupt Macros dafür gibt, im Datenblatt stehen ja nur die Nummern (Table 16-9) und die Macros sind in den Header files für die jeweilige Unit.
C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\SAMC21_DFP\1.2.176\samc21\include\instance
ADC0_GCLK_ID
SERCOM4_GCLK_ID_CORE
CAN0_GCLK_ID
PTC_GCLK_ID
TC4_GCLK_ID