Page 1 of 1

Encoder Rotary Probleme

Posted: Thu Nov 02, 2017 9:32 am
by santhish99
Was ich getan habe:

Das Programm zeigt in der ersten Zeile der LCD den Text "PWM = xxx%" an, wobei xxx eine Variable VAR ist, die nur zwischen 0 und 100 liegt. Es gibt momentan kein PWM-Signal, es ist nur ein Text auf dem LCD .. Wenn ich die Taste drücke, wird der VAR-Wert für PWM% auf 0 zurückgesetzt.
Mein Problem ist, dass ich den PIC18F4550 brauche, um viele andere Aufgaben zu erledigen, das Programm wird später geschrieben, und das Lesen des Drehgebers ist nur eine Nebenaufgabe. Nach dem Datenblatt von - https://www.icrfq.com/part/3873526-PEL1 ... S1024.html
Mit anderen Worten, ich möchte nicht das Lesen in der Hauptschleife des Programms, sondern eine Unterroutine, die eventuell die Interrupts verwendet, unterbricht vielleicht die Änderung an Port B (IOC).
Aber dann merke ich, dass das Lesen nicht so schnell ist, ich vermisse Pulse.
Der Drehgeber sollte normalerweise eine zweitrangige Aufgabe sein, aber wenn er gedreht wird, sollte er schnell gelesen werden, und schließlich seine Subroutinenpriorität für den PIC ändern. Ich bemerke, dass das Schreiben auf die LCD-Anzeige Zeit braucht und der PIC das Lesen der Drehimpulsgeberimpulse verfehlt.
Welche Vorschläge, Codebeispiel könnten Sie zum schnellen Lesen des Drehgebers liefern, aber gleichzeitig nicht zulassen, dass der PIC nur das tut? Irgendeine Idee?

Danke vielmals.

Re: Encoder Rotary Probleme

Posted: Thu Nov 02, 2017 10:11 am
by LeighM
I would suggest that you call the encoder CheckForChanges() on a timer interrupt.
The timer interrupt interval will depend upon your expected shortest pulse width (maximum speed of rotation).
Then you can read the counter value at any point in your program or main loop.

Re: Encoder Rotary Probleme

Posted: Thu Nov 02, 2017 5:05 pm
by santhish99
Danke für Ihre Antwort und Anregung.

Mit freundlichen Grüßen