PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Benötige Hilfe beim Capture Mode



Fourstroker
24.07.2007, 11:07
Hallo,

ich benötige Hilfe beim Capturemode Timer 1 oder 3 des Mega 128.

Ich möchte eine Drehzahl erfassen, was ich bisher mit Interrupts und Timern gelöst habe. Dies will ich jetzt mit dem Capture Mode realisieren.

Bei einer Drehzahl von 10 000 U/min und 2 Impulsen pro Umdrehung sind das 0,003 Sekunden pro Umdrehung.

Ich betreibe den Mega mit 16 Mhz. Bei einem Prescaler von 256 wären das dann 62500 Hz oder 1/f = 0,000016 Sekunden.

Ich kann also einen Bereich bis 0,000016*65535=1,04856 Sekunden abdecken.

Wie aber rechne ich jetzt die Drehzahl aus?

Im Prinzip doch 60/(gemessene Zeit *2)= Drehzahl

2, da ich ja der Startimpuls kommt, dann nach halber Umdrehung der Stoppimpuls und dann ne halbe Umdrehung Pause ist.

Bsp.: 60/(0,003*2)=10000 U/min

Diese Rechnung stimmt ja aber nur, wenn in den Timerregistern die Zeit in Sekunden stehen würde. Wie steht sie aber in meinem Beispiel denn wirklich drin und wie rechne ich das aus????

Kann mir anhand meiner Angaben jemand ne Beispielrechnung zeigen?????

Vielen Dank

Fourstroker

Gock
24.07.2007, 13:06
Wenn Du alle 16µs eins hoch zählst, dann multiplizierst Du die Anzahl mit 16µs und Du hast das Ergebnis in µs. Du kannst sie auch mit 0,000016 multiplizieren und dann hast Du es in s.
Nur aufpassen, wenn man mit Zählern rückwärts zählt, dann muss man halt noch kurz umrechnen.
Viel Spass

Fourstroker
25.07.2007, 08:38
Soweit ist das schon klar, aber ich kann doch net

Variable = Variable*0,000016; schreiben.

Oder??

Gock
25.07.2007, 09:28
Ne, aber Variable1 = Variable2*0,00..16
Kommt aber auch darauf an, wie groß Var2 ist und entsprechend das Ergebnis. Muss alles in 16Bit passen, sofern so deklariert.
Was Basic alles kann, weiß ich nicht so genau, programmiere meist in Assembler. Vielleicht geht ja auch 32Bit.
Gruß

Fourstroker
25.07.2007, 09:30
Ich machs jetzt mal mit ner long Variable und hab von 0,000016 auf 16 erweitert. Mal sehen, obs läuft.