SHARE
TWEET

Untitled

a guest Jul 17th, 2017 54 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <compiler.h>
  3. #include <sysclk.h>
  4. #include <board.h>
  5. #include <gpio.h>
  6. #include <delay.h>
  7. #include <pwm.h>
  8.  
  9. void boardLED() {
  10.     int frequency = 10;
  11.     float duty = 0.1;
  12.     int state = 0;
  13.  
  14.     while(true) {
  15.         gpio_toggle_pin(LED0);
  16.  
  17.         delay_ms(duty*frequency);
  18.  
  19.         gpio_toggle_pin(LED0);
  20.  
  21.         delay_ms(frequency-(duty*frequency));
  22.  
  23.         if(state == 0) {
  24.             duty+=0.1;
  25.            
  26.             if(duty >= 1) {
  27.                 duty = 1;
  28.                 state = 1;
  29.             }
  30.             } else {
  31.             duty-=0.1;
  32.  
  33.             if(duty <= 0) {
  34.                 duty = 0;
  35.                 state = 0;
  36.             }
  37.         }
  38.     }
  39. }
  40.  
  41. void PWMLED() {
  42.     struct pwm_config pwmc[1];
  43.  
  44.     pwm_init(&pwmc[0], PWM_TCC0, PWM_CH_A, 500);
  45.     pwm_start(&pwmc[0], 50);
  46.  
  47.     int state = 0;
  48.     int duty = 0;
  49.  
  50.     while(true) {
  51.         if(state == 0) {
  52.             duty++;
  53.            
  54.             pwm_start(&pwmc[0], duty);
  55.            
  56.             if(duty == 100) {
  57.                 state = 1;
  58.             }
  59.             } else {
  60.             duty--;
  61.  
  62.             pwm_start(&pwmc[0], duty);
  63.  
  64.             if(duty == 0) {
  65.                 state = 0;
  66.             }
  67.         }
  68.  
  69.         delay_ms(5);
  70.     };
  71. }
  72.  
  73. int main(void)
  74. {
  75.     sysclk_init();
  76.     board_init();
  77.  
  78.     OSC.CTRL |= OSC_RC32MEN_bm; // Change to RC32KEN_bm or RC2MEN_bm
  79.      while (!(OSC.STATUS & OSC_RC32MRDY_bm)); // Change to RC32KRDY_bm or RC2MRDY_bm
  80.      DFLLRC32M.CTRL = DFLL_ENABLE_bm;
  81.      CCP = CCP_IOREG_gc;
  82.      CLK.CTRL = CLK_SCLKSEL_RC32M_gc; // Change to RC32K_gc or RC2M_gc
  83.      OSC.CTRL &= ~OSC_RC2MEN_bm;
  84.  
  85.      PWMLED();      // Output PWM signal to external LED
  86.      //boardLED(); // Output PWM using delay to on-board LED
  87. }
RAW Paste Data
Top