Autor: | Hubert Högl <Hubert.Hoegl@hs-augsburg.de> |
---|---|
Datum: | 2012-01-25 |
URL: XXX
Vorkenntnisse:
- Python Interpreter starten und auf Interpreter Prompt arbeiten.
Siehe Python-Modul prog/pwm.py:
""" PWM Demo fuer Gnublin LPC3131 root@armv5te:~# modprobe lpc313x_pwm [lpc313x pwm] pwm frequency: 1464 Hz [lpc313x pwm] driver loaded with major 253 [lpc313x pwm] >> $ mknod /dev/lpc313x_pwm c 253 0 Der 12-Bit PWM Wert wird als Folge von zwei Byte geschickt: root@armv5te:~# echo <lowbyte> <highbyte> > /dev/lpc313x_pwm Der Treiber ist hier beschrieben: http://www.mikrocontroller.net/topic/237277 H. Hoegl, 25. Januar 2012 """ import time def d2s(v): ''' v is between 0 and 4095 ''' b0 = v & 0xff b1 = (v & 0xfff) >> 8 return chr(b0) + chr(b1) def pwm_raw(v): if v < 0 or v > 4095: print "v is out of range" return p = open("/dev/lpc313x_pwm", "wb") s = d2s(v) p.write(s) p.flush() p.close() def pwm(r): '''Set PWM output to 0.0% <= r <= 100.0%''' v = int( r/100.0 * 4095 ) pwm_raw(v) if __name__ == "__main__": pwm(50)
Auf dem Gnublin Shell Prompt nun folgende Eingaben machen:
root@armv5te:~# modprobe lpc313x_pwm [lpc313x pwm] pwm frequency: 1464 Hz [lpc313x pwm] driver loaded with major 253 [lpc313x pwm] >> $ mknod /dev/lpc313x_pwm c 253 0 root@armv5te:~# python Python 2.6.6 (r266:84292, May 20 2011, 22:44:14) [GCC 4.5.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pwm >>> pwm.pwm_raw(1000) [lpc313x pwm debug message] pwm to 1000 (24%)
>>> pwm.pwm(50) [lpc313x pwm debug message] pwm to 2047 (49%)
>>> pwm.pwm(1) [lpc313x pwm debug message] pwm to 40 (0%)
>>> pwm.pwm(99) [lpc313x pwm debug message] pwm to 4054 (98%)
root@armv5te:~# rmmod lpc313x_pwm [lpc313x pwm] cleanup