From f448ed0be7a099457fa34bb236595566fc8d54d1 Mon Sep 17 00:00:00 2001 From: F5OEO Date: Thu, 1 Nov 2018 14:25:23 +0000 Subject: [PATCH] Fix amplitude issue --- src/iqdmasync.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/iqdmasync.cpp b/src/iqdmasync.cpp index ffbd55d..d533344 100644 --- a/src/iqdmasync.cpp +++ b/src/iqdmasync.cpp @@ -150,9 +150,9 @@ void iqdmasync::SetIQSample(uint32_t Index,std::complex sample,int Harmon sampletab[Index*registerbysample]=(0x5A<<24)|GetMasterFrac(mydsp.frequency/Harmonic); //Frequency int IntAmplitude=(int)(mydsp.amplitude*8.0)-1; //Fixme 1e4 seems to work with SSB but should be an issue with classical IQ file - int IntAmplitudePAD=0; + int IntAmplitudePAD=IntAmplitude; if(IntAmplitude>7) IntAmplitudePAD=7; - if(IntAmplitude<0) IntAmplitudePAD=0; + if(IntAmplitude<0) {IntAmplitudePAD=0;IntAmplitude=-1;} sampletab[Index*registerbysample+1]=(0x5A<<24) + (IntAmplitudePAD&0x7) + (1<<4) + (0<<3); // Amplitude PAD //sampletab[Index*registerbysample+2]=(Originfsel & ~(7 << 12)) | (4 << 12); //Alternate is CLK @@ -174,13 +174,15 @@ void iqdmasync::SetFreqAmplitudeSample(uint32_t Index,std::complex sample Index=Index%buffersize; sampletab[Index*registerbysample]=(0x5A<<24)|GetMasterFrac(sample.real()/Harmonic); //Frequency - int IntAmplitude=(int)(sample.imag()); //Fixme 1e4 seems to work with SSB but should be an issue with classical IQ file + int IntAmplitude=(int)roundf(sample.imag())-1; //0->8 become -1->7 - int IntAmplitudePAD=0; + int IntAmplitudePAD=IntAmplitude; if(IntAmplitude>7) IntAmplitudePAD=7; - if(IntAmplitude<0) IntAmplitudePAD=0; + if(IntAmplitude<0) {IntAmplitudePAD=0;IntAmplitude=-1;} sampletab[Index*registerbysample+1]=(0x5A<<24) + (IntAmplitudePAD&0x7) + (1<<4) + (0<<3); // Amplitude PAD + //fprintf(stderr,"amp%d PAD %d\n",IntAmplitude,IntAmplitudePAD); + //sampletab[Index*registerbysample+2]=(Originfsel & ~(7 << 12)) | (4 << 12); //Alternate is CLK if(IntAmplitude==-1) {