Also ich hab hier das MSP430-169STK von Ollimoex. Auf dem ist ein 8MHz Quarz vorhanden. Diesen wollte ich jetzt aus stabilitätsgründen in Betrieb nehmen. Laut meinen Verständniss muss ich dazu nur die BCSCTLx Register einstellen. Dies mache ich wie folgt:
1 | BCSCTL1 &= ~0xBF; |
2 | BCSCTL1 |= 0x40; |
3 | |
4 | BCSCTL2 &= ~0x77; |
5 | BCSCTL2 |= 0x88; |
Wenn ich mir dann an P1.4 den SMCLK ausgeben lasse entspricht dieser auch den geforderten 8MHz. Wenn ich allerdings den TIMERA1 wie folgt initialisiere:
1 | // initialise TIMERA1, compare mode, SMCLK/1, capture/compare int
|
2 | TACTL = 0x0200 | TACLR; |
3 | TACCTL1 = 0x0010; |
4 | TACCR0 = 40; |
5 | TACTL |= MC_1; // Start Timer_A in up mode |
entspricht der Timerwert nicht den geforderten 40*1/8MHz sondern nur 40*1/1MHz. Dementsprechend habe ich irgendwo den Teiler 8. Ich habe schon viel ausprobiert nur leider zu keinen Ergebnis gekommen. Das zweite Problem ist wenn ich die Initialisierung hier aus den Forum verwende (siehe http://www.mikrocontroller.net/articles/MSP430_Codebeispiele) hänge ich die ganze Zeit in der Schleife. Diese dient ja der Überprüfung des Oscillators. Der wiederrum schwingt aber wenn ich direkt an den Pins messe. Hoffe hier kann mir jemand helfen. Greetz Stephan