Jump to content

    

Вопрос по atsamC21 

Привет.

Хочу начать работать с atsamC21 . Начал читать документацию и не понял где написано какой порт за что отвечает. Где pwm, АЦП, comp, swd и т.д. такое ощущение что каждый порт может быть каким угодно.  

Share this post


Link to post
Share on other sites

Скажите есть возможность сделать сброс PWM с помощью аналогового компаратора в MCU SAMС21? 

Share this post


Link to post
Share on other sites
33 минуты назад, Alex_Golubev сказал:

что это такое sercom

В даташите написано, up to six Serial Communication Interfaces (SERCOM)

Share this post


Link to post
Share on other sites

Может подскажите где можно взять примеры кода? Желательно инициализация на регистрах. Так более понятно будет. А то сайт ATmel закрыт. И куда теперь идти за примерами не понятно. 

Share this post


Link to post
Share on other sites
2 hours ago, Alex_Golubev said:

Может подскажите где можно взять примеры кода? Желательно инициализация на регистрах. Так более понятно будет. А то сайт ATmel закрыт. И куда теперь идти за примерами не понятно. 

За продукцией атмела идти теперь надо на сайт микрочипа. Причём уже года три как.

Share this post


Link to post
Share on other sites
On 4/17/2019 at 4:53 PM, Alex_Golubev said:

Может подскажите где можно взять примеры кода? Желательно инициализация на регистрах. Так более понятно будет. А то сайт ATmel закрыт. И куда теперь идти за примерами не понятно. 

У Microchip (теперь уже) есть такая штука - ASF - Advanced software framework. Была как самостоятельная библиотека, так и в составе Atmel Studio.

 

https://habr.com/ru/company/rainbow/blog/275371/

https://www.microchip.com/mplab/avr-support/advanced-software-framework

Share this post


Link to post
Share on other sites

Продолжаю работу над samc21. Первые ошибки 

написал вот такой код запуска генератора.

Спойлер

GCLK->CTRLA.bit.SWRST                = 1  ;   
    while( !GCLK->SYNCBUSY.bit.SWRST )        ;     
   
    OSCCTRL->XOSCCTRL.bit.STARTUP        = 0x6;    
   OSCCTRL->XOSCCTRL.bit.AMPGC          = 1  ;    
   OSCCTRL->XOSCCTRL.bit.GAIN           = 0x3;    
   OSCCTRL->XOSCCTRL.bit.ONDEMAND       = 0  ;     
   OSCCTRL->XOSCCTRL.bit.RUNSTDBY       = 0  ;     
   OSCCTRL->XOSCCTRL.bit.SWBEN          = 0  ;     
   OSCCTRL->XOSCCTRL.bit.CFDEN          = 0  ;     
   OSCCTRL->XOSCCTRL.bit.XTALEN         = 1  ;     
   OSCCTRL->XOSCCTRL.bit.ENABLE         = 1  ;    
   while( !OSCCTRL->STATUS.bit.XOSCRDY )     ;     
   OSCCTRL->INTFLAG.bit.XOSCRDY         = 1  ;    

   OSCCTRL->DPLLCTRLA.bit.ENABLE        = 0  ; 
   while(OSCCTRL->DPLLSYNCBUSY.bit.ENABLE)   ;
      
   OSCCTRL->DPLLRATIO.bit.LDRFRAC       = 12 ;     
   OSCCTRL->DPLLRATIO.bit.LDR           = 4  ;    
   while (OSCCTRL->DPLLSYNCBUSY.bit.DPLLRATIO);
   OSCCTRL->DPLLPRESC.bit.PRESC         = 0x0;     
   while (OSCCTRL->DPLLSYNCBUSY.bit.DPLLPRESC);
      
   OSCCTRL->DPLLCTRLB.bit.DIV           = 0  ;    
   OSCCTRL->DPLLCTRLB.bit.LBYPASS       = 1  ;     
   OSCCTRL->DPLLCTRLB.bit.LTIME         = 0x0;   
   OSCCTRL->DPLLCTRLB.bit.REFCLK        = 0x1;     
   OSCCTRL->DPLLCTRLB.bit.WUF           = 0  ;     
   OSCCTRL->DPLLCTRLB.bit.LPEN          = 0  ;    
   OSCCTRL->DPLLCTRLB.bit.FILTER        = 0  ;    
      
    OSCCTRL->DPLLCTRLA.bit.ONDEMAND      = 0  ;     
    OSCCTRL->DPLLCTRLA.bit.RUNSTDBY      = 0  ;     
    OSCCTRL->DPLLCTRLA.bit.ENABLE        = 1  ;     
   while (OSCCTRL->DPLLSYNCBUSY.bit.ENABLE)  ;
   while( !OSCCTRL->DPLLSTATUS.bit.LOCK )    ;
   
   GCLK->GENCTRL[0].bit.OE = 1;
   GCLK->GENCTRL[0].bit.SRC = GCLK_GENCTRL_SRC_DPLL96M_Val;
   GCLK->GENCTRL[0].bit.GENEN = 1;
   while(!GCLK->SYNCBUSY.bit.GENCTRL0);
   
   
   /************************************************************************/
   /*                              MCLK                                    */
   /************************************************************************/
   
   MCLK->CPUDIV.bit.CPUDIV              =0x01;    
   while( !MCLK->INTFLAG.bit.CKRDY )         ;    
   
   PORT->Group[0].DIRSET.reg = (1 << 27); 
   PORT->Group[0].PINCFG[27].bit.PMUXEN = 1; 
   PORT->Group[0].PMUX[(27>>1)].bit.PMUXO = MUX_PA27H_GCLK_IO0;

 

Кварц генерит 16 МГц. 

На ножки PA27 сигнал с частотой 4 МГц. А должно быть 46 МГц. 
В чем ошибка ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now