2 // xtal_freq = 12000000;
\r
5 scs = (int *)0x400fc1a0;
\r
6 // enable main oscillator
\r
9 // wait for oscillator to get ready
\r
10 while ((*scs & (1<<6)) == 0);
\r
12 volatile int *cclkcfg;
\r
13 cclkcfg = (int *)0x400FC104;
\r
14 // set clockdivider to 1/4x
\r
17 // peripheral clocks (all set to 1/4x cclk)
\r
18 volatile int *pclksel0, *pclksel1;
\r
19 pclksel0=(int *)0x400FC1A8;
\r
21 pclksel1=(int *)0x400FC1AC;
\r
24 // main clock set (pll0)
\r
25 volatile int *clksrcsel;
\r
26 clksrcsel = (int *)0x400FC10C;
\r
29 volatile int *pll0con, *pll0stat, *pll0feed, *pll0cfg;
\r
30 pll0con=(int*)0x400FC080;
\r
31 pll0stat=(int *)0x400FC088;
\r
32 // pll0feed : feed 0xAA followed by 0x55 to feed
\r
33 pll0feed=(int *)0x400FC08C;
\r
34 pll0cfg=(int *)0x400FC084;
\r
36 // FORMULA = FCCO = (2 * M * FIN) / N
\r
37 // as Xtal (FIN) is 12MHz, N = 6 , M = 25 gives 100 MHz
\r
38 // as both msel and nsel stores "N-1" store 24 and 5
\r
39 *pll0cfg = 24 | (5 << 16);
\r
41 // feed to set clock
\r
52 while (!(*pll0stat & (1<<26)));
\r
60 while (!(*pll0stat & ((1<<25) | (1<<24))));
\r
62 volatile int *pll1con, *pll1cfg, *pll1stat, *pll1feed;
\r
63 pll1con=(int *)0x400FC0A0;
\r
64 pll1cfg=(int *)0x400FC0A4;
\r
65 pll1stat=(int *)0x400FC0A8;
\r
66 pll1feed=(int *)0x400FC0AC;
\r
68 // setup pll1 (multiplier 4, divider 6)
\r
69 *pll1cfg = 3 | (0x01 << 5);
\r
75 while (!(*pll1stat & (1<<10)));
\r
81 while (!(*pll1stat & ((1<< 9) | (1<< 8))));
\r