Gast
#210757
Moin! Ich hab den ganzen Tag am code rumgeschraubt und an meinen MSP430F437IPZ an die Pins XIN und XOUT nen 32 kHz oszillator angetuetert (gehause natuerlich gegrounded..) Ich verwende keine externen kapazitaeten weil mein MSP die auf software-anweisung hin intern zuschaltet. das ganze laeuft aber immer noch nicht! Ich bin die ganze geschichte mal schrittweise durchgegangen und das programm haengt sich imm bei der character-zuweisung (ch = 'a';) auf. hat irgendwer von euch ne erklaerung dafuer? initialisiere ich ueberhaupt den takt richtig - (ich erwaehne schliesslich nur bei der USART inititalisierung dass ich den ACLK nutzen moechte - muss ich den eventuell schon vorher aktivieren?)? Ich bin fuer jede hilfe dankbar! und hier nu der code: #include <msp430x43x.h> #include <stdio.h> int main(void) { char ch; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P2SEL |= (BIT4 + BIT5); //UTXD0 and URXD0 = activated P2DIR |= 0x1A; //P2.4, P2.3 & P2.1 = outputs SCFQCTL = SCFQ_M; // Frequency modulation disabled FLL_CTL0 |= XCAP14PF; // Configure load caps U0CTL |= SWRST; // Software-Reset activated U0CTL |= CHAR; //no parity; 1 stop bits; 8-bit data; LISTEN=disabled; //UART mode; Idle-line MP protocol; // U0TCTL = 0x18; // UCLKI=UCLK; ACLK; UART receive start-edge feature; data UTCTL0 = SSEL0; // UCLK = ACLK U0BR0 = 0x03; // 9600 Baud U0BR1 = 0x00; UMCTL0 = 0x4A; U0IFG &= ~URXIFG0; // Clear USART0 RX interrupt flag U0IFG |= UTXIFG0; // Clear USART0 TX interrupt flag U0CTL &= ~(SWRST); // 8-bit character - clr SWRST bit U0IE |= URXIE0+UTXIE0; // Enable USART0 RX + TX interrupt //U0IE |= U0RXIE; // Enable USART0 RX interrupt U0ME |= UTXE0+URXE0 ; // Enabled USART0 TXD/RXD _BIS_SR(LPM4_bits + GIE); //enable maskable interrupts and enter LPM4 /* UTCTL0 = SSEL0; // UCLK = ACLK UBR00 = 0x03; // 32k/9600 UBR10 = 0x00; // UMCTL0 = 0x4a; // */ P2OUT = 0x02; ch = 'a'; while (1) { while ((U0IFG&UTXIFG0)==0); // wait till TX buf empty U0TXBUF = ch; P2OUT |= 0x08; } //while }// main // USART 0 Receive interrupt service routine #pragma vector=USART0RX_VECTOR __interrupt void USART0RX (void) { char temp; temp=U0RXBUF; P2OUT = 0x08; }