Forum: Mikrocontroller und Digitale Elektronik AT91SAM7X256: RS232 Senden ist super langsam?


von Peter (Gast)


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 ;)

von Peter (Gast)


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...?

von JJ (Gast)


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ß

von Peter (Gast)


Lesenswert?

Du hast recht, ich hab' mich voll verguckt.
Danke!
Mann, bin ich ein TROTTEL :-(

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.