Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. /*
  2. .def tmp = r16
  3.  
  4. .cseg
  5. rjmp reset
  6.  
  7. reset:
  8. ldi tmp, high(RAMEND)
  9. out SPH, tmp
  10. ldi tmp, low(RAMEND)
  11. out SPL, tmp
  12.  
  13. ldi tmp, (1 << PD5)
  14. out DDRD, tmp
  15.  
  16. ldi tmp, (1 << COM1A0)
  17. out TCCR1A, tmp
  18.  
  19. ;ldi tmp, (1 << WGM12)
  20. ;out TCCR1B, tmp
  21.  
  22. ; f_clk = 7372800
  23. ; f_oc1a = 2Hz
  24. ;
  25. ; f_oc1a = fclk /( 2 * N * (1 + OCR1A))
  26. ; N * (1 + OCR1A) = f_clk / (2 * f_oc1a)
  27. ; N * (1 + OCR1A) = 7372800 / 4
  28. ; N * (1 + OCR1A) = 1843199
  29. ; 1 * (1 + OCR1A) = 1843199 => OCR1A = 1843199
  30. ; 8 * (1 + OCR1A) = 1843199 => OCR1A = 230399
  31. ; 64 * (1 + OCR1A) = 1843199 => OCR1A = 28799 (OK)
  32.  
  33. ldi tmp, (1 << WGM12) | (1 << CS11) | (1 << CS10)
  34. out TCCR1B, tmp
  35.  
  36. ldi tmp, high(28799)
  37. out OCR1AH, tmp
  38. ldi tmp, low(28799)
  39. out OCR1AL, tmp
  40.  
  41. ; (28799 + 1 ) * 64 = 1843200
  42. ; 1 / ( 7372800 / 1843200 ) = 0.25
  43. ; t = 2 * 0.25
  44. ; f = 1 / t = 2 Hz
  45.  
  46. main:
  47. nop
  48. rjmp main
  49.  
  50. */
  51.  
  52.  
  53. .def tmp = r16
  54.  
  55. .cseg
  56. rjmp reset
  57.  
  58. reset:
  59. ldi tmp, high(RAMEND)
  60. out SPH, tmp
  61. ldi tmp, low(RAMEND)
  62. out SPL, tmp
  63.  
  64.  
  65. ;REDOSLJED JE BITAN, ZAPISUJEMO OD NAJVECEG A CITAMO OD NAJMANJEG (?)
  66.  
  67. ldi tmp, (1 << PD5) //OC1A nasli smo di je u DS
  68. out DDRD, tmp
  69.  
  70. ldi tmp, (1 << COM1A0)
  71. out TCCR1A, tmp
  72.  
  73. ldi tmp, (1 << WGM12) | (1 << CS11) | (1 << CS10)
  74. out TCCR1B, tmp
  75.  
  76. ; f_oc1a = fclk /( 2 * N * (1 + OCR1A))
  77. ; N * (1 + OCR1A) = f_clk / (2 * f_oc1a)
  78. ; N * (1 + OCR1A) = 7372800 / 4 f_oc1a je zadano u zadatku
  79. ; N * (1 + OCR1A) = 1843200
  80. ; 1 * (1 + OCR1A) = 1843200 => OCR1A = 1843199 1, 8, 64 su prescaleri i onda biramo onaj koji nam pase
  81. ; 8 * (1 + OCR1A) = 1843199 => OCR1A = 230399
  82. ; 64 * (1 + OCR1A) = 1843199 => OCR1A = 28799 (OK) ovo je ok jer je ispod 65k nesto sta nam je max za zapisat u registar
  83.  
  84.  
  85. //minimalno frekv za dobit u 8 bitnim registrima
  86. ;f_oc1a = 7372800 / (2 * 1024 * 256)
  87.  
  88.  
  89. ldi tmp, high(28799)
  90. out OCR1AH, tmp
  91. ldi tmp, low(28799)
  92. out OCR1AL, tmp // zadnje 4 linije, zapisali smo nasu vrijednost top-a
  93.  
  94.  
  95.  
  96.  
  97. main:
  98. rjmp main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement