Forum: Compiler & IDEs ISR mit Speicherfunktionalität


von Junikind. (Gast)


Lesenswert?

Hallo da draußen,

ich stehe vor einem Problem.

Ich führe in meinem Programm eine Timer-ISR aus. In dieser soll eine 
Zahl berechnet werden. Diese Zahl soll aber dann auch im weiteren 
Verlauf für spätere Funktionen zu Verfügung stehen?

Wie muss ich das umsetzen?

Es will nichts klappen. Scheinbar kann ich die ISR nich dahingehend 
anpassen, dass ich einen Zeiger übergeben könnte. Auch wenn ich die 
Variable global definiere steht der Inhalt irgendwie nicht zur 
Verfügung?

Was könnte ich denn noch anstellen um mein Problem C-technisch zu lösen?

Quellcode:


uint8_t zahl=0;

ISR(TCC0_OVF_vect){

    if (zahl >= 9)
    {
      zahl = -1;
    }
    zahl++;
}

int main (void)
{

   //INTERRUPT-Config

  while(1)
{
  if (zahl& 0x08 )
        PORTC.OUT |= (1<<PIN1); //PC0 wird auf High gesetzt
        else
        PORTC.OUT &= ~(1<<PIN1); //PC0 wird auf Low gesetzt
}
}


Danke für euren Rat.

Beste Grüße.

von (prx) A. K. (prx)


Lesenswert?

volatile uint8_t zahl; //=0 implizit

von (prx) A. K. (prx)


Lesenswert?

PS: unhöflich bei uint8_t: zahl = -1;

von Falk B. (falk)


Lesenswert?

Siehe Interrupt.

von Junikind. (Gast)


Lesenswert?

Danke prx!

So einfach kann es gehen :-)

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.