fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Wed Apr 06 13:41:25 2016 +0000
Revision:
117:eefe61968528
Parent:
116:66f1f0ff2dab
Child:
118:c4c91b354c0c
45

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 0:8ad47e2b6f00 1 #include "MTimer.h"
igor_v 0:8ad47e2b6f00 2 #include "LPC17xx.h"
igor_v 0:8ad47e2b6f00 3 #include "MTimer.h"
igor_v 0:8ad47e2b6f00 4 #include "vibro.h"
igor_v 0:8ad47e2b6f00 5 #include "QEI.h"
igor_v 0:8ad47e2b6f00 6 #include "Global.h"
igor_v 0:8ad47e2b6f00 7 #include "SPI.h"
igor_v 0:8ad47e2b6f00 8 #include "InputOutput.h"
Kovalev_D 112:4a96133a1311 9
igor_v 0:8ad47e2b6f00 10
Kovalev_D 112:4a96133a1311 11
igor_v 0:8ad47e2b6f00 12 //unsigned int CountV=0;
igor_v 21:bc8c1cec3da6 13 //unsigned int CountVf=0 ;
igor_v 0:8ad47e2b6f00 14 unsigned int CountV31=0;
Kovalev_D 115:e5a230e5af52 15 unsigned int CountV255=0,f ;
igor_v 114:5cc38a53d8a7 16
Kovalev_D 112:4a96133a1311 17
igor_v 21:bc8c1cec3da6 18
igor_v 21:bc8c1cec3da6 19
Kovalev_D 88:b5c1d9d338d1 20
Kovalev_D 88:b5c1d9d338d1 21
Kovalev_D 88:b5c1d9d338d1 22
Kovalev_D 88:b5c1d9d338d1 23
Kovalev_D 88:b5c1d9d338d1 24
Kovalev_D 88:b5c1d9d338d1 25
Kovalev_D 88:b5c1d9d338d1 26
Kovalev_D 88:b5c1d9d338d1 27 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 28 /////////////////////EVENT///////////////////////////
Kovalev_D 88:b5c1d9d338d1 29 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 30 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 31 ///////////////////// 1Hz ///////////////////////////
Kovalev_D 89:a0d344db227e 32 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 33 void Event_1Hz(void)// событие раз в 1 Гц
Kovalev_D 92:c892f0311aa7 34 { int i,t;
Kovalev_D 115:e5a230e5af52 35
Kovalev_D 115:e5a230e5af52 36 if (Event1Hz)
Kovalev_D 115:e5a230e5af52 37 {
Kovalev_D 117:eefe61968528 38
Kovalev_D 117:eefe61968528 39
Kovalev_D 117:eefe61968528 40
Kovalev_D 117:eefe61968528 41
Kovalev_D 88:b5c1d9d338d1 42 Event1Hz--;
Kovalev_D 116:66f1f0ff2dab 43 Time1Hz++;
Kovalev_D 117:eefe61968528 44 Discharg ();
Kovalev_D 117:eefe61968528 45 BackLight ();
Kovalev_D 116:66f1f0ff2dab 46 if(Rate_Flag)CMD_Rate();
Kovalev_D 88:b5c1d9d338d1 47 }
Kovalev_D 88:b5c1d9d338d1 48 }
Kovalev_D 89:a0d344db227e 49 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 50 ///////////////////// 1kHz //////////////////////////
Kovalev_D 89:a0d344db227e 51 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 52 void Event_1KHz(void)// событие раз в 1 кГц
Kovalev_D 88:b5c1d9d338d1 53 {
Kovalev_D 116:66f1f0ff2dab 54 if (Event1K)
Kovalev_D 116:66f1f0ff2dab 55 {
Kovalev_D 88:b5c1d9d338d1 56 Event1K --;
Kovalev_D 116:66f1f0ff2dab 57 Time1K++;//первый ++ работает каждые 125 (event100kHz)второй был в 100 кГц
Kovalev_D 117:eefe61968528 58
Kovalev_D 116:66f1f0ff2dab 59 /*
Kovalev_D 116:66f1f0ff2dab 60 */
Kovalev_D 116:66f1f0ff2dab 61 if (Time1K == 1000)
Kovalev_D 115:e5a230e5af52 62 {
Kovalev_D 88:b5c1d9d338d1 63 Time1K = 0;
Kovalev_D 88:b5c1d9d338d1 64 Event1Hz ++;
Kovalev_D 116:66f1f0ff2dab 65 /*Time1Hz++;*/
Kovalev_D 88:b5c1d9d338d1 66 }
Kovalev_D 116:66f1f0ff2dab 67 // LoopOff
Kovalev_D 106:250ddd8629c6 68
Kovalev_D 88:b5c1d9d338d1 69 }
Kovalev_D 88:b5c1d9d338d1 70 }
Kovalev_D 89:a0d344db227e 71 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 72 ///////////////////// 100kHz //////////////////////////
Kovalev_D 89:a0d344db227e 73 /////////////////////////////////////////////////////
Kovalev_D 116:66f1f0ff2dab 74 void Event_100KHz(void)// событие раз в 100 кГц(каждые 5-6 фронтов шум)
Kovalev_D 88:b5c1d9d338d1 75 {
Kovalev_D 88:b5c1d9d338d1 76 if (Event100K) {
Kovalev_D 88:b5c1d9d338d1 77 Event100K --;
Kovalev_D 117:eefe61968528 78
Kovalev_D 116:66f1f0ff2dab 79
Kovalev_D 88:b5c1d9d338d1 80 if (OutBufCon1Count) {
Kovalev_D 88:b5c1d9d338d1 81 OutBufCon1Count--; // обратный отсчет для управления ногой и формирование задержки на выдачу
Kovalev_D 88:b5c1d9d338d1 82 }
Kovalev_D 116:66f1f0ff2dab 83
Kovalev_D 116:66f1f0ff2dab 84 PinCheng(); // чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
Kovalev_D 116:66f1f0ff2dab 85
Kovalev_D 116:66f1f0ff2dab 86 Time100K++;
Kovalev_D 116:66f1f0ff2dab 87 if (Time100K == 100) {//(было 100) 125 так 1кГц и 1 Гц ближе к правде.
Kovalev_D 88:b5c1d9d338d1 88 Time100K = 0;
Kovalev_D 88:b5c1d9d338d1 89 Event1K ++;
Kovalev_D 88:b5c1d9d338d1 90 }
Kovalev_D 88:b5c1d9d338d1 91 }
Kovalev_D 88:b5c1d9d338d1 92 }
Kovalev_D 89:a0d344db227e 93 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 94 //////////////////vibro EVENT////////////////////////
Kovalev_D 89:a0d344db227e 95 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 96 void Event_Vibro(void)// событие от вибр
Kovalev_D 88:b5c1d9d338d1 97 {
Kovalev_D 88:b5c1d9d338d1 98 if (EventVibro) {
Kovalev_D 88:b5c1d9d338d1 99 EventVibro --;
Kovalev_D 88:b5c1d9d338d1 100 }
Kovalev_D 88:b5c1d9d338d1 101 }
Kovalev_D 89:a0d344db227e 102 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 103 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 104 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 105
Kovalev_D 88:b5c1d9d338d1 106
Kovalev_D 112:4a96133a1311 107 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 108 ////////////////////////////////////////////////////////TIMER1////////////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 109 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 110
Kovalev_D 112:4a96133a1311 111 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 112 /////////////////////инициализация таймера 1 /////////////////////////
Kovalev_D 112:4a96133a1311 113 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 114
Kovalev_D 112:4a96133a1311 115 unsigned int Init_TIM1 (unsigned int TimerInterval )
Kovalev_D 112:4a96133a1311 116 {
Kovalev_D 112:4a96133a1311 117 LPC_TIM1->MR0 = TimerInterval;
Kovalev_D 112:4a96133a1311 118 LPC_TIM1->MCR = 3; /* Interrupt and Reset on MR1 */
Kovalev_D 112:4a96133a1311 119 NVIC_EnableIRQ(TIMER1_IRQn);
Kovalev_D 112:4a96133a1311 120 }
Kovalev_D 112:4a96133a1311 121
Kovalev_D 112:4a96133a1311 122
Kovalev_D 112:4a96133a1311 123
Kovalev_D 112:4a96133a1311 124
Kovalev_D 112:4a96133a1311 125
Kovalev_D 112:4a96133a1311 126
Kovalev_D 112:4a96133a1311 127
Kovalev_D 112:4a96133a1311 128
Kovalev_D 88:b5c1d9d338d1 129
Kovalev_D 88:b5c1d9d338d1 130
Kovalev_D 88:b5c1d9d338d1 131
igor_v 0:8ad47e2b6f00 132 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 133 /////////////////////////включение таймера 1//////////////////////////
igor_v 0:8ad47e2b6f00 134 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 135 void enable_timer1( void )
igor_v 21:bc8c1cec3da6 136 {
igor_v 21:bc8c1cec3da6 137 LPC_TIM1->TCR = 1;
igor_v 21:bc8c1cec3da6 138 return;
igor_v 21:bc8c1cec3da6 139 }
igor_v 0:8ad47e2b6f00 140
igor_v 0:8ad47e2b6f00 141
igor_v 0:8ad47e2b6f00 142 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 143 /////////////////////////////////////////////////TIMER2//////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 144 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 145
igor_v 0:8ad47e2b6f00 146 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 147 /////////////////////инициализация таймера 2 /////////////////////////
igor_v 0:8ad47e2b6f00 148 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 149 unsigned int Init_TIM2 (void)
igor_v 21:bc8c1cec3da6 150 {
igor_v 21:bc8c1cec3da6 151 LPC_TIM2->MR0 = 250;
igor_v 21:bc8c1cec3da6 152 LPC_TIM2->MCR = 3; /* Interrupt and Reset on MR0 */
igor_v 21:bc8c1cec3da6 153 NVIC_EnableIRQ(TIMER2_IRQn);
igor_v 21:bc8c1cec3da6 154 return 1;
igor_v 21:bc8c1cec3da6 155 }
igor_v 0:8ad47e2b6f00 156
igor_v 15:f5191a1c3805 157
igor_v 15:f5191a1c3805 158
igor_v 21:bc8c1cec3da6 159 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 160 /////////////////////////включение таймера 2//////////////////////////
igor_v 21:bc8c1cec3da6 161 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 162 void enable_timer2(void)
igor_v 21:bc8c1cec3da6 163 {
igor_v 21:bc8c1cec3da6 164 LPC_TIM2->TCR = 1;
igor_v 21:bc8c1cec3da6 165 LPC_TIM2->TCR = 0x01;
igor_v 21:bc8c1cec3da6 166 }
igor_v 21:bc8c1cec3da6 167
igor_v 21:bc8c1cec3da6 168
Kovalev_D 112:4a96133a1311 169 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 170 /////////////////////////прерывание таймера 1//////////////////////////
Kovalev_D 112:4a96133a1311 171 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 172 __irq void TIMER1_IRQHandler (void)
Kovalev_D 112:4a96133a1311 173 {
Kovalev_D 117:eefe61968528 174
Kovalev_D 117:eefe61968528 175
igor_v 114:5cc38a53d8a7 176 ResetCS(ADC); //prepare ADC for sampling
Kovalev_D 112:4a96133a1311 177 SetDAC(DAC);
Kovalev_D 112:4a96133a1311 178
igor_v 114:5cc38a53d8a7 179 CountV255++; // инкремент счеттчика
igor_v 114:5cc38a53d8a7 180 CountV255 &= 0xff; // ОБРЕЗАНИЕ СЧЕТЧИКА ой
igor_v 114:5cc38a53d8a7 181 CountV31 =CountV255 & 0x1f; // малый счетчик
Kovalev_D 117:eefe61968528 182 if(CountV31==0)
Kovalev_D 117:eefe61968528 183 {
Kovalev_D 117:eefe61968528 184 BackLightON
Kovalev_D 117:eefe61968528 185 }
Kovalev_D 116:66f1f0ff2dab 186
Kovalev_D 112:4a96133a1311 187
Kovalev_D 112:4a96133a1311 188 D_QEI(); //чтение данных по счетчику
Kovalev_D 112:4a96133a1311 189 cheng(); // расчет вибропривода
Kovalev_D 116:66f1f0ff2dab 190
Kovalev_D 116:66f1f0ff2dab 191
Kovalev_D 116:66f1f0ff2dab 192 SetCS(ADC); //start ADC sampling
Kovalev_D 116:66f1f0ff2dab 193 ResetDAC(DAC);
igor_v 114:5cc38a53d8a7 194 SPI_Exchange(); //Чтение ADS_SPI
igor_v 114:5cc38a53d8a7 195
Kovalev_D 112:4a96133a1311 196 LPC_TIM1->IR = 1;
Kovalev_D 117:eefe61968528 197 BackLightOFF
Kovalev_D 112:4a96133a1311 198 }
Kovalev_D 112:4a96133a1311 199
Kovalev_D 112:4a96133a1311 200
Kovalev_D 112:4a96133a1311 201
Kovalev_D 112:4a96133a1311 202
Kovalev_D 112:4a96133a1311 203
Kovalev_D 112:4a96133a1311 204
igor_v 21:bc8c1cec3da6 205 ///////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 206 /////////////////////////прерывание таймера 2//////////////////////////
igor_v 21:bc8c1cec3da6 207 ///////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 208 __irq void TIMER2_IRQHandler (void)
igor_v 21:bc8c1cec3da6 209 {
igor_v 21:bc8c1cec3da6 210 LPC_TIM2->IR = 1;
igor_v 21:bc8c1cec3da6 211
igor_v 21:bc8c1cec3da6 212 Global_Time++;
igor_v 21:bc8c1cec3da6 213
igor_v 21:bc8c1cec3da6 214 Time_UART++;
igor_v 21:bc8c1cec3da6 215
igor_v 21:bc8c1cec3da6 216 Time_vibro++;
Kovalev_D 116:66f1f0ff2dab 217
Kovalev_D 117:eefe61968528 218 if(f==1){f=0;LoopOn}
Kovalev_D 117:eefe61968528 219 else{f=1;LoopOff}
Kovalev_D 116:66f1f0ff2dab 220
Kovalev_D 112:4a96133a1311 221
Kovalev_D 112:4a96133a1311 222 Gyro.VibroOutF=1;
Kovalev_D 112:4a96133a1311 223
Kovalev_D 116:66f1f0ff2dab 224 //Time_1kHz++;//второе место инкрементирования
Kovalev_D 116:66f1f0ff2dab 225
Kovalev_D 116:66f1f0ff2dab 226 Event100K ++;
igor_v 21:bc8c1cec3da6 227
igor_v 21:bc8c1cec3da6 228 }