fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Fri Nov 18 06:07:37 2016 +0000
Revision:
202:c03b7b128e11
Parent:
201:76f4123bf22a
not work

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
Kovalev_D 197:7a05523bf588 10 unsigned int CountV64=0;
igor_v 0:8ad47e2b6f00 11 unsigned int CountV31=0;
Kovalev_D 197:7a05523bf588 12 unsigned int CountV255=0;
Kovalev_D 201:76f4123bf22a 13 unsigned int f,f1;
Kovalev_D 202:c03b7b128e11 14 int Timee=0;
Kovalev_D 88:b5c1d9d338d1 15 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 16 /////////////////////EVENT///////////////////////////
Kovalev_D 88:b5c1d9d338d1 17 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 18 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 19 ///////////////////// 1Hz ///////////////////////////
Kovalev_D 89:a0d344db227e 20 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 21 void Event_1Hz(void)// событие раз в 1 Гц
Kovalev_D 202:c03b7b128e11 22 {
Kovalev_D 115:e5a230e5af52 23 if (Event1Hz)
Kovalev_D 201:76f4123bf22a 24 {
Kovalev_D 202:c03b7b128e11 25 Event1Hz--;
Kovalev_D 202:c03b7b128e11 26 // BackLightON
Kovalev_D 202:c03b7b128e11 27 Timee++;
Kovalev_D 202:c03b7b128e11 28 switch(Gyro.LogPLC) { case 0: ShowMod(); break; }
Kovalev_D 124:9ae09249f842 29 Gyro.Rate1_Event = 1;
Kovalev_D 202:c03b7b128e11 30
Kovalev_D 122:fbacb932a30b 31 Time1Hz++;
Kovalev_D 117:eefe61968528 32 Discharg ();
Kovalev_D 193:a0fe8bfc97e4 33 BackLight();
Kovalev_D 202:c03b7b128e11 34
Kovalev_D 202:c03b7b128e11 35 // BackLightOFF
Kovalev_D 201:76f4123bf22a 36 }
Kovalev_D 88:b5c1d9d338d1 37 }
Kovalev_D 89:a0d344db227e 38 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 39 ///////////////////// 1kHz //////////////////////////
Kovalev_D 197:7a05523bf588 40 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 41 void Event_1KHz(void)// событие раз в 1 кГц
Kovalev_D 88:b5c1d9d338d1 42 {
Kovalev_D 116:66f1f0ff2dab 43 if (Event1K)
Kovalev_D 116:66f1f0ff2dab 44 {
Kovalev_D 202:c03b7b128e11 45
Kovalev_D 88:b5c1d9d338d1 46 Event1K --;
Kovalev_D 116:66f1f0ff2dab 47 Time1K++;//первый ++ работает каждые 125 (event100kHz)второй был в 100 кГц
Kovalev_D 201:76f4123bf22a 48 if(Gyro.Start) Gyro.Start--;
Kovalev_D 202:c03b7b128e11 49 // if(Gyro.Start==6999) AVibON;
Kovalev_D 202:c03b7b128e11 50 if (Time1K > 100)
Kovalev_D 115:e5a230e5af52 51 {
Kovalev_D 202:c03b7b128e11 52 Time1K -=100;
Kovalev_D 88:b5c1d9d338d1 53 Event1Hz ++;
Kovalev_D 88:b5c1d9d338d1 54 }
Kovalev_D 88:b5c1d9d338d1 55 }
Kovalev_D 88:b5c1d9d338d1 56 }
Kovalev_D 124:9ae09249f842 57 void Event_500Hz(void)// событие раз в 500 Гц
Kovalev_D 124:9ae09249f842 58 {
Kovalev_D 124:9ae09249f842 59 if(Event500Hz)
Kovalev_D 202:c03b7b128e11 60 {//
Kovalev_D 201:76f4123bf22a 61 Event500Hz--;
Kovalev_D 197:7a05523bf588 62 Gyro.Event_500Hz=1;// Event 500Гц выдачи данных для постройки графика управления вибро
Kovalev_D 202:c03b7b128e11 63 //
Kovalev_D 197:7a05523bf588 64 }
Kovalev_D 197:7a05523bf588 65 }
Kovalev_D 197:7a05523bf588 66
Kovalev_D 197:7a05523bf588 67
Kovalev_D 201:76f4123bf22a 68 void Event_250Hz(void)// событие раз в 200 Гц(модулятор)
Kovalev_D 197:7a05523bf588 69 {
Kovalev_D 197:7a05523bf588 70 if(Event250Hz)
Kovalev_D 202:c03b7b128e11 71 { //
Kovalev_D 201:76f4123bf22a 72 Event250Hz--;
Kovalev_D 202:c03b7b128e11 73 /* sprintf((Time),"%d %d %d %d %d\r\n",Gyro.AD_Slow, Gyro.CuruAngle, Gyro.Termo, ADCDIF>>9, Spi.DAC_B);
Kovalev_D 201:76f4123bf22a 74 WriteCon(Time);*/
Kovalev_D 201:76f4123bf22a 75 // Gyro.EventMOD=1;//
Kovalev_D 202:c03b7b128e11 76 //
Kovalev_D 124:9ae09249f842 77 }
Kovalev_D 124:9ae09249f842 78 }
Kovalev_D 201:76f4123bf22a 79 /**/
Kovalev_D 89:a0d344db227e 80 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 81 ///////////////////// 100kHz //////////////////////////
Kovalev_D 89:a0d344db227e 82 /////////////////////////////////////////////////////
Kovalev_D 193:a0fe8bfc97e4 83 void Event_100KHz(void)// событие раз в 100 кГц
Kovalev_D 88:b5c1d9d338d1 84 {
Kovalev_D 162:44e4ded32c6a 85
Kovalev_D 88:b5c1d9d338d1 86 if (Event100K) {
Kovalev_D 202:c03b7b128e11 87
Kovalev_D 88:b5c1d9d338d1 88 Event100K --;
Kovalev_D 197:7a05523bf588 89
Kovalev_D 124:9ae09249f842 90 if (OutBufCon1Count)OutBufCon1Count--; // обратный отсчет для управления ногой и формирование задержки на выдачу
Kovalev_D 202:c03b7b128e11 91 Time100K++;
Kovalev_D 202:c03b7b128e11 92 if(Time100K==998){Event1K=1;Time100K-=998;}
Kovalev_D 202:c03b7b128e11 93 // PinCheng(); // чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
Kovalev_D 202:c03b7b128e11 94 //
Kovalev_D 88:b5c1d9d338d1 95 }
Kovalev_D 88:b5c1d9d338d1 96 }
Kovalev_D 89:a0d344db227e 97 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 98 //////////////////vibro EVENT////////////////////////
Kovalev_D 89:a0d344db227e 99 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 100 void Event_Vibro(void)// событие от вибр
Kovalev_D 88:b5c1d9d338d1 101 {
Kovalev_D 88:b5c1d9d338d1 102 if (EventVibro) {
Kovalev_D 88:b5c1d9d338d1 103 EventVibro --;
Kovalev_D 88:b5c1d9d338d1 104 }
Kovalev_D 88:b5c1d9d338d1 105 }
Kovalev_D 89:a0d344db227e 106 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 107 /////////////////////////////////////////////////////
Kovalev_D 89:a0d344db227e 108 /////////////////////////////////////////////////////
Kovalev_D 88:b5c1d9d338d1 109
Kovalev_D 88:b5c1d9d338d1 110
Kovalev_D 112:4a96133a1311 111 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 112 ////////////////////////////////////////////////////////TIMER1////////////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 113 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 114
Kovalev_D 112:4a96133a1311 115 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 116 /////////////////////инициализация таймера 1 /////////////////////////
Kovalev_D 112:4a96133a1311 117 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 118
Kovalev_D 112:4a96133a1311 119 unsigned int Init_TIM1 (unsigned int TimerInterval )
Kovalev_D 112:4a96133a1311 120 {
Kovalev_D 112:4a96133a1311 121 LPC_TIM1->MR0 = TimerInterval;
Kovalev_D 112:4a96133a1311 122 LPC_TIM1->MCR = 3; /* Interrupt and Reset on MR1 */
Kovalev_D 112:4a96133a1311 123 NVIC_EnableIRQ(TIMER1_IRQn);
Kovalev_D 112:4a96133a1311 124 }
Kovalev_D 112:4a96133a1311 125
Kovalev_D 112:4a96133a1311 126
igor_v 0:8ad47e2b6f00 127 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 128 /////////////////////////включение таймера 1//////////////////////////
igor_v 0:8ad47e2b6f00 129 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 130 void enable_timer1( void )
igor_v 21:bc8c1cec3da6 131 {
igor_v 21:bc8c1cec3da6 132 LPC_TIM1->TCR = 1;
igor_v 21:bc8c1cec3da6 133 return;
igor_v 21:bc8c1cec3da6 134 }
igor_v 0:8ad47e2b6f00 135
igor_v 0:8ad47e2b6f00 136
igor_v 0:8ad47e2b6f00 137 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 138 /////////////////////////////////////////////////TIMER2//////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 139 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 140
igor_v 0:8ad47e2b6f00 141 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 142 /////////////////////инициализация таймера 2 /////////////////////////
igor_v 0:8ad47e2b6f00 143 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 144 unsigned int Init_TIM2 (void)
Kovalev_D 202:c03b7b128e11 145 { //LPC_TIM2->MR0 = 259;
Kovalev_D 202:c03b7b128e11 146 LPC_TIM2->MR0 = 159;
igor_v 21:bc8c1cec3da6 147 LPC_TIM2->MCR = 3; /* Interrupt and Reset on MR0 */
igor_v 21:bc8c1cec3da6 148 NVIC_EnableIRQ(TIMER2_IRQn);
igor_v 21:bc8c1cec3da6 149 return 1;
igor_v 21:bc8c1cec3da6 150 }
igor_v 0:8ad47e2b6f00 151
igor_v 21:bc8c1cec3da6 152 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 153 /////////////////////////включение таймера 2//////////////////////////
igor_v 21:bc8c1cec3da6 154 //////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 155 void enable_timer2(void)
igor_v 21:bc8c1cec3da6 156 {
igor_v 21:bc8c1cec3da6 157 LPC_TIM2->TCR = 1;
igor_v 21:bc8c1cec3da6 158 LPC_TIM2->TCR = 0x01;
igor_v 21:bc8c1cec3da6 159 }
Kovalev_D 202:c03b7b128e11 160 /*
Kovalev_D 201:76f4123bf22a 161 unsigned int Init_TIM0 (void)
Kovalev_D 201:76f4123bf22a 162 {
Kovalev_D 201:76f4123bf22a 163 LPC_TIM0->MR0 =180;
Kovalev_D 201:76f4123bf22a 164 LPC_TIM0->MCR = 3;
Kovalev_D 201:76f4123bf22a 165 NVIC_EnableIRQ(TIMER0_IRQn);
Kovalev_D 201:76f4123bf22a 166 return 1;
Kovalev_D 202:c03b7b128e11 167 }*/
Kovalev_D 202:c03b7b128e11 168 /*
Kovalev_D 201:76f4123bf22a 169 void enable_timer0(void)
Kovalev_D 201:76f4123bf22a 170 {
Kovalev_D 201:76f4123bf22a 171 //LPC_SC->PCONP |= (1<<23);
Kovalev_D 201:76f4123bf22a 172 LPC_TIM0->TCR = 1;
Kovalev_D 201:76f4123bf22a 173 LPC_TIM0->TCR = 0x01;
Kovalev_D 201:76f4123bf22a 174
Kovalev_D 202:c03b7b128e11 175 }*/
igor_v 21:bc8c1cec3da6 176
Kovalev_D 112:4a96133a1311 177 //////////////////////////////////////////////////////////////////////
Kovalev_D 112:4a96133a1311 178 /////////////////////////прерывание таймера 1//////////////////////////
Kovalev_D 112:4a96133a1311 179 //////////////////////////////////////////////////////////////////////
Kovalev_D 183:7e200f4d9b16 180 __irq void TIMER1_IRQHandler (void)//13.27 kHz
Kovalev_D 202:c03b7b128e11 181 { //
Kovalev_D 202:c03b7b128e11 182 // BackLightON
Kovalev_D 202:c03b7b128e11 183 ResetCS(ADC); //prepare ADC for sampling
Kovalev_D 112:4a96133a1311 184 SetDAC(DAC);
Kovalev_D 202:c03b7b128e11 185
igor_v 114:5cc38a53d8a7 186 CountV255++; // инкремент счеттчика
Kovalev_D 164:6f43f85fdd8d 187 CountV255 &= 0xff; // ОБРЕЗАНИЕ СЧЕТЧИКА
Kovalev_D 197:7a05523bf588 188 CountV64 = CountV255 & 0x3f;
Kovalev_D 197:7a05523bf588 189 CountV31 = CountV255 & 0x1f; // малый счетчик
Kovalev_D 197:7a05523bf588 190
Kovalev_D 202:c03b7b128e11 191 SetCS(ADC); //start ADC sampling
Kovalev_D 202:c03b7b128e11 192 ResetDAC(DAC);
Kovalev_D 202:c03b7b128e11 193 SPI_Exchange();
Kovalev_D 202:c03b7b128e11 194
Kovalev_D 112:4a96133a1311 195 D_QEI(); //чтение данных по счетчику
Kovalev_D 143:2b15794a6cd2 196 cheng(); // выставление флагов в 32 тактном цикле.
Kovalev_D 116:66f1f0ff2dab 197
Kovalev_D 116:66f1f0ff2dab 198
Kovalev_D 202:c03b7b128e11 199 //Чтение ADC_SPI
igor_v 114:5cc38a53d8a7 200
Kovalev_D 112:4a96133a1311 201 LPC_TIM1->IR = 1;
Kovalev_D 193:a0fe8bfc97e4 202
Kovalev_D 202:c03b7b128e11 203 //
Kovalev_D 202:c03b7b128e11 204 //BackLightOFF
Kovalev_D 112:4a96133a1311 205 }
Kovalev_D 112:4a96133a1311 206
igor_v 21:bc8c1cec3da6 207 ///////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 208 /////////////////////////прерывание таймера 2//////////////////////////
igor_v 21:bc8c1cec3da6 209 ///////////////////////////////////////////////////////////////////////
igor_v 21:bc8c1cec3da6 210 __irq void TIMER2_IRQHandler (void)
Kovalev_D 202:c03b7b128e11 211 { //
Kovalev_D 202:c03b7b128e11 212 LoopOn
Kovalev_D 202:c03b7b128e11 213
Kovalev_D 202:c03b7b128e11 214 Time_vibro++;
Kovalev_D 202:c03b7b128e11 215
Kovalev_D 202:c03b7b128e11 216 if(CountV31>=16)
Kovalev_D 202:c03b7b128e11 217 {//первая нога вибро
Kovalev_D 202:c03b7b128e11 218 // левая граница вЫкл вибро 1 > Time_vibro <ПРАВАЯ граница вЫкл вибро 1
Kovalev_D 202:c03b7b128e11 219 if((Time_vibro==Gyro.AmpN1))
Kovalev_D 202:c03b7b128e11 220 {
Kovalev_D 202:c03b7b128e11 221 SetV1//установить в регистре PinReg бит "вибро 1" в "0"
Kovalev_D 202:c03b7b128e11 222 }
Kovalev_D 202:c03b7b128e11 223 else if(Time_vibro>Gyro.AmpN2)
Kovalev_D 202:c03b7b128e11 224 {
Kovalev_D 202:c03b7b128e11 225 ClrV1 //установить в регистре PinReg бит "вибро 1" в "1"
Kovalev_D 202:c03b7b128e11 226 }
Kovalev_D 202:c03b7b128e11 227 }
Kovalev_D 202:c03b7b128e11 228 else
Kovalev_D 202:c03b7b128e11 229 {//вторая нога вибро
Kovalev_D 202:c03b7b128e11 230 if((Time_vibro==Gyro.AmpN1))
Kovalev_D 202:c03b7b128e11 231 {
Kovalev_D 202:c03b7b128e11 232 SetV2 //установить в регистре PinReg бит "вибро 2" в "0"
Kovalev_D 202:c03b7b128e11 233 }
Kovalev_D 202:c03b7b128e11 234 else if(Time_vibro>Gyro.AmpN2)
Kovalev_D 202:c03b7b128e11 235 {
Kovalev_D 202:c03b7b128e11 236 ClrV2//установить в регистре PinReg бит "вибро 2" в "1"
Kovalev_D 202:c03b7b128e11 237 }
Kovalev_D 202:c03b7b128e11 238 }
Kovalev_D 202:c03b7b128e11 239 /*
Kovalev_D 202:c03b7b128e11 240 VibroOut();
Kovalev_D 202:c03b7b128e11 241 PinCheng(); */
Kovalev_D 202:c03b7b128e11 242
Kovalev_D 202:c03b7b128e11 243
Kovalev_D 202:c03b7b128e11 244 LoopOff
igor_v 21:bc8c1cec3da6 245 LPC_TIM2->IR = 1;
Kovalev_D 201:76f4123bf22a 246 Global_Time++;
Kovalev_D 190:289514f730ee 247 if(Time_UART) Time_UART--;
Kovalev_D 202:c03b7b128e11 248
Kovalev_D 201:76f4123bf22a 249 Gyro.VibroOutF=1;
Kovalev_D 190:289514f730ee 250 Event100K ++;
Kovalev_D 197:7a05523bf588 251 Time500Hz++;
Kovalev_D 202:c03b7b128e11 252 // Time100K++;
Kovalev_D 197:7a05523bf588 253 Time250Hz++;
Kovalev_D 202:c03b7b128e11 254
Kovalev_D 202:c03b7b128e11 255 /*if (Time500Hz > 200)
Kovalev_D 202:c03b7b128e11 256 { //
Kovalev_D 202:c03b7b128e11 257 Time500Hz -= 200;
Kovalev_D 201:76f4123bf22a 258 Event500Hz ++;
Kovalev_D 202:c03b7b128e11 259 //
Kovalev_D 197:7a05523bf588 260 }
Kovalev_D 201:76f4123bf22a 261 if (Time250Hz > 1198)
Kovalev_D 202:c03b7b128e11 262 { //
Kovalev_D 201:76f4123bf22a 263 Time250Hz -=1198;
Kovalev_D 201:76f4123bf22a 264 Event250Hz ++;
Kovalev_D 202:c03b7b128e11 265 //
Kovalev_D 202:c03b7b128e11 266 }*/
Kovalev_D 202:c03b7b128e11 267 //
Kovalev_D 201:76f4123bf22a 268
Kovalev_D 202:c03b7b128e11 269
Kovalev_D 201:76f4123bf22a 270
Kovalev_D 201:76f4123bf22a 271 }
Kovalev_D 202:c03b7b128e11 272 /*__irq void TIMER0_IRQHandler (void)
Kovalev_D 201:76f4123bf22a 273 {
Kovalev_D 201:76f4123bf22a 274 LPC_TIM0->IR = 1;
Kovalev_D 202:c03b7b128e11 275 }*/