Ich nutzt bei meinem uC den UART1 mit alles RS232 Leitungen. Da ich aber nur RxD, TxD und RTS brauche habe ich eben diese im Pinsel0 freigeschatet (0x150000) Nun habe ich aber eine Frage zu RTS die ich mir aus dem DAtenblatt und aus dem Internetwisen nicht beantworten kann aber ich hoffe das einer von euch es vielleicht weiß. Wahrscheinlich gilt das sowie so für alle Rs232 allgemein. Ich sende nun einen ganzen String über den Uart, z.B. "TEST". Wird das RTS automatisch gesetzt oder wird es bei jedem Zeichen erneut auf low gezogen? oder ist es für den gesamten Sendevorgang auf low? und wird erst wieder high Pegel wenn der gesammte String gesendet wurde? Wenn das nicht automatisch verarbeitet wird wäre es dann nicht sinnvoller einen ganz normalen Autgang als RTS zu deklarieren und den dann jeweils ob gesendet oder empfangen wird mit IOset oder IOclr wie gewünscht zu definieren? Ich hoffe die Frage ist verständlcih gestellt. Ich habe auch versucht dieses Problem mit meinem Ozzi zu lösen aber das hat für den RTS Channel immer so ein nihct eindeutig in die eine oder Andere richtung zu interpretierendes Signal geliefert, es ist hat schon alt und hat die besten TAge schon hinter sich ;-) Grüße und eine gute Nacht wünscht euch BoB
Die UART ist ne normale PC-UART, d.h. die Handshakesignale sind ganz normale IOs und haben keinerlei Einfluß auf die UART. Peter
RTS wird gar nicht automatisch gesetzt oder zurückgenommen, darum musst Du Dich schon selbst kümmern. Mehr sollte im Datenblatt des 16550 (das ist nämlich die UART, die in der LPC21xx-Reihe Verwendung findet) beschrieben stehen. Die Beschreibung des RTS-Signales im Philips-Datenblatt ist ziemlich irreführend. Üblicherweise wird RTS verwendet, um der Gegenstelle Empfangsbereitschaft zu signalisieren, während der Eingang CTS von der Gegenstelle kommt und deren Empfangsbereitschaft mitteilt - und also sinnvollerweise mit RTS kreuzweise verbunden wird. In der einfachen 8250-kompatiblen Betriebsart (ohne Sende/Empfangsfifo) können die Handshakeeingänge nur zur Erzeugung von Interrupts verwendet werden (über U1IER festgelegt). Im Auto-RTS-Modus wird die RTS-Leitung über den Füllstand des Empfangsfifos gesteuert. Ist das Empfangsfifo voll (genauer: der eingestellte "Trigger level" erreicht, so wird RTS deaktiviert, um der Gegenstelle mitzuteilen, daß sie jetzt mit dem Senden aufhören soll. Im Auto-CTS-Modus werden im Sendefifo stehende Daten nur dann gesendet, wenn CTS aktiv ist, ansonsten wird gewartet. Die 16550 ist die Standard-UART, wie sie in jedem PC verbaut ist. Hoffe, daß das Dir ein wenig Klarheit verschafft hat.
DAnke Rufus es hat mir sehr weitergeholfen den Fehler einzugrenzen. Jetzt geht es. noch mal danke BoB
Wird die AutoRTS-Funktion von allen Philips LPC2000 unterstützt? Bei 214x und 2103 wird's ja immerhin noch erwähnt, wenn auch konsequent nicht an der richtigen Stelle, Bei den älteren Typen steht absolut garnichts darüber drin
Hardware Handshake ist bei LPC2148 erstmals eingebaut, LPC2103 hat das auch. Der LPC2138 wird gerade fehlerbereinigt und die neue Version wird das dann auch haben. Alle UARTS der LPC2000 Familie sind (derzeit) 16C550 kompatibel. Ich sage derzeit weil es auch andere geben wird in Zukunft. Gruss, Robert
"Ich sage derzeit weil es auch andere geben wird in Zukunft." Wird auch langsam Zeit, denn das ist ja derzeit nur eine üble und billige Notlösung...
;-0 Dieter OOOpps kompatibel zu sein mit sagen wir mal mehreren hundert Millionen PCs ist eine ueble und billige Notloesung!? Naja, scheint auch eine Moeglichkeit zu sein die Sache zu sehen. Was haettest Du denn gerne fuer Zusatzfunktionen im UART? Robert
Was manche Leute vermissen, ist die Möglichkeit der 9-Bit-Übertragung, wie sie beispielsweise von der UART aus der MCS51-Reihe her bekannt ist. Auch schön wäre eine Unterstützung für externe RS485-Transceiver, wie sie beispielsweise in den UARTs von Oxford Semiconductor implementiert wird (da wird -programmierbar- eine Handshakeleitung genau solange aktiviert, wie die UART sendet).
Yepp, die 9-Bit fehlen mir auch! Wäre prima, wenn die noch kommen. Gerade im embedded-Bereich ist das ja sehr nützlich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.