add gcd division, change led blink

This commit is contained in:
TT 2016-09-17 23:48:18 +09:00
parent 7b3b28f8af
commit 57efd8b7e7
2 changed files with 11 additions and 12 deletions

16
main.c
View file

@ -46,8 +46,9 @@ static THD_FUNCTION(Thread1, arg)
palSetPadMode(GPIOC, 13, PAL_MODE_OUTPUT_PUSHPULL);
while (1)
{
systime_t time = serusbcfg.usbp->state == USB_ACTIVE ? 250 : 500;
palClearPad(GPIOC, 13);
systime_t time = 500;
if (serusbcfg.usbp->state != USB_ACTIVE)
palClearPad(GPIOC, 13);
chThdSleepMilliseconds(time);
palSetPad(GPIOC, 13);
chThdSleepMilliseconds(time);
@ -129,7 +130,8 @@ static void cmd_time(BaseSequentialStream *chp, int argc, char *argv[])
static const DACConfig dac1cfg1 = {
init: 2047U,
//init: 2047U,
init: 1922U,
datamode: DAC_DHRM_12BIT_RIGHT
};
@ -179,7 +181,7 @@ void i2s_end_callback(I2SDriver *i2sp, size_t offset, size_t n)
int16_t *p = &rx_buffer[offset];
(void)i2sp;
(void)n;
palSetPad(GPIOC, GPIOC_LED);
//palSetPad(GPIOC, GPIOC_LED);
if (request_dump > 0) {
if (request_dump == 1)
@ -195,7 +197,7 @@ void i2s_end_callback(I2SDriver *i2sp, size_t offset, size_t n)
stat.last_counter_value = cnt_s;
#endif
stat.callback_count++;
palClearPad(GPIOC, GPIOC_LED);
//palClearPad(GPIOC, GPIOC_LED);
}
static const I2SConfig i2sconfig = {
@ -227,6 +229,7 @@ static void cmd_data(BaseSequentialStream *chp, int argc, char *argv[])
#else
int16_t *buf = dump_buffer;
request_dump = 3;
palClearPad(GPIOC, GPIOC_LED);
while (request_dump)
;
for (i = 0; i < AUDIO_BUFFER_LEN; ) {
@ -235,6 +238,7 @@ static void cmd_data(BaseSequentialStream *chp, int argc, char *argv[])
}
chprintf(chp, "\r\n");
}
palSetPad(GPIOC, GPIOC_LED);
#endif
}
@ -385,10 +389,12 @@ int main(void)
while (1)
{
if (SDU1.config->usbp->state == USB_ACTIVE) {
//palSetPad(GPIOC, GPIOC_LED);
thread_t *shelltp = chThdCreateFromHeap(NULL, SHELL_WA_SIZE,
"shell", NORMALPRIO + 1,
shellThread, (void *)&shell_cfg1);
chThdWait(shelltp); /* Waiting termination. */
//palClearPad(GPIOC, GPIOC_LED);
}
chThdSleepMilliseconds(1000);
}

View file

@ -238,12 +238,6 @@ si5351_set_frequency_fixeddiv(int channel, int pll, int freq, int div,
int32_t pllfreq = freq * div;
int32_t multi = pllfreq / XTALFREQ;
int32_t num = pllfreq - multi * XTALFREQ;
#if 0
//int32_t denom = 1000000;
int32_t denom = 520000;
int32_t k = XTALFREQ / denom;
num /= k;
#else
int32_t denom = XTALFREQ;
int32_t k = gcd(num, denom);
num /= k;
@ -252,7 +246,6 @@ si5351_set_frequency_fixeddiv(int channel, int pll, int freq, int div,
num >>= 1;
denom >>= 1;
}
#endif
si5351_setupPLL(pll, multi, num, denom);
si5351_setupMultisynth(channel, pll, div, 0, 1, drive_strength);
}