Hallo, ich habe folgendes Problem beim Senden mit dem SC16C550 von Philips: Ich schreibe das erste Zeichen in den Puffer und es wird gesendet. Das Zeichen kommt korrekt auf meinem Terminalprogramm an. Wenn ich aber dann das zweite Zeichen in den Puffer schreibe, empfängt mein Terminalprogramm das vorherige (!!) Zeichen und das aktuelle, also 2 Zeichen. Und so weiter und so weiter. Ich steuere den Modembaustein mit einem M32C84 Controller von Renesas an über einen "künstlichen" Datenbus mit Portpins. Vom Timing her liege ich weit im sicheren Bereich. Und über den Bus wird auch immer nur das nächste zu sendende Zeichen an den Modembaustein verschickt. Lese ich den jeweiligen Status des THR und TSR Registers (im LSR Register) nach dem Senden aus bekomme ich die Rückmeldung, dass beide Register leer sind. Und trotzdem sendet er mir dann wieder das vorherige Zeichen mit! Muss ich da nach jedem Zeichen, dass ich in den Puffer schreibe noch irgendein Register bedienen? Ich habe keine wirkliche Idee warum das so passiert. Und die Antwort von Philips auf meine Anfrage steht noch aus.
Hallo Holger, hab gerade mal gegoogelt. Konnte aber über den SC16C550 nichts aufschlussreiches finden. Vielleicht könntest Du uns mal einige Unterlagen zur Verfügung stellen(Datenblatt, Schaltplan usw.) damit wir Dir besser helfen können? Bernhard
Hallo Bernhard, hier ist erstmal das Datenblatt des Bausteins. Die anderen Unterlagen reiche ich nach. Der Unterschied zu den üblichen 16550 liegt wohl in erweiterten Registern: "Enhanced Register Set". Ich habe leider mit den "ursprünglichen" 16550 noch nicht gearbeitet. Gruß Holger
Probier doch mal folgendes aus: Du sendest fortlaufend verschiedene Zeichen (0,1,2 ...255) , wenn es einen Zeichen-Puffer gäbe, müsste er irgend wann voll sein. Oder liegt es vielleicht an Deinem Terminal-Programm? Trenne doch mal die RX-Leiung vom SC16C550? Bernhard
Hallo Bernhard, ich glaube ich habe das Problem gefunden!! Und zwar habe ich bei der Ansteuerung des 16C550 mit meinem künstlichen Daten- und Adressbus Verzögerungen eingebaut. Das WriteEnable-Signal (High-Aktiv) hatte ich dadurch für 12,5us anstehen. Damit ist der Baustein bei zunehmender Geschwindigkeit (ab19200Bd) nicht klargekommen (und ich hatte es immer mit 115200Bd laufen!!!). Aufgefallen ist es mir als bei 2400Bd kein Übertragungsfehler vorkam. Ohne die Verzögerung des Enable-Signals klappt alles wunderbar. Danke nochmal für Deine Bemühungen. Gruß Holger
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.