www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variable im Hintergrund setzen


Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.