3ms Filter für Digitaleingänge

OP #1394651
Lesenswert?
• ▲
▼
Servus,

ich möchte einen 3ms Filter für Digitaleingänge im AVR einbauen. Wie 
kann das effizient gemacht werden? Man kann hier einfach 3ms warten, um 
zu sehen, ob der Eingangswert stabil ist, aber der Prozess wird 
blockiert. Vielleicht nur mit Interrupts?

Danke
Senmeis
Gast #1394683
Lesenswert?
• ▲
▼
Simples Digitalfilter aber auch 3ms delay:
1
void ISR_all_300us(void)
2
{
3
  if ( true == InPort() )
4
  {
5
    if ( 10 > Ctr )  Ctr++;
6
    if ( 10 == Ctr) Result = true;
7
  }
8
  else
9
  {
10
    if ( 0 < Ctr )  Ctr--;
11
    if ( 0 == Ctr) Result = false;
12
  }
13
}

Bei einfachen Anwendungen wie Tasten einlesen reicht:
1
void ISR_all_3ms(void)
2
{
3
  Result = InPort();
4
{
OP #1406846
Lesenswert?
• ▲
▼
Wie wär mit diesem Code?
1
uint8_t di, di_old, digital_input;
2
ISR_1ms()
3
{
4
    if (di != di_old)  // Wert aktualisieren
5
    {
6
       di_old = di;
7
       counter = 1;
8
    }
9
    else
10
    {
11
       if (counter == 4)  // 3ms erreicht
12
       {  
13
         digital_input = di;  // neuen Digitaleingang melden
14
         counter = 0;
15
       }
16
       else
17
       {
18
          if (counter != 0)  // Ist ein Änderung vorgekommen?
19
          counter ++;
20
       }
21
    }
22
}

Antwort schreiben

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.

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.