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.