Zyklen berechnen

Gast #2262907
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
Gast #2262948
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
Gast #2263233
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
Gast #2263240
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
#2264145
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.
Gast #2264176
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
Gast #2264257
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
Gast #2264541
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
#2264752
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
#2264766
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
Gast #2264861
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren