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
Nimm nen tiny oder so mit PLL, die können den Timer mit 64Mhz oder so laufen lassen.
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
Ja das ist mir klar es soll ja erstmal nur versucht werden ob das ganze funktioniert und ob meine Berechnungen richtig sind MfG Bqube
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
Aber so einfach kannst du das ja nicht rechnen denn es sind 10cm im Durchmesser nicht in der Länge ;)
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.