AT91SAM7X256: RS232 Senden ist super langsam?

Gast #595281
Lesenswert?

Hallo,
Wenn ich die RS232 so konfiguriere:
1
AT91F_US_Configure (AT91C_BASE_US0,
2
                      AT91B_MCK,
3
                      AT91C_US_ASYNC_MODE,
4
                      115200,
5
                      0);  // <--- NULL!
dann läuft alles normal.
Mache ich es aber so:
1
AT91F_US_Configure (AT91C_BASE_US0,
2
                      AT91B_MCK,
3
                      AT91C_US_ASYNC_MODE,
4
                      115200,
5
                      0x8c0); // <--- 8 bits char length, no parity
dann ist das Senden (vom AT91 zum PC), obwohl fehlerfrei 
suuuuuperlangsam (als würde ich mit 9600 baud senden).
Das Senden läuft in beiden Fällen so:
1
      while (0 == (AT91C_BASE_US0->US_CSR & AT91C_US_TXRDY)); // wait for free TX register
2
      AT91C_BASE_US0->US_THR = (UINT8)b;  // Send now
Woran kann das liegen???
Danke für alle Tips ;)
Gast #595334
Lesenswert?

Hallo,
Ich habe jetzt herausgefunden, dass es an der '8 bits character length' 
Einstellung liegt (CHRL im US_MR). Setze ich die auf '5 bits pro 
Zeichen', dann ist es wieder schnell. Sehr merkwürdig...?
Gast #595349
Lesenswert?

Hm, ich habe gerade nur das Datenblatt und die Header des AT91S hier.
Aber wenn ich mir dort die Funktion "AT91F_US_Configure" anschaue, dann 
ist das was du zum einstellen von Wortlänge und Parity nutzt nicht 
dafür, sondern um den Timeguard zu konfigurieren.
Das wiederum bedeutet das du dir ein Delay schaffst.
Gruß

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