Hallo, habe ein kleines Problem mit dem AVR32UC3B0256. Im langsamen Betrieb mit internen RC Oszilator funktioniert das Setzen und Löschen der Pins. Wenn ich jedoch versuche die PLL0 als Main Clock zu verwenden bleibt der Pin immer auf HIGH. Habe ich vergessen ein Register zu setzen oder was mache ich falsch? Hier mein code.
1 | #include <avr32/io.h> |
2 | |
3 | void UsePLL(unsigned int clock) |
4 | {
|
5 | int clockh = (clock/6) - 1; |
6 | |
7 | AVR32_PM.oscctrl0 = (AVR32_PM.oscctrl0 | 0x00000407); // Startup time / Oscillator Mode |
8 | |
9 | AVR32_PM.mcctrl = AVR32_PM_OSC0EN_MASK; // Enable Oscillator 0 |
10 | |
11 | while((AVR32_PM.poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)== 0); // Oscillator 0 is ready |
12 | |
13 | |
14 | AVR32_PM.pll[0] = 0 << AVR32_PM_PLLOSC_OFFSET | // Oscillator 0 is the source for the PLL |
15 | 1 << AVR32_PM_PLLDIV_OFFSET | // div = 1 |
16 | clockh << AVR32_PM_PLLMUL_OFFSET | // multi clock z.b. if clockh = 10 (10+1)*12=132/2Fvc = 66Mhz |
17 | 5 << AVR32_PM_PLLOPT_OFFSET; // 80MHz<fvco<180MHz / fPLL = fvco / Wide Bandwidth Mode disabled |
18 | |
19 | AVR32_PM.cksel = 0x80808080; |
20 | |
21 | AVR32_PM.pll[0] |= AVR32_PM_PLLEN_MASK; // PLL enable |
22 | |
23 | while(!(AVR32_PM.poscsr & AVR32_PM_POSCSR_LOCK0_MASK)); // PLL 0 is locked, and ready to be selected as clock source |
24 | |
25 | |
26 | AVR32_FLASHC.fcr |= 0 << AVR32_FLASHC_FWS_OFFSET; // The flash is read with 0 wait state. (write 1 otherwise) |
27 | |
28 | AVR32_PM.mcctrl |= 2 << AVR32_PM_MCSEL_OFFSET; // PLL0 as main oscillator |
29 | |
30 | }
|
31 | |
32 | int main() |
33 | {
|
34 | char c=0; |
35 | |
36 | UsePLL(24); |
37 | |
38 | |
39 | AVR32_GPIO.port[1].gper = 0x00000fff; //Set Enable |
40 | AVR32_GPIO.port[1].oder = 0x00000fff; //As Output |
41 | |
42 | AVR32_GPIO.port[1].ovrs = 0x00000001; |
43 | |
44 | while(1) |
45 | {
|
46 | AVR32_GPIO.port[1].gperc = 0x00000001; |
47 | c++; |
48 | c++; |
49 | AVR32_GPIO.port[1].gpers = 0x00000001; |
50 | }
|
51 | return 0; |
52 | }
|
Wäre echt toll wenn mir jemand helfen kann. Bin im moment mit lmeinem Latein am ende. Gruß Stefan