while-Schleife und if-Abfrage

OP #1301927
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

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.