Перейти к содержанию
    

Вопрос по atsamC21 

Привет.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 минуты назад, Alex_Golubev сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Alex_Golubev said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаю работу над 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 МГц. 
В чем ошибка ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...