Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement