- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 5 von 5

Thema: MSP430FG4618 und der UART?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22

    MSP430FG4618 und der UART?

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    ich versuche nun mittlerweile verzweifelt den UART ans laufen zu
    kriegen.
    Der Microcontroller befindet sich auf dem MSP430 Experimenters Board und
    es ist keine zusätzliche Hardware angeschlossen.

    Es wird der größere der beiden Controller benutzt, also der
    MSP430FG4618.

    So, ich will nun den UART ans Laufen kriegen und dann mit dem Computer
    kommunizieren.

    Fangen wir erstmal beim Controller an, dort initialsiere ich den UART
    wie folgt:

    Code:
    void initUART()
    {
      P2SEL |= (BIT4 | BIT5);     // Set TXD and RXD Pins
      U1ME |= UTXE1 + URXE1;
      U1CTL |= CHAR;              // 8-Bit Data, (1 Stop-Bit, No Parity)
      U1TCTL |= SSEL1;            // Set ACLK as UCLK
      U1BR0 = 0x03;               // Set Baudrate 9600 (at 32.768 KHz)
      U1BR1 = 0x00; 
      U1MCTL = 0x4A;
      U1CTL &= ~SWRST;            // Activate UART
      IE1 |= URXIE1 + UTXIE1;     // Activate UART-Interrupts
      IFG2 &= ~UTXIFG1;           // Clear Interrupt Flags
    }
    Dann habe ich mir Breakpoints in die beiden Interrupts gesetzt:

    Code:
    #pragma vector=USART1TX_VECTOR
    __interrupt void USART1_TX(void)
    {
     TXBUF1 = 0xFF; 
    }
    
    #pragma vector=USART1RX_VECTOR
    __interrupt void USART1_RX(void)
    {
     unsigned short test = RXBUF1; 
    }
    Aber es wird nie ein Breakpoint erreicht.
    Nun frage ich mich die ganze Zeit, ob die UART denn wirklich läuft oder
    ob es da Probleme zum Beispiel mit dem Oszillator geben könnte, aber mir
    fällt keine Möglichkeit zum testen ein...

    Das Experimenters Board hat ja bereits eine DSUB9-Buchse drauf. Deswegen
    gehe ich mal davon aus, dass ich keine Pegelwandler benötige.

    Als Kabel benutze ich das beim STK500 mitgelieferte Kabel.
    Wenn ich da mal die Durchgänge prüfe, dann komme ich auf folgendes
    Ergebnis (eigene Nummerierung):
    (Buchsen-Seite) (Stecker-Seite)
    /----------\ /-----------\
    / 0 1 2 3 \ / 3 2 1 0 \
    / 4 5 6 7 8 \ / 8 7 6 5 4 \
    ----------------- -------------------

    In dieser PDF (slau213a.pdf) findet ihr am Ende einen
    Schaltplan des Boards: http://focus.ti.com/lit/ug/slau213a/slau213a.pdf

    Vielleicht machen wir erstmal hier Pause, da ich zum Senden vom PC das
    .NET Framework benutze und hoffe, dass es da eigentlich keine Fehler
    geben sollte...

    Ich hoffe, dass ich einige Leute finden, die mir auf die Sprünge helfen
    können

    Ciao,
    Eroli


    EDIT: Vielleicht noch ein kleiner Hinweis:
    Der RealTimer wird zum Beispiel so initialisiert und läuft dabei
    sekündlich:
    Code:
    void initBasicTimer(void) // Initialize basic timer
    {
      // Basic timer setup
      // Set ticker to 32768/(256*128) = 1  (One Interrupt per second)
      // Enable BT interrupt
      BTCTL = BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256;
      IE2 |= BTIE;
    }
    Da dort die ACLK benutzt wird, habe ich versucht die ACLK auch für den
    UART zu benutzen und deswegen die Codevorlage abgeändert und SSEL1
    benutzt (in der Codevorlage wurde SSEL0 benutzt, ABER im Kommentar stand
    auch ACLK. Dies passt laut ApplicationNotes aber nicht zusammen - oder
    etwa doch???)

    EDIT: Für die Aufmerksamen: Verzeiht mir, wenn ich die Frage in einem anderem Forum ebenfalls gestellt habe, aber es ist zeitlich leider etwas knapp bei mir...

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Wenn ich den Controller zyklisch (sekündlich) etwas senden lasse, dann kommt er leider nie mehr aus der while-Schleife raus:

    Code:
    void SendUSART1c(char c)             // ein einzelnes zeichen über die serielle schnittstelle (USART1) senden
    {
      while (!(IFG2 & UTXIFG1));           // warten, bis USART1 TX-buffer sendebereit
      TXBUF1 = c;
    }
    Am PC kommen ein bis zwei nicht identifizierbare Zeichen an, aber nach ein bis zwei zeichen ist ja auch schluss (eigentlich ist sofort schluss, er geht einmal in die while rein und kommt nie wieder raus)...

    Bin total verwirrt :-/


    EDIT: ich will mal etwas genauer sein. Er schafft es kein Zeichen zu senden, denn die While-Schleife ist eine Endlosschleife. Außerdem kommen bei der Initialisierung des UART am PC 2 Zeichen an: Ein rechteck und ein y mit Strich drüber...

    EDIT:
    Und wie sieht es mit dem FlowControl aus? Was soll ich da in der Software zum Mitlesen auf dem PC einstellen? HardwareFlowControl oder SoftwareFlowControl oder beides?
    Geändert von Eroli (27.06.2011 um 14:17 Uhr)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Ich habe euch zum reproduzieren mal eine komplette Main zum testen drangehangen. Vielleicht liegt der Fehler ja ganz wo anders...

    main.c

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Hallo zusammen,

    ich glaube ich habe es.

    Alle Code-Beispiele von TI benutzen die Pins URXD1 und UTXD1 (an Port4).
    AUf dem Board ist die DSUB9-Buchse jedoch mit den Pins UCA0RXD und UCA0TXD verbunden.

    (Siehe auch slau.pdf weiter oben)

    Wie kann ich nun an diesen Pins eine UART herstellen? Brauche ich dazu eine Software-UART?

  5. #5
    Schau dir nochmal die Codebeispiele an:
    http://www.ti.com/lit/zip/slac118

    msp430xG46x_uscia0_uart_115k.c
    msp430xG46x_uscia0_uart_115k_lpm.c
    msp430xG46x_uscia0_uart_9600.c

    Damit sollte es laufen. Viel Erfolg.

Ähnliche Themen

  1. BASCOM 2te UART oder software UART
    Von Snecx im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 18.02.2009, 23:25
  2. Daten von Software UART nach Hardware UART weiterleiten
    Von kusli im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 06.10.2008, 21:24
  3. Pegelwandlung: 5V UART an 3,3V USB-to-UART Wandler
    Von Johannes G. im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 17.05.2007, 09:45
  4. Hardware UART + Software UART gleichzeitig möglich?
    Von eevox im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 22.04.2007, 18:54
  5. AT90USB1287 und Beispielprogramm CDC (UART --> USB-UART)
    Von Bumbum im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 15.11.2006, 12:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests