Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller Abarbeitungszeit ausrechnen


von FH_Student (Gast)


Lesenswert?

Hallo Forum,

ich würde gerne die Abarbeitungszeit von diversen Programmen meines 
Mikrocontrollers ausrechnen.

Gegeben:
        Frequenz: 12 MHZ
        Zyklen: 10

Meine Formel:

    Abarbeitungszeit = (1/FREQUENZ)*ANZAHL_ZYKLEN =(1/12MHZ)*10 = 0,8us


Ist die Formel korrekt?


Vielen Dank!

von Karl H. (kbuchegg)


Lesenswert?

FH_Student schrieb:
> Hallo Forum,
>
> ich würde gerne die Abarbeitungszeit von diversen Programmen meines
> Mikrocontrollers ausrechnen.
>
> Gegeben:
>         Frequenz: 12 MHZ
>         Zyklen: 10
>
> Meine Formel:
>
>     Abarbeitungszeit = (1/FREQUENZ)*ANZAHL_ZYKLEN =(1/12MHZ)*10 = 0,8us
>
>
> Ist die Formel korrekt?

Ist das jetzt eine Fangfrage?
Wenn eine Maschine zur Herstellung 1ner Glasflasche 1 Sekunden braucht, 
wie lange braucht sie dann für 50 Flaschen?

Hmm. Das ist irgendwie auf dem Niveau der 3. Klasse Grundschule.

OK. Das die Periodendauer (also die Zeit) das Reziproke der Frequenz 
ist, ist Niveau der 6. Klasse (oder wann man heutzutage das erste 
Physikjahr absolviert). Von daher ist das schon schwerer.

von Stefan (Gast)


Lesenswert?

Vielliehct ist er unsicher, ob ein Zyklus einem Takt-Impuls entspricht.

Die Formel ist jedenfalls richtig.

von Micha (Gast)


Lesenswert?

Die Forme ist eh falsch!

Überleg doch mal...

von Stefan (Gast)


Lesenswert?

Misst, zu früh Auf Absenden geklickt. Ich meinte, die Formel ist bei 
einem AVR richtig, denn der macht einen Zyklus pro Takt.

Das gilt aber nicht für alle Mikrocontroller. Bei der 8051 Serie waren 
es 6 Takte pro Zyklus, soweit ich mich erinnere.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Vielliehct ist er unsicher, ob ein Zyklus einem Takt-Impuls entspricht.

Dann soll er das auch fragen.
Noch besser allerdings: Im jeweiligen Datenblatt nachlesen.

von Micha (Gast)


Lesenswert?

Ich lese doch Zyklen?

Meinst Du die geamte Programmlaufzeit je Zyklus?

von Elko (Gast)


Lesenswert?

Allerdings muss dabei beachtet werden wie viele Takte der µC zu 
abarbeitung eines Befehlszykluses braucht.


meistens gilt

AVR (ATmega, ATtiny):

1 Taktzyklus = 1 Befehlszyklus

PIC16F, PIC18F:

4 Taktzyklen = 1 Befehlszyklus

von techniker (Gast)


Lesenswert?

Und wie sieht dies bei dem STM32 (Cortex-M3) aus ?
1 Befehlszyklus = ? Taktzyklen

von Oliver (Gast)


Lesenswert?

FH_Student schrieb:
> Ist die Formel korrekt?

Ist das die neuste Variante des Witzes:

Geht 'ne Blonde zur Uni...

???

Oliver

von friedrich (Gast)


Lesenswert?

Hallo techniker,

beim STM32 ist "prinzipiell" im eingeschwungenen Zustand auch so dass 
die CPU das in einem Takt macht.
AAABER: die hat ne Pipeline und bei Sprüngen wird die erstmal geflusht 
(geleert) und dann braucht das seine Zeit bis die CPU dann wieder 
ausführen kann. Und die Wartezeit aufs Flash muss auch noch beachtet 
werden. Es gibt auch Befehle die benötigen mehrere Befehlszyklen. Ein 
Blick ins Datenblatt ....

Grüße

von FH_Student (Gast)


Lesenswert?

Vielen Dank für die Antworten.
Ihr habt mich auf die richtige Spur gebracht und Google hat mir die 
Lösung geliefert!

Ein Maschinenzyklus entspricht 12 Taktzyklen. Also musste ich mein 
Ergebnis noch x12 rechnen.

Jetzt komme ich auf die Ergebnisse vom Prof!

MfG!!!

von Oliver (Gast)


Lesenswert?

FH_Student schrieb:
> in Maschinenzyklus entspricht 12 Taktzyklen. Also musste ich mein
> Ergebnis noch x12 rechnen.

Eigentlich lautet die Antwort 42...

Oliver

von Uwe (Gast)


Lesenswert?

Also doch ne 8051 ?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

FH_Student schrieb:
> Ein Maschinenzyklus entspricht 12 Taktzyklen.
Ein 8051er. Studierst du Archäologie oder Alte Geschichte?

von Route_66 (Gast)


Lesenswert?

Hallo!
@lkmiller
> Ein 8051er. Studierst du Archäologie oder Alte Geschichte?
...lass gut sein.
Um das Verständnis zu vermitteln, wie Mikrocontroller arbeiten, ist es 
unerheblich welche Plattform verwendet wird. Moderne 8051-Kerne brauchen 
auch keine 12 Takte für einen Maschinenzyklus.
Außerdem ist das Interrupt-System dieser alten Architektur wesentlich 
leistungsfähiger als das der AVRs!

von Falk B. (falk)


Lesenswert?

@  Route_66 (Gast)

>Außerdem ist das Interrupt-System dieser alten Architektur wesentlich
>leistungsfähiger als das der AVRs!

Muss ja, bei 12 Takten pro Maschinenzyklus ;-)

Verschachtelte Interrupts sind schon gut, aber die Praxis des AVR zeigt, 
dass es oft auch ohne geht.

von Jötze (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Hmm. Das ist irgendwie auf dem Niveau der 3. Klasse Grundschule.
>
> OK. Das die Periodendauer (also die Zeit) das Reziproke der Frequenz
> ist, ist Niveau der 6. Klasse (oder wann man heutzutage das erste
> Physikjahr absolviert).

Naja, Kollege:
die Unterscheidung von "dass" und "das" ist auch Grundschulniveau ...

von Max D. (max_d)


Lesenswert?

Ins db gekukt: Cycles des jeweiligen Befehls gesucht -> alles 
zusammenaddieren -> ergebniss mit Zeit für einen Zyklus (beim AVR 1/f) 
multiplizieren -> Zeit für den Abschnitt, aber Vorsicht: Der AVR braucht 
zeit um zb. in den Interrupt zu springen (meistens gehts ja um sowas)...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Max D. schrieb:
> aber Vorsicht: Der AVR braucht zeit um zb. in den Interrupt zu springen
Und er braucht auch für manche Befehle 2 oder gar 3 Zyklen...

von Karl H. (kbuchegg)


Lesenswert?

Jötze schrieb:
> Karl Heinz Buchegger schrieb:
>> Hmm. Das ist irgendwie auf dem Niveau der 3. Klasse Grundschule.
>>
>> OK. Das die Periodendauer (also die Zeit) das Reziproke der Frequenz
>> ist, ist Niveau der 6. Klasse (oder wann man heutzutage das erste
>> Physikjahr absolviert).
>
> Naja, Kollege:
> die Unterscheidung von "dass" und "das" ist auch Grundschulniveau ...

Schon.
Nur sind wir hier nicht in einem Grammatikkurs.

von Max D. (max_d)


Lesenswert?

Lothar Miller schrieb:
> Und er braucht auch für manche Befehle 2 oder gar 3 Zyklen...

das habe icht mit erwähnt:

Max D. schrieb:
> Cycles des jeweiligen Befehls gesucht

von Achim M. (minifloat)


Lesenswert?

Falk Brunner schrieb:
> Verschachtelte Interrupts sind schon gut, aber die Praxis des AVR zeigt,
> dass es oft auch ohne geht.

Ein AVR kann auch verschachtelte Interrupts. Dazu muss man eben in C 
gleich in der ersten Zeile der ISR oder eben in ASM nach retten der 
nötigen Register die Interrupts wieder einschalten. Aber du hast recht, 
man braucht es meist nicht...

mfg mf, der an einem Moto 68k "gelernt" hat...

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.