while schleife ?????

Gast #220546
Lesenswert?

Hallo zusammen,
ich habe ein Problem!!!

Ich habe ein Display an dem ich die RTS-Leitung abfrage. D.h. ich frage
erst die RTS-Leitung ab, bevor ich neue Daten an das Display sende.

//------------------------

while (PIND.3==1) {}

//------------------------

(programmiert mit CodeVision)

Das heißt das der µC so lange nichts tun kann, bis das Display das O.K.
gibt. Was ja nicht schlecht ist. Jetzt soll aber auf dem Display auch
eine Uhr laufen die über einen Timer-Interrupt gesteuert wird. Wenn ich
die Uhr ganz normal anzeigen lasse,(keine Daten sende) gibt es keine
Probleme. Wenn ich aber Daten an das Display sende, (Menü auf dem
Display) dann hält das natürlich alles auf und nach einigen, gesendeten
Daten geht die Uhr natürlich nach. Heißt das, dass eine
"while-Schleife" keine Interrupt's zulässt??
Hättet ihr eine andere Möglichkeit??

:o(

Grüße Marcel
Persönliche Seite #220547
Lesenswert?

> Heißt das, dass eine "while-Schleife" keine Interrupt's zulässt??
Nein. Interrupts werden normalerweise nicht einfach so deaktiviert.
Ausnahme sind jedoch andere Interrupts oder eventuell der EEPROM
Zugriff. Ansonsten ist es sinnvoll das Bit zu setzen welches den Timer
automatisch wieder auf Null setzt, da es mal den ein oder anderen Takt
mehr oder weniger dauert (der aktuelle Befehl muss meines wissens erst
beendet werden) bis der Interrupt angesprungen wird.
Gast #220551
Lesenswert?

Ich aktiviere die Interrupts nicht immer und immer wieder!! Ich habe nur
bemerkt das meine Uhr zu langsam läuft. (siehe erklärung oben) Wenn ich
keine Daten an das Display schicke, dann läuft es ohne Probleme. Werden
aber viele Daten gesendet, dann wird die ungenauigkeit immer größer.
Daraus schließe ich, dass in der while-Schleife keine Interrupts
zugelassen werden. (Uhr wird über Timer-Interrupt gesteuert) Ich kenne
die genaue Funktion von der while-Schleife nicht aber das würde es
erklären. Deshalb habe ich einfach mal die Interrupts in der
while-Schleife wieder gesetzt. Und es schein zu funktionieren. Der
Interrupt wird bei mir generell nur einmal in der "main"-Schleife
aktiviert und nie mehr ausgeschaltet.

Grüße und schönes WE...

Marcel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren