Forum: Mikrocontroller und Digitale Elektronik 16 Bit Arithmetik


von Daniel (Gast)


Lesenswert?

Hallo, ich habe ein Problem.

ich will eine Zeit zwischen zwei positiven Flanken stoppen. Dazu nutze 
ich den Timer1, merke mir die Overflows in r18 und die Zyklenanzahl aus 
HIGH(TCNT1) in r17 und LOW(TCNT1) in r16. Ich nutze einen 4 MHz 
Oszillator und einen ATMEGA8. Um jetzt auf die Zeit zu kommen, würde ich 
jetzt so rechnen:

t = 0,25us * ( r18 * 65.536 + r17 * ... + r16 * ... )

...wie kann ich mit den in TCNT1 stehenden Anzahl der Zyklen rechnen ?
...für die Rechnung r18 * 65536 bräuchte ich ein 24-Bit Register ?

Ich hoffe, ihr könnt mir weiterhelfen!

von Falk B. (falk)


Lesenswert?

@Daniel (Gast)

>ich will eine Zeit zwischen zwei positiven Flanken stoppen.

In welchem Bereich liegen die Zeiten?

> Dazu nutze
>ich den Timer1, merke mir die Overflows in r18 und die Zyklenanzahl aus
>HIGH(TCNT1) in r17 und LOW(TCNT1) in r16.

Macht man so nicht, dafür gibt es die ICP Funktion. Und bei Überläufen 
muss man aufpassen, dass man da keine Race Condtions reinbekommt.

>t = 0,25us * ( r18 * 65.536 + r17 * ... + r16 * ... )

>...wie kann ich mit den in TCNT1 stehenden Anzahl der Zyklen rechnen ?
>...für die Rechnung r18 * 65536 bräuchte ich ein 24-Bit Register ?

sieht so aus.

http://www.mikrocontroller.net/articles/AVR_Arithmetik

MFG
Falk

von Daniel (Gast)


Lesenswert?

Hey Falk,

danke für deine Antwort. Der ICP Pin vereinfacht den Start aber kann man 
den Timer darüber auch wieder stoppen? (Mit der "2" positiven Flanke)

Ich muss zugeben dass mir die Arithmetik-Beispiele von deinem Link nicht 
all zu sehr helfen. Gibt es Bücher oder andere Seiten die mir da weiter 
helfen könnten?

von (prx) A. K. (prx)


Lesenswert?

Daniel schrieb:

> danke für deine Antwort. Der ICP Pin vereinfacht den Start aber kann man
> den Timer darüber auch wieder stoppen? (Mit der "2" positiven Flanke)

Der Timer läuft durch, aber ICP merkt sich den Stand in einem Register 
und die IST lies dies aus. Die Differenz zweiter solcher Werte ist die 
Zeit dazwischen.

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.