Neue Version: WinAVR-20090313

Gast #1331263
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
(ä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
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
>Über volatile (auch über static u.ä.) sollte ich mir tatsächlich mal
>grundlegende Gedanken machen!

Ich empfehle Dir sehr eindringlich:  Mach es...!!!
Gast
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.