Forum: Mikrocontroller und Digitale Elektronik Zyklen berechnen


von Theo K. (bluebird)


Angehängte Dateien:

Lesenswert?

Hy,
das ist mein erstest Post hier, und hoffe das ich hier richtig bin :-)

habe mir das myAVR MK2, einsteigerpacket geholt,
bis auf ein paar kleine druckfehler, finde ich das ganze Testboard und 
Lehrbuch ganz gut.

jetzt hänge ich aber an einer stelle, an der eine warteschleife (in 
Assembler) programmiert wird.
mir ist nicht klar wie die auf den Faktor 3 (im bild rot eingekreist) 
kommen, müssten sich die zyklen der befehle "dec" und "brne" nicht da zu 
addieren und nicht multiplizieren?
Oder habe ich da ein generellen denkfehler? :-(

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Theo K. schrieb:

> mir ist nicht klar wie die auf den Faktor 3 (im bild rot eingekreist)
> kommen, müssten sich die zyklen der befehle "dec" und "brne" nicht da zu
> addieren und nicht multiplizieren?

Es ist eine Schleife, die mehrfach durchlaufen wird.

von Karl H. (kbuchegg)


Lesenswert?

Wenn du für die Herstellung eines Werkstücks 3 Stunden brauchst, dann 
brauchst du für 1400 Werkstücke  1400 * 3 Stunden.

Wobei du nicht ganz unrecht hast. Die Berechnung stimmt so nicht ganz, 
weil die 1400 ja durch 2 ineinander geschachtelte Schleifen entstehen 
und dahe rnicht jeder Durchlauf exakt 3 Zyklen braucht. Der Fehler ist 
aber wohl für den vorgesehenen Zweck dieser Verzögerung nicht relevant.

von Theo K. (bluebird)


Lesenswert?

erstmal danke für die schnellen antworten :-)

auf die genauigkeit kommt es hier wirklich nicht an, zweck der Übung ist 
nur einen summer mit 440Hz zu betreiben :-)

das mit den Werkstücken ist ne klasse erklärung. :-)

also braucht ein durchlauf der warteschleife ca."3" Zyklen und da der 
einmal 140x und dann, das ganze 10x durchlaufen wird, kommen 1400 
zustande?

DANKE

von Karl H. (kbuchegg)


Lesenswert?

Theo K. schrieb:
> erstmal danke für die schnellen antworten :-)
>
> auf die genauigkeit kommt es hier wirklich nicht an, zweck der Übung ist
> nur einen summer mit 440Hz zu betreiben :-)
>
> das mit den Werkstücken ist ne klasse erklärung. :-)
>
> also braucht ein durchlauf der warteschleife ca."3" Zyklen und da der
> einmal 140x und dann, das ganze 10x durchlaufen wird, kommen 1400
> zustande?

der dec braucht 1
der brne braucht 2 wenn er springt (und das tut er die meiste Zeit, die 
10 mal, in denen der erste brne nicht nach loop2 springt wären also 10 
Zyklen weniger. Dafür kommen dann wieder 10 Stück dec r16 dazu, die 
wieder 10 Zyklen dazu einbringen plus 10 brne nach loop1, die nicht in 
die Berechnung eingehen. Davon wird 9 mal gesprungen, macht 18 Zyklen 
und 1 mal nicht, macht in Summe 19 Zyklen. D.h. die 4200 Zyklen sind in 
dieser Hinsicht eigentlich um 19 Zyklen zu wenig. Kommt nach der Anteil 
für die LDI dazu, sowie die Push und die Pop. Und wenn man ganz genau 
ist, müsste man den Call und den ret auch noch einrechnen.

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Theo K. schrieb:
>> erstmal danke für die schnellen antworten :-)
>>
>> auf die genauigkeit kommt es hier wirklich nicht an, zweck der Übung ist
>> nur einen summer mit 440Hz zu betreiben :-)
>>
>> das mit den Werkstücken ist ne klasse erklärung. :-)

Noch besser wäre:
Das Verpacken eines Apfels in eine Apfelkiste dauert 3 Sekunden.
Eine Kiste fasst 140 Äpfel.
Das Wegstellen der Kiste kostet 5 Sekunden.

Wenn 10 Kisten randvoll gepackt werden müssen, wie lange dauert das?

von Spess53 (Gast)


Lesenswert?

>Hi



>Davon wird 9 mal gesprungen, macht 18 Zyklen
>und 1 mal nicht, macht in Summe 19 Zyklen. D.h. die 4200 Zyklen sind in
>dieser Hinsicht eigentlich um 19 Zyklen zu wenig.
1
     Ldi r16,10   ; 1Takt
2
aaa: ...
3
     ...
4
     dec r16      ; 10 Takte
5
     brne aaa     ; 9x2Takte + 1x1Takt

macht für die äußere Schleife genau 30 Takte.

MfG Spess

von Theo K. (bluebird)


Lesenswert?

4250 sekunden,
das ist ne gute erklärung, die werde ich mir erstaml auf der seite im 
Buch notieren :-)
jetzt kann ich mir auch vorstellen warum "faktor 3" im kommentar 
drinsteht.

werde mich jetzt mal an die anderen übungsaufgaben machen, hoffentlich 
mus ich da nicht wieder so dumme fragen stellen.

echt coole Community :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.