Gast
#210402
Ich habe meinen ATmega16 auf den externen Oszillator eingestellt,welcher auf 16Mhz läuft, indem ich mit Ponyprog alle Haken bei CKopt und CKsel 0-3 entfernt habe. Dann habe ich die folgende Schleife durchlaufen lassen, welche um die 18s für einen Durchlauf benötigte. Ich komme aber beim Ausrechnen der Takte nie auf eine ausreichend hohe Taktzahl, welche diese Laufzeit rechtfertigen würde. (255*3+4)*255 ~196 000 Die innere Schleife läuft 255 mal durch. Sie braucht drei Takte (dec +BRNE) dahinzu kommen nocheinmal ldi, dec und ein Weiteres BRNE. Das alles zusammen läuft wieder 255 mal ab. Ich müsste aber als Ergebnis mindestens 18Millionen Takte haben, damit 18s selbst bei einem Takt von 1Mhz gerechtfertigt wären. Woran liegt das? (ich denke, dass push, pop, call, ret und das Schalten der LED nicht so ins Gewicht fallen, oder?) VerzKur: push r16 push r17 ldi r16, 255 Schlkr16: ldi r17,255 Schlkr17: dec r17 BRNE Schlkr17 dec r16 BRNE Schlkr16 pop r17 pop r16 ret