agaelema

Members
  • Content Count

    13
  • Joined

  • Last visited


Reputation Activity

  1. Like
    agaelema reacted to attila in Frequency Limitation on Impedance tool   
    Hi @Cleber Borges
    You can apply lower frequencies with WF v3.7.15:
    https://forum.digilentinc.com/topic/8908-waveforms-beta-download/
     
  2. Like
    agaelema reacted to Piotr Rzeszut in Using Digilent Analog Discovery in Orange Pi PC PLus   
    I have successfully made AD2 running on Orange PI PC Plus.
    I have also configured VNC (over WiFI) using the tutorial: https://diyprojects.io/armbian-access-remote-desktop-orange-pi-vnc/#.Wn7FXq7T5hF
    BUT VERY IMPORTANT - do not use/install tightvncserver - instead use vnc4server. There are issues with keyboard input in tightvnc & QT.
    sudo apt-get install vnc4server  
  3. Like
    agaelema reacted to M_VdM in Small Computer/OS for the AD2   
    Hi @Old Printer
    RPi support is still dead in the water ... but there is a VIABLE ALTERNATIVE !!!
    I can confirm the findings of forum user @agaelema: it works fine on an Orange Pi PC plus.
    See this Forum Post for all the details: Using Digilent Analog Discovery in Orange Pi PC PLus
    Merry Christmas !
  4. Like
    agaelema reacted to attila in Waveforms software and Python script at same time   
    Hi @agaelema
    You can find some examples under Protocol/ SPI | I2C / Custom.
    In order to have access to other instruments you will have to access Protocol functions from Script tool. Here the functions need to be prepended with Protocol.SPI or .I2C
    First open and configure the Protocol SPI or I2C (frequency, pins...) and select Custom tab. Then run the script which uses the SPI or I2C functions, like:
    Protocol.SPI.Start(); // activate CS Protocol.SPI.Write(8, [0x0A]); // write to MOSI, 0x0A as 8 bit command var rg = Protocol.SPI.Read(32, 4); // read from MISO 4 words of 32 bits Protocol.SPI.Stop(); // deactivate CS Scope1.Time.Base.value = 0.000001*rg[0] // use value as micro second From Script only the UART Send/TX function is available:
    Protocol.UART.Send("Hello\n")  
  5. Like
    agaelema reacted to attila in Waveforms software and Python script at same time   
    Hi @agaelema
    The device can be accessed by only one application at a time.
    However you could use the Script tool to create such features.
    - connect the physical buttons to DIO and use simple button or create a microcontroller project which processes the knob signals and communicates with the script using SPI, I2C..
    - create a separate application/script which communicates using file with the Script tool. Your application writes to a file the knob position and the script periodically checks the current value and adjust the interface option by the difference.
    Here DIO 0 increases and DIO 1 decreases the time base.

     
    function find125(val){ var si = sign(val) var val2 = pow(10, ceil(log10(abs(val)))); if(val <= val2/5) return val = si*val2/5; if(val <= val2/2) return val = si*val2/2; return si*val2; } while(wait(0.1)){ if(StaticIO.Channel0.DIO0.Input.value == 1){ // up Scope1.Time.Base.value = find125(Scope1.Time.Base.value*2); wait(0.5); } if(StaticIO.Channel0.DIO1.Input.value == 1){ // down Scope1.Time.Base.value = find125(Scope1.Time.Base.value/3); wait(0.5) } }  
  6. Like
    agaelema reacted to Alex in FIR filter on Waveforms   
    Question from the customer: 
    Can you add a math channel which depends on more than one sample of the input channel. For example, applying a window function to calculate the average of the last 10 samples, FIR filtering, etc. Would also be nice to see some basic support for FIR and IIR filters in the oscilloscope math channels; 


    Answers:
    For such purpose the Scope Logging tool can be used.

    The following script applies a filter to one channel data and saves it as reference channel.

    function doRef(ch, ref, fir){ var cfir = fir.length; {// normalize window area var vol = 0; fir.forEach(function(v){vol+=v;}); for(var i = 0; i < cfir; i++){ fir[i] = fir[i]/vol; } } ref.enable = true; // clone to have proper information (sample rate...) // save and restore offset value var voff = ref.Offset.value; ref.Clone(ch); ref.Offset.value = voff; // workaround to get all data not only visible one var sb = Scope.Time.Base.value; Scope.Time.Base.value = 1; var rg = ch.data; Scope.Time.Base.value = sb; var rgf = []; var crg = rg.length; var crg1 = crg-1; var cfir2 = round(cfir/2); for(var i = 0; i < crg; i++){ var v = 0; for(var j = 0; j < cfir; j++){ var ij = i+j-cfir2; if(ij<0) ij = 0; if(ij>=crg1) ij = crg1; v += rg[ij]*fir[j]; } rgf[i] = v; } ref.data = rgf; } // source store fir window doRef(Scope.Channel1, Scope.Ref1, [1,2,1]); doRef(Scope.Channel1, Scope.Ref2, [1,2,4,8,4,2,1]);
  7. Like
    agaelema reacted to attila in Problem with average samples   
    Hi @agaelema
    Currently you can use the script for such purpose:
     
  8. Like
    agaelema reacted to attila in Problem with average samples   
    Hi @agaelema
    Sorry for this problem. It is fixed for the next software release.
    Thank you for the observation.