mikrocontroller.net

Forum: Compiler & IDEs Atmega 8515 zeit zwischen 2 externe Interrupts


Autor: HeavyProgramming12 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich programmiere seit neustem mit µController.
Im moment bin ich dran über einen drehgeber impulse einzulesen und 
dadurch drehgeschwindigkeit zu bestimmen.
Dazu habe ich externe Interrupts verwendet, was auch soweit 
funktioniert.
Bei Impuls auftritt kommt ein Interrupt, der diesen zählt. Um jetzt aber 
auch eine Geschwindigkeit zu erhalten, brauche ich die Zeit zwischen 2 
Impulsen. wisst ihr ob es da ein register gibt in der eine solche zeit 
auslesbar ist? im Internet habe in nichts gefunden.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HeavyProgramming12 schrieb:

> Bei Impuls auftritt kommt ein Interrupt, der diesen zählt. Um jetzt aber
> auch eine Geschwindigkeit zu erhalten, brauche ich die Zeit zwischen 2
> Impulsen. wisst ihr ob es da ein register gibt in der eine solche zeit
> auslesbar ist?

So direkt nicht.
Aber du kannst dir im µC eine 'Uhr' einrichten.
Dein µC hat Timer. Davon suchst du dir einen aus, und lässt ihn laufen. 
Bei der Konfigurierung des Timers hast du eingestellt, wie schnell der 
Timer zählen soll. Hast du jetzt am Decoder ein Ereignis, siehst du 
einfach im Timer nach dem aktuellen Zählerstand und da du weißt, wie 
schnell der Timer zählt, kannst du den in eine Zeit umrechnen.

Autor: HeavyProgramming12 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danke für deine Antwort.

Mein CPU Oszillator  hat eine frequenz von 3.686 MHZ.
jetzt wollte ich mit dem Timer einstellen, dass dieser jede 1µs auslöst. 
kann man das mit der oben angegebenen frquenz überhaupt einstellen?
ich benutze übrigens das stk500 mit atmega8515

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  HeavyProgramming12 (Gast)

>ich programmiere seit neustem mit µController.

Wie schön.

>Im moment bin ich dran über einen drehgeber impulse einzulesen und
>dadurch drehgeschwindigkeit zu bestimmen.
>Dazu habe ich externe Interrupts verwendet, was auch soweit
>funktioniert.

Aber falsch ist, siehe Drehgeber.

>Impulsen. wisst ihr ob es da ein register gibt in der eine solche zeit
>auslesbar ist? im Internet habe in nichts gefunden.

Nennt sich Timer.

>Mein CPU Oszillator  hat eine frequenz von 3.686 MHZ.

Hmm.

>jetzt wollte ich mit dem Timer einstellen, dass dieser jede 1µs auslöst.

Hälst du das für sinnvoll? Schon mal drüber nachgedacht, was deine CPU 
machen soll, wenn sie zwischen zwei Interrupts 3,6 Takte Zeit hat?

>kann man das mit der oben angegebenen frquenz überhaupt einstellen?

Nö.

>ich benutze übrigens das stk500 mit atmega8515

Schön. Aber fang mal bissel kleiner an. Lies z.B. mal was über 
Interrupts.

MFG
Falk

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.