| 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