Forum: Mikrocontroller und Digitale Elektronik Globale Variable in main = 0


von AndreB (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe eine globale Variable zaehler:

int zaehler = 0;

Dann wird diese in einer Interruproutine erhöht:

SIGNAL(SIG_OVERFLOW0){
  zaehler++;
}

Aber in main() ist sie immer = 0:

int main(void){

  DDRB = 0xFF;
  char wort = 0x20;
  int richtung = 0x01;

  TCCR0 = (1<<CS01)|(1<<CS00);
  TIMSK = (1<<TOIE0);

  sei();

  while(1){

    if (zaehler == 226){

      PORTB = 0x11;

Die Variable wird definitiv erhöht, aber wenn ich in main() darauf 
zugreifen will ist sie 0.
Danke

von Rik (Gast)


Lesenswert?

volatile

von AndreB (Gast)


Lesenswert?

Hab da schon mal was gelesen, aber
vor einem halben Jahr hats auch so geklappt.
Deswegen hab ich das ausgeschlossen.

Ist WinAVR strenger geworden?

von P. S. (Gast)


Lesenswert?

AndreB wrote:
> Hab da schon mal was gelesen, aber
> vor einem halben Jahr hats auch so geklappt.

Super. Und anstatt dem Thema gruendlich nachzugehen...

von Rik (Gast)


Lesenswert?

Wenn es vor einem Jahr schonmal geklappt hat, dann hast du damals nur 
Glück gehabt oder die Optimierung des Compilers ausgeschaltet. Lies den 
ISO-C-Standard bzgl. Schlüsselwort "volatile"...

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.