PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt



oratus sum
24.05.2010, 12:35
Hallo.

Ich verwende einen MEga2560 Controller, der unteranderem auch die Drehzahlen meiner Ketten messen soll. Dazu verwende ich den CNY70 an einem Interrupteingang, einen für jeweils eine Seite.

Ich habe mit dem Oszi nachgemessen ob die Kettendecoder funktionieren - das tun sie sehr gut.

Hier der Screenshot von meinem Oszi:
http://img156.imageshack.us/img156/5998/decodery.jpg (http://img156.imageshack.us/i/decodery.jpg/)


Jetzt stellt sich die Frage wie ich meinen INterrupt einstellen soll. Auf Change, Falling oder Rising. Außerdem stellt sich die Frage ob der µC die oberen Flanken, also die kleinen Flanken auch als INterrupt erkennt oder nicht. Im Durchschnitt liegen die ja über 4 Volt. Ich habe versucht das Signal mit einem Kondensator zu filtern, allerdings verfälscht der dann bei höheren Drehzahlen das Ergebnis.

Eine Alternative wäre ein Schmitt-trigger.

Was meint ihr?

for_ro
24.05.2010, 13:06
Jetzt stellt sich die Frage wie ich meinen INterrupt einstellen soll. Auf Change, Falling oder Rising.
Kommt halt drauf an, was du machen willst. Mal abgesehen von den kleinen Picksern würde ein Interrupt so auslösen:
Falling: Kurz bevor der Pegel 0V erreicht hat
Rising: Kurz nachdem der Pegel von 0V wieder angestiegen ist
Change: In beiden obigen Fällen.
Für deine Drehzahl scheint mir Change ungeeignet, Risinf oder Falling ist wohl egal.


Außerdem stellt sich die Frage ob der µC die oberen Flanken, also die kleinen Flanken auch als INterrupt erkennt oder nicht. Im Durchschnitt liegen die ja über 4 Volt.
Daher glaube ich nicht, dass die etwas ausmachen.
Interessant könnte der eine Picks nach unten werden, zwischen der zweiten und dritten echten Flanke.

Besserwessi
24.05.2010, 17:29
So besonders gut sieht dsa signal nicht aus. Der schon erwähne kleine Peak zwischen dem 2ten und 3. großen, könnte da so ein Problem sein.
Mit einigem Aufwand ließen solche Aussetzer aber in Software noch Korrigieren. Erkennen wird man nur die Großen Peaks nach unten.

Die Eingänge beim AVR haben schon Schmidt-trigger Charakter, das sollte als schon so gehen. Höchstens noch ein kleiner Kondensator, um die allerhöchsten Frequenzen herauszufiltern.

Ab man den Interrupt auf steigend oder fallen setzt ist ziehmlich egal. Man wrid jeden der Peaks mitbekommen. Auf beide Flanken zu reagieren wird nichts bringen, so gut sieht das Signal nicht aus, das man auch mit der Pulslänge was anfangen kann.

oratus sum
24.05.2010, 17:32
Die Pulslänge ist unbedeutsam. Jedoch habe ich die eine Leitung auf ein PCINT Pin, daher habe ich da keine Wahl und muss Change nehmen...