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
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
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
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
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.
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
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
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
@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
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
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