attila

Technical Forum Moderator
  • Content Count

    2407
  • Joined

  • Last visited

  • Days Won

    169

Everything posted by attila

  1. Hi @Ondrej 1. You can find in the newer software version numeric option for Protocol/ UART TX RX https://analogdiscovery.com/download/ https://forum.digilentinc.com/topic/8908-waveforms-beta-download/ 2. You can find rich text editor under View/ Notes in most of the instruments, Scope, Spectrum, Network, Logic Analyzer... For simple notes you can also use the Script editor.
  2. Hello, Sorry but I don't have LabView installed. You can use the Python examples as pseudo-code.
  3. Hello, See the examples in WF SDK/ samples/ py/ DigitalOut_Clock.py AnalogOut_Sync.py AnalogOut_Sine.py To trigger digital-out on analog-out use: FDwfDigitalOutTriggerSourceSet(hdwf, 7) trigsrcAnalogOut1
  4. Hi @S.Kagawa With the default acquisition mode when the FDwfAnalogInStatus returns done it also rearms the instrument. This is done to improve the capture rate.
  5. Hi @vinodcxlv You have functions to read data from binary and text file, see the examples and Help tab. The Script tool supports JSON if you want to use it, but it does not apply settings from such data.
  6. Hi @thoriam On the BNC adapter the Scope inputs are single ended. The negative inputs are connected to the same ground as the AWG GND/shield. For high frequency or low amplitude signals it is recommended to connect the scope probe ground clip too. When measuring other devices/circuits, with separate supply, the ground connection is mandatory. The trimmer on this scope probe is on BNC side, in parallel. When you have connected this side to the AWG it didn't count because of the low impedance of the AWG output. Other probes which have the trimmer in series on the 9M, on the tip side, the direction is less essential but important Picture source: https://www.electronics-notes.com/articles/test-methods/oscilloscope/scope-probe-compensation.php
  7. Hi @vinodcxlv The 'sensor' tab is for sensors, ADCs. The timing of the loop function is precise, given by the device and it is identical in each cycle. The software reads the response of the devices. You can use the 'custom' tab or the Script tool to read the file and send it over SPI. See the examples and Help tab.
  8. Hi @Lesiastas Public Shared Function AD2_RecordStart(ByVal hdwf As Integer, ByVal fReconfigure As Integer, ByVal fStart As Integer, ByVal fReadData As Integer, ByRef sts As Byte, ByVal cSamples As Integer, ByVal cBuffer As Integer, ByRef cAvailable As Integer, ByRef cLost As Integer, ByRef cCorrupted As Integer, ByRef rgData() As Byte) As Integer 'Record Parameters ReDim rgData(cSamples) Dim fOverflow As Boolean : fOverflow = False Dim iSample As Integer : iSample = 0 Dim cIdle as Integer = 0 Dim nIdle as Integer = 3*100 ''''' 100 bit long idle If cSamples > cBuffer Then ' record While iSample < cSamples If FDwfDigitalInStatus(hdwf, fReadData, sts) = 0 Then Return 0 End If If sts = DwfStateDone Or sts = DwfStateTriggered Then FDwfDigitalInStatusRecord(hdwf, cAvailable, cLost, cCorrupted) If cLost <> 0 Or cCorrupted <> 0 Then fOverflow = True End If cAvailable = Math.Min(cAvailable, cSamples - iSample) Dim rgTemp(cAvailable) As Byte ' in other programming languages use pass pointer to rgData[iSample] FDwfDigitalInStatusData(hdwf, rgTemp, 1 * cAvailable) For i = 0 To cAvailable - 1 rgData(iSample) = rgTemp(i) iSample = iSample + 1 If (rgTemp(i) & 3) = 3 cIdle += 1 Else cIdle = 0 End If Next If cIdle > nIdle Exit While End If End If If sts = DwfStateDone Then Exit While End If End While Else While True If FDwfDigitalInStatus(hdwf, 1, sts) = 0 Then Return 0 End If If sts = DwfStateDone Then Exit While End If End While iSample = rgData.Length FDwfDigitalInStatusData(hdwf, rgData, 1 * rgData.Length) End If End Function
  9. Hi @enliteneer The ROM logic has 60-70ns pipeline delay and the software read/write would have about 1ms delay, variable due to USB/OS.
  10. Hi @Jared The compensations are stored in project/workspace. You can save such for each device and/or circuit setup. The IA module uses generic resistors 0.1% 0603. This is not a metrology device. The measurement accuracy depends on the scope input voltage, but the math gives good results. Here is a ceramic cap of 39pF nominal, trace is compensated and ref 1 is not.
  11. Hi @piotrp The Network Analyzer uses FFT to measure the gain and phase in each step. I don't think you need any additional filter for this.
  12. Hi @enliteneer You can use the ROM logic in Pattern Generator for such purpose, see:
  13. Hi @thoriam You probably have the AC/DC coupling jumpers on the BNC adapter board in AC position, set this to DC.
  14. Hi @Ondrej The communication error probably was cause by USB contact issue, slightly moving the cable or device had disconnected the device. You could quickly eliminate the device and circuit offset error with the "Zero offset" from the Options dropdown under Time or separately for each channel under the channel's gear menu.
  15. Hi @KD8CGH Both compensations should be done having the reference resistor connected. The open compensation should be done without the DUT: W1-C1 <open> C2-R-GND The short compensation should be done with the DUT place shorted: W1-C1 <short> C2-R-GND
  16. Hi @ad2user2019 If you want to troubleshoot the device, you could verify the ferrite beads are ok. You should measure about zero ohm when the device is unpowered, and about 5V between VBUS and GND when connected to USB. The next to verify would be the USB controller power rails. Analog supply switch, IC20, when the device is detected but you get error during connection to the device. Internal rails, in case the oscilloscope reading and/or AWG outputs are wrong:
  17. Hi @Lesiastas For variable length of transfers you could detect the end of transmission by looking for long idle on UART lines during data reception. This depends on your project... Dim cIdle as Integer = 0 Dim nIdle as Integer = cSamplePerBit*100 ''''' 100 bit long idle ... For i = 0 To cAvailable - 1 If (rgTemp(i) & 3) = 3 cIdle += 1 Else cIdle = 0 End If ... Next ... ''''' UART lines are idle for long time it is probably end of transmission If cIdle > nIdle Exit While End If
  18. Hi @S.Kagawa Depending on the configuration and inputs the state can be: ready (configured and not started or stopped), config (doing internal configuration), prefill (pre-trigger stage), armed (waiting for trigger), triggered=running (post-trigger stage), done See the examples in the WF SDK/ samples/ py and the manual: You could also send or post your code.
  19. Hi @ssm I think it would be easier first to experiment with the WaveForms application, on how can you filter the signal or to extract the information you need from it. The device-circuit offset error can be eliminated with a zero offset option, measuring the average with shorted input then using this as deltaAD2 to subtract from measurement. You can also try Math channels, low/high/band-pass filters, FFT view, or Spectrum Analyzer tool.
  20. Hi @laurent The trigger and the received data samples are bit field sets, each value or sample representing a channel: fs/sample = [bit-0/channel-0] [bit-1/channel-1]... dwf.FDwfDigitalInTriggerSet(hdwf, c_int(0), c_int(0), c_int(0x0003), c_int(0x0003)) This will trigger on rinsing or falling edge of channel-0 or 1: 0x0003 = (1<<1) | (1<<0) In case you use the DIOs first on the Digital Discovery FDwfDigitalInInputOrderSet(hdwf, 1) it will trigger on DIO-24 or 25 otherwise on DIN-0 or 1.
  21. Hi @drc1 The easiest would be writing a java-script in the Protocol/I2C/Custom or Script tool. See the Examples in these and the Help Tab/ Script. You can also use the WF SDK for custom application or script. See the SDK/ samples/ py/ Digital_I2c.py or Digital_I2c_PmodAcl.py or Digital_I2c_PmodGyro.py examples.
  22. You could also use the Pattern Generator ROM Logic for such logic or state machine operations:
  23. Hi @PhilFriday The WF beta version adds option to change the mouse wheel direction: https://forum.digilentinc.com/topic/8908-waveforms-beta-download/ c = rgData.length for(var i = 0; i < c; i++){ // not DIO-0 or not DIO-1 rgValue[i] = !(rgData[i]&1) || !(rgData[i]&2); // set flag other than zero for valid data rgFlag[i] = 1; }
  24. Hi @Lesiastas No. You should leave it as it is. From your question I thought you are using the WF application. To reduce the device connection/opening latency use the on-close param. To 'intelligently' stop the recording process you could analyzer the received data chunks (samples) and when there is no UART activity on the lines for X time (N samples). This depends on you project...
  25. Hi @fonak I thank you for the observation.