Hallo,
Ich habe Probleme mit dem CCP Register. Wenn ich es setzen möchte, steht
im AVR Simulator (Atmel Studio 6.0.1996) im CCP register immer 0x01 und
nicht 0xD8. Ich verstehe nicht was ich hierbei falsch mache. Ich weiß
auch, dass das Register, das vom CCP Schutz betroffen ist, innerhalb von
4 Takten beschrieben sein muss. Dieser Call soll dafür sorgen das die
Taktfrequenz der CPU 40 MHz betragen soll (Ich weiß, dass die CPU damit
übertaktet wird). Kann mir hierbei jemand bitte helfen?
Grüße Steven
1 | init_cpu_clock:
|
2 | //Enable internal 2 Mhz crystal
|
3 | ldi temp, OSC_RC2MEN_bm
|
4 | sts OSC_CTRL, temp
|
5 |
|
6 | //Set PLLFAC to 20 and select the internal 2 MHZ crystal
|
7 | ldi temp, OSC_PLLSRC_RC2M_gc | (1<<OSC_PLLFAC2_bp) | (1<<OSC_PLLFAC4_bp)
|
8 | sts OSC_PLLCTRL, temp
|
9 |
|
10 | //When RC2MRDY is set then enable internal PLL
|
11 | waitforcrystal:
|
12 | lds temp, OSC_STATUS
|
13 | sbrs temp, OSC_RC2MRDY_bp
|
14 | rjmp waitforcrystal
|
15 |
|
16 | //Enable PLL
|
17 | lds temp, OSC_CTRL
|
18 | sbr temp, (1<<OSC_PLLEN_bp)
|
19 | sts OSC_CTRL, temp
|
20 |
|
21 | //Wait till the PLL is stable
|
22 | waitforpll:
|
23 | lds temp, OSC_STATUS
|
24 | sbrs temp, OSC_PLLRDY_bp
|
25 | rjmp waitforpll
|
26 |
|
27 | //Remove CPU Control Protection
|
28 | ldi temp, CCP_IOREG_gc
|
29 | out CPU_CCP, temp //Danach steht im CCP Register immer 0x01
|
30 |
|
31 | //Select PLL as Clock Source
|
32 | ldi temp, CLK_SCLKSEL_PLL_gc
|
33 | sts CLK_CTRL, temp
|
34 |
|
35 | ret
|