Forum: Mikrocontroller und Digitale Elektronik [OT]: Wieder einmal RS232


von Niki (Gast)


Lesenswert?

Hallo,

Ich weiss, diese Frage ist etwas OT aber zum Glück ist dieses Forum ja 
nicht so ver-"Usenet"-et.

Es geht wieder mal um RS232 und die Fähigkeit es zu empfangen.
Ich habe einen M68k Mikrocontroller und einen eigenwilligen Linkport. 
Jedenfalls ist es so dass ich einen RS232 Treiber basteln will und das 
über Interrupts machen muss/will.
Jedenfalls hab ich einen Quarz, der geht mit ca 520kHz, und ein 
zugehöriger Interrupt wird genau mit dieser Frequenz aufgerufen.

D.h. der Interrupt wird 520 000 mal / sekunde augerufen. Ist das genug 
um einen interruptbasierten RS232 Treiber bauen zu können (der eben auf 
der Interrupt Handling Routine basiert)? Es ist klar das mehr als 9600 
Baud nicht möglich sind aber damit wäre ich schon glücklich.

D.h. ich würde 9600mal / Sekunde zumindest was zu tun bekommen. Kann nur 
hoffen das das reicht...


Leider muss ich das ganze UART softwaremässig bauen, d.H. da fallen noch 
einige Zeilen Code an die wieder Zeit brauchen werden...


Was meint ihr, lohnt es sich überhaupt es aus zu probieren?

Oder ist das mit dieser Frequenz sowieso zu langsam??


Vielen Dank für eure Tipps...

Niki

von Rudolf Sosnowsky (Gast)


Lesenswert?

Hallo Niki,

Du hast einen Interrupt, der alle 2 µs aufgerufen wird? Nicht wirklich, 
oder?

Einen Software-Uart macht man am geschicktesten mit einem 
Interrupt-Eingang, z.B. direkt auf den Timer. Die Flanke des Start-Bits 
triggert Deinen Interrupt, und dann brauchst Du nur zur Mitte der 
Bitzeiten den Pegel am Port einlesen. Damit ist ein primitiver Empfang 
(ohne Sampling mit Majoritätsentscheidung etc) möglich. Wenn Du hingegen 
keinen Interrupt für das Startbit frei hast, mußt Du eben pollen, bis Du 
die Pegeländerung merkst, und dann mit dem oben beschriebenen Verfahren 
weiter machen. Die Poll-Freqeunz muß ausreichend hoch sein, damit Du 
nicht zu spät im Startbit abtastest und Fehler bei den folgenden 
Datenbits bekommst.

Gruß, Rudolf.

Rudolf Sosnowsky +++ LC Design
EPSON Technology Partner
Internet http://www.LC-Design.de

von Niki (Gast)


Lesenswert?

Hallo,

erstmal danke für deine Antwort...

Doch leider will ich nichts an der Hardware ändern und es gibt denk ich 
keinen Interrupt der dann getriggert wird wenn was passiert. Folglich 
muss ich irgendwie pollen. Und wenn das mit dem Hauptprogramm main() 
nicht geht muss es wohl über Interrupts gehen. Und als timer Interrupt 
hätte ich diesen. Also wollte ich fragen ob es möglich wäre mit Hilfe 
dessen zu pollen...

->Niki<-

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das sind ungefähr 5 Interrupts pro Bit. Für den Empfang sollte das 
gehen, das Software-UART für das EZ-Kit lite verwendet nur 3 Ints pro 
Bit. Ob es auch zum Senden genau genug ist, weiß ich nicht. Evtl. musst 
du eine andere Baudrate nehmen, damit der Fehler kleiner wird.

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
Noch kein Account? Hier anmelden.