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


von Sven G. (s705081)


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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hast du im PMC den Takt für das USART1 eingeschalten?

von Sven G. (s705081)


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

von gerhard (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.