Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1.  
  2. #include <avr/io.h>
  3. #include <avr/iom128.h>
  4.  
  5. void setup_dim_pwm() {
  6.  
  7. }
  8. void setup_blink_pwm() {
  9.  
  10. }
  11.  
  12. int main(void)
  13. {
  14. DDRB |= (1 << PB5)|(1 << PB2);
  15.  
  16. ICR1 = 0xFFFF;
  17. // set TOP to 16bit
  18.  
  19. OCR1A = 0x3FFF;
  20. // set PWM for 25% duty cycle @ 16bit
  21.  
  22. OCR1B = 0xBFFF;
  23. // set PWM for 75% duty cycle @ 16bit
  24.  
  25. TCCR1A |= (1 << COM1A1)|(1 << COM1B1);
  26. // set none-inverting mode
  27.  
  28. TCCR1A |= (1 << WGM11);
  29. TCCR1B |= (1 << WGM12)|(1 << WGM13);
  30. // set Fast PWM mode using ICR1 as TOP
  31.  
  32. TCCR1B |= (1 << CS10);
  33. // START the timer with no prescaler
  34.  
  35.  
  36. // 2nd counter
  37. OCR2A = 128;
  38. // set PWM for 50% duty cycle
  39. TCCR2A |= (1 << COM2A1);
  40. // set none-inverting mode
  41. TCCR2A |= (1 << WGM21) | (1 << WGM20);
  42. // set fast PWM Mode
  43. TCCR2B |= (1 << CS21);
  44. // set prescaler to 8 and starts PWM
  45.  
  46.  
  47. while (1);
  48. {
  49. // we have a working Fast PWM
  50. }
  51. }
  52.  
  53. // this code sets up counter2 for an 8kHz Fast PWM wave @ 16Mhz Clock
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement