Hallo NG,
kann mir bitte jemand ein paar Dinge erklären und warum die so sind?
- asyncron und syncron
- Flusssteuerung
- kann ich mit einem 1:1 Kabel Daten in eine Richtung übertragen?
- Muss die Baud-Rate auf beiden Geräten gleich eingestellt sein, oder
funktionierts auch, wenn z.B. der Empfänger eine höhere eingestellt hat?
Vielen Dank!
Peter
Da empfehle ich doch glatt mal http://de.wikipedia.org/wiki/RS_232
Wenn du einzelne gezielte Fragen hast, kannst du wieder fragen, aber
ganze Aufgaben wird hier wohl keiner für dich lösen.
In einem anderen Thread wurde mir gesagt, dass ich ein 1:1 Kabel
brauche, um Daten vom AT91SAM7S256 auf meinen PC zu schicken.
Wenn ich mir aber hier das aus Wikipedia durchlese, denke ich doch eher
an ein Nullmodem-Kabel, oder lieg ich da falsch?
Mir wäre es halt wichtig, dass ich wenigstens mal das richtige Kabel
habe, das ich brauche. Sonst helfen ja die ganzen Tests nichts...
In Wikipedia (Auszugsweise):
""""""""""""""""""""""""""""""""""""
Um zwei Geräte über die serielle Schnittstelle zu verbinden, müssen die
"hörenden" mit den "sprechenden" Leitungen verbunden werden, d. h. TxD
muss mit RxD und CTS mit RTS verbunden werden.
- Handelt es sich um eine Verbindung von Terminal bzw. Rechner (DTE –
data terminal equipment) mit Stecker zu einem Modem (DCE – data
circuit-terminating equipment) mit Buchse, ist ein 1:1-Kabel nötig.
- Handelt es sich dagegen um eine Verbindung zweier gleicher Geräte (z.
B. zweier PCs), so sind die Leitungen zu kreuzen. Ein solches Kabel
nennt man Nullmodem-Kabel.
""""""""""""""""""""""""""""""""""""
Peter Pippinger wrote:
> In einem anderen Thread wurde mir gesagt, dass ich ein 1:1 Kabel> brauche, um Daten vom AT91SAM7S256 auf meinen PC zu schicken.>
Das kann man so nicht sagen.
Das hängt davon ab, welche Buchse (oder Stecker) auf deinem
Board montiert ist.
Am einfachsten ist es, du schnappst dir ein Multimeter
und misst das einfach mal an den Pins aus.
> In Wikipedia (Auszugsweise):> """"""""""""""""""""""""""""""""""""> Um zwei Geräte über die serielle Schnittstelle zu verbinden, müssen die> "hörenden" mit den "sprechenden" Leitungen verbunden werden, d. h. TxD> muss mit RxD und CTS mit RTS verbunden werden.>> - Handelt es sich um eine Verbindung von Terminal bzw. Rechner (DTE –> data terminal equipment) mit Stecker zu einem Modem (DCE – data> circuit-terminating equipment) mit Buchse, ist ein 1:1-Kabel nötig.>> - Handelt es sich dagegen um eine Verbindung zweier gleicher Geräte (z.> B. zweier PCs), so sind die Leitungen zu kreuzen. Ein solches Kabel> nennt man Nullmodem-Kabel.> """"""""""""""""""""""""""""""""""""
Das ist in der Theorie schön und gut. In der Praxis erlebt
man da aber immer wieder Überraschungen.
Daher -> Mit einem Voltmeter hast du in 20 Sekunden identifiziert
ob das Kabel gekreuzt sein muss oder nicht.
Wenn du einen 9-poligen Stecker/Buchse hast, dann liegen die
relevanten Signale an Pin 2/3. Nimm dein Voltmeter und
sieh nach auf welchem der beiden Pins eine Spannung von
ca. -8V (oder weniger) anliegt.
Ist es Pin 2, dann ist dieser Pin der Tx Ausgang und muss mit
dem Rx Eingang am PC verbunden werden. Dieser liegt am PC
ebenfalls auf Pin 2 und du brauchst daher ein nicht gekreuztes
Kabel, ein sog. 1:1 Kabel (und damit dann auch Pin 3 -> Pin 3 )
Ist es Pin 3, dann ist dieser Pin mit Pin 2 am PC zu
verbinden. Dazu brauchst du ein gekreuztes Kabel, ein sog.
Nullmodem Kabel (und damit dann auch Pin 2 -> Pin 3)
Wenn das Kabel an beiden Enden eingesteckt ist, dann muss auf
den beiden Datenleitungen im Ruhezustand jeweils ca -8V oder
weniger anliegen. Wenn du das falsche Kabel hast, dann ist nur
eine Leitung bei -8V, die andere liegt ca. auf Masse.
> Wenn du einen 9-poligen Stecker/Buchse hast, dann liegen die> relevanten Signale an Pin 2/3.
Am 25-poligen Stecker auch. Ansonsten klasse Beschreibung !
?????
jetzt habe ich mal mein DEV-Board einfach nur so angeschlossen, ohne
dass ein Programm von mir läuft.
Dabei fand ich nur auf PIN2:
-5,5V. Auf allen anderen 0V.
Auf dem PC siehts folgendermaßen aus: Pin 3,4 und 7:
-6.6V
Sagt dieses Ergebins jemand etwas bezüglich des Kabels, das benötigt
wird?
Ok, sorry Holger. Komme nur gerade irgendwie nicht weiter :-(
Dann hätte ich noch ne Frage: Ich habe so einen USB auf RS232 "Stecker".
Mein Windows erkennt diesen auch als COM-Port. Dann sollte es doch
funktionieren - da die Schnittstelle ein Männchen ist - dass ich das
Teil so wie es ist in das Dev-Board stecke. Das müsste doch dann einer
1:1 Verdrahtung gleichkommen, oder? Die Sechskantschrauben vom DEV-Board
habe ich dazu von der Buchse entfernt.
Peter Pippinger wrote:
> ?????>> jetzt habe ich mal mein DEV-Board einfach nur so angeschlossen, ohne> dass ein Programm von mir läuft.> Dabei fand ich nur auf PIN2:> -5,5V. Auf allen anderen 0V.>> Auf dem PC siehts folgendermaßen aus: Pin 3,4 und 7:> -6.6V>> Sagt dieses Ergebins jemand etwas bezüglich des Kabels, das benötigt> wird?
Ja.
Welchen Teil der Beschreibung, dass jeweils der Pin der negative
Spannung führt mit dem Pin auf der Gegenseite der keine
Spannung führt (wir reden ausschliesslich von den Pins
2 und 3 auf beiden Seiten) verbunden werden muss, hast
du nicht verstanden?
....vllt. sollte man ihm noch sagen, daß gegen Pin5(GND) gemessen werden
sollte. Bei 25 pol. ist das der Pin 7.
Oder aber v24-Tester einschleifen.
guude
ts
Ja, Pin 2, 3 und 5 werden benötigt. Auf Pin 5 (GND) kann ganz und gar
nicht verzichtet werden, das ist das Bezugspotential.
Pin 3 (TxD) ist die Sendedatenleitung des PC. Die muss mit der
Empfangsdatenleitung (RxD) Deines µC verbunden werden. Natürlich nicht
direkt, sondern über einen geeigneten V24-Empfängerbaustein wie einen
MAX232.
Pin 2 (RxD) ist die Empfangsdatenleitung des PC und ist mit der
Sendedatenleitung (TxD) des µC zu verbinden. Auch hier nicht direkt,
sondern über einen geeigneten V24-Senderbaustein wie einen MAX232.
Wenn Dein µC nicht sendet, muss zwischen seiner TxD-Leitung und Masse
eine Spannung messbar sein. Dafür reicht ein simples Aldi-Multimeter. An
der TxD-Leitung zwischen µC und MAX232 muss eine Spannung von 5V messbar
sein, an der zwischen MAX232 und PC hingegen eine Spannung von etwa
-10V. Bezugspotential ist natürlich Masse (GND).
>- Muss die Baud-Rate auf beiden Geräten gleich eingestellt sein, oder>funktionierts auch, wenn z.B. der Empfänger eine höhere eingestellt hat?
Die Baudrateneinstellung ist fakultativ, das sie von den Geraeten
sowieso ignoriert wird. Die beiden Geraete waehlen die geeignete
Baudrate selbst, da sie klueger als der Benutzer sind und zudem ueber
geheimes Zusatzwissen verfuegen. ;-)
Die Baudrate Sender / Empfänger muss gleich sein, denn ein Bit hat ja
eine bestimmte Impulslänge die vom Receiver erkannt werden muss nachdem
das Startbit erkannt wurde. Wäre die Baudrate des Empfängers doppelt so
hoch wie die des Senders hätte der Empfänger schon 8 Bits "gesehen"
obwohl der Sender erst 4 gesendet hat. Das dabei nur Mist rauskommt ist
klar.
Ebenso muss Tx des Transmitters mit Rx des Receivers verbunden werden
und Rx des Transmitters mit Tx des Receivers, auch wenn sich das jetzt
blöd anhört. Basis der Verbindung ist natürlich die gemeinsame
GND-Leitung.
Geht man von einer Standart PC-Schnittstelle aus, dann sind natürlich
alle
Tx usw. an der gleichen Position und man braucht ein "gekreuztes"
Nullmodem-Kabel um die Verbindungen Tx-Rx herzustellen.
Bei manchen Ports wie z.B. beim STK500 sind die Ports schon so
verdrahtet, das man nur ein "grades" Kabel braucht.
Der logische Lo-Pegel entspricht +12 Volt auf der RS-232 (Kabel)Seite,
ein logischer Hi-Pegel entspricht -12 Volt bei RS-232. Dabei kommt es so
genau auf die Spannung gar nicht an:
Ein Bereich von +-3 bis +-18 Volt ist zulässig.
So, Ende des Romans. ;-)
JUHUUUUUU!!!
Es klappt! Wenn ich euch erzähle, woran es gelegen hat, werden sich
einige bestimmt an den Kopf langen...
Ich hatte diverse BASE-Adressen in den Headerdefinitionen falsch. Jetzt
läufts auf Anhieb! Die LED auf dem Board blinkt und ein Zeichen (j)
erscheint im Hyperterminal :-)
Echt genial. Das beste daran ist, dass mir immer mehr klar wird, wie der
kleine ARM funktioniert.
NO RISC NO FUN sag ich da blos :-)
Und fürs Protokoll:
die Datenleitungen (PIN2+3) und GND (PIN5) sind jetzt 1:1 verdrahtet.
Hab ich ja auch nicht behauptet. Für mich ist der ARM der Einstieg in
die Mikrocontroller-Technik (nach wie vor als Hobby und nicht als
Beruf!). Bislang wuste ich nichts über die Dinger. Und die paar Schritte
zu meinem persönlichem Ziel, die ich bislang gegangen bin funktionieren
soweit. Das reicht mir vollkommen und macht bis auf manche Rückschläge
auch total Spaß.
So long,
Peter
Hallo NG,
eine Frage hätte ich noch:
ich setzte doch hier die Baudrate vom USART.
LDR r0, =USART_BASE
LDR r1, =313
STR r1, [r0, #USART_US_BRGR]
wieso muss ich 313 schreiben? Mein Board läuft doch mit 18MHz. Damit
sollte sich folgende Rechnung ergeben:
18000000 / (9600 * 16)
Das würde aber dann den Wert 117 zur Folge haben. Dann klappts
allerdings nicht.
Also nicht falsch verstehen: Ich kann mit der Lösung leben, aber leider
verstehe ich diesen Teil nicht ganz...
Gruß,
Peter