Wie kann ich mit dem ATmega16 rechnen?

Gast #93493
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!
Gast #93494
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
Gast #93495
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).

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