while-Schleife und if-Abfrage

OP #1301927
Lesenswert?

Hallo,

ich probiere ein kleines Programm zu schreiben um mit einem atmega16 
Spannungen zu messen. Ein Timer löst mit einer bestimmten Frqeuenz 
Interrups aus und da ich die Frequenz kenne, weiß ich wann eine Sekunde 
vorrüber ist. Dann möchte ich im Hauptprogramm die Spannung über den 
AD-Wandler messen.
Das Spannungsmessen funktioniert auch und auch der Timer läuft richtig.

Jetzt zu meinem Problem:
So wie hier im Code wird die if-Abfrage irgendwie nicht ausgeführt, wenn 
ich allerdings eine Variable zwischen der while(1)-Schleife und der 
If-Abfrage an den UART an den PC sende, dann funktioniert plötzlich die 
If-Abfage.

Ich hoffe es kann mir jemand weiterhelfen, ich verstehe nämlich absolut 
nicht warum es nicht funkioniert.

Hier nun der Code:
1
void main(void)
2
{
3
  Setup();
4
  
5
  while(1)
6
  {
7
    if (time.sec !=  last_sec)                       
8
    {
9
      last_sec = time.sec;
10
      
11
      //Durchschnitt aus 8 Werten ermitteln
12
      for(av=0,i=8;i;--i)
13
      {
14
        ADCSRA |= 0x40;                      // starte neue ADC
15
        while (!(ADCSRA & (1<<ADIF)));      // warte bis ADC fertig ist     
16
        av = av+ADC;
17
      }
18
      av = av/8;
19
      
20
      sendv(av);
21
    }
22
  }
23
}

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