Archiv verlassen und diese Seite im Standarddesign anzeigen : Berechnung der Geschwindigkeit des µC und Frequenz?
Wie berechne ich die Zeit für eine Rechenoperation, wenn ich die Frequenz gegeben habe?
Z.B. ein 8Mhz µC soll diese Schleife ausführen:for(i=0;i<=100;i++); .
Wie lange braucht er dazu?
8MHz sind ja 8*10^6 /s . Heißt das, dass er in 1s/(8*10^6) eine Berechnung/Schritt durchführt?
Gibt es unterschiedliche Zeiten für bestimmte Schritte?
Das er vielleicht für das Addieren von zwei Variablen länger braucht als eine Variable + eine Konstante.
Für die Zeit sind die "Cycles" ausschlaggebend. je nach Befehl (siehe "Instruction set") braucht er einen oder mehrere.
Wenn du also so eine for-Schleife berechnen willst, mußt du die generierte Assemblerbefehle (*.lss) nachrechnen.
In einer uS macht er 8 Cycles, soweit hast Du mal recht.
http://www.avr-asm-tutorial.net/avr_de/beginner/index.html
Hier findest du, welche Befehle wieviele Cycles brauchen.
lg binaer
Arexx-Henk
05.03.2005, 11:25
Hallo kautz
gute frage, habs mahl ausgesucht, mochtes auch mahl verstehen
for(i=0;i<=100;i++);
compilieren und guck in die test.lst datei
// for(i=0;i<=100;i++); compiliert als:
ldi r24,lo8(0) //lade 0 in register 24
.L6 //sprung label
subi r24,lo8(-1) //substrahiere r24 mit -1 (selbe wie addierung mit +1)
cpi r24,lo8(100) //vergleich r24 mit 100
brio .L6 //spring zuruck nach L6 wenn niedriger
ldi r24,lo8(0) //1 clockcyclus
.L6 //0
subi r24,lo8(-1) //1 * 100 = 100 clockcyclus \
cpi r24,lo8(100) //1 * 100 = 100 clockcyclus |<--- wird ja 100 mahl durchlaufen
brio .L6 //1 * 100 = 100 clockcyclus /
zusammen sind 301 clockcycles
zusammen sind 301 clockcycles
Ein clockcycle by 8MHz is 1/8us
301 * 1/8 us = ongefahr 38us
ist ja blitzschnell
von diesen loops (for(i=0;i<=100;i++);) kan mann 26000 stuck hintereinander programmieren und dafur braucht die processor nur eine secunde (!) um die alle 26000 aus zu fuhren
wenn integer stat char benutzt wird mussen immmer 2 bytes addiert und verglichen werden und ich schatze dass wird ungefahr 4 bis 6 * 100 clockcycles extra daurn und machts mehr als zweimahl so langsam. (kanst du ja selbst ausprobiere/ausrechnen)
gruss
Henk
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.