Forum: Mikrocontroller und Digitale Elektronik if-Abfrage funktiniert nicht


von Sascha (Gast)


Lesenswert?

Hi,
ich möchte in meiner Hauptschleife eine variable überprüfen ob sich 
diese geändert hat
1
uint8_t TempData = 0;
2
uint8_t TempDataOld = 0;
3
4
int main(void)
5
{
6
  /*PIN13(arduino)->PB5(ATMEGA) -> output (LED)*/
7
  DDRB |= (1 << PORTB5);
8
  PORTB |= (1 << PORTB5);
9
  TIMER_Init();
10
  /*enable Interrupts*/
11
  sei();
12
  
13
  while (1){
14
    if(TempData != TempDataOld) {
15
      PORTB ^= (1 << PORTB5);
16
    }
17
  }
18
}

wenn ja, soll eine LED ein bzw. aus gehen.
Die Variale TempData lasse ich in einem timer alle 100 ms hochzählen
1
ISR(TIMER0_COMPA_vect)
2
{
3
  static unsigned int timer_counter = 0;
4
  if(++timer_counter >= 25){//100ms
5
    timer_counter = 0;
6
    TempDataOld = TempData;
7
    TempData++;
8
    //PORTB ^= (1 << PORTB5);  
9
  } 
10
}
Der Timer an sich funktioniert auch (da die LED blinkt, wenn ich das 
einkommentiere).
Aber wieso nicht in der Hauptschleife? Später möchte ich dann nämlich 
eine Funktion aufrufen, wenn sich die Variable geändert hat.

von volatile (Gast)


Lesenswert?

Volatile

von Frank (Gast)


Lesenswert?


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.