Skip to content

Commit

Permalink
Generated gh-pages for commit 0a72b2a
Browse files Browse the repository at this point in the history
Merge: 7dd2170 8397d37
Author: Jens Hedegaard Nielsen <[email protected]>

    Merge pull request #1307 from jenshnielsen/alazar_read_write_register
  • Loading branch information
Documentation Bot committed Oct 17, 2018
1 parent 54d7855 commit bd98745
Show file tree
Hide file tree
Showing 27 changed files with 1,446 additions and 1,329 deletions.
Binary file modified _images/Implementing_doND_using_the_dataset_10_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified _images/Implementing_doND_using_the_dataset_13_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified _images/auto_color_scale_20_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified _images/auto_color_scale_22_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified _images/auto_color_scale_24_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified _images/auto_color_scale_26_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 46 additions & 1 deletion _modules/qcodes/instrument_drivers/AlazarTech/ATS.html
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,16 @@ <h1>Source code for qcodes.instrument_drivers.AlazarTech.ATS</h1><div class="hig

<span class="bp">self</span><span class="o">.</span><span class="n">_ATS_dll</span><span class="o">.</span><span class="n">AlazarWaitAsyncBufferComplete</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_ATS_dll</span><span class="o">.</span><span class="n">AlazarReadRegister</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">),</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_ATS_dll</span><span class="o">.</span><span class="n">AlazarWriteRegister</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_ATS_dll</span><span class="o">.</span><span class="n">AlazarBeforeAsyncRead</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_long</span><span class="p">,</span>
Expand Down Expand Up @@ -1154,7 +1164,42 @@ <h1>Source code for qcodes.instrument_drivers.AlazarTech.ATS</h1><div class="hig
<span class="k">elif</span> <span class="n">byte_rep</span> <span class="ow">in</span> <span class="n">sixteen_channels</span><span class="p">:</span>
<span class="k">return</span> <span class="mi">16</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;Invalid channel configuration supplied&#39;</span><span class="p">)</span></div></div>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;Invalid channel configuration supplied&#39;</span><span class="p">)</span></div>


<span class="k">def</span> <span class="nf">_read_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Read a value from a given register in the Alazars memory</span>

<span class="sd"> Args:</span>
<span class="sd"> offset: Offset into he memmory to read from</span>

<span class="sd"> Returns:</span>
<span class="sd"> The value read as en integer</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">output</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">pwd</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">(</span><span class="mh">0x32145876</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_call_dll</span><span class="p">(</span><span class="s1">&#39;AlazarReadRegister&#39;</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_handle</span><span class="p">,</span>
<span class="n">offset</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">output</span><span class="p">),</span>
<span class="n">pwd</span><span class="p">)</span>
<span class="k">return</span> <span class="n">output</span><span class="o">.</span><span class="n">value</span>

<span class="k">def</span> <span class="nf">_write_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Write a value to a given offset in the Alazars memory</span>

<span class="sd"> Args:</span>
<span class="sd"> offset: The offset to write to</span>
<span class="sd"> value: The value to write</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">pwd</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint32</span><span class="p">(</span><span class="mh">0x32145876</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_call_dll</span><span class="p">(</span><span class="s1">&#39;AlazarWriteRegister&#39;</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_handle</span><span class="p">,</span>
<span class="n">offset</span><span class="p">,</span>
<span class="n">value</span><span class="p">,</span>
<span class="n">pwd</span><span class="p">)</span></div>


<div class="viewcode-block" id="Buffer"><a class="viewcode-back" href="../../../../api/generated/qcodes.instrument_drivers.AlazarTech.html#qcodes.instrument_drivers.AlazarTech.ATS.Buffer">[docs]</a><span class="k">class</span> <span class="nc">Buffer</span><span class="p">:</span>
Expand Down
72 changes: 70 additions & 2 deletions _modules/qcodes/instrument_drivers/AlazarTech/ATS9360.html
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,11 @@
<div itemprop="articleBody">

<h1>Source code for qcodes.instrument_drivers.AlazarTech.ATS9360</h1><div class="highlight"><pre>
<span></span><span class="kn">from</span> <span class="nn">.ATS</span> <span class="k">import</span> <span class="n">AlazarTech_ATS</span>
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">distutils.version</span> <span class="k">import</span> <span class="n">LooseVersion</span>
<span class="kn">import</span> <span class="nn">warnings</span>

<span class="kn">from</span> <span class="nn">.ATS</span> <span class="k">import</span> <span class="n">AlazarTech_ATS</span>
<span class="kn">from</span> <span class="nn">.utils</span> <span class="k">import</span> <span class="n">TraceParameter</span>

<span class="kn">from</span> <span class="nn">qcodes.utils</span> <span class="k">import</span> <span class="n">validators</span>
Expand All @@ -171,6 +175,7 @@ <h1>Source code for qcodes.instrument_drivers.AlazarTech.ATS9360</h1><div class=

<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">samples_divisor</span> <span class="o">=</span> <span class="mi">128</span>
<span class="n">_trigger_holdoff_min_fw_version</span> <span class="o">=</span> <span class="s1">&#39;21.07&#39;</span>

<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="n">dll_path</span> <span class="o">=</span> <span class="s1">&#39;C:</span><span class="se">\\</span><span class="s1">WINDOWS</span><span class="se">\\</span><span class="s1">System32</span><span class="se">\\</span><span class="s1">ATSApi.dll&#39;</span>
Expand Down Expand Up @@ -490,10 +495,73 @@ <h1>Source code for qcodes.instrument_drivers.AlazarTech.ATS9360</h1><div class=
<span class="n">initial_value</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
<span class="n">vals</span><span class="o">=</span><span class="n">validators</span><span class="o">.</span><span class="n">Ints</span><span class="p">(</span><span class="n">min_value</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span>


<span class="bp">self</span><span class="o">.</span><span class="n">add_parameter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;trigger_holdoff&#39;</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="s1">&#39;Trigger Holdoff&#39;</span><span class="p">,</span>
<span class="n">docstring</span><span class="o">=</span><span class="n">f</span><span class="s1">&#39;If enabled Alazar will &#39;</span>
<span class="n">f</span><span class="s1">&#39;ignore any additional triggers &#39;</span>
<span class="n">f</span><span class="s1">&#39;while capturing a record. If disabled &#39;</span>
<span class="n">f</span><span class="s1">&#39;this will result in corrupt data. &#39;</span>
<span class="n">f</span><span class="s1">&#39;Support for this requires at least &#39;</span>
<span class="n">f</span><span class="s1">&#39;firmware version &#39;</span>
<span class="n">f</span><span class="s1">&#39;</span><span class="si">{self._trigger_holdoff_min_fw_version}</span><span class="s1">&#39;</span><span class="p">,</span>
<span class="n">vals</span><span class="o">=</span><span class="n">validators</span><span class="o">.</span><span class="n">Bool</span><span class="p">(),</span>
<span class="n">get_cmd</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_trigger_holdoff</span><span class="p">,</span>
<span class="n">set_cmd</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_set_trigger_holdoff</span><span class="p">)</span>



<span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_idn</span><span class="p">()[</span><span class="s1">&#39;model&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="n">model</span> <span class="o">!=</span> <span class="s1">&#39;ATS9360&#39;</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;The Alazar board kind is not &#39;ATS9360&#39;,&quot;</span>
<span class="s2">&quot; found &#39;&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;&#39; instead.&quot;</span><span class="p">)</span></div>
<span class="s2">&quot; found &#39;&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;&#39; instead.&quot;</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">_get_trigger_holdoff</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="n">fwversion</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_idn</span><span class="p">()[</span><span class="s1">&#39;firmware&#39;</span><span class="p">]</span>

<span class="k">if</span> <span class="n">LooseVersion</span><span class="p">(</span><span class="n">fwversion</span><span class="p">)</span> <span class="o">&lt;</span> \
<span class="n">LooseVersion</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_trigger_holdoff_min_fw_version</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>

<span class="c1"># we want to check if the 26h bit (zero indexed) is high or not</span>
<span class="n">output</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_read_register</span><span class="p">(</span><span class="mi">58</span><span class="p">))</span>
<span class="c1"># the two first two chars in the bit string is the sign and a &#39;b&#39;</span>
<span class="c1"># remove those to only get the bit pattern</span>
<span class="n">bitmask</span> <span class="o">=</span> <span class="nb">bin</span><span class="p">(</span><span class="n">output</span><span class="p">)[</span><span class="mi">2</span><span class="p">:]</span>
<span class="c1"># all prefixed zeros are ignored in the bit conversion so the</span>
<span class="c1"># bit mask may be shorter than what we expect. in that case</span>
<span class="c1"># the bit we care about is zero so we return False</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">bitmask</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">27</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>

<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="nb">bin</span><span class="p">(</span><span class="n">output</span><span class="p">)[</span><span class="o">-</span><span class="mi">27</span><span class="p">])</span>

<span class="k">def</span> <span class="nf">_set_trigger_holdoff</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">fwversion</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_idn</span><span class="p">()[</span><span class="s1">&#39;firmware&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="n">LooseVersion</span><span class="p">(</span><span class="n">fwversion</span><span class="p">)</span> <span class="o">&lt;</span> \
<span class="n">LooseVersion</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_trigger_holdoff_min_fw_version</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">f</span><span class="s2">&quot;Alazar 9360 requires at least firmware &quot;</span>
<span class="n">f</span><span class="s2">&quot;version </span><span class="si">{self._trigger_holdoff_min_fw_version}</span><span class="s2">&quot;</span>
<span class="n">f</span><span class="s2">&quot; for trigger holdoff support. &quot;</span>
<span class="n">f</span><span class="s2">&quot;You have version </span><span class="si">{fwversion}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">current_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_read_register</span><span class="p">(</span><span class="mi">58</span><span class="p">)</span>

<span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
<span class="c1"># to enable trigger hold off we want to flip the</span>
<span class="c1"># 26th bit to 1. We do that by making a bitwise or</span>
<span class="c1"># with a number that has a 1 on the 26th place and zero</span>
<span class="c1"># otherwise. We use numpy.unit32 instead of python numbers</span>
<span class="c1"># to have unsigned ints of the right size</span>
<span class="n">enable_mask</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">26</span><span class="p">)</span>
<span class="n">new_value</span> <span class="o">=</span> <span class="n">current_value</span> <span class="o">|</span> <span class="n">enable_mask</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># to disable trigger hold off we want to flip the</span>
<span class="c1"># 26th bit to 0. We do that by making a bitwise and</span>
<span class="c1"># with a number that has a 0 on the 26th place and 1</span>
<span class="c1"># otherwise</span>
<span class="n">disable_mask</span> <span class="o">=</span> <span class="o">~</span><span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">26</span><span class="p">)</span>
<span class="n">new_value</span> <span class="o">=</span> <span class="n">current_value</span> <span class="o">&amp;</span> <span class="n">disable_mask</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write_register</span><span class="p">(</span><span class="mi">58</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span></div>
</pre></div>

</div>
Expand Down
Loading

0 comments on commit bd98745

Please sign in to comment.