Neue Version: WinAVR-20090313

Gast #1331263
Lesenswert?

Hallo Leute,

ich bin heute auf die neueste Version von WinAVR (20090313) umgestiegen, 
seitdem geht mein Programm nicht mehr!

Kann mir jemand sagen, warum die if-Anweisung im main() nur beim ersten 
Durchlauf aufgerufen wird, danach dann nie mehr?

1
#define F_CPU 1044643
2

3
#include <stdlib.h> 
4
#include <avr/io.h>
5
#include <avr/interrupt.h>
6

7
#define IN_MODE     0
8
#define OUT_MODE    1
9
#define READTIMECOUNT  50        
10

11
void InitMCU(void);
12
void DispTemp(int16_t iTmpRd);
13

14
uint8_t flOperationmode = OUT_MODE;
15
uint8_t uiActionCounter=0;
16
uint8_t flReadTemp = 1;
17

18
int main(void)
19
{  
20
  TIMSK    |= (1<<TOIE1);  // Timer/Counter1 Overflow Interrupt Enable
21
  TCCR1B   |= (1<<CS10);  // Start Timer
22

23
  sei();          // SetInterruptEnable
24
  
25
  while(1)
26
    {    
27
    if (flReadTemp == 1)
28
    {
29
      cli();
30
      // tu was
31
      flReadTemp  = 0;
32
      sei();  
33
    }
34
  }
35
    return 0;
36
}
37

38
ISR(TIMER1_OVF_vect) 
39
{
40
  uiActionCounter++;          
41
  if (uiActionCounter >= READTIMECOUNT)   
42
  {
43
    flReadTemp = 1;  // Jetzt Auslesen
44
    uiActionCounter = 0;
45
    if (flOperationmode == IN_MODE) flOperationmode = OUT_MODE;
46
    else              flOperationmode = IN_MODE;
47
  }
48
}
Gast #1331271
Lesenswert?

(ähhh, zu früh auf senden gedrückt)

Den Code habe ich jetzt natürlich stark verkürzt, damit er auch 
einigermaßen lesbar ist!

Könnte es sein, dass die while(1)-Schleife wegoptimiert wird? 
(Allerdings haben verschiedene Optimierungsschalter keine Änderung 
bewirkt)

Ich bin schier am verzweifeln!

Freue mich auf Ideen,

Grüße,

Alfred E. Neumann
Gast #1331377
Lesenswert?

Tatsächlich war die neue WinAVR schuld!
Nach deinstallation von Version 20090313 und Neuinstallation von 
20071221 gings wieder einwandfrei! Ohne Änderung des Codes.

Über volatile (auch über static u.ä.) sollte ich mir tatsächlich mal 
grundlegende Gedanken machen!

Vielen Dank,

Alfred E. Neumann
Gast #1344075
Lesenswert?

Ihr habt selbstverständlich recht!
Da war ich wohl viel zu vorschnell zu dieser Aussage hingerissen.
Richtig deklariert gehts auch sofort!

Ich hab mir auch sofort ein Buch geholt um dieses Veräumnis 
auszubessern!

Grüße,

Alfred

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren