예제 #1
0
def static_tests_sweep(num_bits=7,
                       offset=0.5,
                       tau=6,
                       plot_decision_tree=False,
                       bucketsize=20,
                       steps=None):

    datasize = int(bucketsize * 2**num_bits)
    input_axis = np.linspace(0, 2**num_bits, datasize)
    output_axis = np.zeros(shape=(datasize, ), dtype=int)
    output_axis2 = np.zeros(shape=(datasize, ), dtype=int)
    counter = 0
    while counter < datasize:
        adcinstance = ADC(tau=tau, num_bits=num_bits)
        adc2 = ADC(tau=tau, num_bits=num_bits)
        #adcinstance.set_fsm_steps(weird_steps)
        adc2.set_fsm_steps(steps)
        inputvoltage = input_axis[counter] + offset
        adcinstance.run_1_adc_sample(vin=inputvoltage)
        adc2.run_1_adc_sample(vin=inputvoltage)
        plots = adcinstance.return_transient_results()
        plots2 = adc2.return_transient_results()
        output = int(adcinstance.return_output())
        output2 = int(adc2.return_output())
        if (plot_decision_tree):
            print(output)
            helper.plot_transients(plots, vin=None)
            helper.plot_transients(plots2, vin=None)
        output_axis[counter] = output
        output_axis2[counter] = output2
        counter = counter + 1

    adc_eval.eval_adc_from_arrays(input_axis, output_axis)
    adc_eval.eval_adc_from_arrays(input_axis, output_axis2)
예제 #2
0
 def ADC_init(self):
     from adc import ADC
     self._A0 = ADC(0)
     self._A1 = ADC(1)
     self._A2 = ADC(2)
     self._A3 = ADC(3)
     self._A4 = ADC(4)
     self._A0.DEBUG = 'error'
     self._A1.DEBUG = 'error'
     self._A2.DEBUG = 'error'
     self._A3.DEBUG = 'error'
     self._A4.DEBUG = 'error'
예제 #3
0
    def __init__(self, unix_socket_path, *args, **kwargs):
        self.unix_socket_path = unix_socket_path
        self.connection = None
        self.welcome_socket = None

        spi = SPI(0, 0)
        spi.msh = 2000000
        spi.mode = 1
        self.chs = [0, 1, 2, 3]
        self.ADC0 = ADC("P9_24", spi)
        self.ADC1 = ADC("P9_26", spi)
        self.ADC2 = ADC("P9_28", spi)
        self.ADC3 = ADC("P9_30", spi)
예제 #4
0
파일: rram.py 프로젝트: botimerj/1Rx
    def __init__(self, gp):
        # Global Parameters
        self.gp = gp

        # RRAM Parameters
        self.ron = gp.rram.ron
        self.roff = gp.rram.roff
        self.rvar = gp.rram.rvar
        self.rp = gp.rram.rp

        self.vdiff = gp.rram.von - gp.rram.voff

        self.n_bit = gp.rram.n_bit
        self.rlsb = (self.roff - self.ron) / (2**self.n_bit - 1)
        self.glsb = (1 / self.ron - 1 / self.roff) / (2**self.n_bit - 1)

        self.x = gp.rram.size_x
        self.y = gp.rram.size_y

        # Resistance values
        self.arr = np.empty([self.y, self.x])

        # Digital values
        self.dig_arr = np.empty([self.y, self.x])

        # ADC
        self.adc = ADC(gp, self.n_bit, gp.mvm.active_rows,\
                       self.ron, self.roff, self.rvar, self.vdiff)

        # Energy
        self.e_read = 0
예제 #5
0
 def __init__(self):
     self.logger_setup()
     self.speaker_volume = 70
     self.capture_volume = 100
     tmp = self.power_type
     sleep(0.01)  # when arduino open debug, sleep(> 0.3)
     self.adc = ADC(5)  # Power voltage channel: 5
     self._debug('Init PiSmart object complete')
def get_data_dict(adc_inputs):
    adc = ADC(adc_inputs)
    data_dict = get_time_dict()
    data_dict.update(temp())
    _, adc_dict = adc.read_addresses()
    data_dict.update(adc_dict)
    ultrasonic = Ultrasonic(trigger=3, echo=5)
    data_dict.update(ultrasonic.read_distance())
    return data_dict
예제 #7
0
def time_domain_probe(num_bits=10, offset=0.5, tau=6, vin=0, steps=None):
    adcinstance = ADC(tau=tau, num_bits=num_bits)
    adc2 = ADC(tau=tau, num_bits=num_bits)
    # adcinstance.set_fsm_steps(weird_steps)
    adc2.set_fsm_steps(steps)
    inputvoltage = vin + offset
    adcinstance.run_1_adc_sample(vin=inputvoltage)
    adc2.run_1_adc_sample(vin=inputvoltage)
    plots = adcinstance.return_transient_results()
    helper.plot_transients(plots, inputvoltage)

    plots2 = adc2.return_transient_results()
    helper.plot_transients(plots2, inputvoltage)

    output = int(adcinstance.return_output())
    output2 = int(adc2.return_output())
    print('output is ' + str(output))
    print('adjusted output is ' + str(output2))
예제 #8
0
    def __init__(self, id, minc, maxc, m, c):
        self.id = id
        # Connection to ADS1115
        self.adc = ADC()

        # Threshold curves
        self.min_curve = minc
        self.max_curve = maxc

        # Linear approximation of ADC conversion to curve in degrees
        # angle = (adc_value - offset)/gradient
        self.gradient = float(m)
        self.offset = float(c)
예제 #9
0
def get_data_dict(adc_inputs):
    adc = ADC(adc_inputs)
    data_dict = get_time_dict()
    data_dict.update(temp())
    _, adc_dict = adc.read_addresses()
    data_dict.update(adc_dict)
    ultrasonic = Ultrasonic(trigger=trigger_pin, echo=echo_pin)
    u_distance = ultrasonic.read_distance()
    
    if u_distance['u_distance'] <= 20:
        turn_camera_flash(True)
    else:
        turn_camera_flash(False)
    
    data_dict.update(u_distance)
    return data_dict
예제 #10
0
def adc_test():
    tb = TB(adc_p)
    adc = ADC(adc_p, tb)
    tb.submodules += adc

    # cd_dsp4 = ClockDomain("dsp4", reset_less=True)
    # tb.clock_domains += cd_dsp4

    def run(tb):

        dut = tb
        yield tb.i_sdoa.eq(1)
        yield tb.i_sdob.eq(1)
        yield
        yield tb.i_sdob.eq(0)
        yield tb.i_sdoc.eq(1)
        yield tb.i_sdod.eq(1)
        yield
        yield tb.i_sdoc.eq(0)
        yield
        yield tb.i_sdod.eq(0)
        yield
        yield dut.o_bitslip.eq(1)
        yield
        yield dut.o_bitslip.eq(0)
        for i in range(3):
            yield
        yield dut.o_bitslip.eq(1)
        for i in range(3):
            yield
        yield dut.o_bitslip.eq(0)
        yield
        # yield dut.bitslip_done.eq(1)
        # yield dut.i_start.eq(1)

        yield from dut.iter_vals("{:04b}".format(12), "{:04b}".format(2),
                                 "{:04b}".format(1), "{:04b}".format(7))

    run_simulation(
        tb,
        run(tb),
        vcd_name="adc_test.vcd",
        clocks={
            "sys": (8, 0),
            # "dsp4":   (2, 0),
        },
    )
예제 #11
0
from adc import ADC
adc = ADC(11, mosi=10, miso=9, ss=8)

for i in range(5):
    print adc.read(0)

import Adafruit_GPIO.SPI as SPI
#
# spi = SPI.SpiDev(0,0)
# spi.open()
# spi.set_clock_hz(5000)
# spi.set_mode(0)
# spi.set_bit_order(0)
 def __init__(self, address):
     self.adc = ADC([address])
예제 #13
0
        times_g = []
        lats = []
        lat_err = []
        lons = []
        lon_err = []
        alts = []
        alt_err = []

        print("Station %i Trial %i \nPress enter to collect data:" % (i, j))
        pause = input('')
        print("Collecting data...")

        g_data.append(GPS())
        t0 = time.time()
        voltages = ADC()
        t1 = time.time()
        g_data.append(GPS())

        for g in g_data:
            t_g = g[0]
            t_g = str(t_g).split(' ')[1]
            t_g = str(t_g).split('-')[0]
            times_g.append(t_g)

            lats.append(g[1][0])
            lat_err.append(g[1][1])

            lons.append(g[2][0])
            lon_err.append(g[2][1])
def readADC():
    adc = ADC([0])
    return adc.read_addresses()
예제 #15
0
def main(args=None):
    sw = switch_4()
    smb = I2C()
    par = parse()
    adc = ADC()
    pers = _8bitIO()
    port = _16bitIO()
    parser = par.get_parser()
    args = parser.parse_args(args)  #inspect the command line

    err_flag = False

    if ((args.i2c0 and not args.i2c1) or (args.i2c1 and not args.i2c0)):
        try:
            data = smb.parse_func(args.data[0])
        except:
            err_flag = True
            raise
            print('Error parsing or invalid syntax, use "-h" for help')
        if not err_flag:
            if i2c.w_found and not i2c.r_found:
                try:
                    smb.write(data[0], data[1], not args.i2c0) # data[0] is data_i, data[1] is data_w
                    print('ACK')
                except IOError:
                    print('NACK...confirm you are transacting with the correct bus')
                except:
                    raise
                    print('Invalid Syntax')
            if not i2c.w_found and not i2c.r_found:
                try:
                    smb.detect(data[0], not args.i2c0)
                    print('ACK')
                except:
                    print('NACK...confirm you are transacting with the correct bus')
            if i2c.r_found and not i2c.w_found:
                try:
                    smb.read(data[0], data[2], not args.i2c0)
                except IOError:
                    print('NACK...confirm you are transacting with the correct bus')
                except:
                    raise
                    print('Invalid Syntax')
            if i2c.r_found and i2c.w_found:
                smb.write_read(data[0], data[2], data[1], not args.i2c0)

    elif args.gpio and 'getall' in args.data:
        try:
            os.system('raspi-gpio get')
        except:
            print('Invalid syntax')

    elif args.gpio and 'get' in args.data:
        try:
            os.system('raspi-gpio get ' + args.data[1])
            print('Success')
        except:
            print('Invalid syntax')

    elif args.gpio and 'set' in args.data:
        if len(args.data) == 3:
            try:
                os.system('raspi-gpio set ' + args.data[1] + ' ' + args.data[2])
                print('Success')
            except:
                print('Invalid syntax')

        if len(args.data) == 4:
            try:
                os.system('raspi-gpio set ' + args.data[1] + ' ' + args.data[2] + ' ' + args.data[3])
                print('Success')
            except:
                print('Invalid syntax')

        if len(args.data) == 5:
            try:
                os.system('raspi-gpio set ' + args.data[1] + ' ' + args.data[2] + ' ' + args.data[3] + ' ' + args.data[4])
                print('Success')
            except:
                print('Invalid syntax')
    elif args.adc:

        if args.data[0] == 'raw' and len(args.data) == 2:
            try:
                adc.raw_adc(args.data[1])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif args.data[0] ==  'volt' and len(args.data) == 2:
            try:
                print(adc.volt_adc(args.data[1]))
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        else:
            print('Invalid syntax')
    elif args.per:
        if(args.data[0] == 'config'):
            try:
                pers.configPorts()
                print('Success')
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Fail!')
        elif(args.data[0] == 'arm'):
            try:
                pers.arm(args.data[1], False)
                print('Success')
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif(args.data[0] == 'disarm'):
            try:
                pers.arm(args.data[1], True)
                print('Success')
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif(args.data[0] == 'read'):
            try:
                pers.read_inputs()
                print('Success')
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
    elif args.port:
        if(args.data[0] == 'config'):
            try:
                port.configPorts()
                print('Success')
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Fail!')
        elif args.data[0] == 'readall':
            try:
                port.zone_readall(args.data[1])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif args.data[0] == 'read':
            try:
                port.zone_read(args.data[1], args.data[2])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif args.data[0] == 'led':
            try:
                port.led_toggle(args.data[1], args.data[2], args.data[3])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        else:
            print('Invalid syntax')
    elif args.switch:
        if args.data[0] == 'write':
            try:
                sw.ch_write(args.data[1], args.data[2], args.data[3])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif args.data[0] == 'readint':
            try:
                sw.read_int(args.data[1])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')
        elif args.data[0] == 'read':
            try:
                sw.read_dat(args.data[1], args.data[2])
            except IOError:
                print('NACK...confirm device is powered on')
            except:
                print('Invalid syntax')

    else:
        print('Invalid syntax')
예제 #16
0
 def __init__(self, channel):
     self.channel = channel
     self.adc = ADC()