www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16 Bit Arithmetik


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.