示例#1
0
def main():
    # setup wiringpi
    if wipi.wiringPiSetup():
        print("Failing to setup wiringPi")
        sys.exit()

    # wPi Port 24 corresponds to Phys Pin 35
    PWM_PORT = 24

    # parameters to compute frequency
    RANGE = 480
    DIVISOR = 2

    # duty cycle percentage
    PERCENTAGE_DUTY_CYCLE = 40

    # duty_cycle = ( range * duty_cycle(%) ) / 100
    DUTY_CYCLE = (RANGE * PERCENTAGE_DUTY_CYCLE) / 100

    #*** setting PWM parameters **
    # sets port to ALT MODE-5
    FSEL_ALT5 = 0b010
    wipi.pinModeAlt(PWM_PORT, FSEL_ALT5)

    # sets Mark/Space mode
    wipi.pwmSetMode(wipi.GPIO.PWM_MODE_MS)

    # frequency = 19.2e6 / ( DIVISOR x RANGE )
    wipi.pwmSetRange(RANGE)
    wipi.pwmSetClock(DIVISOR)
    #***

    # generates PWM at a determined duty cycle
    wipi.pwmWrite(PWM_PORT, DUTY_CYCLE)

    F_BASE = 19.2e6
    FREQUENCY_OUT = F_BASE / (RANGE * DIVISOR)
    print("PWM output pin: 35")
    print("PWM frequency: {} Hz".format(FREQUENCY_OUT))
    print("PWM duty cycle: {}".format((DUTY_CYCLE * 100) / RANGE))

    c = raw_input("To finish, press \'Enter\'")
    # turns off pwm output
    wipi.pwmWrite(PWM_PORT, 0)
示例#2
0
def read_ATR(serial):
    wiringpi.pinMode(TX, INPUT)
    wiringpi.pullUpDnControl(TX, PUD_UP)
    first = wiringpi.millis()

    data_str = ''
    while (wiringpi.millis() - first) < 100:
        if wiringpi.serialDataAvail(serial) > 0:
            first = wiringpi.millis()
            data = wiringpi.serialGetchar(serial)
            if (data < 16):
                data *= 16
            data_str += ('{:02x}'.format(data)) + ' '

    wiringpi.pullUpDnControl(TX, PUD_OFF)
    wiringpi.pinModeAlt(TX, 4)

    data_str = data_str.lstrip('00')
    return data_str
示例#3
0
def read_response(serial, ser, length):
    wiringpi.pinMode(TX, INPUT)
    wiringpi.pullUpDnControl(TX, PUD_UP)

    first = wiringpi.millis()
    wiringpi.delay(50)

    ## Save all the data from RX excluding bounced data
    data_list = []
    num_ser = wiringpi.serialDataAvail(serial)
    while (wiringpi.millis() - first) < 100:
        if wiringpi.serialDataAvail(serial) > 0:
            first = wiringpi.millis()
            data = wiringpi.serialGetchar(serial)
            if (wiringpi.serialDataAvail(serial) < (num_ser - length)):
                data_list.append('{:02x}'.format(data))

    wiringpi.pullUpDnControl(TX, PUD_OFF)
    wiringpi.pinModeAlt(TX, 4)
    return data_list
示例#4
0
    def __restore_gpio_pins__(self):
        """ Restore HW I2C functionality on GPIO pins 2 & 3 """

        wiringpi.pinModeAlt(3, 4) # restore ALT0 functionality on SCL pin
        wiringpi.pinModeAlt(2, 4) # restore ALT0 functionality on SDA pin
        self.BusActive = False