Jump to content

pawel1010

Newcomers
  • Posts

    1
  • Joined

  • Last visited

pawel1010's Achievements

Newbie

Newbie (1/4)

0

Reputation

  1. I wanted to write a code that should generate trinagle wave with frequency 128 Hz and sawtooth wave with frequency 75 Hz. Voltage of both wave should be in range from 0 to 750 mV. During the generation I wanted to collect 16384 samples with sampling rate 128 samples per second. I create something like this but it doesn't stop: from ctypes import cdll, c_double, c_int # Load the libdwf.so library dwf = cdll.LoadLibrary("libdwf.so") # Constants BUFFER_SIZE = 16384 SAMPLING_RATE = 128 TRIANGLE_FREQ = 128 SAWTOOTH_FREQ = 75 VOLTAGE_RANGE = 0.75 # 750 mV # Configure the Analog Discovery 2 dwf.FDwfDeviceOpen(c_int(-1), c_int(0)) # Set the waveform generator parameters dwf.FDwfAnalogOutNodeEnableSet(c_int(0), c_int(0), c_int(1)) # Enable channel 1 dwf.FDwfAnalogOutNodeFunctionSet(c_int(0), c_int(0), c_int(0)) # Set channel 1 to triangle waveform dwf.FDwfAnalogOutNodeFrequencySet(c_int(0), c_int(0), c_double(TRIANGLE_FREQ)) # Set triangle frequency dwf.FDwfAnalogOutNodeAmplitudeSet(c_int(0), c_int(0), c_double(VOLTAGE_RANGE)) # Set voltage range dwf.FDwfAnalogOutNodeEnableSet(c_int(0), c_int(1), c_int(1)) # Enable channel 2 dwf.FDwfAnalogOutNodeFunctionSet(c_int(0), c_int(1), c_int(1)) # Set channel 2 to sawtooth waveform dwf.FDwfAnalogOutNodeFrequencySet(c_int(0), c_int(1), c_double(SAWTOOTH_FREQ)) # Set sawtooth frequency dwf.FDwfAnalogOutNodeAmplitudeSet(c_int(0), c_int(1), c_double(VOLTAGE_RANGE)) # Set voltage range # Configure the analog input for data collection dwf.FDwfAnalogInChannelEnableSet(c_int(0), c_int(0), c_int(1)) # Enable channel 1 for data collection dwf.FDwfAnalogInChannelRangeSet(c_int(0), c_int(0), c_double(VOLTAGE_RANGE)) # Set voltage range for channel 1 dwf.FDwfAnalogInBufferSizeSet(c_int(0), c_int(BUFFER_SIZE)) # Set buffer size dwf.FDwfAnalogInFrequencySet(c_int(0), c_double(SAMPLING_RATE)) # Set sampling rate # Start the waveform generation and data collection dwf.FDwfAnalogOutConfigure(c_int(0), c_int(1)) dwf.FDwfAnalogInConfigure(c_int(0), c_int(1)) # Wait for data collection to complete while True: status = dwf.FDwfAnalogInStatus(c_int(0), c_int(1)) if status == 2: # Acquisition done break # Read the collected data buffer = (c_double * BUFFER_SIZE)() dwf.FDwfAnalogInStatusData(c_int(0), c_int(0), buffer, BUFFER_SIZE) # Print the collected data for i in range(BUFFER_SIZE): print(buffer[i]) # Stop the waveform generation and data collection dwf.FDwfAnalogOutReset(c_int(0), c_int(1)) dwf.FDwfAnalogInReset(c_int(0), c_int(1)) # Close the Analog Discovery 2 device dwf.FDwfDeviceCloseAll() I don't know what causes such problem. I'll be very grateful for help.
×
×
  • Create New...