1111
1212import os
1313
14-
15-
1614class QEP :
1715
1816 def __init__ (self , channel = 1 , debug = False ):
@@ -45,7 +43,9 @@ def errMsg(self):
4543
4644
4745class RotaryEncoder (object ):
48- OCP_PATH = "/sys/TEST/TODO/"
46+ # TODO: check that kernel 4.1+
47+ # TODO: use config-pin to set qep mode
48+ OCP_PATH = "/sys/devices/platform/ocp"
4949 _eqep_dirs = [
5050 '%s/48300000.epwmss/48300180.eqep' % OCP_PATH ,
5151 '%s/48302000.epwmss/48302180.eqep' % OCP_PATH ,
@@ -64,28 +64,24 @@ def __init__(self, eqep_num):
6464 eqep_num can be: EQEP0, EQEP1, EQEP2 or EQEP2b based on which pins \
6565 the rotary encoder is connected to.
6666 '''
67+ print ("RotaryEncoder(): eqep_num: {0}" .format (eqep_num ))
68+ print ("RotaryEncoder(): self._eqep_dirs[0]: {0}" .format (self ._eqep_dirs [0 ]))
69+ print ("RotaryEncoder(): self._eqep_dirs[1]: {0}" .format (self ._eqep_dirs [1 ]))
70+ print ("RotaryEncoder(): self._eqep_dirs[2]: {0}" .format (self ._eqep_dirs [2 ]))
71+ print ("RotaryEncoder(): self._eqep_dirs[eqep_num]: {0}" .format (self ._eqep_dirs [eqep_num ]))
6772 assert 0 <= eqep_num <= 3 , "eqep_num must be between 0 and 3"
68- if eqep_num == 3 :
69- overlay = "PyBBIO-eqep2b"
70- eqep_num = 2
71- else :
72- overlay = 'PyBBIO-eqep%i' % eqep_num
73-
74- pwmss_overlay = "PyBBIO-epwmss%i" % eqep_num
75- #cape_manager.load(pwmss_overlay, auto_unload=False)
76- delay (10 )
77- #cape_manager.load(overlay, auto_unload=False)
78- delay (250 ) # Give driver time to load
7973 self .base_dir = self ._eqep_dirs [eqep_num ]
74+ print ("RotaryEncoder(): self.base_dir: {0}" .format (self .base_dir ))
8075 self .enable ()
81- addToCleanup (self .disable )
8276
8377 def enable (self ):
8478 '''
8579 enable()
8680 Turns the eQEP hardware ON
8781 '''
8882 enable_file = "%s/enabled" % self .base_dir
83+ print ("enable(): enable_file: {0}" .format (enable_file ))
84+ print ("enable(): TODO: write 1 to enable_file" )
8985 #return sysfs.kernelFileIO(enable_file, '1')
9086
9187 def disable (self ):
@@ -94,6 +90,8 @@ def disable(self):
9490 Turns the eQEP hardware OFF
9591 '''
9692 enable_file = "%s/enabled" % self .base_dir
93+ print ("disable(): enable_file: {0}" .format (enable_file ))
94+ print ("disable(): TODO: write 0 to enable_file" )
9795 #return sysfs.kernelFileIO(enable_file, '0')
9896
9997 def setAbsolute (self ):
@@ -104,6 +102,8 @@ def setAbsolute(self):
104102 decremented by the encoder's movement
105103 '''
106104 mode_file = "%s/mode" % self .base_dir
105+ print ("setAbsolute(): mode_file: {0}" .format (mode_file ))
106+ print ("setAbsolute(): TODO: write 0 to mode_file" )
107107 #return sysfs.kernelFileIO(mode_file, '0')
108108
109109 def setRelative (self ):
@@ -113,6 +113,8 @@ def setRelative(self):
113113 The position is reset when the unit timer overflows.
114114 '''
115115 mode_file = "%s/mode" % self .base_dir
116+ print ("setRelative(): mode_file: {0}" .format (mode_file ))
117+ print ("setRelative(): TODO: write 1 to mode_file" )
116118 #return sysfs.kernelFileIO(mode_file, '1')
117119
118120 def getMode (self ):
@@ -121,6 +123,8 @@ def getMode(self):
121123 Returns the mode the eQEP hardware is in.
122124 '''
123125 mode_file = "%s/mode" % self .base_dir
126+ print ("getMode(): mode_file: {0}" .format (mode_file ))
127+ print ("getMode(): TODO: read mode_file" )
124128 #return sysfs.kernelFileIO(mode_file)
125129
126130 def getPosition (self ):
@@ -133,6 +137,8 @@ def getPosition(self):
133137 encoder at the last unit timer overflow.
134138 '''
135139 position_file = "%s/position" % self .base_dir
140+ print ("getPosition(): position_file: {0}" .format (position_file ))
141+ print ("getPosition(): TODO: read position_file" )
136142 #return sysfs.kernelFileIO(position_file)
137143
138144 def setFrequency (self ,freq ):
@@ -141,6 +147,12 @@ def setFrequency(self,freq):
141147 Set the frequency in Hz at which the driver reports new positions.
142148 '''
143149 period_file = "%s/period" % self .base_dir
150+ print ("setFrequency(): period_file: {0}" .format (period_file ))
151+ print ("setFrequency(): freq: {0}" .format (period_file ))
152+ print ("setFrequency(): freq: {0}" .format (freq ))
153+ print ("setFrequency(): 1000000000/freq: {0}" .format (1000000000 / freq ))
154+ print ("setFrequency(): str(1000000000/freq)): {0}" .format (str (1000000000 / freq )))
155+ print ("setFrequency(): TODO: set period_file: {0}" .format (str (1000000000 / freq )))
144156 #return sysfs.kernelFileIO(period_file, str(1000000000/freq))
145157
146158 def setPosition (self ,val ):
0 commit comments