2017-11-05 1 views
-4

Ich habe Probleme damit: Ein Bounce-Filter ist ein Ansatz, mit dem man den Bounce-Effekt, dh Glitches/Spikes wie in mechanischen Schaltern oder in verrauschte Sensoren. Hier betrachten wir bounce als eine einzige 0 in der Mitte von einigen 1, oder eine 1 in der Mitte von einigen 0. Es gibt viele Möglichkeiten, einen Entpreller zu machen. Hier sind wir daran interessiert, den gewünschten Effekt durch einen endlichen Automaten (in Software) zu erzeugen. Dementsprechend sollte der Automat eine 0/1 isoliert zwischen 1/0 entfernen.Wie entferne ich eine Nummer zwischen Anothern

Und ich habe keine Ahnung, wie man eine 0/1 isoliert zwischen 1/0 in einem Schaltergehäuse entfernen. irgendwelche Ideen?

+1

Dies ist wahrscheinlich nicht Ihre Frage nicht beantworten, aber ich nicht einmal benutzen würde ein "Schalter" -Gehäuse (im Unterschied zu einem mechanischen Schalter), wenn es nur zwei Optionen gibt. Ich untersuche die Daten und zwinge ein Element dazu, dasselbe wie seine zwei Nachbarn zu sein, wenn diese Nachbarn einander gleich sind. Es wird jedoch ein Problem mit sehr verrauschten Daten geben. –

Antwort

1

Als SATAE Maschine:

S1 (out '1'): 
    '1' > S1 
    '0' > S2 

S2 (out '1'): 
    '1' > S1 
    '0' > S4 

S3 (out '0'): 
    '1' > S1 
    '0' > S4 

S4 (out '0'): 
    '1' > S3 
    '0' > S4 

zu Code übersetzt (on the fly geschrieben, Entschuldigung Syntax):

enum EState { Strong1, Weak1, Weak0, Strong0 }; 
EState m_state = Weak0; 
bool stateStep(bool b) { 
switch(m_state) { 
case Strong1: 
    if(!b) 
    m_state = Weak1 
    break; 
case Weak1: 
case Weak0: 
    m_state = b ? Strong1 : Strong0;  
    break; 
case Strong0: 
    if(b) 
    m_state = Weak0 
    break; 
} 
return (m_state==Strong1) || (m_state==Weak1); 
} 
+1

Wir sind kein Kodierungsdienst für die Heimarbeiter. – Olaf

Verwandte Themen