Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 0:8fc9e66cbabb
- Child:
- 1:9c47e011f1bf
diff -r 000000000000 -r 8fc9e66cbabb main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Oct 26 13:38:44 2012 +0000
@@ -0,0 +1,174 @@
+/* *************************************************************************************
+ PGSE_diffusion Basic standard sequence, VERSION 1, October 24th 2012
+ PULSE GRADIENT SPIN ECHO diffusion sequence(or diff_se) to measure diffusion coefficient value.
+ ref : E.O. Stejskal and J.E. tanner, J. Chem. Phys. 42, 288 (1965)
+ THE PGSE SEQUENCE IS
+ 1H ---> 90° - DELTA/2 - 180 - DELTA/2 - FID
+ Gz ---> -- - Gz(sdelta)- DELTA - Gz(sdelta)
+ *************************************************************************************
+ Gradient strength (or duration) must be increase to measure the diffusion coefficient (2D DOSY spectroscopy)
+ The maximum diffusion time (DELAT) is limited by T2 in PGSE.
+ For T1 = T2 the PGSE sequence is usualy the easiest et preferred sequence.
+ For T1 >> Té the PGSTE (PULSE GRADIENT with STIMULATED ECHO) is better, as during most of the diffusion
+ time the magetization evolve prinipaly under T1 relaxtion (magnetization is like stored on Z axis in conventionnal NMR). With PGSTE the maximum
+ diffusion time (DELTA) is limited by T1.
+ IN THIS VERSION THE GRADIENT PULSE DURATION IS USED
+ *************************************************************************************
+
+ DESIGN FOR NXPLPC1768 ARM CORTEX M3 MCU BOARD:
+ INPUT : NONE (reset on board)
+ OUTPUT : ACQU ---> P26 AND LED1
+ : PULSES P1 & P2 ---> P25
+ : Emmitter ---> P24, P23
+ : Transmitter ---> P22, P21
+ ***** IN THIS VERSION RECEIVER AND TRANSMITTER HAVE THE SAME PHASE CYCLE *****
+ *************************************************************************************
+ Alain LOUIS-JOSEPH
+ CNRS
+ Laboratoire de Physique de la Matière Condensée PMC
+ Ecole Polytechnique
+ 91128 Palaiseau CEDEX France
+ *************************************************************************************
+ UNLESS OTHERWISE SPECIFIED THE PARAMETERS OF THE PULSE SEQUENCE ARE SET :
+ D1 : relaxation delay ( ms to s)
+ DELTA : Diffusion time (ms to s)
+ sdelta : Gradient duration
+ D21 : delay of recovery
+ DE : fixed delay before acqusisition (not use)
+ DW : Dwell time period for sampled t2 acquisition time domain
+ D0 : incremenatble delay ( from 1us to s)(t1 time domain dimension for 2D experiment)
+ NS : Number of scan
+ NE : Number of experiment
+ VD : Variable delay using a file list
+ PW : Pulse length (us)
+ P90 : 90° transmitter or decoupler pulse length
+ P180 : 180° transmitter or decoupler pulse length
+ P3 P4 : 90°, 180°, X-nucleus pulses length
+ DO : Decoupler gated off or on
+ HD : HomoDecoupling in time sharing during acqusition
+ HG : HomoGating decoupling with receiver gated OFF
+ BB : Broadband modulation gate
+ CW : Continuous wave
+ FID : Free Induction Decay acquisition (data acquisition for time AQ
+ AQ : Acquisition time (physical t2 acquisition time domain dimension)
+ PHn : Phase for pulse number n (ie : PH1 for pulse P1)
+ PH0 : Receiver phase
+ *************************************************************************************
+
+*/
+
+#include "mbed.h"
+
+#define D1 0.1 /* Relaxation delay in second */
+#define Fs 48000 /* Sample frequency in Hz */
+#define DW 1 /* DW time period in us NOT USE */
+#define NS 1.0 /* 8 accumulations */
+#define DELTA 0.006 /* diffusion dealy in s */
+#define NE 1.0 /* 8 accumulations */
+#define sdelta 0.003 /* gradient duration */
+#define D21 0.001 /* recovery time */
+#define AQ 0.04 /* acquisition time in seconde */
+#define P90 0.00005 /* hard 90° 1H */
+#define IncGsdelta 0.0 /* gradient increment */
+#define stepG 0.0
+
+
+DigitalOut Relaxation(LED1); /* Delay on pin 26 ??? and flash LED1 during relaxation delay */
+BusOut Acqu(p26, LED2) ; /* Start acquisition */
+DigitalOut p1(p25); // HARD PULSE
+DigitalOut p2(p25); /* Only for reason of clarity P2 =2*P1 */
+BusOut PH1PH2(p24, p23) ; // transmitter and receiver phases are the same
+DigitalOut Gsdelta(p22) ; // Gradient Z
+
+int main()
+{
+
+ // while (1) {
+ p1 =0 ;
+ Relaxation = 0 ;
+ Acqu=0x00;
+ PH1PH2=0x00; //0 init
+
+ for (float i = 0.0f ; i < NS ; i += 1.0f) {
+
+ Relaxation = 1; /* LED1 light*/
+ wait(D1); // relaxation
+ Relaxation = 0; // turn off the led
+
+ p1=1;
+ wait(P90); // 90°
+ p1=0;
+
+ Gsdelta = 1;
+ wait(sdelta); //gradient Z;
+ Gsdelta = 0;
+
+ wait(DELTA - sdelta); // diffusion time
+
+ p2=1;
+ wait(2*P90); //180°
+ p2=0;
+
+ Gsdelta = 1;
+ wait(sdelta); //gradient Z;
+ Gsdelta = 0;
+
+
+ wait(D21) ; //recovery time
+
+ Acqu=0x11; // Acquire FID (we can write 3 in decimal)
+ wait(AQ);
+ Acqu=0x00;
+
+ PH1PH2=PH1PH2+1; //Phase cycling
+
+ //IncGsdelta += stepG ;
+
+ }
+
+ }
+//}
+
+/* INCREMENTATION DE LA DUREE D'ECLAIREMENT DE LED1 AVEC PwmOut
+PwmOut led(LED1);
+
+int main() {
+ while(1) {
+ for(float p = 0.0f; p < 1.0f; p += 0.1f) {
+ led = p;
+ wait(0.1);
+ }
+ }
+} */
+
+/* Digital I/O
+
+ DigitalOut - Configure and control a digital output pin.
+ DigitalIn - Configure and control a digital input pin.
+ DigitalInOut - Bi-directional digital pins
+
+ BusIn - Flexible way to read multiple DigitalIn pins as one value
+ BusOut - Flexible way to write multiple DigitalIn pins as one value
+ BusInOut - Flexible way to read/write multiple DigitalIn pins as one value
+
+ PortIn - Fast way to read multiple DigitalIn pins as one value
+ PortOut - Fast way to write multiple DigitalIn pins as one value
+ PortInOut - Fast way to read/write multiple DigitalIn pins as one value
+
+ PwmOut - Pulse-width modulated output */
+
+/* Features
+
+ NXP LPC1768 MCU
+ High performance ARM® Cortex™-M3 Core
+ 96MHz, 32KB RAM, 512KB FLASH
+ Ethernet, USB Host/Device, 2xSPI, 2xI2C, 3xUART, CAN, 6xPWM, 6xADC, GPIO
+ Prototyping form-factor
+ 40-pin 0.1" pitch DIP package, 54x26mm
+ 5V USB or 4.5-9V supply
+ Built-in USB drag 'n' drop FLASH programmer
+ mbed.org Developer Website
+ Lightweight Online Compiler
+ High level C/C++ SDK
+ Cookbook of published libraries and projects
+ */