Forum: Compiler & IDEs Interrupt soll soll nicht auslösen!


von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

also ich habe folgendes Programm:
Mein Programm empfängt Zeichen (Mit Hyperterminal) bis der von mir 
eingerichtete Speicher voll ist bzw. wenn der Write Zeiger sich dem Read 
Zeiger nähert dann wird ein Xoff gesendet! Obwohl er jetzt eigentlich 
keine Zeichen mehr empfangen dürfte (Nach XOFF) geht der Zähler trotzdem 
hoch wenn ich nachdem Xoff gesendet wurde auf die Tastatur tippe!

Meine Frage nun:
Wie verhindere ich den Interrupt den er ausführt sobald er ein Zeichen 
bekommt? Also ich will das ich nachdem Xoff geschickt wurde ich zwar 
noch auf die Tastatur tippen kann er sie aber nicht in den Speicher 
schreibt! Der Read Zeiger sollte natürlich weiterhin fröhlich die 
Zeichen aus dem Speicher schreiben! Zahlen eintippen will ich erst 
wieder ab da können sobald das Xon gesendet wurde!

Ich hoffe ihr steigt durch meine Problembeschreibung wenn fragen dann 
fragt! Ich bin für jegliche Hilfe schon mal im Vorraus sehr Dankbar!

MFG Philipp

von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

und hier noch mal kurz meine UART!

von Philipp (Gast)


Lesenswert?

Habs jetzt selbst hinbekommen! Das Problem war das wenn ich eine IF 
anweisung in den Interrupt geschrieben habe das er das Zeichen nicht aus 
dem Seriellen Buffer löscht und somit den Interrupt immer wieder 
auslösst! Also hab ich es so gemacht wenn Xoff gesendet wurde wird die 
Variable XoffSend auf 1 gesetzt und in meinem Interrupt habt ich dann ne 
IF Anweisung das wenn XoffSend 1 ist soll er das Zeichen (aus dem 
seriellen Speicher) in eine Externe Variable (wird_geloescht) 
geschrieben damit der Puffer wieder leer ist!

Vielen Dank trotzdem an die die sich mein Programm gezogen haben und 
sich damit beschäftigt haben um mir zu helfen!

MFG Philipp

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.