Hallo Zusammen,
Ich habe zwei test Boards aufgebaut und habe nun Probleme mit dem Takt.
Der Oszilator ist auf beieden Boards der gleich 8Mhz Oszilator und auf
beiden gleich angeschlossen. (siehe Plan)
1 | void vInitSystem( void )
|
2 | {
|
3 | unsigned int i;
|
4 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
5 | BCSCTL1 |= XTS ;
|
6 |
|
7 |
|
8 |
|
9 | do {
|
10 | IFG1 &= ~OFIFG; // Clear OSCFault flag
|
11 | for (i = 0xFF; i > 0; i--); // Time for flag to set
|
12 | } while ((IFG1 & OFIFG) == OFIFG); // OSCFault flag still set?
|
13 |
|
14 |
|
15 | BCSCTL2 |= SELM1+SELM0;
|
16 | .....
|
17 | }
|
18 |
|
19 | void main (void)
|
20 | {
|
21 | uword uwOldTime;
|
22 |
|
23 |
|
24 | // init of all system- components
|
25 | vInitSystem();
|
26 | vInitTimer();
|
27 | vInitUart();
|
28 |
|
29 |
|
30 | // mainloop
|
31 | while(1)
|
32 | {
|
33 |
|
34 | PORT_LEDGREEN_OUT ^= PIN_LEDGREEN;
|
35 |
|
36 |
|
37 | } // while(1)
|
38 | } // void main (void)
|
Mit einem Board bleibe ich in der Überprüfung des Quarzes steken. die
letzte anweisung ist dort die For() Schleife. nehme ich die Überprüfung
heraus, so läuft das Programm ab.
Ich hoffe mit meiner Riesen while(1) Schjleife tue ich das was ich
möchte, nämlich den Takt wenn auch halbiert ausgeben.
An einem Board kann ich an der LED, welche ich schalte 0,5 Mhz messen,
auf dem anderen Board, das mit den Problemen bei der Initialisierung nur
60kHz.
Ich hätte natürlich gerne die 8 MHz, die ich angeschlossen habe.
Kann mir Jemand weiter helfen?