RS232

Das macht der 6551 UART so. Es wird aber allgemein als Fehler angesehen wenn der Sender mitten im Byte abbricht.

Gerrit

Reply to
Gerrit Heitsch
Loading thread data ...

Die Funktion bleibt die selbe, das Zeitverhalten ändert sich aber von Compiler zu Compiler oder in Abhängigkeit der eingestellten Optimierungsstufe. Daran kommt man nicht vorbei. Ich kann auch nicht einen

8051 von Hersteller A gegen einen von Hersteller B tauschen und davon ausgehen, dass sich das Zeitverhalten nicht ändert. Das weiß man aber und testet daher bei jeder Änderung des Compilers, der Compiler-Einstellungen oder der Hardware von vorne.

Das ist blöd, könnte aber z. B. durch Bugfixes für Prozessorbugs verursacht worden sein. Deshalb würde ich das nicht unbedingt dem Compilerbauer ankreiden.

Markus

Reply to
Markus Schaub

Martin Schoenbeck schrieb:

Wenn du Leistung deiner Maschine bis aufs äußerste ausnutzen willst, hindert dich niemand daran, besonders zeitkritische Funktionen in Assembler zu implementieren. Das lässt sich auf mit C-Code für den Rest des Systems kombinieren.

Markus

Reply to
Markus Schaub

Hm? Das will ich aber hoffen. Wenn '8051' auf dem Chip steht, dann hat er sich auch wie ein 8051 zu verhalten.

Gerrit

Reply to
Gerrit Heitsch

Am 05.11.2011 15:26, schrieb Gerrit Heitsch:

Dieser Irrtum dürfte Mannjahre und Millionen gekostet haben.

Aus ITU V.24:

########################################################

Circuit 105 ? Request to send Direction: To DCE Signals on this circuit control the data channel transmit function of the DCE. The ON condition causes the DCE to assume the data channel transmit mode. The OFF condition causes the DCE to assume the data channel non-transmit mode, when all data transferred on circuit 103 have been transmitted.

Circuit 106 ? Ready for sending Direction: From DCE Signals on this circuit indicate whether the DCE is prepared to accept data signals for transmission on the data channel or for maintenance test purposes under control of the DTE. The ON condition indicates that the DCE is prepared to accept data signals from the DTE. The OFF condition indicates that the DCE is not prepared to accept data signals from the DTE.

########################################################

Hat jemand die TIA/EIA-RS232 im Original, die EIA/TIA möchte $142 dafür?

Butzo

Reply to
Klaus Butzmann

Ich sehe den Widerspruch zu meiner Aussage nicht. Nicht vergessen, das Modem ist DCE und der PC ist DTE.

Gerrit

Reply to
Gerrit Heitsch

Hallo Markus,

Markus Schaub schrieb:

K3wl, danke für den Tip.

Gruß Martin

--
Bitte nicht an der E-Mail-Adresse fummeln, die paßt so.
Reply to
Martin Schoenbeck

(auf

welche

mpiler

Damit wird es an dieser Stelle passieren, da=C3=9F die Funktion eben nic= ht mehr "die selbe" ist, eben weil das zeitliche Verhalten ein /Teil/ der Funktion ist.

Richtig. C bietet dummerweise aber keine M=C3=B6glichkeit, zeitliches Ve= rhalten als Teil der Funktion zu beeinflussen, weil das nunmal nicht Teil der Sprachdefinition ist. Kann man C nicht wirklich anlasten, ist aber halt = so.

von

sorzeit mehr.

essorbugs verursacht

uer

Ist es an dieser Stelle aber mit ziemlicher Sicherheit. Ich wei=C3=9F nu= r noch nicht, warum. Vermutlich haben sie die Doppelkopie von Daten bei einer Zuweisung, die sie in .1 gemacht haben, jetzt einfach an eine ande= re Stelle gepackt. ;)

Aber genau wegen solcher Sp=C3=A4=C3=9Fe schaue ich mir den compilergene= rierten Assemblercode ja auch an. Bitfelder mag der betreffende Compiler =C3=BCb= rigens ganz besonders, zumindest nach dem daf=C3=BCr generierten Code nach zu u= rteilen. Viel l=C3=A4nger k=C3=B6nnte man den Prozessor damit gar nicht besch=C3=A4= ftigen. ;)

Vinzent.

--

f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng.
Reply to
Vinzent Hoefler

(auf

welche

mpiler

inst.

Maximale, garantierte Laufzeit, ja. Worst Case Execution Time eben.

Darin, da=C3=9F die Absch=C3=A4tzung vom generierten Code abh=C3=A4ngen = kann, der sich eben von Compiler zu Compiler in durchaus signifikanter Weise =C3=A4nder= n kann. Wenn man das nicht will, hat man ein Problem.

eben

h

von

sorzeit mehr.

Was ist an Rate Monotonic Scheduling seltsam? Das ist schlicht die Grenz= e, bis zu der man /garantieren/ kann, da=C3=9F das System noch korrekt l=C3= =A4uft (ok, exakt ist sie 69.3undeinbi=C3=9Fchenwas%).

Ok, es gibt bessere Scheduling-Algorithmen, aber das wu=C3=9Fte der Kund= e Ende der 80er Jahre halt noch nicht. ;) Und um die absolute Untergrenze zu berechnen ist die Formel nach wie vor brauchbar.

