mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM7SAMS64 und zweiter USART will nicht?


Autor: Sven Günther (s705081)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo *,

ich habe das der zweite USART des ARM nicht so will wie ich. Er ist
folgender massen initalisiert:

AT91S_USART * pUSART1 = AT91C_BASE_US1;

  *AT91C_PIOA_PDR = AT91C_PA21_RXD1 |        // Enable RxD0 Pin
                    AT91C_PA22_TXD1;         // Enalbe TxD0 Pin

  pUSART1->US_CR = AT91C_US_RSTRX |         // Reset Receiver
                  AT91C_US_RSTTX |          // Reset Transmitter
                  AT91C_US_RXDIS |          // Receiver Disable
                  AT91C_US_TXDIS;           // Transmitter Disable

  pUSART1->US_MR = AT91C_US_USMODE_NORMAL |  // Normal Mode
                   AT91C_US_CLKS_CLOCK    |  // Clock = MCK
                   AT91C_US_CHRL_8_BITS   |  // 8-bit Data
                   AT91C_US_PAR_NONE      |  // No Parity
                   AT91C_US_NBSTOP_1_BIT;    // 1 Stop Bit

  pUSART1->US_BRGR = BRD;                    // Baud Rate Divisor

  pUSART1->US_CR = AT91C_US_RXEN  |          // Receiver Enable
                   AT91C_US_TXEN;            // Transmitter Enable

Wenn ich nun ein zeichen Senden möchte dann hängt er bei:

  while (!(pUSART1->US_CSR & AT91C_US_TXRDY));
  return (pUSART1->US_THR = ch);

Es sieht so aus als ob der USART gar nicht senden will. Das Flag sagt
der Sende Buffer ist noch nicht leer.

Was zum teufel habe ich über sehen?

Gruss Sven

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du im PMC den Takt für das USART1 eingeschalten?

Autor: Sven Günther (s705081)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!
Mist ich muß mich erst dran gewöhnen für alles einen Takt einzustellen.
Jetzt hängt er nicht mehr aber sendet (noch) nicht  ... das kommt

Gruss und Danke
Sven

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo sven,
du solltest auch noch die PIO_ASR und PIO_BSR register init.
am besten initialisiert du die port register mit der funktion
AT91F_PIO_CfgPeriph().

gruss
gerhard

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.