Forum: Mikrocontroller und Digitale Elektronik Variable im Hintergrund setzen


von Bernhard (Gast)


Lesenswert?

Hallo habe folgende Frage:

Ich verwenden den PIC 16F877 / programmierung in BASIC

ist es möglich mittels eines Befehls (z.b BUTTON o.Ä) eine Variable bei 
Tastendruck im Hintergrund zu verändern. Später frage ich im Programm 
nach ob diese Variable gesetzt wurde, wenn ja --> best. Routine ??

PS: der Taster MUSS an PortD.3  hängen!!

Das ganze sollte ohne Interrupt funktionieren!!

Danke

Mit freundlichen Grüßen
Bernhard Schwärzler

von STK500-Besitzer (Gast)


Lesenswert?

Sowas sollte gehen. Das machen verschiedene meiner Programme, allerdings 
auf einem AVR...

Was meinst du mit "im Hintergrund"?
Das, was du schilderst ist prädestiniert für einen Interrupt und einer 
gewissen Parallelverarbeitung.

von Bernhard (Gast)


Lesenswert?

Ich meine dass der Programmverlauf nicht gestört werden sollte wie bei 
einem Interrupt sondern normal weiterlaufen. Später wird eine Variable 
abgefragt ob sie gesetzt ist oder nicht

Mfg Bernhard

von Karl H. (kbuchegg)


Lesenswert?

Bernhard wrote:
> Ich meine dass der Programmverlauf nicht gestört werden sollte wie bei
> einem Interrupt sondern normal weiterlaufen.

Na ja. Eine kleine 'Störung' wirst du da immer in Kauf nehmen
müssen. Ein einzelner µC kann nun mal nur eine Sache auf einmal
machen. Die Frage ist aber eher: stört es, wenn der Prozessor
seine momentane Aufgabe für wenige Nanosekunden unterbricht
um das Button-Ereignis zu bearbeiten oder stört das nicht.

In den meisten Fällen wird das nicht stören, wenn aber doch
dann kannst du das Problem softwareseitig sowieso nicht in
den Griff kriegen sondern musst auf externe Hardware ausweichen:
Der Button kommt an ein Flip-Flip und dann hat das Programm alle
Zeit der Welt irgendwann das Flip-Flip abzufragen, ob es gesetzt
ist.

von Bernhard (Gast)


Lesenswert?

ja grundsätzlich würde es nicht stören, aber da der PortD.3 kein
"Interrupt - port" ist müsste ich einen Timer - Interrupt machen. Diesen 
benötige ich aber für eine andere Sache.
mfg bernhard

von Tubie (Gast)


Lesenswert?

Dann lass doch den Timer Int laufen und jedesmal, wenn ein Overflow 
kommt, kannst du den Tasterpin abfragen und ggf. die Variable ändern. 
Habe sehr viele meiner Programme so geschrieben. Da wird z.B. Tastatur, 
Drehgeber, DCF-77, usw. abgefragt.

Gruß,
Tubie

von Peter D. (peda)


Lesenswert?

Bernhard wrote:
> ja grundsätzlich würde es nicht stören, aber da der PortD.3 kein
> "Interrupt - port" ist müsste ich einen Timer - Interrupt machen. Diesen
> benötige ich aber für eine andere Sache.

Es ist nicht verboten, im Timerinterrupt mehrere Sachen zu machen.
Ganz im Gegenteil, es wird sogar sehr häufig gemacht.


Bei den neueren AVRs könnte man ohne Timer auskommen, da kann man fast 
jeden Pin als Interrupt definieren, auch mehrere.


Peter

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.