Advertisement
Mike057

Untitled

Nov 5th, 2024
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.93 KB | None | 0 0
  1. #include "sam.h"
  2.  
  3.  
  4. int main(void)
  5. {
  6.     /* Initialize the SAM system */
  7.     SystemInit();
  8.    
  9.     //Set flash wait state
  10.     NVMCTRL->CTRLB.bit.RWS = 1;
  11.     //Set oscillator prescaler
  12.     OSCCTRL->OSC48MDIV.reg = OSCCTRL_OSC48MDIV_DIV(0);
  13.     //Set CPU prescaler
  14.     MCLK->CPUDIV.reg = MCLK_CPUDIV_CPUDIV_DIV1;
  15.  
  16.     //Set clock generator 0
  17.     GCLK->GENCTRL[0].reg =
  18.     GCLK_GENCTRL_GENEN |
  19.     GCLK_GENCTRL_SRC_OSC48M;
  20.    
  21.     //EVENTS
  22.     //Main clock
  23.     MCLK->APBCMASK.reg |= MCLK_APBCMASK_EVSYS;
  24.     //Channel 0 clock
  25.     GCLK->PCHCTRL[EVSYS_GCLK_ID_0].reg = GCLK_PCHCTRL_GEN_GCLK0 | GCLK_PCHCTRL_CHEN;
  26.     while (!(GCLK->PCHCTRL[EVSYS_GCLK_ID_0].reg & GCLK_PCHCTRL_CHEN));
  27.     //Reset
  28.     EVSYS->CTRLA.reg = EVSYS_CTRLA_SWRST;
  29.        
  30.     //Channel 0
  31.     EVSYS->CHANNEL[0].reg = EVSYS_CHANNEL_PATH_ASYNCHRONOUS | EVSYS_CHANNEL_EVGEN(EVSYS_ID_GEN_TC1_MCX_0);
  32.     //User 1
  33.     EVSYS->USER[EVSYS_ID_USER_PORT_EV_0].reg = EVSYS_USER_CHANNEL(0);
  34.    
  35.    
  36.     //PORT
  37.     PORT->Group[0].OUTSET.reg = PORT_PA02|PORT_PA03|PORT_PA04|PORT_PA05;
  38.     PORT->Group[0].DIRSET.reg = PORT_PA02|PORT_PA03|PORT_PA04|PORT_PA05;
  39.    
  40.     //TC1
  41.     MCLK->APBCMASK.reg |= MCLK_APBCMASK_TC1;
  42.     GCLK->PCHCTRL[TC1_GCLK_ID].reg = GCLK_PCHCTRL_GEN_GCLK0 | GCLK_PCHCTRL_CHEN;
  43.     while (!(GCLK->PCHCTRL[TC0_GCLK_ID].reg & GCLK_PCHCTRL_CHEN));
  44.    
  45.     //Reset
  46.     TC1->COUNT16.CTRLA.reg = TC_CTRLA_SWRST;
  47.     while (TC1->COUNT16.SYNCBUSY.bit.SWRST);
  48.    
  49.     //16b mode, div 1024
  50.     TC1->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | TCC_CTRLA_PRESCALER_DIV1024;
  51.    
  52.     //Wave mode
  53.     TC1->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MFRQ;
  54.    
  55.     //MCEO0 event
  56.     TC1->COUNT16.EVCTRL.reg = TC_EVCTRL_MCEO0;
  57.    
  58.     //CC0
  59.     TC1->COUNT16.CC[0].reg = 0xFFFF;
  60.     while (TC1->COUNT16.SYNCBUSY.bit.CC0);
  61.    
  62.     //Enable
  63.     TC1->COUNT16.CTRLA.bit.ENABLE = 1;
  64.     while (TC1->COUNT16.SYNCBUSY.bit.ENABLE);
  65.    
  66.     //PA4 toggle on EI0
  67.     PORT->Group[0].EVCTRL.reg = PORT_EVCTRL_PORTEI0 | PORT_EVCTRL_EVACT0(3) | PORT_EVCTRL_PID0(4);
  68.  
  69.     /* Replace with your application code */
  70.     while (1)
  71.     {
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement