Wert einer Variable mit digitalem Input ändern

OP (Firma: FOS FFB) #5833067
Servus,
Ich würde gerne mit einem digitalen Input den Wert einer Integervariable 
i zu ändern. Jedoch ändert sich i nicht und bleibt null. Deswegen wird 
aus dem Feld immer der nullte Wert auf den Ausgang gegeben. Wäre nett 
wenn mir jemand verraten könnte was ich dafür in den code schreiben 
muss.
Danke
Angehängte Dateien:
Gast
Max M. schrieb:
> Jedoch ändert sich i nicht und bleibt null. Deswegen wird
> aus dem Feld immer der nullte Wert auf den Ausgang gegeben.

Laut Programm Du verwendest 2 Eingänge. Du änderst die Variable mit 
einem 1
 auf Eingang 1, aber der Ausgang wird nur dann aktualisiert wenn der 2. 
Eingang auch 1 ist. Ist es so gewollt? Ich gehe davon aus, dass alle 
Ein- und Ausgänge richtig initialisiert sind.
Gast
Deine variable i läuft immer über 8, weil der conrontroller bei jedem 
Schleifendurchlauf (Vermutlich im Mhz Bereich) inkrementiert. Abhilfe 
schafft die Abfrage einer zusätzlichen Variable. War der Eingang schon 
HI dann zähle nicht. Erst nachdem wieder ein LOW registriert wurde und 
damit die Blockvariable zurückgesetzt wurde darf weitergezählt werden.
Gast
Max M. schrieb:
> Aber was genau soll jetzt wo in meinen
> Code, dass ich i stufenweise ändern kann.

der heinz schrieb:
> War der Eingang schon HI dann zähle nicht.

Was darauf hinaus läuft, dass den Zustand des Eingangs bei jeder Abfrage 
mit denḿ vorherigen Zustand vergleichst. Denn vorherigen Zustand musst 
du in einer weiteren Variable vermerken.
OP (Firma: FOS FFB)
Könnte es vielleicht an den Variablen liegen? Wenn ich nämlich statt 
i++; einfach i = 4; schreibe funktioniert genauso wenig obwohl dann i 
nicht gegen unendlich gehen würde und es damit auch nicht immer wieder 
auf null zurückgesetzt werden würde.
Gast
Walter K. schrieb:
> warum beendet Return die Funktion Main() nicht?

Tut sie das nicht? Das bin ich anders gewohnt. Indiesem Zusammenhang 
sollte man hinterfragen, welches Programm die CPU denn nach main() 
ausführt. Der avr-gcc lässt die CPU dann in einer Endlos-Schleife auf 
der Stelle treten. Andere Compiler lassen sie vielleicht ins leere 
laufen, was eventuell irgendwann einen Neustart bewirkt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.