www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Probleme


Autor: Aspire (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
Ich habe ein Problem mit meiner UART. Eigentlich bin ich der Meinig das 
mein Programm gestern noch funktioniert hat. Und geändert hab ich 
eigentlich auch nix dran.
 #include "msp430x26x.h"

unsigned char RxByte;
volatile unsigned char RxData[256];
unsigned char TxByte;
volatile unsigned int i;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  //DCOCTL = CALDCO_8MHZ;                     // Load 8MHz constants
  //BCSCTL1 = CALBC1_8MHZ;
  BCSCTL1 |= XTS ;                   // ACLK = LFXT1 = HF XTAL
  BCSCTL3 |= LFXT1S1;                       // 3 – 16MHz crystal

 do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
  }
  while (IFG1 & OFIFG);                     // OSCFault flag still set?

  BCSCTL2 |= SELM_3;                        // MCLK = LFXT1 (safe)
  P1OUT &= ~0x01;                           // Clear P1.0
  P1DIR |= 0x01;                            // P1.0 output
  P3OUT &= ~(BIT4+BIT5);
  P3SEL |= 0x30;                            // Use P3.4/P3.5 for USCI_A0
  UCA0CTL1 |= UCSWRST;                      // Set SW Reset
  UCA0CTL1 = UCSSEL_1 + UCSWRST;            // Use SMCLK, keep SW reset
  UCA0BR0 = 104;                             // 8MHz/52=153.8KHz
  UCA0BR1 = 0;
   UCA0MCTL = UCBRF_1 + UCOS16;              // Set 1st stage modulator to 1

  //UCA0MCTL = UCBRS_7 + UCBRF_0 + UCOS16;              // Set 1st stage modulator to 1
                                            // 16-times oversampling mode
 UCA0IRTCTL = UCIRTXPL2 + UCIRTXPL0 + UCIRTXCLK + UCIREN;
                                            // Pulse length = 6 half clock cyc
                                            // Enable BITCLK16, IrDA enc/dec
  UCA0CTL1 &= ~UCSWRST;                     // Resume operation
  TxByte = 0x53;
   //TxByte = 0xAB;                            // TX data and pointer, 8-bit
  //TxByte = 0x00;
  IE2 |= UCA0RXIE;
  while (1)
  {
    for (i = 1000; i; i--);                 // Small delay
    while (!(IFG2 & UCA0TXIFG));            // USCI_A0 TX buffer ready?
    UCA0TXBUF = TxByte;                     // TX character
    P1OUT ^= 0x01;
    //TxByte++;
    
    __disable_interrupt();
    IE2 |= UCA0RXIE;                        // Enable RX int
    __bis_SR_register(GIE);        // Enter LPM0 w/ interrupts    
}
}
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USCIAB0RX_ISR(void)
{
  RxByte = UCA0RXBUF;                       // Get RXed character
  IE2 &= ~UCA0RXIE;                         // Disable RX int
  //TxByte = RxByte;
  if (TxByte != RxByte)                   // RX OK?
    {
      P1DIR |= 0x01;
      P1OUT |= 0x01;                        // LED P1.0 on
    }
  //__bic_SR_register_on_exit(CPUOFF);        // Exit LPM0
  
} 

Der externe Oszilator schwingt auch. Konnte es mit dem Oszi messen. In 
erster Linie ist es egal ob der IrDA Modus aktiv ist oder nicht aber 
schaut mal bitte rein und sagt mir wo sich ein Fehler eingeschlichen 
hat, Bitte!

MFG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.