Zyklen berechnen

OP #3006879
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? :-(
Angehängte Dateien:
#3006895
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.
OP #3006908
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
#3006915
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.
#3006920
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?
Gast #3006926
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
OP #3006935
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 :-)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.