Hallo, ich stehe gerade etwas auf dem Schlauch und bräuchte bitte Eure Hilfe. Folgendes Problem: Ich habe einen 4-Bit Wert, der von 0000 bis 1010 geht. Wenn jetzt ein Wert, wie z.B. 0111 sich innerhalb von 3 Sekunden nicht verändert, wird dieser dann für 2 Sekunden geforct und anschließend wieder freigegeben. Wenn dieser Wert aber vor dem Ablauf der 3 Sekunden sich nochmals ändert, beginnt der Timer für den neuen Wert vom neuen an zu zählen. Wie kann ich das jetzt in C realisieren, das der Wert mit sich selbst für die 3 Sekunden vergleicht? Vielen Dank im voraus.
Gast
#3602360
"Geforct"???!!!
Gast
#3602364
Horst schrieb: > "Geforct"???!!! Na logisch. Das signal distorted, weil die output stage des power amplifiers in die saturation geht und die spikes clipped. Alles klar? :-)
ich mein damit setzen ;)
Du hast also zwei Komponenten, die wirken: - Einen Zähler - Etwas, das den Zähler kontrolliert und den Wert des Zählers setzen und sperren kann. Somit bietet sich folgende Datenstruktur an:
1 | |
2 | |
3 | |
4 | |
Nun musst du sicherstellen, dass dein Zähler Value nur verändert, wenn Protected Null ist. Überlauf musst du natürlich auch implementieren, wenn du nicht bis 0xF zählst. Um den Zähler zu kontrollieren, benutzt du idealerweise einen Timer (falls du für den Zähler ebenfalls einen Timer verwendest, solltest du hierfür einen anderen benutzen). Hier prüft du nun, ob sich der Wert Value seit dem letzten Durchlauf verändert hat. Falls nicht, inkrementierst du eine zusätzliche Zählvariable, falls ja setzt du diese auf Null. Hat die Zählvariable einen bestimmten Wert erreicht, Setzt du Value auf deinen gewünschten Wert und Protected auf 1. Der Rest ist nun ein Kinderspiel. Du inkrementierst wieder deine Zählvariable. Hat sie einen bestimmten Wert erreicht, setzt du Protected wieder auf 0.
Gast
#3602427
Ob ein Input sich verändert hat, kann man feststellen indem man eine frühere und eine jüngere Kopie dieses Inputs miteinander vergleicht. Du solltest allerdings noch ein paar weitere Details festlegen, denn der genaue Ablauf hängt doch von weiteren Gegebenheiten ab: 1. Steht ein neuer Wert synchron zu irgendeinem weiteren Signal an, oder nicht? 2. Wie lange steht ein neuer Wert an? 3. Ändert sich der Wert in irgendeinem Zeitraster? 4. Handelt es sich um ein bidirektionales Signal? 4.a. Wenn ja, wie ist die physikalische Schnittstelle genau gestaltet? Es wäre vielleicht auch hilfreich, wenn Du mal den Gesamtzusammenhang beschreibst. Was ist an Schaltung und Protokoll fest vorgegeben?
@ Constantin Alexandru Mauro (azzuro) >Wenn dieser Wert aber vor dem Ablauf der 3 Sekunden sich nochmals >ändert, beginnt der Timer für den neuen Wert vom neuen an zu zählen. Nennt sich Entprellung. >Wie kann ich das jetzt in C realisieren, das der Wert mit sich selbst >für die 3 Sekunden vergleicht? etwa so
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
Vielen Dank im voraus.
Gast
#3602448
@Possetitjel Das hast Du wirklich schön gesagt! :-)) MfG Paul
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.