Das kommt dazu. Ist aber der eher einfache Teil.

r sicher zu

.

Nein. IRQs sind schlimmstenfalls sporadische Tasks, die man in der Analyse einrechnen kann, wenn man deren Ausf=C3=BChrungszeit kennt. Kein=

Problem also.

Nein, das "Timing" wird dar=C3=BCber nicht gesteuert. Aber die Deadlines= der wichtigsten Tasks sollten eingehalten werden. Und wenn sich aufgrund ein= er =C3=84nderung des Compilers die Ausf=C3=BChrungszeiten so signifikant =C3= =A4ndern, wie ich das oben beschrieb, wird es halt eklig.

.

2008 war das noch nicht so. Ok, der Compiler, den Freescale geliefert ha= t, war vielleicht nicht so der Bringer und auf einen =C2=B5C mit faktisch n= ur einem Register (ok, zwei, eins zum Rechnen, eins zum Adressieren) ist auch nic= ht viel zu holen, aber nichtsdestotrotz w=C3=A4re mein h=C3=A4ndisch geschr= iebener Assemblercode vielleicht nicht schneller, aber mindestens kleiner geword= en und bei nur 8K Flash ist das doch auch was. ;)

Eines jedoch wei=C3=9F ich an dieser Stelle sicher: Einen RAM-Check /kan= n/ man nicht in C schreiben. Das Ausf=C3=BChrungsmodell von C beruht auf einer = Stack- maschine und Stack ist in der Praxis halt auch nur RAM. Und dann C-Code zu schreiben, der sicherstellt, da=C3=9F jeder beliebige Compiler tats=C3= =A4chlich alles an ben=C3=B6tigten Variablen in Registern h=C3=A4lt, ist doch eher= schwierig.

Vinzent.

--

f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng.
Reply to
Vinzent Hoefler

Hallo Roland,

Roland Ertelt schrieb:

Ich glaube, Du machst Dir keine Vorstellung davon, was schlechte Programmierer schaffen. Dagegen kommt kein C-Compiler an. Wird er auch nie.

Gruß Martin

--
Bitte nicht an der E-Mail-Adresse fummeln, die paßt so.
Reply to
Martin Schoenbeck

i.

nie.

Frei nach dem Motto: "Nat=C3=BCrliche Dummheit schl=C3=A4gt k=C3=BCnstli= che Intelligenz."? ;)

Vinzent.

--

f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng.
Reply to
Vinzent Hoefler

Die heissen dann aber nicht mehr '8051'...

Gerrit

Reply to
Gerrit Heitsch

Beim 8250 bzw. 16450 beeinflusst CTS das Senderegister? Hab ich im Datenblatt was überlesen? Soweit ich das kenne löst eine Änderung bei CTS einen IRQ aus, aber das war es auch schon, wenn deine Software das nicht auswertet kannst du trotz CTS high weitersenden bis dir die Daten ausgehen.

Auch das passiert bei einem 8250 bzw. 16450 nicht.

Ja, beim 8250 und 16450 z.B... Da sind das ganz normale Portbits mit etwas IRQ-Logik um Änderungen zu melden.

Gerrit

Reply to
Gerrit Heitsch

Das bedeutet aber, dass Du nicht mit einer 3-Draht Leitung arbeiten kannst.

Saludos Wolfgang

--
Wolfgang Allinger              15h00..21h00 MEZ: SKYPE:wolfgang.allinger
Paraguay            mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox
Meine 7 Sinne:                                    reply Adresse gesetzt!
Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.
Reply to
Wolfgang Allinger

Aber nur, wenn der wirklich von intel kommt und nicht noch irgendwelche Zusatz Kennungen hat :)

Es gibt hunderte von Derivaten, die sich unterschiedlich verhalten.

Die Original 8031 hatten 12 Tcyklen/12MHz (1MIPS) pro Befehl, andere Hersteller Speibile AD: ADuC, arbeitet mit 4 Tcyklen. Silabs(Cygnal) hat welche, die mit 100MIPS fahren. Teilweise habe die abweichende T-Zyklen gegenüber einem 8031. Genügeng Fallen für den Programmierer, besonders den, der ungeprüft den `kompatiblen` einsetzt :p

Saludos Wolfgang

--
Wolfgang Allinger              15h00..21h00 MEZ: SKYPE:wolfgang.allinger
Paraguay            mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox
Meine 7 Sinne:                                    reply Adresse gesetzt!
Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.
Reply to
Wolfgang Allinger

