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.
main.cpp
- Committer:
- alj
- Date:
- 2014-01-27
- Revision:
- 1:9c47e011f1bf
- Parent:
- 0:8fc9e66cbabb
- Child:
- 2:24f3bc487c01
File content as of revision 1:9c47e011f1bf:
/* *************************************************************************************
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 ---> P24, P23
: gradient Z ---> 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 width 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
*/