Search the Community

Showing results for tags 'Waveforms'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • Add-on Boards
    • Scopes & Instruments
    • LabVIEW
    • FRC
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 116 results

  1. Hello, In my waveforms script I am trying to import and run a saved custom 7-bit bus pattern in csv format that I generated from the custom pattern generator. I am able to read the data from the csv, but when I do: Patterns1.Channels.Bus._custom = data all of the data is just written into the first channel of the bus. Is there another format or syntax that should be used when specifying patterns for custom busses?
  2. Hello, I just purchased a Discovery 2 board and am trying to familiarize myself with it and WaveForms (win 10). When I plug the board's waveform generator (pins 1+ and 1-) into the board's scope (pins W1 and GND) and deliver a sin wave, I can view it in WaveForms. However, when I plug the Discovery waveform generator into my Tektronix oscilloscope, I cannot detect any waveform. Similarly, when I plug my Tektronix waveform generator into the Discovery 2 scope and apply a sinusoid, the Discovery 2 cannot measure any waveform. Does anyone know why the discovery 2 board is able to generate/read its own waveform, but it can neither generate/read a waveform that can be detected by other instruments? I have included an image of my wavegen and scope setup windows within WaveForms (when the Discovery 2 waveform generator and scope are connected). Thanks for any suggestions! -John
  3. I see in the documentation that the ADG612 gain switch between high gain and low gain to the ADC. I see in Waveforms Spectrum analyzer that there are many gain options: 0.01x, 0.1x, 1x, 10x, 100x. Which hardware gain setting is used in Waveforms for those gain settings? Thanks!
  4. I want to record data on one channel using the scope tool from WaveForms using the Analog Discovery 2. Additionally, I need to record digital signals on 4 channels at the same time in order to delimit windows for post-processing. Even at a (very) low sampling rate, WaveForms displays "Samples were lost! Reduce sample rate." when I attach some digital channels to the scope tool. Even when the sampling rate is reduced to 1Hz, this error still happens. Is this a WaveForms bug? I put my workspace in attachment to reproduce the issue. scope-digital.dwf3work
  5. I'm using WaveForms (and Javascript) for the first time. My problem is really simple; I measure a voltage signal with the Analog Discovery 2, and want to get a "long" file with data over several seconds. When using the record-function and exporting data, I only get 1000.000 data points with the frequency required, and I can't seem to figure out how to save the raw data in the script. If anyone can help this rookie, I'll be very grateful! I think I'll need a whole new script, but it looks like this right now: ch = Scope.Channel1 var newfile = File("~/Desktop/scope/measure.csv") if(!nyfil.exist()){ var AllData = Date()+","+ch.data+" nyfil.appendLine(AllData) Index++
  6. I need to spy on an SPI connection for a long period of time which will require timestamps on the data to find approximate times of transmission. As this is not possible in Waveforms (which is a real shame) has anyone written any software that uses the SDK to do something similar to this? It would save me a bit a work if there was already an existing solution. - Callum
  7. I'm using the Analog Discovery 2 and on WaveForms 3.8.2 I cannot figure out how to send and receive SPI data. I can read SPI traffic fine through the Logic Analyzer, but I've had no luck with the Protocol analyzer. I have some hardware that I'm debugging that sends commands to a SPI device. The Logic Analyzer tool shows this just fine (below). What I'd like to do is send other SPI commands using the Protocol tab but I've had no luck figuring out how to send commands (properly). As a first step, I'd like to reproduce what I see below in the logic analyzer but do it instead in the protocol tab. As you can see, I just get 0xFFs back in the Protocol window, whereas I'd expect to get 0xD7 0x24 0x12 0x04... Any ideas? I have never been able to get the Protocol tab to work in SPI mode. Has anyone else?
  8. I am using Debian/Jessie on a AMD64 platform. I am unable to use my Analog Discovery because Waveforms does not function any longer. Here are the problems. 1) Both the available versions of Waveforms2 (version 2.9.4 and version 2.7.5) install without problems (using "dpkg -i"). However both versions fail to run because of a missing libdmgr.so.2 library. 2) Adept (version 2.16.5) installs without problem. However Waveforms3 (version 3.4.7) fails to install because it is missing a system menu definition. Is there an existing fix or work around for this ? Are these problems likely to be fixed in the near future ? Just my two cents : I am grateful that Digilent is supporting Linux users and providing Debian packages. However there is much to be desired in the quality of this packaging. There have been similar problems with the Waveforms previously. I do appreciate supporting the difference between multiple Linux distributions can be quite a problem. For software that is offered gratis, such as Waveforms the best solutions is to open source it, under a suitable license so it can be integrated into and customized for each Linux distribution by or with the help of, the maintainers of those distributions. Not to mention the cost savings and community support that Digilent will gain in the process. If this is not a possibility then the next best thing is to create source packages (.spec for rpm and debian directory for deb) that confirm to the packaging policies of few chosen seminal distributions such as Fedora and Debian (stable) and then use build servers (perhaps using docker) that create builds for each version of those distributions on the distribution itself. On Debian, tools such as pbuilder and lintian eliminate a lot of these packaging problems. It seems like the above deb packages are not being built using the Debian packaging system on a Debian system. This is because in trying to included the package into a local Debian package repository (created using reprepro) corrupts the APT dependency metadata.
  9. I am new to the WaveForms software. In browsing the protocol section, it lists CAN. I'm happy and surprised to see this feature. How is this intended to be used? For example, using an external CAN bus transceiver to DIO 0 and DIO 1? A two wire CAN bus is a differential signal (similar to RS485) with clear limits on dominant / recessive states. I am using the Analog Discovery 2 hardware. What are the recommended connections? I'm hoping any responses to this will also apply to the logic analyzer as well. Having a CAN bus decoder would be awesome. WaveForms: 3.8.2 64 bit; Qt 5.6.3; Windows 7 Hardware: Analog Discover 2 Cheers, JMA
  10. Hi, I have been using the Waveforms in Mac to control digital discovery. And I am now familiar with using the scripts in Waveforms. I want to use Tool.start option to run python from Waveforms. Below is the command I am using based on the format. But I haven't been successful with running python. Tool.start("/Users/venkatap/anaconda2/bin/python", "/Users/venkatap/Waveforms_v1/py_files/run_file.py","/tmp/") As all the examples and discussions about this topic are related to windows machine, I wanted to know how to use the Tool.start option in Mac. Kindly assist me with this. Thank you, Praveen
  11. Hi, I've got a question regarding button mode for pin in Static IO instrument. I select a button in "0/1" mode for some pin and expect pin to be high while the button is pressed (all the time until released), and low once released. Instead of that, pin goes high on first press/release of the button and stays high from now on, no matter of any subsequent press/release actions. Opposite is true in "1/0" mode - pin goes low on first press/release and stays low forever. Pin in switch mode (1/0) works as expected. Either I do not understand the function, or there is some bug in the software. Behavior is the same in demo mode and with real Analog Discovery 2. Linux and Windows 10, Waveforms 3.9.1.
  12. Is there source code available for DWFCMD.EXE? I've found source code examples for many other functions using the C++ and python APIs, so I'm just wondering if source code was available for DWFCMD.EXE. It's a really useful program, by the way, and it's made getting up-and-running with the AD2 much faster. But now we have reached a point where it's too slow to call as stand-alone executable. Thanks.
  13. I have an Analog Discovery 2 and am using Waveforms to test circuits, measure voltage and current, model protocols such as I2C, SPI, and CAN. What would the home edition of Labview do to help me? Thanks
  14. Hi, I've captured a set of SPI messages successfully using my Digital Discovery and I would like to export the data so that I can parse it. I've exported the waveforms but this is a huge file which doesn't just give me the events on the SPI but instead the value at each time interval. Ideally I would like to export the contents of the very useful event window. Please could someone tell me if there is a way to do this? Cheers, Andy
  15. Hi, and thanks for the support so far. After a lot of experimenting and reading the help, I'd like to understand the "envelope" of possible triggered, repeated, logged acquisitions, which can run unattended for days or weeks. We need to leave a system in an inaccessible location and log at least 4 analog channels with at least 100 KHz sample rate, for a time of at least 100 usec after the trigger occurs for each triggered event. We believe these events have a time frame of 5 or so 60 Hz cycles, so that's 85 msec post-trigger and we'd like a cycle or two (16 or 32 msec) of pre-trigger. These events are rare and not on a predictable timetable. So we are rather searching for a needle in a haystack and we hope to find evidence it exists. Here I am talking about Scope function (Logger's sample rate of 100 msec is too slow for this case) and there are still many details I don't claim to understand. But since I need to make a report of what is possible with AD2, here goes. Record mode can capture much longer numbers of samples Device manager determines what is possible (e.g. Patterns) but some things seem ignored (e.g. Scope samples) Sample rate, number of samples, and pre-trigger samples are set with the "Config" button with the green diode-like symbol. This is intuitive with a % of total acquisition setting for trigger location. Zooming and scrolling in the display window does not change what you set with the Config button so subsequent captures use the same config. Actual sample rate and length is limited by USB connection speed to the host PC. On a 1.7 GHz dual core Linux with 16 GB RAM and SSD, it seems to be limited to 200 KHz sample rate. At 100 KHz we can capture up to 10 M samples, for a 100 second acquisition Acquisition in "record" mode can only be started with a button click and cannot be triggered by normal scope triggers even though those settings are still present on the GUI. Pressing Record is the only way to start capture and that immediately captures one acquisition. It can't wait for trigger conditions to be met. An acquisition can be saved using the logging settings if set for "each triggered acquisition", even though it really wasn't 'triggered'. Also "each acquisition" works. In record mode, if Device Manager is set to allow it, Patterns can work to use Scope Detector to make an external trigger output on a DIO pin, and this will trigger on the stated conditions but only *after* the Scope Record button is clicked. And I also have to remember to separately click the Pattern Run button or its output won't generate This can only record a single event and you have to click on the Scope Record button to start the acquisition. So Record mode won't work for us. In "repeated" mode, the scope will use the trigger settings Device Manager determines how many samples can be captured: 8K or 16K are the highest options of the 6 available and those seem to be the only ones possible. so it can wait until trigger conditions occur, then capture each time the trigger conditions are met. Sample length is a max of 16384 samples Settings - Options can make one of the trigger pins "Scope" which generates a single rising edge trigger per acquisition, to trigger other AD2s or other logging devices Sample rate and pre-trigger are confusing in repeated mode. It appears they can be set in the Time dialogs, also number of samples, pre-trigger (the "position" setting), but this interacts with the scope display screen: zooming and panning changes your intended settings. There seems to be no way to lock them like on a traditional desktop DSO. It's nothing like Config in Record mode. The display has 10 divisions so if I want to trigger at 2 divisions I'm better off to drag the white triangle on the top of the scope display to 2 divisions from the left. In repeated mode, Trigger takes place at time 0 and pretrigger time is negative. So for 16K samples at 100 KHz, that is about 16 msec/div. Trigger two divisions from left makes the leftmost time -32 msec and Time "Position" 48 msec, which doesn't make any sense to me. Time Base is 16 msec/div as expected. Don't dare zoom in the scope display or the time settings will also change, changing the next triggered acquisition! If you do this by accident its a tedious, multi-click process to get back to the settings you intended. At 100 KHz 16384 samples is 168 msec, long enough for us, we hope. At 8K samples we'd have to drop to 50 KHz samples Clicking Run button means scope will wait for trigger satisfied, then log both channels to PC memory, auto-incrementing the file name File name can include day hour min sec which is handy. Be careful entering this information or Waveforms will crash. I'll post a bug elsewhere. Full timestamp and setting values are included in the .csv log file You specify how many acquisitions to save, at which point logging halts. 1,000,000 is the largest number I could set. Saving workspace sometimes causes a ghost progress window which can be cleared with another save. So Repeated mode will work for us, with the limits of 16K @ 100 KHz samples Each 2-channel 16K log file is about 984 KBytes. As each 16K sample file is a bit under 1 MByte, you get 1000 log files per GB. Summary: For unattended, auto trigger and acquisition of multiple events, and logging to a computer file, "repeated" mode is the only option. We can log two analog channels per AD2, plus digital inputs if we wish. External trigger output: one rising edge per triggered acquisition. Trigger goes low at end of acquisition. Trigger other AD2s or external equipment. Samples per acquisition are 16K or 8K Logging can occur up to the maximum value you set (up to 1 M acquisitions), or the PC runs out of disk space, at about 1 MByte per 16K acquisition.
  16. Hello, I have a first generation Analog Discovery, S/N 210244626692. It recently stopped communicating with my computer. I have tried different USB ports, different cables, and tried a classmate's AD on my computer. The classmate's AD was recognized by Waveforms, but mine was not. Nothing shows up in the Device Manager when my AD is plugged in. -Nat
  17. Hi, I'm working on a WaveForms script which would be able to generate chart with the frequency profile of a liquid. For this, I need to use a Wavegen and a Scope: first I need to set the generator to a certain frequency and then I'd like to check the power of that signal on the scope. Between the probes of the generator and the scope there will be the liquid I would like to test. I created a basic script to step from 1 Hz to 150 Hz, check that signal with the scope, repeat this loop 5 times, and calculate the min, max and average values at each frequency. Although the script works, I have a few questions: * I couldn't find any documentation about the Scope.Channelx.fftmagnitude and fftfrequency arrays. Where should I look for them? Are there any other properties related to the FFT configuration? * Is there a way to set the number of BINs and samples of the scope's FFT? * Can I somehow use the Goertzel algorithm instead of FFT? (The Görtzel algorithm is designed to tell us the power of a signal at one predefined frequency. https://en.wikipedia.org/wiki/Goertzel_algorithm) I would need this to get the power for the exact Hz value I define, and not the closest one I have from the FFT like I do it now. * Is there a way to change the color/style of the charts? Here is the script itself, but bear in mind that it is just the very first version const hzmax = 150; // the maximum frequency to measure const csamples = 5; // the number of samples to measure for each frequency const cdatapoints = 150; // chart X-axis resolution (currently: 1 datapoint / 1 Hz) var datapoints = new Array(4); // datapoint array datapoints[0] = new Array(cdatapoints); // max datapoints[1] = new Array(cdatapoints); // avg datapoints[2] = new Array(cdatapoints); // min datapoints[3] = new Array(cdatapoints * csamples); // raw data // clear the raw data array for(var j = 0; j < cdatapoints * csamples; j++) { datapoints[3][j] = 0; } // generate the freqeuncies to measure var frequencies = new Array(cdatapoints); for(var j = 0; j < cdatapoints; j++) { frequencies[j] = j+1; } { // configure plot plot1.X.Units.text = "Hz"; plot1.X.Offset.value = -hzmax/2 plot1.X.Range.value = hzmax; plot1.Y1.AutoScale.checked = false; plot1.Y2.AutoScale.checked = false; plot1.Y3.AutoScale.checked = false; plot1.Y4.AutoScale.checked = false; const vmax = 1.00; const vmin = 0.98; var offset = -(vmin + (vmax - vmin)/2); var range = (vmax - vmin); plot1.Y1.Offset.value = offset; plot1.Y2.Offset.value = offset; plot1.Y3.Offset.value = offset; plot1.Y4.Offset.value = offset; plot1.Y1.Range.value = range; plot1.Y2.Range.value = range; plot1.Y3.Range.value = range; plot1.Y4.Range.value = range; } { // configure wavegen Wavegen1.Channel1.Mode.text = "Simple"; Wavegen1.Channel1.Simple.Type.text = "Sine"; } { // configure scope Scope1.BufferSize.value = 1; Scope1.Buffer.value = 1; Scope1.Time.Mode.text = "Shift"; Scope1.Channel1.checked = true; Scope1.Channel2.checked = false; } Wavegen1.run(); for (var n=0; n<csamples; n++) { Scope1.Time.Samples.value = 1024; for (var i=0; i<hzmax; i++) { // change the frequency to the next one var frequency = frequencies[i]; Wavegen1.Channel1.Simple.Frequency.text = frequency; Scope1.Time.Rate.value = frequency * 256; print("Frequency: ",frequency," Hz | Running @ ",Scope1.Time.Rate.value," Hz | ", Scope1.Time.Samples.value," samples"); // take a single sample Scope1.single(); Scope1.wait(); // check out the FFT values var rgmag = Scope1.Channel1.fftmagnitude; var rghz = Scope1.Channel1.fftfrequency; var c = rgmag.length; var minHzDistance = frequency; // check all the FFT values, and get the one closest to our inspected frequency for(var j = 0; j < c; j++) { var hz = rghz[j] var hzDistance = frequency - hz; if (hzDistance < 0) { hzDistance = -hzDistance; } if (hzDistance <= minHzDistance) { minHzDistance = hzDistance; datapoints[3][i*csamples + n] = rgmag[j]; } } // calculate the min, max, avg values var rgmin = 1000.0; var rgavg = 0.0; var rgmax = 0.0; var validsamples = 0; for(var j = 0; j < csamples; j++) { currentsample = datapoints[3][i*csamples + j]; if (currentsample != 0) { if (currentsample < rgmin) { rgmin = currentsample; } if (currentsample > rgmax) { rgmax = currentsample; } rgavg += currentsample; validsamples++; } } rgavg /= validsamples; print("Min:",rgmin," V | Avg:",rgavg," V | Max:",rgmax," V | error: +/-",minHzDistance," Hz"); print(); // save the calculated data into their arrays datapoints[0][i] = rgmax; datapoints[1][i] = rgavg; datapoints[2][i] = rgmin; // check if the error if too high if (minHzDistance > 0.5) { Scope1.Time.Samples.value *= 2; i--; } // plot the most recent values on the chart plot1.Y1.data = datapoints[0]; // max plot1.Y2.data = datapoints[1]; // avg plot1.Y3.data = datapoints[2]; // min } }
  18. Waveforms is excelent for setting up data Collection, recording data and save to file. To analyze the data I want to use LabVIEW. Is it possible to read the aquisition files stored by the Waveforms software from LabVIEW? I am using the Analoge Discovery 2 Scope function.
  19. Hello, Learning to create/manage custom scope measurements in Waveforms for the AD2. So far I have created a couple of custom measurements but do not understand how/what is actually going on regarding how they are managed. Any help would be appreciated. Here are the steps I took to create a custom measurement: Added the "stock" Custom Channel measurement Modified it Changed its name to Capacitor Value Saved the script in a directory as a txt file Subsequently: Modified the measurement script (Capacitor Value) some more Changed its name to CapVal Saved the updated script txt file Here is where I am confused: When I go to the Custom Measurement drop down menu is see BOTH custom measurement scripts listed. I had assumed that when I changed the measurement name and saved the modified script by overwriting the script text file that there would be no trace of the original script - but this is not the case. QUESTIONS: How/where are custom measurements saved? Are custom measurement scripts they stored internal to Waveforms based on their name in the measurement editor window? What does the script->save menu do - let you save for off-line editing only? How do you remove custom measurement scripts from the "add measurement" menu? What is the correct way for creating and managing custom measurement scripts? Is there documentation/resources that already exist that can be referred to? Again, any help would be appreciated. Thanks. TerryF
  20. Hi all, I am working on SPI transceiver with AD2 in master mode. I am using python sample codes provided. transmitting is working fine but in receiving i am able to get the signals on wire but not to the variable in python rgwRX = (c_uint16*1)() while True: dwf.FDwfDigitalSpiSelect(hdwf, c_int(4), c_int(0)) dwf.FDwfDigitalSpiRead16(hdwf, c_int(2), c_int(24),rgwRX, c_int(len(rgwRX))) dwf.FDwfDigitalSpiSelect(hdwf, c_int(4), c_int(1)) print rgwRX[0] I am getting only '0's corresponding signal while receiving tapped on CRO is attached and it is proper but when i try it using Waveforms software it works but i see same signal on wire
  21. Just got my hands on DDiscovery today. Hoping to use it to replace my bulky old logic analyzer for testing my Analog-to-Digital Converters. Initially, I apologize If I tend to write more than I need to. I would like to have the below three functions simultaneously in the Logic Analyzer tab. 1) Synchronous with external clock: To capture 16+ channels using an external clock which would be a DATARDY flag or just sampling clock from my ADC. 2) Trigger-based acquisition 3) Repeat it for number of times while saving to file each time. So far, in Waveforms, I can only get 1) without 2) or 3) and vice versa. So basically, I want : 1) Wait for Trigger 2) If Trigger, start a "SYNCHRONOUS" acquisition 3) Once complete, save to file. 4) If total number of acquisitions not complete, Go back to 1) In Waveforms, if I go to "SYNC" mode, the "trigger options" become disabled. If I go to repeated, it is not "SYNC". To sum up, 1) Can I, using Waveforms, get the above working? 2) If not, is it a hardware limitation? or is it just software. If software, can I write my own script to build the above scenario? Note I am not a software guy, pure analog so will be a big thing for me to get familiar with Java scripting stuff. Sorry again for the long question and thanks in advance. Ahmed
  22. Hi all i am using Analog discovery 2 for communication purpose.(CAN) I tried using the sample code given same as attached. I am using PCAN to send/receive frames to analog discovery 2 , I am sending only one frame with Standard ID : 0x011 and Data: 0xaa 0xbb 0xcc 0xdd 0xee 0xff but i am receiving lot of Frames with the same ID sent, lot of extended remote frames with CRC errors ,etc. I have attached the console output for reference. Can I know why i am facing the issue? I tried same experiment with waveforms still having similar issue. I have attached the screen shot of it. Digital_Can.py CAN_Console.txt
  23. There is a minor bug in Waveforms 3.8.2 in the Impedance Analyzer: the metadata for probe resistance and capacitance seem to be swapped: #ProbeCapacitance: 1.04e+06 Ω #ProbeResistance: 4.3e-11 F Also, the metadata does not include the excitation (amplitude and offset). I would check the beta release of newer versions, but there doesn't seem to be a beta for the Mac OS X, just Windows and Linux.
  24. I was wondering whether it is possible to use the second function generator while the first one is being used for the network analyzer tool. Here is the use case: I'm testing part of a class-D amplifier, in which the triangle wave to the comparator is generated by the second function generator of the Analog Discovery 2. I'd like to use the network analyzer interface to characterize the amplifier, while keeping a fixed triangle wave on channel 2. I realize that there is probably some way to write a script to do this, but it would be nice to have all the GUI of the network analyzer and export.
  25. Hi, I'm trying to measure the capacitance of a sensor, and am using the impedance analyzer tool to do so. If I do not connect anything I notice it sees a 22pF parallel capacitance. Is this because the program does not automatically compensate for the internal 24pF capacitance? EDIT: I am using the Analog Discovery 2 with Waveforms 3.8.2