Hatte ich mal, ist irgendwie bei der Auswanderung verloren gegangen :(

Das macht uns beide traurig :o

Saludos Wolfgang

-- Wolfgang Allinger 15h00..21h00 MEZ: SKYPE:wolfgang.allinger Paraguay mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox Meine 7 Sinne: reply Adresse gesetzt! Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.

Reply to
Wolfgang Allinger

Bei verschiedenen UARTs (8250, Z80SIO, 16450...) dreht ein CTS-hi gnadenlos den TD ab, genauso dreht ein DSR=hi den RD zu. Und nun?

Ganz wichtig, bei ordentlichen UARTs wird das RTS per SW aktiviert und nach dem absenden des letzten Bit eines Zeichens per HW gelöscht. Löschen per SW geht nur per Reset... D.h. RTS-CTS kneift den RD erst dann zu, wenn die Katze im Sack ist. Aber es gibt auch Burggraben UARTs, bei denen man das RTS jederzeit löschen kann!

Beim 8530 macht das nicht der DSR, sondern der CD.

Drum meine *Gebetsmühle* bei 3 Draht: RTS-CTS, DTR-DSR/CD/RI am Übergabestecker oder am UART brücken!

Ja, man kann die Funktion theoretisch per init abschalten, besser aber die Signale auf einen definierten Pegel bringen.

Lokal nur, wenn man keine 3-Draht Leitung hat.

BTW ich hab auch schon UARTs gehabt, die durch Spikes and den ModemControlSignalen völlig verrückt wurden und sich nicht mal mehr per Reset vernünftig initialisieren lassen wollten.

Mit Spikes kann man auch 8031, Z80, 68xxx ... nachhaltig ins spinnen bringen!

Saludos Wolfgang

--
Wolfgang Allinger              15h00..21h00 MEZ: SKYPE:wolfgang.allinger
Paraguay            mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox
Meine 7 Sinne:                                    reply Adresse gesetzt!
Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.
Reply to
Wolfgang Allinger
[...]

Habe ich teilweise auch gemacht. Das wuerde eh alles in den dicken Container wandern wenn unsereins mal von hinnen scheidet. Ausserdem kostete der Umzug weit ueber $1 pro Pfund, da wird man waehlerisch.

Und Du darfst die RS232/UART Erfahrungen der "Dreidraht-Leute" als russisches Roulette abtun :-)

Bei uns ist der Winter diesmal besonders frueh eingekehrt. Letzte Nacht Bodenfrost und die Strecke nach Reno war fuer einige Zeit nur mit Ketten passierbar. Mist. Ich mag keine Winter.

[...]
--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Nein, es würgt den Datenstrom ab. [1]

Auch das, wenn IRQ gewollt sind. Wenn nicht enabled, dann nix.

Nö. sagen meine Skizzen... [1]

[1] Dann sind meine ~30 Jahre alten Notizen flasch? Glaub ich nicht :) Hat viel zuviel Aua gemacht, bis die Notizen in meinen schlauen Blättern landeten.

Zum 8250 und Z80SIO RTS steht da: kann per HW nach letztem bit abgeschaltet werden.

Leider hab ich die Originalhandbücher alle entsorgt, als ich auswanderte :(

Ok, einigen wir uns darauf, dass bei mir Alzheimer(!) und Altersweisheit(?) sich bemerkbar machen.

Ich hab auch die alten Applikationen nicht mehr, wo ich derartige Kniffe anwenden musste.

Also wer will, darf meine RS232/UART Erfahrungen als Spinnereien eines alten Sack abtun :)

~21h00 und immer noch 30° in meinem Büro :p

Habe gerade noch ein Z80 SIO Handbuch im www gefunden:

formatting link
Z80-SIO Technical Manual.pdf

Da steht das von mir erwähnte Verhalten (zumindest für die SIO) bezüglich RTS und CTS drin, wenn man im AutoEnabled Mode fährt. Möglicherweise hab ich dann auch angenommen (falsch notiert), dass das beim 8250 samt Nachfolger auch so ist. Egal die extrem kritischen Dinge hab ich (mit einer Ausnahme) alles mit SIOs gemacht. Auch synchronous :o was mit dem intel Kram eh nicht ging.

Alt und vergesslich :)

Saludos Wolfgang

--
Wolfgang Allinger              15h00..21h00 MEZ: SKYPE:wolfgang.allinger
Paraguay            mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox
Meine 7 Sinne:                                    reply Adresse gesetzt!
Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.
Reply to
Wolfgang Allinger

Beim 16450 nicht, ich bin extra nochmal Datenblätter suchen gegangen weil ich es mir auch nicht vorstellen konnte. In keinem davon steht was davon, da ist CTS immer nur ein einfaches Portbit.

Beim Z80 SIO und dem Zilog 8530 SCC mag das anders aussehen und beim

6551 weiss ich das es so ist.

Es passt jedenfalls zum PC, dass es der dort verbaute UART nicht kann...

formatting link

Macht nix, das Internet hilft hier weiter. Bis auf sehr esoterisches habe ich bisher alle Datenblätter finden können.

Gerrit

Reply to
Gerrit Heitsch

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.