ris8_allo_zen0 Posted February 22, 2008 Report Share Posted February 22, 2008 Hello everybody,since I have some encoders (but not all) in my MBSEQ changing values in the opposite direction, I thought the best way is to tell somewhere in the software which encoder is reversed (has its pins swapped) and which is not.So I've made a little patch to the MIOS code making it able to read a flag in the encoder table and give a negated (2-complement) incrementer to the user application if that flag is set.Here's the patch against MIOS v1.9f: diff -Naur mios_v1_9f_src.orig/src/mios_enc.inc mios_v1_9f_src/src/mios_enc.inc --- mios_v1_9f_src.orig/src/mios_enc.inc 2008-01-20 23:39:02.000000000 +0100 +++ mios_v1_9f_src/src/mios_enc.inc 2008-02-22 19:43:43.000000000 +0100 @@ -16,6 +16,7 @@ MIOS_ENC_MODE_NON_DETENTED EQU 0x00 MIOS_ENC_MODE_DETENTED EQU 0x80 MIOS_ENC_MODE_DETENTED2 EQU 0x81 +MIOS_ENC_MODE_REVERSED EQU 0x40 ENC_STAT_ACT_A EQU 0 ; Current status of channel A ENC_STAT_ACT_B EQU 1 ; Current status of channel B @@ -801,6 +802,10 @@ addlw 1 addwf FSR0L, F + ;; now TABLAT contains encoder flags, so it's a dummy read + ;; if incrementer is zero or we can read "reverse" flag otherwise. + tblrd*+ + ;; temporary disable the IRQs IRQ_DISABLE @@ -814,6 +819,12 @@ ;; enable IRQs again IRQ_ENABLE + ;; makes incrementer negative if encoder is reversed mounted + BRA_IFCLR TABLAT, 6, ACCESS, MIOS_ENC_Dont_Negate + negf WREG +MIOS_ENC_Dont_Negate + + ;; save incrementer in MIOS_PARAMETER2 movwf MIOS_PARAMETER2 @@ -830,7 +841,6 @@ MIOS_ENC_Handler_Loop_Next IRQ_ENABLE - tblrd*+ ; dummy read incf MIOS_TMP_CTR, F, BANKED BRA_IFSET MIOS_TMP_CTR, 6, BANKED, MIOS_ENC_Handler_Loop_End rgoto MIOS_ENC_Handler_Loop That's the same content of the attached file. To use it on your application, just add this row in mios.h of the app's source: MIOS_ENC_MODE_REVERSED EQU 0x40 and set your reversed encoders this way: ENC_ENTRY 2, 6, MIOS_ENC_MODE_DETENTED2 | MIOS_ENC_MODE_REVERSED ; this is a reversed encoder ENC_ENTRY 2, 4, MIOS_ENC_MODE_DETENTED2 ; this is a normal encoder I hope it gets useful for somebody.Greetings, Enricorevenc.diff.txtrevenc.diff.txt Quote Link to comment Share on other sites More sharing options...
nILS Posted February 22, 2008 Report Share Posted February 22, 2008 Nice! ;DWIKIMARKER Quote Link to comment Share on other sites More sharing options...
lukas412 Posted February 22, 2008 Report Share Posted February 22, 2008 THANK YOU! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.