Forum: Mikrocontroller und Digitale Elektronik Steigende Flanke mit Funktion klappt nicht


von Markus P. (sebastianwurst)


Lesenswert?

Hallo...
Ich versuche vergebens eine steigende Flanke von einer Arrayvariable zu 
generieren.
Diese Arrayvariable ist ca. 1s auf True und soll in einem anderen Array, 
welches als Rückgabearray fungieret, als steigende Flanek für ein Zyklus 
das bit auf true setzen welches ich dann in der main weiter verarbeiten 
kann.

Leider funktioniert das nicht, kann mir einer Helfen? Im Moment ist es 
so das die   usart_write_str("--array4--"); wesentlich öffters kommt als 
1mal. (Ich breche nach >100mal ab....)

Vielen Dank wenn mir einer helfen kann ...

So hatte ich mir das gedacht:
1
bool Eingang[64] = {false};
2
bool arraytest[40] = {false};;
1
void R_TRIG_Taster(bool bit,int bitnr, bool array[])
2
{
3
4
    if(!array[bitnr] && bit)   //Taster wird gedrueckt (steigende Flanke)
5
    {
6
    array[bitnr] = true;
7
8
    }
9
    else if (array[bitnr]  && bit)   //Taster wird gehalten
10
    {
11
     array[bitnr] = false;  
12
     
13
    }
14
    else  */ //Taster wird losgelassen (fallende Flanke)
15
    {
16
    array[bitnr] = false;  
17
    }
18
 
19
    return array;
20
21
}


so in der main-Schleife aufgerufen:
1
R_TRIG_Taster(Eingang[4],4, arraytest);
2
3
4
if (arraytest[4])
5
{
6
  usart_write_str("--array4--");
7
}

von Karl H. (kbuchegg)


Lesenswert?

1
void R_TRIG_Taster(bool bit,int bitnr, bool array[])
2
{
3
  if( array[bitnr] != bit)  // Es gibt einen Unterschied, als muss es eine Flanke 
4
  {                         // gegeben haben
5
    if( bit )               //   war es 0->1  ?
6
      array[bitnr] = true;  //     Ja:  steigende Flanke
7
    else                    //   nein: es war 1->0, fallende Flanke
8
      array[bitnr] = false;
9
  }
10
  else                      // es gibt keine Veränderung, Taster ist gedrückt
11
                            // oder losgelassen
12
    array[bitnr] = false;   
13
}

von Markus P. (sebastianwurst)


Lesenswert?

Danke Karl Heinz !

Aber warum war mein Code denn falsch? Außer der" Return Array;" , der 
ist natürlich falsch , aber ohne funktioniert es auch nicht ...
(Entprellen tu ich vorher schon ...)

von Karl H. (kbuchegg)


Lesenswert?

Markus P. schrieb:
> Danke Karl Heinz !
>
> Aber warum war mein Code denn falsch?

Das müsste ich jetzt durchspielen. Ich habs mir ehrlich gesagt nicht 
genau überlegt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.