Mega162 und for-Schleife

Gast #1586873
Hi! Ich unternehme gerade meine ersten Gehversuche mit einem ATmega162 
und C. Dabei habe ich ein für mich nicht nachvollziehbares Verhalten bei 
folgendem Code:
1
while(1)
2
{  
3
  for (unsigned char i=7; i!=255; i--)
4
  {
5
    PORTE=i;
6
    for (unsigned char j=1; j<=5; j++) _delay_ms(100);
7
  }
8
  
9
  for (unsigned char j=1; j<=25; j++) _delay_ms(100);
10
}
Im Simulator von AVR Studio wird wie erwartet PORTE nacheinander auf 7, 
6, 5, 4, 3, 2, 1, 0 gesetzt; im nächsten Durchlauf der while-Schleife 
wiederholt sich dies.

Der AVR dagegen macht folgendes: PORTE läuft von 7 bis 1, dann kommt das 
lange Delay (an dem man erkennt, dass die for-Schleife verlassen wurde), 
und erst im nächsten Durchlauf der while-Schleife kommt die 0, und dann 
wieder 7 bis 1 usw. Also

7 - 6 - 5 - 4 - 3 - 2 - 1 _ 0 - 7 - 6 - ...

statt

7 - 6 - 5 - 4 - 3 - 2 - 1 - 0 _ 7 - 6 - ...

(wobei "-" für das kurze und "_" für das lange Delay steht). 
Konsequenterweise gibt der AVR genau die richtige Sequenz aus, wenn ich 
die 255 im Kopf der for-Schleife durch 254 ersetze. Im Simulator dagegen 
wird in diesem Fall natürlich auch noch der Wert 255 an PORTE 
zugewiesen, was diesen auf 111, also 7 setzt. Man kann also sagen, dass 
der AVR den letzten for-Durchlauf einfach weglässt. Weiß jemand warum?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.