Advertisement
Guest User

Cesar Comment maxEmbedded

a guest
Nov 23rd, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. void pwm_init()
  2. {
  3. //Timer1
  4. //top=15000, prescaler=8, frec=50hz (T=20ms)
  5. ICR1=15000;
  6. TCCR1B|=(1<<CS11);
  7.  
  8. //phase and frequency correction, icr1 = top
  9. TCCR1B|=(1<<WGM13);
  10.  
  11. //set OC1A,OC2B on downcounting, clear on upcounting
  12. TCCR1A |= (1<<COM1A1)|(1<<COM1B1);
  13.  
  14. //Timer 2
  15. //top=233, prescaler=1024, frec=50hz (T=20ms)
  16. OCR2A=233;//233
  17. OCR2B=200;//200
  18. TCCR2B|=(1<<CS22)|(1<<CS21)|(1<<CS20);
  19.  
  20. //phase correction, OCR2x = top
  21. TCCR2A|=(1<<WGM22)|(1<<WGM20)|(1<<WGM21);
  22.  
  23. //set OC1A,OC2B on downcounting, clear on upcounting
  24. TCCR2A |=(1<<COM2A1)|(1<<COM2B1);
  25.  
  26. //make sure to make pin as output pin
  27. DDRD |= (1<<PD4);
  28. DDRD |= (1<<PD5);
  29. DDRD |= (1<<PD6);
  30. DDRD |= (1<<PD7);
  31.  
  32. }
  33.  
  34. int get_pulse(int degrees){
  35. return (int)((float)degrees*750/180+750);
  36. }
  37.  
  38. int get_pulset2(int degrees){
  39. return (int)((float)degrees*12/180+12);
  40. }
  41.  
  42. void set_pulse1(int degrees){
  43. OCR1A=get_pulse(degrees);
  44. }
  45.  
  46. void set_pulse2(int degrees){
  47. OCR1B=get_pulse(degrees);
  48. }
  49.  
  50. void set_pulse3(int degrees){
  51. OCR2A=get_pulset2(degrees);
  52. }
  53.  
  54. void set_pulse4(int degrees){
  55. OCR2B=get_pulset2(degrees);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement