Post your MATLAB discussions here
EF_FAU
Newbie
Posts: 0 Joined: Tue Jan 27, 2015 1:47 pm
Post
by EF_FAU » Tue Jan 27, 2015 2:16 pm
Hello,
I'm using a PicoScope 5444B with MATLAB 2014b 64bit (Windows 8.1, Microsoft Windows SDK 7.1 as compiler).
I have a problem by setting the resolution to e.g. 15 bits (16 bits and 8 bits are working).
By trying to set the resolution I get the following error messages in matlab command window:
Copyright (C) Pico Technology Ltd. 2013
PicoScope 5000 Series MATLAB Instrument Driver
Number of units found: 1
Serial number(s): CT276/037
Opening PicoScope 5000 Series device...
Instrument Device Object Using Driver : picotech_ps5000a_generic.mdd
Instrument Information
Type: Oscilloscope
Manufacturer: Pico Technology Ltd.
Model: PicoScope 5000 Series
Driver Information
DriverType: MATLAB generic
DriverName: picotech_ps5000a_generic.mdd
DriverVersion: 1.1.9
Communication State
Status: open
Setting Device Parameters...
Default Channel Setup:-
-----------------------
Channel A:-
Enabled: True
Coupling: DC
Range: 5V
Analogue Offset: 0.0V
Channel B:-
Enabled: True
Coupling: DC
Range: 5V
Analogue Offset: 0.0V
Channel C:-
Enabled: True
Coupling: DC
Range: 5V
Analogue Offset: 0.0V
Channel D:-
Enabled: True
Coupling: DC
Range: 5V
Analogue Offset: 0.0V
Turning off Equivalent Time Sampling...
Turning off trigger...
Default Block mode parameters:-
Timebase index : 65
Time Interval: 0 ns
Number of pre-trigger samples: 0
Number of post-trigger samples: 1024
Total number of samples: 1024
Default Streaming mode parameters:-
Streaming interval: 1.000000e-06 s
Streaming auto stop: 1
Default Signal generator parameters:-
Start frequency: 1000 Hz
Stop frequency: 1000 Hz
Initialisation complete.
Connected to PicoScope 5000 Series device:-
Instrument Model: 5444B
Batch/Serial Number: CT276/037
Analogue Channels: 4
Resolution: 8 bits
Bandwidth: 200 MHz
Buffer memory: 512 MS
Maximum sampling rate: 1 GS/s
Signal Generator Type: Arbitrary Waveform Generator
Power Supply connected: True
ps5000aSetDeviceResolution: Device resolution set to 15 bits.
Error using privateExecuteMCode (line 44)
Operands to the || and && operators must be convertible to logical scalar values.
Error in instrgate (line 20)
[varargout{1:nout}] = feval(varargin{:});
Error in icdevice/invoke (line 70)
output = instrgate('privateExecuteMCode', code, obj, varargin, nargout);
Error in ps5444B_AWG_BlockMode_ChA15bit (line 108)
status.resolution = invoke(ps5000aDeviceObj, 'ps5000aSetDeviceResolution', 15);
Error in PicoScopeTDR_15bit125MS (line 20)
[out_signal_pos] = ps5444B_AWG_BlockMode_ChA15bit(width,0,A,0);
Error in PicoScopeLabor_TDR (line 23)
[u_TDR_p, u_TDR_n, v,step_size,sim_length,x,step,TDR_Plot]= PicoScopeTDR_15bit125MS(A,width,cable_length,steps);
The relating code reads as follows:
Code: Select all
%% LOAD CONFIGURATION INFORMATION
PS5000aConfig;
%% DEVICE CONNECTION
ps5000aDeviceObj = icdevice('picotech_ps5000a_generic','');
% Connect device
connect(ps5000aDeviceObj);
%% DISPLAY UNIT INFORMATION
invoke(ps5000aDeviceObj, 'getUnitInfo');
% Channel A
channelSettings(1).enabled = PicoConstants.TRUE;
channelSettings(1).coupling = ps5000aEnuminfo.enPS5000ACoupling.PS5000A_DC;
channelSettings(1).range = ps5000aEnuminfo.enPS5000ARange.PS5000A_2V;
channelSettings(1).analogueOffset = 0.0;
channelARangeMV = PicoConstants.SCOPE_INPUT_RANGES(channelSettings(1).range + 1);
% Channel B
channelSettings(2).enabled = PicoConstants.TRUE;
channelSettings(2).coupling = ps5000aEnuminfo.enPS5000ACoupling.PS5000A_DC;
channelSettings(2).range = ps5000aEnuminfo.enPS5000ARange.PS5000A_2V;
channelSettings(2).analogueOffset = 0.0;
% Variables that will be required later
channelBRangeMV = PicoConstants.SCOPE_INPUT_RANGES(channelSettings(2).range + 1);
if(ps5000aDeviceObj.channelCount == PicoConstants.QUAD_SCOPE)
% Channel C
channelSettings(3).enabled = PicoConstants.FALSE;
channelSettings(3).coupling = ps5000aEnuminfo.enPS5000ACoupling.PS5000A_DC;
channelSettings(3).range = ps5000aEnuminfo.enPS5000ARange.PS5000A_2V;
channelSettings(3).analogueOffset = 0.0;
% Channel D
channelSettings(4).enabled = PicoConstants.FALSE;
channelSettings(4).coupling = ps5000aEnuminfo.enPS5000ACoupling.PS5000A_DC;
channelSettings(4).range = ps5000aEnuminfo.enPS5000ARange.PS5000A_2V;
channelSettings(4).analogueOffset = 0.0;
end
% Keep the status values returned from the driver.
numChannels = get(ps5000aDeviceObj, 'channelCount');
setChannelStatus = zeros(numChannels, 1);
for ch = 1:numChannels
status.setChannelStatus(ch) = invoke(ps5000aDeviceObj, 'ps5000aSetChannel', ...
(ch - 1), channelSettings(ch).enabled, ...
channelSettings(ch).coupling, channelSettings(ch).range, ...
channelSettings(ch).analogueOffset);
end
%% CHANGE RESOLUTION
status.resolution = invoke(ps5000aDeviceObj, 'ps5000aSetDeviceResolution', 15);
set(ps5000aDeviceObj, 'resolution', 15);
....
How can that problem be solved?
Thanks for support.
Regards
Hitesh
Post
by Hitesh » Wed Jan 28, 2015 10:15 am
Hi EF_FAU,
You appear to be using an old version of the Instrument Driver which had a bug in the ps5000aSetDeviceResolution function.
Please download the latest SDK for your device from:
https://www.picotech.com/downloads
Regards,
EF_FAU
Newbie
Posts: 0 Joined: Tue Jan 27, 2015 1:47 pm
Post
by EF_FAU » Thu Jan 29, 2015 9:19 am
I downloaded the latest SDK.
Now it works.
Thanks!