Forum: Mikrocontroller und Digitale Elektronik Wie kann ich mit dem ATmega16 rechnen?


von Zoffi (Gast)


Lesenswert?

Hallo,

ich will mir einen Drehzahlmesser für mein Auto bauen.
Also ich hab mir das so vorgestellt:
Sobald eine Zündung erfolgt wird per Interrupt der Timer ausgelöst und
beginnt zu zählen. Kommt wieder eine Zündung stopt der Timer und der µC
kann dann die Drehzahl ausrechnen und auf einem Display ausgeben.
Aber jetzt kommt der schwierigere Teil: Die Rechnung!
Von Zündzeitpunkt zu Zündzeitpunkt bedeutet eine Umdrehung. Der Timer
erfasst die Zeitzyklen die der Motor für eine Umdrehung braucht.
Demnach komme ich auf diese Formel wenn ich das Ergebnis in 1/min haben
will.

60/[Zyklen*(1/CPU Takt/1024)]

Der Term in der () entspricht dem Prescaler der auf 1/1024 eingestellt
ist.
Wie führe ich diese Rechnung aus? Es handelt sich dabei um einen 16Bit
Timer.
Wie kann ich ein Registerpaar (16Bit) mit einer Zahl multiplizieren
oder dividieren?

Ich programmiere in Assembler!

von Ulrich (Gast)


Lesenswert?

Solange wie man durch 2,4,8,16,32,64,128...... teilen oder mul. will ist
das einfach rotation des 16 bit wortes nach rechts oder links.
und für den rest eine schleife mit einer addition (dauert ewig)also es
gibt einige lösungen einfach mal ein bisschen rechnen :-)

mfg uli

von ---- (Gast)


Lesenswert?

Zwei Anmerkungen:

(1/CPU Takt/1024) ist konstant und kann schon jetzt von dir
ausgerechnet werden - muß also nicht dauernd zur Laufzeit geschehen.

> einfach rotation des 16 bit wortes nach rechts oder links
muß heissen: schieben (und nicht Rotation)!

----, (QuadDash).

von Hanno (Gast)


Lesenswert?

>Von Zündzeitpunkt zu Zündzeitpunkt bedeutet eine Umdrehung.
... Stimmt beim Otto-(4-Takt-)Motor nicht ganz: Von Zündung zu Zündung
sinds zwei Umdrehungen :)

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.