SpinAPI Changelog =========================== Copyright (C) 2005-2010 SpinCore Technologies, Inc. http://www.spincore.com ----------- 2010-07-07 ----------- API Changes: - USB devices are now supported on 64-bit versions of Windows. - USB and PCI devices are now supported on all 32-bit versions of Windows, 2000 and up. - Removed pb_zero_ram() - Added pb_core_clock(...) to declare the clock rate of the PulseBlaster core. -- pb_set_clock(...) is still available, but expected to be removed in future releases. - Legacy functions (those not starting with "pb_") have been removed. Examples: - Several new example programs have been added, including: -- PB24/two_boards.c, an example of using two boards from the same program. -- PBDDS-I-300/pbdds_i_300_bipolar_square_wave.c, an example of synthesizing a bipolar waveform from the DDS. -- Selectable blanking bit has been added to all NMR examples. ----------- 2009-09-25 ----------- API Changes: - Added pb_inst_pbonly64(..) for PulseBlaster cores with more than 32 flag bits. -- Added define to allow MSVC to work properly with the 64-bit types. - API Reference PDF file can now be found in the SpinAPI directory. - A new file "version.h" has been added to the API that contains defines for the API version strings. --The api version must now be specified from the command line when executing Make. - The default Makefile setting is now to build the SpinAPI DLL. - pb_read_status() now returns the status bits with the upper bits masked off. - Online API reference has been updated and can be found at: http://www.spincore.com/CD/spinapi/spinapi_reference/ General: - Updated example programs to handle multiple boards by requesting the user specify a board number. Radio Processor: - Removed subdirectories in the RadioProcessor example program directory. - CPMG batch file now has the ability to turn debugging on/off. - CPMG_README.html now links the user to the appropriate SpinCore webpage. - Hahn_Echo_README.html now links the user to the appropriate SpinCore webpage. - Hahn_Echo batch file now has the ability to turn debugging on/off. - SinglePulse_NMR batch file now has the ability to turn debugging on/off. - singlepulse_nmr.bat has been changes so that the default filename is now "spnmr." This is to improve compatibility with FELIX. Installer Changes: - The SpinCore Logo has been added to the Installer. - A prompt will no longer be displayed when installing device drivers. The installer will report that it is installing device drivers instead. - Updated SpinAPI installer to check for previously installed SpinAPI versions, and request an uninstall (this is to prevent incorrect directory structures/file version mixing.) - Updated SpinAPI installer to install into C:\ directory with administrative permissions. Uninstaller Changes: - The uninstaller has been updated to remove ALL files/directories after requesting user acknowledgement. ----------- 2009-08-06 ----------- - Added all NMR parameters to Felix header in function pb_write_felix(...) ----------- 2009-07-08 ----------- - Added support for RadioProcessor PCI design 10-22 ----------- 2009-07-06 ----------- - Updated SpinAPI Installer. --Added the option to auto-detect the installed devices. ----------- 2009-06-29 ----------- - Added support for RadioProcessor PCI design 10-21. - Added support for RadioProcessor PCI design 15-2. - Added support for RadioProcessor USB design 12-15. - Added support for PBDDS-II USB design 14-2. - Updated handling for multiple USB boards. ----------- 2009-06-10 ----------- - Added support for RadioProcessor PCI design 10-20. - Added pb_fft_find_resonance(...) function. ----------- 2009-06-03 ----------- -Added support for the new 17-06 design. NOTE: 17-05 MUST use 2009-05-21. ----------- 2009-05-21 ----------- PulseBlaster Interpreter - Updated Help->Read Me to show updated Documentation SpinAPI Examples - Message appears if more than one board is found by pb_count_boards(). - Example programs now call pb_stop() when program is exited. - pb_init() sets spinerr if no boards are found in system. - Added a pause after pb_init() error so user can read the error before console closes. ----------- 2009-05-20 ----------- - Added PB-Quad_Core500 directory (in \SpinAPI\PB-Quad_Core\PB-Quad_Core500) - Moved 250 MHz Quad Core examples to \SpinAPI\PB-Quad_Core\PB-Quad_Core250) ----------- 2009-05-06 ----------- - Updated debugging output to now have a single log file per board. ----------- 2009-05-04 ----------- - Updated general/read_firmware.c to support multiple boards. - Updated singlepulse_nmr.c. - Doubled usb burst write speed. ----------- 2009-03-30 ----------- - Updated SpinAPI for new FIR filter design. ----------- 2009-03-25 ----------- - Added reset, trigger, example3_8bit programs to PBESR-PRO-II directory ----------- 2009-03-24 ----------- - Added PBESR-PRO-II directory and examples - Added pb_inst_hs8(...) and pb_inst_hs24(...) functions for PulseBlasterESR-Pro-II designs ----------- 2009-02-23 ----------- - Resolved PulseBlaster detection issue - Resolved Delay/Sleep issue in USB-PTS Controller GUI and standalone executables ----------- 2009-02-20 ----------- - Updated USB-PTS Controller GUI and Manual ----------- 2009-02-17 ----------- - Updated USB-PTS Controller .exe and .tcl, added frequency sweep functionality - Removed infinite sweep problem - Removed rounding error ----------- 2009-02-16 ----------- - Updated USB-PTS Controller .exe and .tcl, added frequency sweep functionality ----------- 2009-02-13 ----------- - Updated examples for USB-PTS ----------- 2009-02-12 ----------- - Updated examples for USB-PTS ----------- 2009-02-10 ----------- - Incorporated SpinPTS functions into SpinAPI - Added SpinPTS_Examples directory - RadioProcessor - Improved rounding in CIC decimation calculation - PCI - Improved counting method for PCI cards ----------- 2009-01-27 ----------- - Added PulseBlaster-Quad_Core functionality - added the following functions: - pb_select_core(...) function - pb_4C_inst(...) function - pb_4C_stop() function - added PB-Quad_Core directory and examples: to ..\SpinAPI\PB-Quad_Core - pb-Quad_Core_example1.c - pb-Quad_Core_example2.c - pb-Quad_Core_example3.c - pb-Quad_Core_example4.c ----------- 2009-01-21 ----------- - Updated PBDDS-II example program(s): ..\SpinAPI\PBDDS-II\dds2_excite_test.c ..\SpinAPI\PBDDS-II\dds2_startAddress_default.c ..\SpinAPI\PBDDS-II\dds2_TTLflag_default.c - Added PBDDS-II example program(s): ..\SpinAPI\PBDDS-II\dds2_TTL_only.c ----------- 2009-01-14 ----------- - Modified pb_setup_filters(..) to use the correct minimum decimation amount for the CIC filter settings. - Added function "pb_get_wait_time( double ACD_FREQ, int nPoints, int DECIMATION)" to calculate the appropriate time to wait for data acquisition. ----------- 2008-11-18 ----------- - Modified FFT function: int pb_fft(int n, int *real_in, int *imag_in, double *real_out, double *imag_out, double *mag_fft); ----------- 2008-11-14 ----------- - Changed amplitude value scale to prevent the maximum amplitude from causing a 180 degree phase shift. - Added FFTW Library (www.fftw.org) to the SpinAPI package for FFT support. - Added FFT function: int pb_fft(int n, int *real_in, int *imag_in, int *real_out, int *imag_out, float *mag_fft); - Added RadioProcessor CYCLOPS averaging example (RadioProcess\CYCLOPS). ----------- 2008-11-07 ----------- - Added support for design 10-19 (1024 Frequency, 1024 Amplitude, 8 Phase, 10K IMW) - Added "pb_debug.c" program in the "General" directory. - Added "pbdds_i_300_amplitude_sweep.c" in the "PBDDS-I-300" directory to demonstrate an amplitude register sweep. - Updated the SpinAPI indentation scheme. ----------- 2008-10-09 ----------- - Added support for on-the-fly register programming. ----------- 2008-09-23 ----------- - Updated error reporting features of SpinAPI. ----------- 2008-09-18 ----------- -Added support for Firmware revision 10-18. ----------- 2008-07-14 ----------- RadioProcessor: - Added CPMG directory with example and information ----------- 2008-07-09 This version is only for PulseBlasterDDS-II boards. ----------- PBDDS-II: - Added more example programs ----------- 2008-06-21 ----------- PBDDS-II - Corrected PBDDS-II Amplitude Register problem. ----------- 2008-06-12 ----------- PBDDS-II - Added PBDDS-II folder with example. - Added interrupt functions for boards that support it. ----------- 2008-05-21 ----------- RadioProcessor: - Added "DirectCapture.c." This is an example program on utilizing the direct ram capture feature of the RadioProcessor. - Updated the commenting in "SinglePulse_NMR.c." - USB Transfers will now timeout if the board is disconnected unexpectedly. ----------- 2008-05-13 ----------- usb.c,driver-usb-windows.c,spinapi.c,if.c, util.h - Improved USB Transfer rates. - Added support for 12-8 and 12-9 Firmware revisions. - Updated debug logging. ----------- 2008-02-10: ----------- if.c, caps. - Added support for PB-DDS-I-300 PCI Card with 1024 Frequency registers and 8 phase registers (Firmware version 10-17.) ----------- 2008-02-09: ----------- if.c, caps.c - Added support for the PB-DDS-I-300 PCI Card with 1024 Frequency Registers and 4 Phase Registers. Acquisition is disabled (Firmware version 10-16.) ----------- 2008-01-29: ----------- singlepulse_nmr.c - Undersampling will now use the correct folded frequency. ----------- 2007-12-14: ----------- USB Driver: - Added Windows Vista Support. USB Boards will now function properly on 32-bit Vista computers. ----------- 2007-09-13: ----------- RadioProcessor: - Added singlepulse_nmr.c, singlepulse_nmr.h, singlepulse_nmr_example.bat. ----------- 2007-09-04: ----------- PBDDS-I-300: - Updated pb_inst_dds() and pb_inst_dds_shape() to increase functionality. ----------- 2007-08-03: ----------- PBDDS-I-300: - Added support in caps.c - changed some attributes of board struct - Support for PBDDS-I-300 instruction format added to pb_inst_radio_shape() - Added pb_inst_dds() and pb_inst_dds_shape() which are the same as radio without the aquision paramters(cos, sin, trigger_scan) ----------- 2007-07-18: ----------- iSpin: - Added iSpin test programs. USB boards: - Updated USB Transfer Code to increase download speed and efficiency. ----------- 2007-07-11: ----------- All boards: - Updated JCAMP-DX file formatting. USB boards: - Improved USB transfer code to utilize less memory. ----------- 2007-04-20: ----------- RadioProcessor: - Added a new optional command to pb_setup_filters function: users may now enter NARROW_BW in the 'cmd' field, which will result in a narrower input bandwidth (3-stage CIC filter instead of the default 1-stage CIC filter). For more information, please see the pb_setup_filters section of the SpinAPI Reference document. All boards: - Installation procedure bugfixes ----------- 2007-04-11: ----------- Changed installation procedure - All SpinCore boards are automatically uninstalled from Device Manager when software installation begins. Boards are then then scanned for after install completes. ----------- 2007-02-28: ----------- Support for several new firmware revisions ----------- 2007-02-13: ----------- Support for new product added: USB PulseBlaster Plus! (v2) ----------- 2006-12-13: ----------- Note for PulseBlaster Interpreter users: - Please upgrade to the latest version of the Interpreter (20061213) at this time RadioProcessor: - Support for new firmware revision - 0pb_set_radio_control(FORCE_AVG) can now be called to force averaging across separate scans (firmware 10-14) ----------- 2006-10-20: ----------- RadioProcessor: - Support for two new firmware revisions - pb_set_radio_control(BNC0_CLK) can now be called to exercise BNC clock output capability on certain models ----------- 2006-10-09b: ----------- Note for PulseBlaster Interpreter users: - Please upgrade to the latest version of the Interpreter (20061009) at this time RadioProcessor: - Acquisition parameters added to ASCII output files - pb_write_ascii(...) deprecated; use pb_write_ascii_verbose(...) instead - pb_write_ascii(...) can still be used, but will write a zero on the 'Spectrometer Frequency' line in the ASCII output file. - Appropriate changes made to example programs PulseBlasterESR: - Status readback issue fixed Example Programs: - New directory structure - All programs now feature on-screen text descriptions ----------- 2006-08-24: ----------- Updated existing example programs and added new example for PBESR boards. 'FF Fix' behavior modified to subtract rather than add to prevent rollover. ----------- 2006-07-20: ----------- Added support for new firmware revisions with 'FF' fix : 8-5, 10-11, 10-12 and 12-3 (PulseBlasterESR, RadioProcessor TRX-I 75-75-150, RadioProcessor TRX-I 50-75-300 and RadioProcessorUSB, respectively) ----------- 2006-07-06: ----------- For boards that have not been updated with the PB Core 'FF' fix, spinapi will continue to add an extra clock cycle in the situations described below under 2006-06-13b. For boards without firmware registers (PB24/16/12, Some PB-ESRs, PB-Plus!, ISA boards), there is no way for spinapi to know if the board has been fixed and so the behavior described under 2006-06-13b will continue as well. If you have one of these boards and if it has had the 'PB Core FF fix' performed, please add 'pb_bypass_FF_fix(1);' to the beginning of your pulse programs. More information about this new function is available in the spinapi documentation at: http://www.pulseblaster.com/CD/spinapi/spinapi_reference/ ----------- 2006-06-20: ----------- Support for several new firmware revisions ------------ 2006-06-13b: ------------ All Products: - temporary workaround in PB core (extra clock cycle added to all delays ending in 0xFF except 0x0FF) - if you downloaded the original version of 2006-06-13, please download 2006-06-13b instead. - this 'extra clock cycle' behavior will be removed when the counter problem is fixed in firmware ----------- 2006-06-12: ----------- RadioProcessor: - Updates for support of custom firmware 10-10 ----------- 2006-06-01b: ----------- Minor bugfixes for PB-ESR example programs ----------- 2006-06-01: ----------- RadioProcessor: - Added JCAMP-DX output capability - Modified RadioProcessor examples so that they output the JCAMP-DX files in addition to ASCII and Felix PBESR-PRO: - cosmetic fix for longdelaytest.c ----------- 2006-05-24: ----------- RadioProcessor: - Support for latests PCI firmware revisions - Bugfixes for USB board ----------- 2006-05-18: ----------- RadioProcessor: - Test parameters are now written into the Felix files along with the acquired data. ( viewable by clicking Process -> Edit Title ) ----------- 2006-05-08: ----------- RadioProcessor: - Bugfixes for RadioProcessor USB board ----------- 2006-05-04: ----------- RadioProcessor: - Support for boards without data acquisition (firmware 10-7) ----------- 2006-05-03: ----------- RadioProcessor: - Support for AWG-Capable boards (firmware 10-5,10-6) - Support for RadioProcessor USB board (Windows only) ----------- 2006-03-21: ----------- RadioProcessor: - pb_setup_cic() incorrectly set the m parameter to the opposite of the intended value. This has been fixed. - As a side effect of the above, the default settings for the CIC filter used by pb_setup_filters() is now stages=1, m=1. Previous versions of the documentation erroneously indicated that m=2 was used as the setting - pb_init() no longer resets the internal registers of the RadioProcessor. This allows, for example, separate programs to configure the board, and start the experiment - A new function, pb_reset_defaults() has been introduced which does reset the internal registers. This should be called immediately after pb_init() in all cases, except when you are sure the board is already configured properly and you don't want to change it (for example, in a standalone program which simply starts and experiment with pb_start() based on already configured programs) ----------- 2006-02-20: ----------- All boards: - Linux now supported ----------- 2006-02-06: ----------- All boards: - Updates Windows Drivers. NOTE: YOU WILL NEED TO UPDATE THE CURRENTLY INSTALLED DRIVERS, SEE THE SPINAPI INSTALLATION DOCUMENTATION FOR HELP ----------- 2005-12-12: ----------- All boards: - General documentation enhancements, and improvements to compilation documentation. - pb_sleep_ms() function added to provide a portable sleep function RadioProcessor: - Issue with pb_get_data() occasionally returning incorrect data points is fixed. - Issue with phase registers occasionally getting incorrectly set is fixed. ----------- 2005-11-03: ----------- All Boards: - New directory general/ which contains two new programs: pb_start and pb_stop. These work with all boards and will trigger and stop the board respectively. RadioProcessor: - Updates to support latest firmware revision (10-4) - New function pb_scan_count() which can be used to determine the progress of a multiple-scan experiment ----------- 2005-10-03: ----------- All boards: - Rounding behavior for instruction length updated to round to the nearest value rather than always rounding down. For example, on a 100MHz board, entering 99ns will round up to 100ns instead of down to 90ns. This was done to make spinapi more intuitive and easy to use, but if you have existing code which relies on the old behavior and don't wish to change it, please contact us. pb_set_phase(), and pb_set_freq() were also modified in this way. - pb_inst_direct() function added to allow low-level creation of instructions ------------ 2005-08-18c: ------------ PulseBlaster24: - Support for PB02PC board revision added ------------ 2005-08-18b: ------------ PulseBlasterDDS: - Bug with programming PHASE_REGS_0 fixed ---------- 2005-08-18: ---------- RadioProcessor: - excite_test program updated to have shorter pulses - support for segmenting ram added (see pb_set_scan_segments()) ---------- 2005-08-10: ---------- General - Documentation updates RadioProcessor - Updated example program - New default filter configuration (and pb_setup_filters() syntax changed) ----------- 2005-07-07b: ----------- - Comments in PulseBlasterESR examples clarified. ---------- 2005-07-07: ---------- - Changelog started. All SpinCore products are now officially supported with this spinapi release.