AD9959 Linear amplitude sweep

I have been struggling to get a linear sweep in amplitude working on my AD9959. Analogous sweeps in frequency and phase are working. I also have implemented a two level modulation in amplitude which is working. There are only a couple register differences between the amplitude linear sweep and the amplitude two level modulation, but i can't find where its going wrong. The profile0 pin just does not seem to start the sweep. 

I've attached a c file that shows my function. Here is the outline -

// set to channel 0

// set starting amplitude
temp = (uint32_t)(startAmp|0x1000); // enable amplitude multiplier
RegisterData[2] = 0x00; // ramp rate
RegisterData[1] = (temp>>8)&0x00ff;
RegisterData[0] = temp&0x00ff;

// channel function register
RegisterData[2] = 0x40; // set to amplitude modulation
RegisterData[1] = 0xc3; // no dwell, linear sweep enable, full scale current mode
RegisterData[0] = 0x21; // sin wave output enable, match pipe delta
WriteToAD9959ViaSpi(CFR_ADD, 3, RegisterData);

// amplitude is 10bit. the CW1 needs to be Msb aligned
temp = (uint32_t) endAmp; // end point
temp = temp << (16-10); // shift so that msb is aligned with the second byte
RegisterData[0] = 0x00; //lsb
RegisterData[1] = 0x00;
RegisterData[2] = temp&0x00ff;
RegisterData[3] = (temp>>8)&0x00ff; //msb
WriteToAD9959ViaSpi(CW1_ADD,4,RegisterData); //update register 10

// ramp rates - it is actually a period between steps
RegisterData[0] = 0xfa; // rising
RegisterData[1] = 0xfa; // falling
WriteToAD9959ViaSpi(LSRR_ADD,2,RegisterData); //update ramp rate register 7

// rising and falling delta words, use msb aligned
temp = (uint32_t) stepAmp; // rising delta
temp = temp << (16-10);
RegisterData[0] = 0x00; //lsb
RegisterData[1] = 0x00;
RegisterData[2] = temp&0x00ff;
RegisterData[3] = (temp>>8)&0x00ff; //msb

WriteToAD9959ViaSpi(RDW_ADD,4,RegisterData); //update rising delta register 8

WriteToAD9959ViaSpi(FDW_ADD,4,RegisterData); //update falling delta register 9

Please help! I'm starting to lose hope