UART: Zeichenkette übertragen

OP #676697
Lesenswert?

Hallo,

ich versuche mich gerade am UART - Daten an das HyperTherminal von 
Windows zu schicken.

Dazu verwende ich die Funktion Put_Char - bei einem Zeichen ist das auch 
kein Problem, wird im HyperTherminal dargestellt; aber wenn ich versuche 
einen ganzen Text auszugeben wird immer der letzte Wert nur dargestellt, 
die anderen nicht.

  char  a[10] = "Hallo Welt";

  for(int i=0; i<2; i++)
  {
     AT91F_US_PutChar (COM0,a[i]);
  }

muss ich nach dem ersten Aufruf von PutChar eine gewisse Zeit warten, 
bis das nächste Zeichen gesendet werden kann oder liegt das problem 
woanders?

Bernd
Gast #676705
Lesenswert?

Ich denke, ob du warten musst oder nicht hängt davon ab, wie die 
Putchar-Methode implementiert ist... Wenn sie eine Warteschleife intern 
enthält, dann brauchst du nix zu berücksichtigen und dein Aufruf sollte 
funktionieren. Ansonsten bist du dafür zuständig, dass die passende Zeit 
gewartet wird.

MfG
Marius
OP #676741
Lesenswert?

ich bekomm halt immer das letzte zeichen im hypertherminal von der 
schleife dargestellt, die ersten zeichen nicht...

wenn ich die schleife verkürze, passiert das gleiche...

ich arbeite mit dem AT91RM9200 - wo finde ich heraus wie die PutChar 
Methode implementiert ist? Im Datenblatt hab ich dazu nichts gefunden.

Bernd
Gast #676816
Lesenswert?

Hallo Bernd,

du musst in der For-Schleife noch das TX-Ready Flag abfragen!
1
char  a[11] = "Hallo Welt";
2

3
for(int i=0; i<11; i++)
4
{
5
  while(!AT91F_US_TxReady(COM0));
6
  AT91F_US_PutChar (COM0,a[i]);
7
}

so zum Beispiel :-)
#677321
Lesenswert?

Bernd Schuster wrote:
> 0xFF stellt eine Maske dar,

Maske ist richtig.

Aber: welchen Datentyp hat denn a?

Wenn das ein char Typ ist, dann ist diese Maskierung
unnötig.
Wenn das aber ein int ist, und int mehr als 8 Bit hat,
dann sieht die Sache anders aus.

Hier geht es also darum, sicher zu stellen, dass bei der
Zuweisung immer nur ein Byte gemacht wird. Und zwar auch
dann, wenn aus dem a ein Wert wie beispielsweise 0xABCD
heraus kommt. Die Maskierung mit 0xFF lässt dann nur
das 0xCD übrig.

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