funkcny vytah

Dependencies:   MMA8451Qp mbed

Committer:
radovan
Date:
Thu Dec 21 10:22:07 2017 +0000
Revision:
1:e01c270c9add
Parent:
0:5c88ad74f3fe
vytah funkcny

Who changed what in which revision?

UserRevisionLine numberNew contents of line
radovan 0:5c88ad74f3fe 1 #include "mbed.h"
radovan 0:5c88ad74f3fe 2 #include "MMA8451Q.h"
radovan 0:5c88ad74f3fe 3
radovan 0:5c88ad74f3fe 4 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
radovan 0:5c88ad74f3fe 5 PinName const SDA = PTE25;
radovan 0:5c88ad74f3fe 6 PinName const SCL = PTE24;
radovan 0:5c88ad74f3fe 7 #elif defined (TARGET_KL05Z)
radovan 0:5c88ad74f3fe 8 PinName const SDA = PTB4;
radovan 0:5c88ad74f3fe 9 PinName const SCL = PTB3;
radovan 0:5c88ad74f3fe 10 #elif defined (TARGET_K20D50M)
radovan 0:5c88ad74f3fe 11 PinName const SDA = PTB1;
radovan 0:5c88ad74f3fe 12 PinName const SCL = PTB0;
radovan 0:5c88ad74f3fe 13 #else
radovan 0:5c88ad74f3fe 14 #error TARGET NOT DEFINED
radovan 0:5c88ad74f3fe 15 #endif
radovan 0:5c88ad74f3fe 16
radovan 0:5c88ad74f3fe 17 #define MMA8451_I2C_ADDRESS (0x1d<<1)
radovan 0:5c88ad74f3fe 18 ///////////////////////////////////////
radovan 0:5c88ad74f3fe 19 #define ELEVATOR_BUTTONf_FAMILY 0xc0
radovan 0:5c88ad74f3fe 20 #define DIODEf_FAMILY 0x10
radovan 0:5c88ad74f3fe 21 #define LIMIT_SWITCH_FAMILY 0xe0
radovan 0:5c88ad74f3fe 22 #define ELEVATOR_BUTTONc_FAMILY 0xb0
radovan 0:5c88ad74f3fe 23 #define DIODEc_FAMILY 0x20
radovan 0:5c88ad74f3fe 24
radovan 0:5c88ad74f3fe 25 #define ELEVATOR_CABIN 0xf0
radovan 0:5c88ad74f3fe 26 #define MOTOR 0xf1
radovan 0:5c88ad74f3fe 27 #define WATCHDOG_TIMER 0xfe
radovan 0:5c88ad74f3fe 28
radovan 0:5c88ad74f3fe 29 #define INFORMATION_DISPLAY 0x30
radovan 0:5c88ad74f3fe 30 //crc pri mojej adrese 0xAA
radovan 0:5c88ad74f3fe 31 #define CRC_LEDc2OFF 0xd2
radovan 0:5c88ad74f3fe 32 #define CRC_LEDc2ON 0x8c
radovan 0:5c88ad74f3fe 33 #define CRC_LEDc3OFF 0x79
radovan 0:5c88ad74f3fe 34 #define CRC_LEDc3ON 0x27
radovan 0:5c88ad74f3fe 35 #define CRC_LEDc1OFF 0x36
radovan 0:5c88ad74f3fe 36 #define CRC_LEDc1ON 0x68
radovan 0:5c88ad74f3fe 37 #define CRC_LEDc0OFF 0x9d
radovan 0:5c88ad74f3fe 38 #define CRC_LEDc0ON 0xc3
radovan 0:5c88ad74f3fe 39 #define CRC_LEDc4OFF 0x03
radovan 0:5c88ad74f3fe 40 #define CRC_LEDc4ON 0x5d
radovan 0:5c88ad74f3fe 41
radovan 0:5c88ad74f3fe 42 #define CRC_ELElock 0xda
radovan 0:5c88ad74f3fe 43 #define CRC_ELEunlock 0x84
radovan 0:5c88ad74f3fe 44
radovan 0:5c88ad74f3fe 45 #define CRC_MOTORdown 0xfc
radovan 0:5c88ad74f3fe 46 #define CRC_MOTORstop 0x71
radovan 0:5c88ad74f3fe 47 #define CRC_MOTORup 0xf7
radovan 0:5c88ad74f3fe 48
radovan 0:5c88ad74f3fe 49 #define CRC_INFDd4 0x9a
radovan 0:5c88ad74f3fe 50 #define CRC_INFDd3 0x19
radovan 0:5c88ad74f3fe 51 #define CRC_INFDd2 0x47
radovan 0:5c88ad74f3fe 52 #define CRC_INFDd1 0xa5
radovan 0:5c88ad74f3fe 53
radovan 0:5c88ad74f3fe 54 #define CRC_INFDn3 0xdd
radovan 0:5c88ad74f3fe 55 #define CRC_INFDn4 0x5e
radovan 0:5c88ad74f3fe 56 #define CRC_INFDn2 0x83
radovan 0:5c88ad74f3fe 57 #define CRC_INFDn1 0x61
radovan 0:5c88ad74f3fe 58 #define CRC_INFDn0 0x5a
radovan 0:5c88ad74f3fe 59
radovan 0:5c88ad74f3fe 60 #define CRC_INFDu0 0xcb
radovan 0:5c88ad74f3fe 61 #define CRC_INFDu1 0xf0
radovan 0:5c88ad74f3fe 62 #define CRC_INFDu2 0x12
radovan 0:5c88ad74f3fe 63 #define CRC_INFDu3 0x4c
radovan 0:5c88ad74f3fe 64
radovan 0:5c88ad74f3fe 65 #define CRC_LEDf3OFF 0xa7
radovan 0:5c88ad74f3fe 66 #define CRC_LEDf3ON 0xf9
radovan 0:5c88ad74f3fe 67 #define CRC_LEDf4OFF 0xdd
radovan 0:5c88ad74f3fe 68 #define CRC_LEDf4ON 0x83
radovan 0:5c88ad74f3fe 69 #define CRC_LEDf2OFF 0x0c
radovan 0:5c88ad74f3fe 70 #define CRC_LEDf2ON 0x52
radovan 0:5c88ad74f3fe 71 #define CRC_LEDf1OFF 0xe8
radovan 0:5c88ad74f3fe 72 #define CRC_LEDf1ON 0xb6
radovan 0:5c88ad74f3fe 73 #define CRC_LEDf0OFF 0x43
radovan 0:5c88ad74f3fe 74 #define CRC_LEDf0ON 0x1d
radovan 0:5c88ad74f3fe 75
radovan 0:5c88ad74f3fe 76 #define CRC_WATCHDOG 0x4f
radovan 0:5c88ad74f3fe 77
radovan 0:5c88ad74f3fe 78 InterruptIn intin(PTA15);
radovan 0:5c88ad74f3fe 79 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
radovan 0:5c88ad74f3fe 80 Serial pc(USBTX, USBRX,57600);
radovan 0:5c88ad74f3fe 81 char odpovedzac[4];
radovan 0:5c88ad74f3fe 82 char poziadavky[5]= {'N','N','N','N','N'};
radovan 0:5c88ad74f3fe 83 char poziciaVytahu=0x04;
radovan 0:5c88ad74f3fe 84 char bufpole[200];
radovan 0:5c88ad74f3fe 85 int zb=0;
radovan 0:5c88ad74f3fe 86 int kb=0;
radovan 0:5c88ad74f3fe 87 char smerPohybu=0x03;
radovan 0:5c88ad74f3fe 88 char aktualnePoschodie='4';
radovan 0:5c88ad74f3fe 89 unsigned char spravaVS[10];
radovan 0:5c88ad74f3fe 90
radovan 0:5c88ad74f3fe 91 void posli(int pokial);
radovan 0:5c88ad74f3fe 92 void watchdogReset();
radovan 0:5c88ad74f3fe 93 /**
radovan 0:5c88ad74f3fe 94 *void citaj()
radovan 0:5c88ad74f3fe 95 *funkcia volana pri vzniknuti prerusenia pre citanie od serioveho portu
radovan 0:5c88ad74f3fe 96 *do kruhoveho buffera "bufpole" nacita 1 znak.
radovan 0:5c88ad74f3fe 97 */
radovan 0:5c88ad74f3fe 98 void citaj()
radovan 0:5c88ad74f3fe 99 {
radovan 0:5c88ad74f3fe 100 while(pc.readable()==1) {
radovan 0:5c88ad74f3fe 101 bufpole[kb]=pc.getc();
radovan 0:5c88ad74f3fe 102 kb=(kb+1)%200;
radovan 0:5c88ad74f3fe 103 }
radovan 0:5c88ad74f3fe 104 }
radovan 0:5c88ad74f3fe 105 /**
radovan 0:5c88ad74f3fe 106 *void prerusenieACC()
radovan 0:5c88ad74f3fe 107 *funkcia volana pri vzniknuti prerusenia od accelerometra
radovan 0:5c88ad74f3fe 108 *posle simulatoru spravu pre zastavenie vytahu
radovan 0:5c88ad74f3fe 109 */
radovan 0:5c88ad74f3fe 110 void prerusenieACC()
radovan 0:5c88ad74f3fe 111 {
radovan 0:5c88ad74f3fe 112 uint8_t datan[1];
radovan 0:5c88ad74f3fe 113 acc.readRegs(0x0C,datan,1);
radovan 0:5c88ad74f3fe 114
radovan 0:5c88ad74f3fe 115 if((datan[0]&0x04)==0x04) {
radovan 0:5c88ad74f3fe 116 acc.readRegs(0x16,datan,1);
radovan 0:5c88ad74f3fe 117 char breakOn[6]= {0xA0,0xf,0xAA,0x01,0x01,0x08};
radovan 0:5c88ad74f3fe 118 //poslem spravu
radovan 0:5c88ad74f3fe 119 for(int ind=0; ind<6; ind++) {
radovan 0:5c88ad74f3fe 120 while(pc.writable()==0) {}
radovan 0:5c88ad74f3fe 121 pc.putc(breakOn[ind]);
radovan 0:5c88ad74f3fe 122 }
radovan 0:5c88ad74f3fe 123
radovan 0:5c88ad74f3fe 124 }
radovan 0:5c88ad74f3fe 125 }
radovan 0:5c88ad74f3fe 126 /**
radovan 0:5c88ad74f3fe 127 *void main()
radovan 0:5c88ad74f3fe 128 *nastavuje akcelerometer pre vytvaranie prerusenia pre freefall
radovan 0:5c88ad74f3fe 129 *spracovava v nekonecnej slucke spravy z kruhoveho buffera
radovan 0:5c88ad74f3fe 130 *v pravidelnych intervaloch resetuje watchdog
radovan 0:5c88ad74f3fe 131 */
radovan 0:5c88ad74f3fe 132 int main()
radovan 0:5c88ad74f3fe 133 {
radovan 0:5c88ad74f3fe 134 spravaVS[0]=0xA0;//zaciatok
radovan 0:5c88ad74f3fe 135 spravaVS[2]=0xAA;//ja
radovan 0:5c88ad74f3fe 136
radovan 0:5c88ad74f3fe 137 Timer timerReset;
radovan 0:5c88ad74f3fe 138
radovan 0:5c88ad74f3fe 139 pc.attach(&citaj,pc.RxIrq);
radovan 0:5c88ad74f3fe 140 timerReset.start();
radovan 0:5c88ad74f3fe 141 intin.fall(&prerusenieACC);
radovan 0:5c88ad74f3fe 142
radovan 0:5c88ad74f3fe 143 uint8_t pomPole[2] = {0x2A, 0x20};
radovan 0:5c88ad74f3fe 144 acc.writeRegs(pomPole, 2);
radovan 0:5c88ad74f3fe 145
radovan 0:5c88ad74f3fe 146 pomPole[0]=0x15;
radovan 0:5c88ad74f3fe 147 pomPole[1]=0xB8;
radovan 0:5c88ad74f3fe 148 acc.writeRegs(pomPole,2);
radovan 0:5c88ad74f3fe 149
radovan 0:5c88ad74f3fe 150 pomPole[0]=0x17;
radovan 0:5c88ad74f3fe 151 pomPole[1]=0x03;
radovan 0:5c88ad74f3fe 152 acc.writeRegs(pomPole,2);
radovan 0:5c88ad74f3fe 153
radovan 0:5c88ad74f3fe 154 pomPole[0]=0x18;
radovan 0:5c88ad74f3fe 155 pomPole[1]=0x06;
radovan 0:5c88ad74f3fe 156 acc.writeRegs(pomPole,2);
radovan 0:5c88ad74f3fe 157
radovan 0:5c88ad74f3fe 158 pomPole[0]=0x2D;
radovan 0:5c88ad74f3fe 159 pomPole[1]=0x04;
radovan 0:5c88ad74f3fe 160 acc.writeRegs(pomPole,2);
radovan 0:5c88ad74f3fe 161
radovan 0:5c88ad74f3fe 162 pomPole[0]=0x2E;
radovan 0:5c88ad74f3fe 163 pomPole[1]=0x00;
radovan 0:5c88ad74f3fe 164 acc.writeRegs(pomPole,2);
radovan 0:5c88ad74f3fe 165
radovan 0:5c88ad74f3fe 166 uint8_t data[1];
radovan 0:5c88ad74f3fe 167 acc.readRegs(0x2A,data,1);
radovan 0:5c88ad74f3fe 168 data[0]=data[0]| 0x01;
radovan 0:5c88ad74f3fe 169
radovan 0:5c88ad74f3fe 170 pomPole[0]=0x2A;
radovan 0:5c88ad74f3fe 171 pomPole[1]=data[0];
radovan 0:5c88ad74f3fe 172 acc.writeRegs(pomPole,2);
radovan 0:5c88ad74f3fe 173
radovan 0:5c88ad74f3fe 174 watchdogReset();
radovan 0:5c88ad74f3fe 175 int cas=timerReset.read_ms();
radovan 0:5c88ad74f3fe 176 while(true) {
radovan 0:5c88ad74f3fe 177
radovan 0:5c88ad74f3fe 178 int pocetdat=0;
radovan 0:5c88ad74f3fe 179 if(zb<=kb) {
radovan 0:5c88ad74f3fe 180 pocetdat=kb-zb;
radovan 0:5c88ad74f3fe 181 } else {
radovan 0:5c88ad74f3fe 182 pocetdat=(199-zb)+1+kb;
radovan 0:5c88ad74f3fe 183 }
radovan 0:5c88ad74f3fe 184
radovan 0:5c88ad74f3fe 185 if(pocetdat>4&&pocetdat>=4+bufpole[zb+3]+1) {//spracuvavam spravu
radovan 0:5c88ad74f3fe 186 odpovedzac[0]=bufpole[zb];
radovan 0:5c88ad74f3fe 187 zb=(zb+1)%200;
radovan 0:5c88ad74f3fe 188
radovan 0:5c88ad74f3fe 189 odpovedzac[1]=bufpole[zb];
radovan 0:5c88ad74f3fe 190 zb=(zb+1)%200;
radovan 0:5c88ad74f3fe 191
radovan 0:5c88ad74f3fe 192 odpovedzac[2]=bufpole[zb];
radovan 0:5c88ad74f3fe 193 zb=(zb+1)%200;
radovan 0:5c88ad74f3fe 194
radovan 0:5c88ad74f3fe 195 odpovedzac[3]=bufpole[zb];
radovan 0:5c88ad74f3fe 196
radovan 0:5c88ad74f3fe 197 int v=odpovedzac[3]+1;
radovan 0:5c88ad74f3fe 198 char data;
radovan 0:5c88ad74f3fe 199 for(int ind=0; ind<v; ind++) {
radovan 0:5c88ad74f3fe 200 zb=(zb+1)%200;
radovan 0:5c88ad74f3fe 201 if(ind==0) {
radovan 0:5c88ad74f3fe 202 data= bufpole[zb];
radovan 0:5c88ad74f3fe 203 }
radovan 0:5c88ad74f3fe 204 }
radovan 0:5c88ad74f3fe 205 zb=(zb+1)%200;
radovan 0:5c88ad74f3fe 206
radovan 0:5c88ad74f3fe 207 char rodina=(odpovedzac[2]&0xf0);
radovan 0:5c88ad74f3fe 208 char jedinec=(odpovedzac[2]&0x0f);
radovan 0:5c88ad74f3fe 209 watchdogReset();
radovan 0:5c88ad74f3fe 210
radovan 0:5c88ad74f3fe 211 if(rodina==ELEVATOR_BUTTONf_FAMILY) {
radovan 0:5c88ad74f3fe 212
radovan 0:5c88ad74f3fe 213 if(poziadavky[0]=='N'&&jedinec!=poziciaVytahu) {
radovan 0:5c88ad74f3fe 214
radovan 0:5c88ad74f3fe 215 poziadavky[0]=jedinec;//ulozim na ktore poschodie ma vytah ist
radovan 0:5c88ad74f3fe 216 //svietim diodu na poschodi
radovan 0:5c88ad74f3fe 217 spravaVS[1]=DIODEf_FAMILY|jedinec;//prijimatel
radovan 0:5c88ad74f3fe 218 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 219 spravaVS[4]=0x01;//data
radovan 0:5c88ad74f3fe 220
radovan 0:5c88ad74f3fe 221 if(jedinec==0x04) {
radovan 0:5c88ad74f3fe 222 spravaVS[5]=CRC_LEDf4ON;
radovan 0:5c88ad74f3fe 223 } else if(jedinec==0x03) {
radovan 0:5c88ad74f3fe 224 spravaVS[5]=CRC_LEDf3ON;
radovan 0:5c88ad74f3fe 225 } else if(jedinec==0x02) {
radovan 0:5c88ad74f3fe 226 spravaVS[5]=CRC_LEDf2ON;
radovan 0:5c88ad74f3fe 227 } else if(jedinec==0x01) {
radovan 0:5c88ad74f3fe 228 spravaVS[5]=CRC_LEDf1ON;
radovan 0:5c88ad74f3fe 229 } else {
radovan 0:5c88ad74f3fe 230 spravaVS[5]=CRC_LEDf0ON;
radovan 0:5c88ad74f3fe 231 }
radovan 0:5c88ad74f3fe 232 posli(6);
radovan 0:5c88ad74f3fe 233
radovan 0:5c88ad74f3fe 234 //zamykam vytah
radovan 0:5c88ad74f3fe 235 spravaVS[1]=ELEVATOR_CABIN;//prijimatel
radovan 0:5c88ad74f3fe 236 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 237 spravaVS[4]=0x01;//data
radovan 0:5c88ad74f3fe 238 spravaVS[5]=CRC_ELElock;
radovan 0:5c88ad74f3fe 239 posli(6);
radovan 0:5c88ad74f3fe 240
radovan 0:5c88ad74f3fe 241 //uved motor do pohybu
radovan 0:5c88ad74f3fe 242 spravaVS[1]=MOTOR;//prijimatel
radovan 0:5c88ad74f3fe 243 spravaVS[3]=5;//pocet dat
radovan 0:5c88ad74f3fe 244 spravaVS[4]=0x2;//pohni vytah
radovan 0:5c88ad74f3fe 245
radovan 0:5c88ad74f3fe 246 if(poziadavky[0]>poziciaVytahu) {
radovan 0:5c88ad74f3fe 247 smerPohybu=0x01;
radovan 0:5c88ad74f3fe 248 spravaVS[5]=0x64;
radovan 0:5c88ad74f3fe 249 spravaVS[6]=0x00;
radovan 0:5c88ad74f3fe 250 spravaVS[7]=0x00;
radovan 0:5c88ad74f3fe 251 spravaVS[8]=0x00;
radovan 0:5c88ad74f3fe 252 spravaVS[9]=CRC_MOTORup;
radovan 0:5c88ad74f3fe 253 } else {
radovan 0:5c88ad74f3fe 254 smerPohybu=0x02;
radovan 0:5c88ad74f3fe 255 spravaVS[5]=0x9C;
radovan 0:5c88ad74f3fe 256 spravaVS[6]=0xFF;
radovan 0:5c88ad74f3fe 257 spravaVS[7]=0xFF;
radovan 0:5c88ad74f3fe 258 spravaVS[8]=0xFF;
radovan 0:5c88ad74f3fe 259 spravaVS[9]=CRC_MOTORdown;
radovan 0:5c88ad74f3fe 260 }
radovan 0:5c88ad74f3fe 261 posli(10);
radovan 0:5c88ad74f3fe 262
radovan 0:5c88ad74f3fe 263 //zobrazenie pohybu
radovan 0:5c88ad74f3fe 264 spravaVS[1]=INFORMATION_DISPLAY;//prijimatel
radovan 0:5c88ad74f3fe 265 spravaVS[3]=2;//pocet dat
radovan 0:5c88ad74f3fe 266 spravaVS[4]=smerPohybu;//data
radovan 0:5c88ad74f3fe 267 spravaVS[5]=aktualnePoschodie;//data
radovan 0:5c88ad74f3fe 268
radovan 0:5c88ad74f3fe 269 if(smerPohybu==0x02) { //smer pohybu dole
radovan 0:5c88ad74f3fe 270 if(aktualnePoschodie=='4') {
radovan 0:5c88ad74f3fe 271 spravaVS[6]=CRC_INFDd4;
radovan 0:5c88ad74f3fe 272 } else if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 273 spravaVS[6]=CRC_INFDd3;
radovan 0:5c88ad74f3fe 274 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 275 spravaVS[6]=CRC_INFDd2;
radovan 0:5c88ad74f3fe 276 } else {
radovan 0:5c88ad74f3fe 277 spravaVS[6]=CRC_INFDd1;
radovan 0:5c88ad74f3fe 278 }
radovan 0:5c88ad74f3fe 279 } else {//smer pohybu hore
radovan 0:5c88ad74f3fe 280 if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 281 spravaVS[6]=CRC_INFDu3;
radovan 0:5c88ad74f3fe 282 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 283 spravaVS[6]=CRC_INFDu2;
radovan 0:5c88ad74f3fe 284 } else if(aktualnePoschodie=='1') {
radovan 0:5c88ad74f3fe 285 spravaVS[6]=CRC_INFDu1;
radovan 0:5c88ad74f3fe 286 } else {
radovan 0:5c88ad74f3fe 287 spravaVS[6]=CRC_INFDu0;
radovan 0:5c88ad74f3fe 288 }
radovan 0:5c88ad74f3fe 289 }
radovan 0:5c88ad74f3fe 290 posli(7);
radovan 0:5c88ad74f3fe 291
radovan 0:5c88ad74f3fe 292 }//if poziadavky[0]=='N'&&poziadavky[0]!=poziciaVytahu
radovan 0:5c88ad74f3fe 293
radovan 0:5c88ad74f3fe 294 } else if(rodina==ELEVATOR_BUTTONc_FAMILY) {
radovan 0:5c88ad74f3fe 295
radovan 0:5c88ad74f3fe 296 //ak bolo stlacene tlacidlo na inom poschodi ako akualnom a tato poziadavka este nie je v poli
radovan 0:5c88ad74f3fe 297 if(poziciaVytahu!=jedinec) {
radovan 0:5c88ad74f3fe 298 char pom=0x00;
radovan 0:5c88ad74f3fe 299 char pohni=0x00;
radovan 0:5c88ad74f3fe 300 for(int i=0; i<5; i++) {
radovan 0:5c88ad74f3fe 301 if(poziadavky[i]==jedinec) {
radovan 0:5c88ad74f3fe 302 pom=0x01;
radovan 0:5c88ad74f3fe 303 }
radovan 0:5c88ad74f3fe 304 if(poziadavky[i]=='N'&&pom==0x00) {
radovan 0:5c88ad74f3fe 305 poziadavky[i]=jedinec;
radovan 0:5c88ad74f3fe 306 pom=0x02;
radovan 0:5c88ad74f3fe 307 if(i==0) {
radovan 0:5c88ad74f3fe 308 pohni=0x03;
radovan 0:5c88ad74f3fe 309 }
radovan 0:5c88ad74f3fe 310 break;
radovan 0:5c88ad74f3fe 311 }
radovan 0:5c88ad74f3fe 312 }
radovan 0:5c88ad74f3fe 313 if(pom==0x02) {
radovan 0:5c88ad74f3fe 314 //zasvieti diodu vnutri vytahu
radovan 0:5c88ad74f3fe 315 spravaVS[1]=DIODEc_FAMILY|jedinec;//prijimatel
radovan 0:5c88ad74f3fe 316 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 317 spravaVS[4]=0x01;//data
radovan 0:5c88ad74f3fe 318
radovan 0:5c88ad74f3fe 319 if(jedinec==0x04) {
radovan 0:5c88ad74f3fe 320 spravaVS[5]=CRC_LEDc4ON;
radovan 0:5c88ad74f3fe 321 } else if(jedinec==0x03) {
radovan 0:5c88ad74f3fe 322 spravaVS[5]=CRC_LEDc3ON;
radovan 0:5c88ad74f3fe 323 } else if(jedinec==0x02) {
radovan 0:5c88ad74f3fe 324 spravaVS[5]=CRC_LEDc2ON;
radovan 0:5c88ad74f3fe 325 } else if(jedinec==0x01) {
radovan 0:5c88ad74f3fe 326 spravaVS[5]=CRC_LEDc1ON;
radovan 0:5c88ad74f3fe 327 } else {
radovan 0:5c88ad74f3fe 328 spravaVS[5]=CRC_LEDc0ON;
radovan 0:5c88ad74f3fe 329 }
radovan 0:5c88ad74f3fe 330 posli(6);
radovan 0:5c88ad74f3fe 331
radovan 0:5c88ad74f3fe 332 }
radovan 0:5c88ad74f3fe 333
radovan 0:5c88ad74f3fe 334 if(pohni==0x03) {
radovan 0:5c88ad74f3fe 335 //uzamknutie vytahu
radovan 0:5c88ad74f3fe 336 spravaVS[1]=ELEVATOR_CABIN;//prijimatel
radovan 0:5c88ad74f3fe 337 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 338 spravaVS[4]=0x01;//data
radovan 0:5c88ad74f3fe 339 spravaVS[5]=CRC_ELElock;
radovan 0:5c88ad74f3fe 340 posli(6);
radovan 0:5c88ad74f3fe 341
radovan 0:5c88ad74f3fe 342 //uved motor do pohybu
radovan 0:5c88ad74f3fe 343 spravaVS[1]=MOTOR;//prijimatel
radovan 0:5c88ad74f3fe 344 spravaVS[3]=5;//pocet dat
radovan 0:5c88ad74f3fe 345 spravaVS[4]=0x2;//data
radovan 0:5c88ad74f3fe 346
radovan 0:5c88ad74f3fe 347 if(poziadavky[0]>poziciaVytahu) {
radovan 0:5c88ad74f3fe 348 smerPohybu=0x01;
radovan 0:5c88ad74f3fe 349 spravaVS[5]=0x64;
radovan 0:5c88ad74f3fe 350 spravaVS[6]=0x00;
radovan 0:5c88ad74f3fe 351 spravaVS[7]=0x00;
radovan 0:5c88ad74f3fe 352 spravaVS[8]=0x00;
radovan 0:5c88ad74f3fe 353 spravaVS[9]=CRC_MOTORup;
radovan 0:5c88ad74f3fe 354
radovan 0:5c88ad74f3fe 355 } else {
radovan 0:5c88ad74f3fe 356 smerPohybu=0x02;
radovan 0:5c88ad74f3fe 357 spravaVS[5]=0x9C;
radovan 0:5c88ad74f3fe 358 spravaVS[6]=0xFF;
radovan 0:5c88ad74f3fe 359 spravaVS[7]=0xFF;
radovan 0:5c88ad74f3fe 360 spravaVS[8]=0xFF;
radovan 0:5c88ad74f3fe 361 spravaVS[9]=CRC_MOTORdown;
radovan 0:5c88ad74f3fe 362 }
radovan 0:5c88ad74f3fe 363 posli(10);
radovan 0:5c88ad74f3fe 364
radovan 0:5c88ad74f3fe 365 //zobrazenie pohybu
radovan 0:5c88ad74f3fe 366 spravaVS[1]=INFORMATION_DISPLAY;//prijimatel
radovan 0:5c88ad74f3fe 367 spravaVS[3]=2;//pocet dat
radovan 0:5c88ad74f3fe 368 spravaVS[4]=smerPohybu;//data
radovan 0:5c88ad74f3fe 369 spravaVS[5]=aktualnePoschodie;//data
radovan 0:5c88ad74f3fe 370
radovan 0:5c88ad74f3fe 371 if(smerPohybu==0x02) { //smer pohybu dole
radovan 0:5c88ad74f3fe 372 if(aktualnePoschodie=='4') {
radovan 0:5c88ad74f3fe 373 spravaVS[6]=CRC_INFDd4;
radovan 0:5c88ad74f3fe 374 } else if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 375 spravaVS[6]=CRC_INFDd3;
radovan 0:5c88ad74f3fe 376 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 377 spravaVS[6]=CRC_INFDd2;
radovan 0:5c88ad74f3fe 378 } else {
radovan 0:5c88ad74f3fe 379 spravaVS[6]=CRC_INFDd1;
radovan 0:5c88ad74f3fe 380 }
radovan 0:5c88ad74f3fe 381 } else {//smer pohybu hore
radovan 0:5c88ad74f3fe 382 if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 383 spravaVS[6]=CRC_INFDu3;
radovan 0:5c88ad74f3fe 384 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 385 spravaVS[6]=CRC_INFDu2;
radovan 0:5c88ad74f3fe 386 } else if(aktualnePoschodie=='1') {
radovan 0:5c88ad74f3fe 387 spravaVS[6]=CRC_INFDu1;
radovan 0:5c88ad74f3fe 388 } else {
radovan 0:5c88ad74f3fe 389 spravaVS[6]=CRC_INFDu0;
radovan 0:5c88ad74f3fe 390 }
radovan 0:5c88ad74f3fe 391 }
radovan 0:5c88ad74f3fe 392 posli(7);
radovan 0:5c88ad74f3fe 393 }
radovan 0:5c88ad74f3fe 394 }
radovan 0:5c88ad74f3fe 395
radovan 0:5c88ad74f3fe 396 } else if(rodina==LIMIT_SWITCH_FAMILY) {
radovan 0:5c88ad74f3fe 397
radovan 0:5c88ad74f3fe 398 if(data==0x01&&poziadavky[0]==jedinec) { //dalej od switchu
radovan 0:5c88ad74f3fe 399 //zastavenie vytahu
radovan 0:5c88ad74f3fe 400 spravaVS[1]=MOTOR;//prijimatel
radovan 0:5c88ad74f3fe 401 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 402 spravaVS[4]=0x1;//data
radovan 0:5c88ad74f3fe 403 spravaVS[5]=CRC_MOTORstop;
radovan 0:5c88ad74f3fe 404 posli(6);
radovan 0:5c88ad74f3fe 405
radovan 0:5c88ad74f3fe 406 } else if(data==0x02&&poziadavky[0]==jedinec) { //blizko pri switchi spravne poschodie
radovan 0:5c88ad74f3fe 407 //posunutie poziadaviek
radovan 0:5c88ad74f3fe 408 for(int i=0; i<4; i++) {
radovan 0:5c88ad74f3fe 409 poziadavky[i]=poziadavky[i+1];
radovan 0:5c88ad74f3fe 410 }
radovan 0:5c88ad74f3fe 411 poziadavky[4]='N';
radovan 0:5c88ad74f3fe 412 poziciaVytahu=jedinec;
radovan 0:5c88ad74f3fe 413 //odomknutie vytahu
radovan 0:5c88ad74f3fe 414 spravaVS[1]=ELEVATOR_CABIN;//prijimatel
radovan 0:5c88ad74f3fe 415 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 416 spravaVS[4]=0x00;//data
radovan 0:5c88ad74f3fe 417 spravaVS[5]=CRC_ELEunlock;
radovan 0:5c88ad74f3fe 418 posli(6);
radovan 0:5c88ad74f3fe 419
radovan 0:5c88ad74f3fe 420 //zhasnutie diody na poschodi
radovan 0:5c88ad74f3fe 421 spravaVS[1]=DIODEf_FAMILY|jedinec;//prijimatel
radovan 0:5c88ad74f3fe 422 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 423 spravaVS[4]=0x00;//data
radovan 0:5c88ad74f3fe 424
radovan 0:5c88ad74f3fe 425 if(jedinec==0x04) {
radovan 0:5c88ad74f3fe 426 spravaVS[5]=CRC_LEDf4OFF;
radovan 0:5c88ad74f3fe 427 } else if(jedinec==0x03) {
radovan 0:5c88ad74f3fe 428 spravaVS[5]=CRC_LEDf3OFF;
radovan 0:5c88ad74f3fe 429 } else if(jedinec==0x02) {
radovan 0:5c88ad74f3fe 430 spravaVS[5]=CRC_LEDf2OFF;
radovan 0:5c88ad74f3fe 431 } else if(jedinec==0x01) {
radovan 0:5c88ad74f3fe 432 spravaVS[5]=CRC_LEDf1OFF;
radovan 0:5c88ad74f3fe 433 } else {
radovan 0:5c88ad74f3fe 434 spravaVS[5]=CRC_LEDf0OFF;
radovan 0:5c88ad74f3fe 435 }
radovan 0:5c88ad74f3fe 436
radovan 0:5c88ad74f3fe 437 posli(6);
radovan 0:5c88ad74f3fe 438
radovan 0:5c88ad74f3fe 439 //zhasne diodu vnutri vytahu
radovan 0:5c88ad74f3fe 440 spravaVS[1]=DIODEc_FAMILY|jedinec;//prijimatel
radovan 0:5c88ad74f3fe 441 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 442 spravaVS[4]=0x00;//data
radovan 0:5c88ad74f3fe 443
radovan 0:5c88ad74f3fe 444 if(jedinec==0x04) {
radovan 0:5c88ad74f3fe 445 spravaVS[5]=CRC_LEDc4OFF;
radovan 0:5c88ad74f3fe 446 aktualnePoschodie='4';
radovan 0:5c88ad74f3fe 447 } else if(jedinec==0x03) {
radovan 0:5c88ad74f3fe 448 spravaVS[5]=CRC_LEDc3OFF;
radovan 0:5c88ad74f3fe 449 aktualnePoschodie='3';
radovan 0:5c88ad74f3fe 450 } else if(jedinec==0x02) {
radovan 0:5c88ad74f3fe 451 spravaVS[5]=CRC_LEDc2OFF;
radovan 0:5c88ad74f3fe 452 aktualnePoschodie='2';
radovan 0:5c88ad74f3fe 453 } else if(jedinec==0x01) {
radovan 0:5c88ad74f3fe 454 spravaVS[5]=CRC_LEDc1OFF;
radovan 0:5c88ad74f3fe 455 aktualnePoschodie='1';
radovan 0:5c88ad74f3fe 456 } else {
radovan 0:5c88ad74f3fe 457 spravaVS[5]=CRC_LEDc0OFF;
radovan 0:5c88ad74f3fe 458 aktualnePoschodie='P';
radovan 0:5c88ad74f3fe 459 }
radovan 0:5c88ad74f3fe 460
radovan 0:5c88ad74f3fe 461 posli(6);
radovan 0:5c88ad74f3fe 462
radovan 0:5c88ad74f3fe 463 smerPohybu=0x03;
radovan 0:5c88ad74f3fe 464 //zobrazenie pohybu
radovan 0:5c88ad74f3fe 465 spravaVS[1]=INFORMATION_DISPLAY;//prijimatel
radovan 0:5c88ad74f3fe 466 spravaVS[3]=2;//pocet dat
radovan 0:5c88ad74f3fe 467 spravaVS[4]=smerPohybu;//data
radovan 0:5c88ad74f3fe 468 spravaVS[5]=aktualnePoschodie;//data
radovan 0:5c88ad74f3fe 469
radovan 0:5c88ad74f3fe 470 if(jedinec==0x04) {
radovan 0:5c88ad74f3fe 471 spravaVS[6]=CRC_INFDn4;
radovan 0:5c88ad74f3fe 472 } else if(jedinec==0x03) {
radovan 0:5c88ad74f3fe 473 spravaVS[6]=CRC_INFDn3;
radovan 0:5c88ad74f3fe 474 } else if(jedinec==0x02) {
radovan 0:5c88ad74f3fe 475 spravaVS[6]=CRC_INFDn2;
radovan 0:5c88ad74f3fe 476 } else if(jedinec==0x01) {
radovan 0:5c88ad74f3fe 477 spravaVS[6]=CRC_INFDn1;
radovan 0:5c88ad74f3fe 478 } else {
radovan 0:5c88ad74f3fe 479 spravaVS[6]=CRC_INFDn0;
radovan 0:5c88ad74f3fe 480 }
radovan 0:5c88ad74f3fe 481 posli(7);
radovan 0:5c88ad74f3fe 482 watchdogReset();
radovan 0:5c88ad74f3fe 483
radovan 0:5c88ad74f3fe 484 //cakam vzdy po zastaveni vytahu
radovan 0:5c88ad74f3fe 485 int zac;
radovan 0:5c88ad74f3fe 486 Timer cakaj;
radovan 0:5c88ad74f3fe 487 for(int t=0; t<=10; t++) {
radovan 0:5c88ad74f3fe 488 cakaj.start();
radovan 0:5c88ad74f3fe 489 zac=cakaj.read_ms();
radovan 0:5c88ad74f3fe 490 while(true) {
radovan 0:5c88ad74f3fe 491 if((cakaj.read_ms()-zac)>=500) {
radovan 0:5c88ad74f3fe 492 watchdogReset();
radovan 0:5c88ad74f3fe 493 break;
radovan 0:5c88ad74f3fe 494 }
radovan 0:5c88ad74f3fe 495 }
radovan 0:5c88ad74f3fe 496
radovan 0:5c88ad74f3fe 497 cakaj.stop();
radovan 0:5c88ad74f3fe 498 cakaj.reset();
radovan 0:5c88ad74f3fe 499 }
radovan 0:5c88ad74f3fe 500
radovan 0:5c88ad74f3fe 501 if(poziadavky[0]!='N') { //ak este mam niekde ist tak spustim vytah
radovan 0:5c88ad74f3fe 502
radovan 0:5c88ad74f3fe 503 //uzamknutie vytahu
radovan 0:5c88ad74f3fe 504 spravaVS[1]=ELEVATOR_CABIN;//prijimatel
radovan 0:5c88ad74f3fe 505 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 506 spravaVS[4]=0x01;//data
radovan 0:5c88ad74f3fe 507 spravaVS[5]=CRC_ELElock;
radovan 0:5c88ad74f3fe 508 posli(6);
radovan 0:5c88ad74f3fe 509
radovan 0:5c88ad74f3fe 510 //uved motor do pohybu
radovan 0:5c88ad74f3fe 511 spravaVS[1]=MOTOR;//prijimatel
radovan 0:5c88ad74f3fe 512 spravaVS[3]=5;//pocet dat
radovan 0:5c88ad74f3fe 513 spravaVS[4]=0x2;//data
radovan 0:5c88ad74f3fe 514
radovan 0:5c88ad74f3fe 515 if(poziadavky[0]>poziciaVytahu) {
radovan 0:5c88ad74f3fe 516 smerPohybu=0x01;
radovan 0:5c88ad74f3fe 517 spravaVS[5]=0x64;
radovan 0:5c88ad74f3fe 518 spravaVS[6]=0x00;
radovan 0:5c88ad74f3fe 519 spravaVS[7]=0x00;
radovan 0:5c88ad74f3fe 520 spravaVS[8]=0x00;
radovan 0:5c88ad74f3fe 521 spravaVS[9]=CRC_MOTORup;
radovan 0:5c88ad74f3fe 522
radovan 0:5c88ad74f3fe 523 } else {
radovan 0:5c88ad74f3fe 524 smerPohybu=0x02;
radovan 0:5c88ad74f3fe 525 spravaVS[5]=0x9C;
radovan 0:5c88ad74f3fe 526 spravaVS[6]=0xFF;
radovan 0:5c88ad74f3fe 527 spravaVS[7]=0xFF;
radovan 0:5c88ad74f3fe 528 spravaVS[8]=0xFF;
radovan 0:5c88ad74f3fe 529 spravaVS[9]=CRC_MOTORdown;
radovan 0:5c88ad74f3fe 530 }
radovan 0:5c88ad74f3fe 531 posli(10);
radovan 0:5c88ad74f3fe 532
radovan 0:5c88ad74f3fe 533 //zobrazenie pohybu
radovan 0:5c88ad74f3fe 534 spravaVS[1]=INFORMATION_DISPLAY;//prijimatel
radovan 0:5c88ad74f3fe 535 spravaVS[3]=2;//pocet dat
radovan 0:5c88ad74f3fe 536 spravaVS[4]=smerPohybu;//data
radovan 0:5c88ad74f3fe 537 spravaVS[5]=aktualnePoschodie;//data
radovan 0:5c88ad74f3fe 538
radovan 0:5c88ad74f3fe 539 if(smerPohybu==0x02) { //smer pohybu dole
radovan 0:5c88ad74f3fe 540 if(aktualnePoschodie=='4') {
radovan 0:5c88ad74f3fe 541 spravaVS[6]=CRC_INFDd4;
radovan 0:5c88ad74f3fe 542 } else if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 543 spravaVS[6]=CRC_INFDd3;
radovan 0:5c88ad74f3fe 544 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 545 spravaVS[6]=CRC_INFDd2;
radovan 0:5c88ad74f3fe 546 } else {
radovan 0:5c88ad74f3fe 547 spravaVS[6]=CRC_INFDd1;
radovan 0:5c88ad74f3fe 548 }
radovan 0:5c88ad74f3fe 549 } else {//smer pohybu hore
radovan 0:5c88ad74f3fe 550 if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 551 spravaVS[6]=CRC_INFDu3;
radovan 0:5c88ad74f3fe 552 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 553 spravaVS[6]=CRC_INFDu2;
radovan 0:5c88ad74f3fe 554 } else if(aktualnePoschodie=='1') {
radovan 0:5c88ad74f3fe 555 spravaVS[6]=CRC_INFDu1;
radovan 0:5c88ad74f3fe 556 } else {
radovan 0:5c88ad74f3fe 557 spravaVS[6]=CRC_INFDu0;
radovan 0:5c88ad74f3fe 558 }
radovan 0:5c88ad74f3fe 559 }
radovan 0:5c88ad74f3fe 560 posli(7);
radovan 0:5c88ad74f3fe 561 }
radovan 0:5c88ad74f3fe 562
radovan 0:5c88ad74f3fe 563 } else if(data==0x02&&poziadavky[0]!=jedinec) {//blizko ale nezastavujem
radovan 0:5c88ad74f3fe 564
radovan 0:5c88ad74f3fe 565 if(jedinec==0x04) {
radovan 0:5c88ad74f3fe 566 aktualnePoschodie='4';
radovan 0:5c88ad74f3fe 567 } else if(jedinec==0x03) {
radovan 0:5c88ad74f3fe 568 aktualnePoschodie='3';
radovan 0:5c88ad74f3fe 569 } else if(jedinec==0x02) {
radovan 0:5c88ad74f3fe 570 aktualnePoschodie='2';
radovan 0:5c88ad74f3fe 571 } else if(jedinec==0x01) {
radovan 0:5c88ad74f3fe 572 aktualnePoschodie='1';
radovan 0:5c88ad74f3fe 573 } else {
radovan 0:5c88ad74f3fe 574 aktualnePoschodie='P';
radovan 0:5c88ad74f3fe 575 }
radovan 0:5c88ad74f3fe 576
radovan 0:5c88ad74f3fe 577 //zobrazenie pohybu
radovan 0:5c88ad74f3fe 578 spravaVS[1]=INFORMATION_DISPLAY;//prijimatel
radovan 0:5c88ad74f3fe 579 spravaVS[3]=2;//pocet dat
radovan 0:5c88ad74f3fe 580 spravaVS[4]=smerPohybu;//data
radovan 0:5c88ad74f3fe 581 spravaVS[5]=aktualnePoschodie;//data
radovan 0:5c88ad74f3fe 582
radovan 0:5c88ad74f3fe 583 if(smerPohybu==0x02) { //smer pohybu dole
radovan 0:5c88ad74f3fe 584 if(aktualnePoschodie=='4') {
radovan 0:5c88ad74f3fe 585 spravaVS[6]=CRC_INFDd4;
radovan 0:5c88ad74f3fe 586 } else if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 587 spravaVS[6]=CRC_INFDd3;
radovan 0:5c88ad74f3fe 588 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 589 spravaVS[6]=CRC_INFDd2;
radovan 0:5c88ad74f3fe 590 } else {
radovan 0:5c88ad74f3fe 591 spravaVS[6]=CRC_INFDd1;
radovan 0:5c88ad74f3fe 592 }
radovan 0:5c88ad74f3fe 593 } else {//smer pohybu hore
radovan 0:5c88ad74f3fe 594 if(aktualnePoschodie=='3') {
radovan 0:5c88ad74f3fe 595 spravaVS[6]=CRC_INFDu3;
radovan 0:5c88ad74f3fe 596 } else if(aktualnePoschodie=='2') {
radovan 0:5c88ad74f3fe 597 spravaVS[6]=CRC_INFDu2;
radovan 0:5c88ad74f3fe 598 } else if(aktualnePoschodie=='1') {
radovan 0:5c88ad74f3fe 599 spravaVS[6]=CRC_INFDu1;
radovan 0:5c88ad74f3fe 600 } else {
radovan 0:5c88ad74f3fe 601 spravaVS[6]=CRC_INFDu0;
radovan 0:5c88ad74f3fe 602 }
radovan 0:5c88ad74f3fe 603 }
radovan 0:5c88ad74f3fe 604 posli(7);
radovan 0:5c88ad74f3fe 605 }
radovan 0:5c88ad74f3fe 606 }//LIMIT_SWITCH_FAMILY
radovan 0:5c88ad74f3fe 607 }//sprava dostatocne velka
radovan 0:5c88ad74f3fe 608 if((timerReset.read_ms()-cas)>=600) {
radovan 0:5c88ad74f3fe 609 watchdogReset();
radovan 0:5c88ad74f3fe 610 cas=timerReset.read_ms();
radovan 0:5c88ad74f3fe 611 }
radovan 0:5c88ad74f3fe 612 }//while true
radovan 0:5c88ad74f3fe 613 }//main
radovan 0:5c88ad74f3fe 614 /**
radovan 0:5c88ad74f3fe 615 *void posli()
radovan 0:5c88ad74f3fe 616 *posle spravu z pola spravaVS pokial nedostane potvrdzujucu odpoved do 200ms posiela spravu znova
radovan 0:5c88ad74f3fe 617 *@param <pokial> pocet znakov na odoslanie
radovan 0:5c88ad74f3fe 618 */
radovan 0:5c88ad74f3fe 619 void posli(int pokial)
radovan 0:5c88ad74f3fe 620 {
radovan 0:5c88ad74f3fe 621 Timer timer;
radovan 0:5c88ad74f3fe 622 int potvrdenie=0;
radovan 0:5c88ad74f3fe 623 timer.start();
radovan 0:5c88ad74f3fe 624 while(potvrdenie==0) {
radovan 0:5c88ad74f3fe 625 //poslem spravu
radovan 0:5c88ad74f3fe 626 for(int ind=0; ind<pokial; ind++) {
radovan 0:5c88ad74f3fe 627 while(pc.writable()==0) {}
radovan 0:5c88ad74f3fe 628 pc.putc(spravaVS[ind]);
radovan 0:5c88ad74f3fe 629 }
radovan 0:5c88ad74f3fe 630 int pocdat=0;
radovan 0:5c88ad74f3fe 631 int begin=timer.read_ms();
radovan 0:5c88ad74f3fe 632 while((timer.read_ms()-begin)<200) {
radovan 0:5c88ad74f3fe 633 if(zb<=kb) {
radovan 0:5c88ad74f3fe 634 pocdat=kb-zb;
radovan 0:5c88ad74f3fe 635 } else {
radovan 0:5c88ad74f3fe 636 pocdat=200-zb+kb;
radovan 0:5c88ad74f3fe 637 }
radovan 0:5c88ad74f3fe 638 char prerus=0x00;
radovan 0:5c88ad74f3fe 639 for(int t=0; t<=pocdat-5; t++) {
radovan 0:5c88ad74f3fe 640 if(bufpole[(zb+t)%200]==0xA0&&bufpole[(zb+t+3)%200]==0x00) {
radovan 0:5c88ad74f3fe 641 int k=(zb+t-1)%200;//index dat od ktoreho treba zacat presuvat
radovan 0:5c88ad74f3fe 642 if(t==0) {
radovan 0:5c88ad74f3fe 643 zb=(zb+5)%200;
radovan 0:5c88ad74f3fe 644 prerus=0x01;
radovan 0:5c88ad74f3fe 645 break;
radovan 0:5c88ad74f3fe 646 }
radovan 0:5c88ad74f3fe 647 while(true) {
radovan 0:5c88ad74f3fe 648 bufpole[(k+5)%200]=bufpole[k];
radovan 0:5c88ad74f3fe 649 if(k==zb) {
radovan 0:5c88ad74f3fe 650 zb=(zb+5)%200;
radovan 0:5c88ad74f3fe 651 break;
radovan 0:5c88ad74f3fe 652 }
radovan 0:5c88ad74f3fe 653 k--;
radovan 0:5c88ad74f3fe 654 if(k<0) {
radovan 0:5c88ad74f3fe 655 k=199;
radovan 0:5c88ad74f3fe 656 }
radovan 0:5c88ad74f3fe 657 }//while
radovan 0:5c88ad74f3fe 658 prerus=0x01;
radovan 0:5c88ad74f3fe 659 break;
radovan 0:5c88ad74f3fe 660 } //if
radovan 0:5c88ad74f3fe 661 }//for
radovan 0:5c88ad74f3fe 662 if(prerus==0x01) {
radovan 0:5c88ad74f3fe 663 potvrdenie=1;
radovan 0:5c88ad74f3fe 664 break;
radovan 0:5c88ad74f3fe 665 }
radovan 0:5c88ad74f3fe 666 }//while timer
radovan 0:5c88ad74f3fe 667 }//while potvrdenie==0
radovan 0:5c88ad74f3fe 668 timer.stop();
radovan 0:5c88ad74f3fe 669 timer.reset();
radovan 0:5c88ad74f3fe 670
radovan 0:5c88ad74f3fe 671 }//koniec posli
radovan 0:5c88ad74f3fe 672 /*
radovan 0:5c88ad74f3fe 673 *void watchdogReset()
radovan 0:5c88ad74f3fe 674 *psole spravu pre resetovanie watchdogu caka na potvrdenie
radovan 0:5c88ad74f3fe 675 */
radovan 0:5c88ad74f3fe 676 void watchdogReset()
radovan 0:5c88ad74f3fe 677 {
radovan 0:5c88ad74f3fe 678 spravaVS[1]=WATCHDOG_TIMER;//prijimatel
radovan 0:5c88ad74f3fe 679 spravaVS[3]=1;//pocet dat
radovan 0:5c88ad74f3fe 680 spravaVS[4]=0x05;//data
radovan 0:5c88ad74f3fe 681 spravaVS[5]=CRC_WATCHDOG;//data
radovan 0:5c88ad74f3fe 682 posli(6);
radovan 0:5c88ad74f3fe 683 }