diff --git a/src/RpiTx.c b/src/RpiTx.c index e27b6d7..5b071e3 100644 --- a/src/RpiTx.c +++ b/src/RpiTx.c @@ -512,11 +512,14 @@ inline uint32_t FrequencyAmplitudeToRegister2(double TuneFrequency,uint32_t Ampl ctl = (struct control_data_s *)virtbase; // Struct ctl is mapped to the memory allocated by RpiDMA (Mailbox) dma_cb_t *cbp = ctl->cb+NoSample*CBS_SIZE_BY_SAMPLE; - + + if(WaitNanoSecond==0) { if(SampleRate!=0) WaitNanoSecond = (1e9/SampleRate); + else + printf("No samplerate neither Wait..Quit\n"); } // ********************************** PWM FREQUENCY PROCESSING ***************************** @@ -609,18 +612,20 @@ inline uint32_t FrequencyAmplitudeToRegister2(double TuneFrequency,uint32_t Ampl //printf("Ftune %f NbStepPWM=%d NbF1=%d NbF2=%d DelayMini=%d DelayStep=%d DelayMiniStep%d\n",FTunePercentage,NbStepPWM,NbF1,NbF2,DelayMini,DelayStep,DelayMiniStep); //Fill DMA - int BeginShuffle=rand()%(PwmStepDMA-1); //-1 cause last value should always be f2 - for(i=0;isample[NoSample].FrequencyTab[i]=RegisterF1; - ctl->sample[NoSample].FrequencyTab[Shuffle[PwmStepDMA-1][(i+BeginShuffle)%(PwmStepDMA-1)]]=RegisterF1; + if(PwmStepDMA>1) + { + int BeginShuffle=rand()%(PwmStepDMA-1); //-1 cause last value should always be f2 + for(i=0;isample[NoSample].FrequencyTab[i]=RegisterF1; + ctl->sample[NoSample].FrequencyTab[Shuffle[PwmStepDMA-1][(i+BeginShuffle)%(PwmStepDMA-1)]]=RegisterF1; + } + for(i=NbF1DMA;isample[NoSample].FrequencyTab[i]=RegisterF2; + ctl->sample[NoSample].FrequencyTab[Shuffle[PwmStepDMA-1][(i+BeginShuffle)%(PwmStepDMA-1)]]=RegisterF2; + } } - for(i=NbF1DMA;isample[NoSample].FrequencyTab[i]=RegisterF2; - ctl->sample[NoSample].FrequencyTab[Shuffle[PwmStepDMA-1][(i+BeginShuffle)%(PwmStepDMA-1)]]=RegisterF2; - } - ctl->sample[NoSample].FrequencyTab[PwmStepDMA-1]=RegisterF2; //Always finish by f2 to be played later dma_cb_t *cbpwrite=cbp+2; @@ -669,9 +674,7 @@ inline uint32_t FrequencyAmplitudeToRegister2(double TuneFrequency,uint32_t Ampl } } - static int OldIntAmplitude=0; - - + if(IntAmplitude>7) IntAmplitude=7; if(IntAmplitude<0) IntAmplitude=0; ctl->sample[NoSample].Amplitude1=0x5a000000 + (IntAmplitude&0x7) + (1<<4) + (0<<3); @@ -1426,6 +1429,8 @@ int pitx_run( } } + + for(i=0;i