USART Control Register US_CR wird nicht geschrieben

Gast #3593495
Lesenswert?

Bekomme den USART nicht zum laufen bei einem SAM4E EK.
Mein Portpin auf dem EK (PA22 -> TXD) zeigt auf dem Scope keine 
Reaktion.
Wenn ich bei usart_write() ein Breakpoint setze und mir nach der 
Initialisierung (usart_init_rs232()und usart_enable_tx()) die Register 
anschaue ist das US_CR Register von USART1 0x0. US_MR hingegeben passt 
100% zu der gewählten Configuration und im US_CSR wechselt auch der 
Status von z.B. TXRDY.

Das Problem liegt wohl im US_CR, da hier der Wert 0x00 ist und somit 
eigentlich auch die Bits RXEN und TXEN auf 0 sind?!
Weiß jemand Rat? Gibt es noch irgendeinen Schreibschutz oder andere 
Feinheiten?
1
  
2
    #define USART_SERIAL                 USART1
3
    #define USART_SERIAL_ID              ID_USART1
4

5
    #define USART_SERIAL_BAUDRATE        9600
6
    #define USART_SERIAL_CHAR_LENGTH     US_MR_CHRL_8_BIT
7
    #define USART_SERIAL_PARITY          US_MR_PAR_NO
8
    #define USART_SERIAL_STOP_BIT        US_MR_NBSTOP_2_BIT
9
  
10
int main (void)
11
{
12
  sysclk_init();
13
  board_init();
14
  SysTick_Config(sysclk_get_cpu_hz()/1000); //1ms
15
  
16
      const sam_usart_opt_t usart_console_settings = {
17
        USART_SERIAL_BAUDRATE,
18
        USART_SERIAL_CHAR_LENGTH,
19
        USART_SERIAL_PARITY,
20
        USART_SERIAL_STOP_BIT,
21
        US_MR_CHMODE_NORMAL
22
      };
23

24
  sysclk_enable_peripheral_clock(USART_SERIAL_ID);  
25
  usart_init_rs232(USART_SERIAL, &usart_console_settings, sysclk_get_main_hz());
26
  
27
  usart_enable_tx(USART_SERIAL);
28
  usart_enable_rx(USART_SERIAL);
29
        usart_write(USART_SERIAL,0x55);
Gast #3594792
Lesenswert?

Habe es noch einmal ganz zu fuß ohne ASF versucht verschiedene Bits in 
US_CR zu setzen. Probiert mit USART0 und USART1.
1
  USART0->US_CR = US_CR_RXEN;
2
  USART0->US_CR = US_CR_TXEN;
3
  USART0->US_MR = US_MR_NBSTOP_2_BIT;

Die Offsets und Adressen stimmen zum Datenblatt überein. Durchlaufen 
diese 3 Zeilen, wird lediglich das US_MR Register richtig gesetzt. RXEN 
und TXEN müssen doch auch gesetzt werden und bleiben oder verstehe ich 
hier etwas komplett falsch?

Ein Bild im Anhang. Bei US_CR tut sich einfach garnix.
Angehängte Dateien:
Gast #3595038
Lesenswert?

Achso, dann kann die Register Anzeige auch nur Read-Register anzeigen 
oder was heißt das im Umkehrschluss? Wär ja vom Namen her logisch, 
jedoch bin ich da noch nicht drauf gekommen.

Dann bleibt mir quasi nur den Status im US_CSR zu lesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren