Advertisement
Pihtija

MPS V3 i 4

Apr 5th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. #include "lpc2148.h"
  2. #define CCLK 14745600
  3. #define PCLK (CCLK/4)
  4. #define SEK (CCLK/4)
  5. #define MSEK SEK/1000
  6.  
  7. #define BAUDRATE9600 (CCLK/4/16/9600) //9600 brzina
  8.  
  9. #define LED1 1<<5
  10. #define LED2 1<<6
  11. #define LED3 1<<7
  12.  
  13. void initGPIO(void);
  14. void initPCB(void);
  15. void initUART(void);
  16. void startTIMER(void);
  17. U8 Rx;
  18.  
  19. int main()
  20. {
  21. initGPIO();
  22. initPCB();
  23. initUART();
  24. startTIMER();
  25. while(1)
  26. {
  27. if(U0LSR & 0x1)
  28. {
  29. Rx=U0RBR;
  30. // if(Rx==0x35){
  31. // IOSET0|=LED1;
  32. // IOCLR0|=LED2;
  33. // IOCLR0|=LED3;}
  34. // else if (Rx==0x36){
  35. // IOSET0|=LED2;
  36. // IOCLR0|=LED1;
  37. // IOCLR0|=LED3;}
  38. // else if (Rx==0x37)
  39. // {IOSET0|=LED3;
  40. // IOCLR0|=LED1;
  41. // IOCLR0|=LED2;}
  42. // else {
  43. // IOCLR0|=LED1;
  44. // IOCLR0|=LED2;
  45. // IOCLR0|=LED3;
  46. }
  47. // U0THR=Rx; //echo
  48. if (Rx=='1'){
  49. if(T0TC>=SEK)
  50. {
  51.  
  52. startTIMER();
  53.  
  54. IOPIN0^=LED1;
  55.  
  56. } }
  57. else {
  58. IOCLR0=LED1;
  59. startTIMER();
  60. }
  61.  
  62. }
  63. }
  64.  
  65. void initGPIO(void)
  66. {
  67. IODIR0|=LED1;
  68. IODIR0|=LED2;
  69. IODIR0|=LED3;
  70. }
  71. void initPCB(void)
  72. {
  73. PINSEL0=0x5;
  74. }
  75. void initUART(void)
  76. {
  77. U0IER=0; //bez interapta
  78.  
  79. U0LCR|=0x3; // 8 informacionih bitova
  80.  
  81. U0LCR|=0x80; //pristup divisor registru (za brzinu)
  82. U0DLM=0x0;
  83. U0DLL=BAUDRATE9600;
  84. U0LCR&=0xFFFFFF7F; // 0111 1111 zatvorili divisor registar
  85.  
  86. }
  87.  
  88. void startTIMER(void)
  89. {
  90. T0TCR=0x3;
  91. T0TCR=0x1;
  92. }
  93.  
  94. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  95. #include "lpc2148.h"
  96. #include <math.h>
  97.  
  98.  
  99. #define CCLK 14745600
  100. #define SEK (CCLK/4)
  101.  
  102.  
  103. #define FR 100
  104. #define BROD 80 //30 //broj odbiraka
  105. #define BRODS 50
  106. #define DELTA (SEK/FR/BROD) //broj koji treba da cekamo u timeru
  107.  
  108.  
  109. void startTIMER(void);
  110. void initPCB(void);
  111. void rampa(void);
  112. void sinusoida(void);
  113. void zubci(void);
  114.  
  115. U16 odbirci[BROD]; //[BRODS]
  116. U16 brojac=0;
  117.  
  118. int main()
  119. {
  120. initPCB();
  121. startTIMER();
  122. //rampa();
  123. //sinusoida();
  124. zubci();
  125.  
  126.  
  127. while(1)
  128. {
  129. if(T0TC>DELTA)
  130. {
  131. startTIMER();
  132. DACR=odbirci[brojac]<<6;
  133. brojac++;
  134. if(brojac==BROD) //[BRODS]
  135. {
  136. brojac=0;
  137. }
  138. }
  139. }
  140. return 0;
  141. }
  142.  
  143.  
  144. void startTIMER(void)
  145. {
  146. T0TCR=0x3;
  147. T0TCR=0x1;
  148. }
  149. void initPCB(void)
  150. {
  151. PINSEL1|=(1<<19);
  152. }
  153. void rampa(void)
  154. {
  155. //int i;
  156. for(int i=0;i<BROD;i++)
  157. {
  158. odbirci[i]=i*1023/BROD; //max vrednost/broj odbiraka
  159. }
  160. }
  161.  
  162. void sinusoida(void)
  163. {
  164. //int i;
  165. for(int i=0;i<BROD;i++)
  166. {
  167. odbirci[i]=512+511*sin(2*3.14*i/50);
  168. }
  169. }
  170.  
  171. void zubci(void)
  172. {
  173. //int i;
  174. int j=BROD/2;
  175. for(int i=0;i<(BROD/2);i++)
  176. {
  177. odbirci[i]=i*1023/BROD; //max vrednost/broj odbiraka
  178.  
  179. }
  180.  
  181. for(int i=(BROD/2);i<BROD;i++)
  182. {
  183.  
  184. odbirci[i]=j*1023/BROD;
  185. j--;
  186. }
  187.  
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement