Forum: Mikrocontroller und Digitale Elektronik Zyklen berechnen


von Bqube (Gast)


Lesenswert?

Hallo alle zusammen und zwar möchte ich mir einen Tacho bauen und brauch 
da für eine sehr genaue mü sek Zeit Berechnung.

Ich hab das mit den schleifen so verstanden von einer Internetseite

Ldi r16,100.     1*1
Warten1:
DEC r16.          100*1
Brne Warten1. 99*2+1
komm ich auf 300 also bei 1 MHz sind das 0,000300 Sekunden

Gut das versteh ich aber wie sieht es hiermit aus

Ldi r17,5 1*1
Warten2:
Ldi r16,100 1*1
Warten1:
DEC r16 100*1
Brne Warten1 99*2+1
DEC r17 5*1
Brne Warten2: 4*2+1

Erste Schleife 300
Zweite 15
Also 300*15=4500 bei 1 MHz 0,004500 Sekunden
Oder rechne ich da falsch ???

MfG bqube

von oldmax (Gast)


Lesenswert?

Hi
Nun, so kannst du da nicht vorgehen. Wenn du 1 MHz Taktfrequenz hast, 
ist nicht gesagt, das die Befehle auch nur einen Takt benötigen. Schau 
mal ins Datenblatt, da stehen die Taktzyklen für die Befehle dabei. Es 
ist auch nicht sehr sinnvoll, mit "Warteschleifen" zu arbeiten. Wenn du 
eine "genaue" Zeitbasis brauchst, kommst du um die Verwendung der Timer 
nicht herum. Allerdings, in µSek. da, sollte deine ISR vom Timer 
wirklich nicht viel tun.... und du solltest da schon ein wenig mehr 
"Dampf" machen.
Gruß oldmax

von Uwe (Gast)


Lesenswert?

Nimm nen tiny oder so mit PLL, die können den Timer mit 64Mhz oder so 
laufen lassen.

von Bqube (Gast)


Lesenswert?

Ja alles schön und gut aber das kann doch Net so schwer sein Peer 
Schleife das zu realisieren das ganze soll aus wenig Bauteilen bestehen 
ich hab das ganze mit einem atmega8 durch dacht einen timer will ich 
nicht unbeding nehmen weil ich für müsek dann wieder einen Quarz brauche 
was ich nicht möchte.

MfG Bqube

von spess53 (Gast)


Lesenswert?

Hi

>ich hab das ganze mit einem atmega8 durch dacht einen timer will ich
>nicht unbeding nehmen weil ich für müsek dann wieder einen Quarz brauche
>was ich nicht möchte.

Ein Timer ohne Quarz ist genau so ungenau, wie eine Zählschleife ohne 
Quarz.

MfG Spess

von Bqube (Gast)


Lesenswert?

Ja das ist mir klar es soll ja erstmal nur versucht werden ob das ganze 
funktioniert und ob meine Berechnungen richtig sind

MfG Bqube

von Bqube (Gast)


Lesenswert?

Meine Frage war ja nur ob die Rechnung oben so richtig ist.

MfG Bqube

von Karl H. (kbuchegg)


Lesenswert?

Nein, das sieht nicht richtig aus.
Wenn du etwas 100 mal wiederholst, was 300 Takte braucht, dann kann da 
schon mal nicht weniger als 30000 Takte rauskommen, egal wieviel die 
Steuerung der Wiederholung selbst braucht

Du musst dir den Programmfluss vorstellen! Das ist etwas dynamisches. 
Geh im Kopf durch, wie der µC das Programm abarbeitet und dann 
berechnest du das.

von oldmax (Gast)


Lesenswert?

Hi
Irgendwie versteh ich dich nicht....
>Hallo alle zusammen und zwar möchte ich mir einen Tacho bauen und brauch
>da für eine sehr genaue mü sek Zeit Berechnung.

Die Zeit, die ein Befehl für sie Bearbeitung braucht ist 1/f *Cykles
Bei 1 MHz (1000000 Hz) ist ein Takt exakt 1µSek. Gut. Nun durchläufst du 
die Warteschleifen, ok, aber sobald du nun etwas anders tun willst wie 
warten, stimmt deine Zeitberechnung nicht. Da ist dann nix mehr mit 
"sehr genau...." unabhängig davon, das der interne Takt doch sehr 
Temperaturabhängig ist. Du könntest vielleicht den internen Takt auf 8 
MHz setzen und dann einen Timer benutzen. Zumindest würdest du dann 
mithilfe von Interruptbearbeitung noch etwas anderes machen können als 
nur warten und die Zeiterfassung wär etwas genauer.
Aber wenn du genaue Werte haben willst, kommst du um die Verwendung von 
einem Quartz sowie Timer sowieso nicht herum.
Gruß oldmax

von Bqube (Gast)


Lesenswert?

Ja ihr habt ja recht nun Jan ich das Gefühl das mein Gedankengang 
komplett falsch ist ... Ich habe ausgerechnet das wenn ein high 
innerhalb von 277,7 müsek bei einem durchmessen von 10cm bekomme ich 
einen km/h schnell bin.Wenn ich die Zeit noch richtig im Kopf hab
So muss ich doch einfach ein Programm schreiben was zählt wie viele high 
Signale in der Zeit sin un diese dann an ein Display schciken oder nicht 
?

Denk ich da zu kompliziert ?

MfG Bqube

von oldmax (Gast)


Lesenswert?

Hi
Bist du ir da deiner Sache Sicher ?
10 cm in 300µsek
100 cm in 3 mSek ~ 1 m
1000 m in 3 Sek ~1 km
20 km in 60 Sek !
.....
1200 Km/h, wenn eine 10 cm - Scheibe einen Impuls alle 20 µSek liefert. 
Verdammt fix das Teil....
Gruß oldmax

von Bqube (Gast)


Lesenswert?

Nein hab nochmal nachgeschlagen es sind 86,7 ms

von Bqube (Gast)


Lesenswert?

Aber so einfach kannst du das ja nicht rechnen denn es sind 10cm im 
Durchmesser nicht in der Länge ;)

von Reinhard R. (reirawb)


Lesenswert?

@Bqube
Deine Rechnung im Ausgangspost war fast richtig. Die innere Schleife 
hast Du schon richtig berechnet. Die äußere Schleife ruft die Innere 
aber nicht 15mal sondern nur 5mal auf. Die Rechnung ist so richtig:
Takte der innere Schleife * Anzahl der äußeren Schleifendurchgänge + 
Takte der äußeren Schleife

Ldi r17,5       1*1=  1 Takt
Warten2:
********** Innere Schleife ***************************
Ldi r16,100     1*1=  1 Takt je äußerer Schleifendurchlauf
Warten1:
DEC r16       100*1=100 Takte je äußerer Schleifendurchlauf
Brne Warten1 99*2+1=199 Takte je äußerer Schleifendurchlauf
             Gesamt=300 Takte je äußerer Schleifendurchlauf
äußere Schleife wird 5mal durchlaufen, ergibt
insgesamt     300*5=1500 Takte für die innere Schleife
********** /Innere Schleife **************************
DEC r17         5*1=  5 Takte
Brne Warten2: 4*2+1=  9 Takte
                 --------------
Insgesamt:         1515 Takte

Ergibt bei 1 MHz Prozessortakt 1,515ms (0,001515sek).

Reinhard

von Reinhard R. (reirawb)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Nein, das sieht nicht richtig aus.
> Wenn du etwas 100 mal wiederholst, was 300 Takte braucht, dann kann da
> schon mal nicht weniger als 30000 Takte rauskommen, egal wieviel die
> Steuerung der Wiederholung selbst braucht
Oooch Karl Heinz, jetzt bin ich aber ein bischen enttäuscht, er 
wiederholt es ja nur 5mal :-)

> Du musst dir den Programmfluss vorstellen! Das ist etwas dynamisches.
> Geh im Kopf durch, wie der µC das Programm abarbeitet und dann
> berechnest du das.
Da hast Du wieder mal ein wahres Wort gesprochen.

Reinhard

von oldmax (Gast)


Lesenswert?

Hi
Manchmal ist man ja auch ein wenig neben der Spur
>Aber so einfach kannst du das ja nicht rechnen denn es sind 10cm im
>Durchmesser nicht in der Länge ;)
Dann darfst du aber jetzt die Geschwindigkeit mit Pi malnehmen  oder 
einigen wir und einfach drauf, das es 20000 U/min sind...... ;)
Gruß oldmax

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.