Hallo,
ich sitz vor einem mittelschweren Problem und hoffe ihr könnt mir
helfen.
Meine Hardware besteht aus einem MSP430F155 der von einen 7.372.800 Hz
Quarz befeuert wird.
1 | void fnInit_XT(void) // high frequenz resonators ( 455 kHz - 8MhZ )
|
2 | {
|
3 | unsigned int i;
|
4 |
|
5 | BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL
|
6 |
|
7 | do
|
8 | {
|
9 | IFG1 &= ~OFIFG; // Clear OSCFault flag
|
10 | for (i = 0xFF; i > 0; i--); // Time for flag to set
|
11 | }
|
12 | while (IFG1 & OFIFG); // OSCFault flag still set?
|
13 | BCSCTL2 |= SELM1+SELM0; // MCLK = LFXT1 (safe)
|
14 | }
|
Die Init des Quarzes. sollte soweit in Ordnung sein.
1 |
|
2 | P3DIR = 0xDF; //port3 = UART
|
3 | P3SEL = 0x30; // port3 used as GPIO, UART
|
Das sollte eigentlich auch passen.
1 | void fnInitUart0()
|
2 | {
|
3 | ME1 |= UTXE0 + URXE0; // USART0 einschalten (TX- und RX-teil)
|
4 |
|
5 | UCTL0 |= CHAR; // 8 data bits, 1 stop bit, no parity (8N1)
|
6 | UTCTL0 |= SSEL0; // ACLK als UCLK festlegen
|
7 |
|
8 | UBR00 = 0x40; // 8MHz 115200
|
9 | UBR10 = 0x00; // 8MHz 115200
|
10 | UMCTL0 = 0x00;
|
11 |
|
12 | UCTL0 &= ~SWRST; // USART freigeben
|
13 | IE1 |= URXIE0 + UTXIE0; // TX- und RX-interrupt anschalten
|
14 | IFG1 &= ~UTXIFG0; // initales interrupt-flag loeschen
|
15 | _BIS_SR(LPM3_bits + GIE);
|
16 | }
|
17 |
|
18 | #pragma vector = USART0RX_VECTOR
|
19 | __interrupt void USART0RX_ISR(void)
|
20 | {
|
21 | fnReceiveBuffer();
|
22 | }
|
und dies ist die angepasste Init der Uart sowie der Interrupt. Obwohl
ich mit dem Oszi ein herrliches Signal am Pin sehe, bekomm ich leider
keinen Interrupt ausgelöst. Hab jetzt schon einiges probiert ohne
erfolg. Vielleicht sieht ja ein anderes Paar augen mehr! Danke schonmal
vorab :)
P.S. ich nutz das CCS v4 von TI zum entwickeln.