впервые запускаю плату на этом чудесном проце. Тактирование от внешнего генератора 16мГц.
инициализация тактирования такая:
CODE
SYSCTRL->XOSC.reg=SYSCTRL_XOSC_STARTUP(0x04) | SYSCTRL_XOSC_ENABLE | SYSCTRL_XOSC_GAIN(0x4) | SYSCTRL_XOSC_AMPGC | SYSCTRL_XOSC_RUNSTDBY; //XCLK ON
while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_XOSCRDY)){};
GCLK->CTRL.reg = GCLK_CTRL_SWRST ;
while ( (GCLK->CTRL.reg & GCLK_CTRL_SWRST) && (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) ); /* Wait for reset to complete */
// wait states = 0
NVMCTRL->CTRLB.reg= NVMCTRL_CTRLB_CACHEDIS;
GCLK->GENCTRL.reg = GCLK_GENCTRL_ID_GCLK0 | GCLK_GENCTRL_SRC_XOSC | GCLK_GENCTRL_GENEN; //SWITCH XCLK TO GCLK0
GCLK->GENCTRL.reg = GCLK_GENCTRL_ID_GCLK1 | GCLK_GENCTRL_SRC_XOSC | GCLK_GENCTRL_GENEN | GCLK_GENCTRL_OE; //EXT_ADC_CLK
GCLK->GENDIV.reg = GCLK_GENDIV_ID_GCLK0 | GCLK_GENDIV_DIV(1);//DIV=1
GCLK->GENDIV.reg = GCLK_GENDIV_ID_GCLK1 | GCLK_GENDIV_DIV(2);//DIV=2 (EXT_ADC)
PM->CPUSEL.reg = 0;//DIV=1
PM->APBASEL.reg = 0 ;
PM->APBBSEL.reg = 0 ;
PM->APBCSEL.reg = 0 ;
далее в цикле делаю такую хрень:
CODE
CYCLE:
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
PORTA.OUTTGL.reg = LED_RED;
goto CYCLE;
смотрю на такт и на порт LED_RED и вижу, что порт дергается синхронно с тактом и ровно в 4 раза медленнее, хотя по инструкции по идее должен дрыгаться за 1 такт.
При этом внешние такты на АЦП и на SPI выдаются такие как я и задал.
Что я делаю не так?