Forum: Mikrocontroller und Digitale Elektronik Funktion aufrufen klappt nicht.


von Markus P. (sebastianwurst)


Lesenswert?

Hi,
ich will eine Funktion:
1
void RelaisSchalten(uint8_t SetBit, uint8_t UnsetBit)  
2
{
3
uint8_t TimerAusgangCount;
4
  
5
    TimerAusgangCount++;   
6
     
7
    if (TimerAusgangCount > 100)
8
    {
9
      usart_write_str("\n\rTimer Überlauf\n\r");
10
            AusgangSetBit(SetBit); 
11
      AusgangUnsetBit(UnsetBit);
12
                        AusgangOut(); 
13
      TimerAusgangCount = 0;
14
      TimerAusgangStart[0] = false;
15
    }  
16
    
17
}

aufrufen und in dieser soll ein counter hochgezählt werden (Testweise) 
doch irgendwie wird der Counter nicht hochgezählt zu mindest wird die 
if'fe nich abgearbeitet, obwohl ich die Funktion die ganze Zeit in der 
while() aufrufe:
1
  RelaisSchalten(0,1);

Was mache ich denn schon wieder falsch ?

von Stefan E. (sternst)


Lesenswert?

TimerAusgangCount ist eine lokale Variable, die bei jedem Aufruf der 
Funktion jedes mal wieder neu angelegt wird. Und da sie nicht 
initialisiert wird, hat sie auch noch einen zufälligen Inhalt. Schlage 
in deinem C-Buch "static bei lokalen Variablen" nach.

von Markus P. (sebastianwurst)


Lesenswert?

Danke

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.