GPS to Pulga

Dependencies:   Si1133 BME280

Committer:
pancotinho
Date:
Fri Oct 23 14:42:31 2020 +0000
Revision:
25:ecdee9ef9939
Child:
26:1e1776201716
Pulga com GPS;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pancotinho 25:ecdee9ef9939 1
pancotinho 25:ecdee9ef9939 2 #define SYNC1 0xB5
pancotinho 25:ecdee9ef9939 3 #define SYNC2 0x62
pancotinho 25:ecdee9ef9939 4
pancotinho 25:ecdee9ef9939 5 //GPS DEclaration
pancotinho 25:ecdee9ef9939 6 SPI spi_2(P0_5, P0_7, P0_11); // mosi, miso, sclk
pancotinho 25:ecdee9ef9939 7 DigitalOut cs(P0_30);
pancotinho 25:ecdee9ef9939 8 DigitalOut gps_reset(P1_2);
pancotinho 25:ecdee9ef9939 9 DigitalOut gps_int (P0_23);
pancotinho 25:ecdee9ef9939 10 DigitalOut gps_DSEL (P0_27);
pancotinho 25:ecdee9ef9939 11
pancotinho 25:ecdee9ef9939 12
pancotinho 25:ecdee9ef9939 13
pancotinho 25:ecdee9ef9939 14
pancotinho 25:ecdee9ef9939 15
pancotinho 25:ecdee9ef9939 16 typedef struct
pancotinho 25:ecdee9ef9939 17 {
pancotinho 25:ecdee9ef9939 18 uint8_t cls;
pancotinho 25:ecdee9ef9939 19 uint8_t id;
pancotinho 25:ecdee9ef9939 20 uint16_t len; //Length of the payload. Does not include cls, id, or checksum bytes
pancotinho 25:ecdee9ef9939 21 uint8_t *payload;
pancotinho 25:ecdee9ef9939 22 uint8_t checksumA; //Given to us from module. Checked against the rolling calculated A/B checksums.
pancotinho 25:ecdee9ef9939 23 uint8_t checksumB;
pancotinho 25:ecdee9ef9939 24 } gps_ubxPacket;
pancotinho 25:ecdee9ef9939 25
pancotinho 25:ecdee9ef9939 26 typedef struct
pancotinho 25:ecdee9ef9939 27 {
pancotinho 25:ecdee9ef9939 28 uint32_t iTOW=0;
pancotinho 25:ecdee9ef9939 29 uint16_t year=0;
pancotinho 25:ecdee9ef9939 30 uint8_t month=0;
pancotinho 25:ecdee9ef9939 31 uint8_t day=0;
pancotinho 25:ecdee9ef9939 32 uint8_t hour=0;
pancotinho 25:ecdee9ef9939 33 uint8_t min=0;
pancotinho 25:ecdee9ef9939 34 uint8_t sec=0;
pancotinho 25:ecdee9ef9939 35 int8_t valid=0;
pancotinho 25:ecdee9ef9939 36 uint32_t tAcc=0;
pancotinho 25:ecdee9ef9939 37 int32_t nano=0;
pancotinho 25:ecdee9ef9939 38 uint8_t fixtype=0;
pancotinho 25:ecdee9ef9939 39 int8_t flags=0;
pancotinho 25:ecdee9ef9939 40 int8_t flags2=0;
pancotinho 25:ecdee9ef9939 41 uint8_t numSV=0;
pancotinho 25:ecdee9ef9939 42 int32_t lon=0;
pancotinho 25:ecdee9ef9939 43 int32_t lat=0;
pancotinho 25:ecdee9ef9939 44 int32_t height=0;
pancotinho 25:ecdee9ef9939 45 int32_t hMSL=0;
pancotinho 25:ecdee9ef9939 46 uint32_t hAcc=0;
pancotinho 25:ecdee9ef9939 47 uint32_t vAcc=0;
pancotinho 25:ecdee9ef9939 48 int32_t velN=0;
pancotinho 25:ecdee9ef9939 49 int32_t velE=0;
pancotinho 25:ecdee9ef9939 50 int32_t velD=0;
pancotinho 25:ecdee9ef9939 51 int32_t gSpeed=0;
pancotinho 25:ecdee9ef9939 52 int32_t headMot=0;
pancotinho 25:ecdee9ef9939 53 uint32_t sAcc=0;
pancotinho 25:ecdee9ef9939 54 uint32_t headAcc=0;
pancotinho 25:ecdee9ef9939 55 uint16_t pDOP=0;
pancotinho 25:ecdee9ef9939 56 int32_t headVeh;
pancotinho 25:ecdee9ef9939 57 int16_t magDec;
pancotinho 25:ecdee9ef9939 58 uint16_t magAcc;
pancotinho 25:ecdee9ef9939 59
pancotinho 25:ecdee9ef9939 60
pancotinho 25:ecdee9ef9939 61 } gps_navPVT;
pancotinho 25:ecdee9ef9939 62
pancotinho 25:ecdee9ef9939 63
pancotinho 25:ecdee9ef9939 64 void gps_leBootMsg(){
pancotinho 25:ecdee9ef9939 65
pancotinho 25:ecdee9ef9939 66 #define MAXIMUM_PACKET_SIZE 60
pancotinho 25:ecdee9ef9939 67 int packet_size;
pancotinho 25:ecdee9ef9939 68 uint8_t packet[MAXIMUM_PACKET_SIZE];
pancotinho 25:ecdee9ef9939 69 uint8_t value;
pancotinho 25:ecdee9ef9939 70 int cont;
pancotinho 25:ecdee9ef9939 71 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 72
pancotinho 25:ecdee9ef9939 73 while (value != '$' ){ //wait start boot msg
pancotinho 25:ecdee9ef9939 74 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 75 wait_ms(5);
pancotinho 25:ecdee9ef9939 76 cont++;
pancotinho 25:ecdee9ef9939 77 if (cont > 100){
pancotinho 25:ecdee9ef9939 78 printf("\n no response \n");
pancotinho 25:ecdee9ef9939 79 return;
pancotinho 25:ecdee9ef9939 80 }
pancotinho 25:ecdee9ef9939 81 }
pancotinho 25:ecdee9ef9939 82 packet[0] = value;
pancotinho 25:ecdee9ef9939 83 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 84 for (packet_size = 1 ; packet_size <= MAXIMUM_PACKET_SIZE ;packet_size++) {
pancotinho 25:ecdee9ef9939 85 if (value != '\n' ){
pancotinho 25:ecdee9ef9939 86 packet [packet_size]= value;
pancotinho 25:ecdee9ef9939 87 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 88 }
pancotinho 25:ecdee9ef9939 89 else {
pancotinho 25:ecdee9ef9939 90 //lora_send_packet (packet , (uint8_t) packet_size+1); // manda atraves do lora a mensagem de boot do gps
pancotinho 25:ecdee9ef9939 91 printf("Boot msg: %s \n", packet);
pancotinho 25:ecdee9ef9939 92 return;
pancotinho 25:ecdee9ef9939 93 }
pancotinho 25:ecdee9ef9939 94
pancotinho 25:ecdee9ef9939 95 }
pancotinho 25:ecdee9ef9939 96
pancotinho 25:ecdee9ef9939 97 }
pancotinho 25:ecdee9ef9939 98
pancotinho 25:ecdee9ef9939 99 void gps_le_envia_linha(){
pancotinho 25:ecdee9ef9939 100
pancotinho 25:ecdee9ef9939 101 uint8_t packet[150];
pancotinho 25:ecdee9ef9939 102 uint8_t value;
pancotinho 25:ecdee9ef9939 103
pancotinho 25:ecdee9ef9939 104 for (int i=0;i < 149; i++){
pancotinho 25:ecdee9ef9939 105 if (value == '\n'){
pancotinho 25:ecdee9ef9939 106 //lora_send_packet (packet , (uint8_t) i);
pancotinho 25:ecdee9ef9939 107 return;
pancotinho 25:ecdee9ef9939 108 }
pancotinho 25:ecdee9ef9939 109 else packet [i] =value;
pancotinho 25:ecdee9ef9939 110 }
pancotinho 25:ecdee9ef9939 111 //lora_send_packet (packet , (uint8_t) 99);
pancotinho 25:ecdee9ef9939 112
pancotinho 25:ecdee9ef9939 113 }
pancotinho 25:ecdee9ef9939 114
pancotinho 25:ecdee9ef9939 115
pancotinho 25:ecdee9ef9939 116 gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet) {
pancotinho 25:ecdee9ef9939 117
pancotinho 25:ecdee9ef9939 118 uint8_t Buffer[Packet.len + 4];
pancotinho 25:ecdee9ef9939 119 uint8_t CK_A=0;
pancotinho 25:ecdee9ef9939 120 uint8_t CK_B=0;
pancotinho 25:ecdee9ef9939 121
pancotinho 25:ecdee9ef9939 122 Buffer[0]= Packet.cls;
pancotinho 25:ecdee9ef9939 123 Buffer[1]= Packet.id;
pancotinho 25:ecdee9ef9939 124 Buffer[2]= Packet.len & 0xFF;
pancotinho 25:ecdee9ef9939 125 Buffer[3]= (Packet.len >> 8)& 0xFF;;
pancotinho 25:ecdee9ef9939 126
pancotinho 25:ecdee9ef9939 127 //send_packet (Buffer, (uint8_t) 4 );
pancotinho 25:ecdee9ef9939 128
pancotinho 25:ecdee9ef9939 129 for (uint16_t i = 0; i < Packet.len; i++) {
pancotinho 25:ecdee9ef9939 130 Buffer [i+4] = Packet.payload[i] ;
pancotinho 25:ecdee9ef9939 131 }
pancotinho 25:ecdee9ef9939 132
pancotinho 25:ecdee9ef9939 133 //send_packet (Buffer, (uint8_t) Packet.len + 4 );
pancotinho 25:ecdee9ef9939 134
pancotinho 25:ecdee9ef9939 135 for(int i=0 ; i < Packet.len + 4 ; i++) {
pancotinho 25:ecdee9ef9939 136 CK_A = CK_A + Buffer[i];
pancotinho 25:ecdee9ef9939 137 CK_B = CK_B + CK_A;
pancotinho 25:ecdee9ef9939 138 CK_A = CK_A & 0xFF;
pancotinho 25:ecdee9ef9939 139 CK_B = CK_B & 0xFF;
pancotinho 25:ecdee9ef9939 140 //uint8_t packet_check[5] ={Buffer[i],(uint8_t) (i+1),CK_A,CK_B,'#'};
pancotinho 25:ecdee9ef9939 141 // send_packet (packet_check , (uint8_t) 5);
pancotinho 25:ecdee9ef9939 142 }
pancotinho 25:ecdee9ef9939 143
pancotinho 25:ecdee9ef9939 144
pancotinho 25:ecdee9ef9939 145 // uint8_t packet_check[2] ={CK_A, CK_B};
pancotinho 25:ecdee9ef9939 146 // send_packet (packet_check , (uint8_t) 2);
pancotinho 25:ecdee9ef9939 147
pancotinho 25:ecdee9ef9939 148 Packet.checksumA = CK_A;
pancotinho 25:ecdee9ef9939 149 Packet.checksumB = CK_B;
pancotinho 25:ecdee9ef9939 150
pancotinho 25:ecdee9ef9939 151 return Packet;
pancotinho 25:ecdee9ef9939 152
pancotinho 25:ecdee9ef9939 153 }
pancotinho 25:ecdee9ef9939 154
pancotinho 25:ecdee9ef9939 155 void send_gps_packet(gps_ubxPacket packet){
pancotinho 25:ecdee9ef9939 156
pancotinho 25:ecdee9ef9939 157 spi_2.write(SYNC1);
pancotinho 25:ecdee9ef9939 158 spi_2.write(SYNC2);
pancotinho 25:ecdee9ef9939 159 spi_2.write(packet.cls);
pancotinho 25:ecdee9ef9939 160 spi_2.write(packet.id);
pancotinho 25:ecdee9ef9939 161 spi_2.write(packet.len & 0xFF);
pancotinho 25:ecdee9ef9939 162 spi_2.write((packet.len >> 8)& 0xFF);
pancotinho 25:ecdee9ef9939 163
pancotinho 25:ecdee9ef9939 164 for (uint16_t i = 0; i < packet.len; i++) {
pancotinho 25:ecdee9ef9939 165 spi_2.write(packet.payload[i]);
pancotinho 25:ecdee9ef9939 166 }
pancotinho 25:ecdee9ef9939 167 spi_2.write(packet.checksumA);
pancotinho 25:ecdee9ef9939 168 spi_2.write(packet.checksumB);
pancotinho 25:ecdee9ef9939 169
pancotinho 25:ecdee9ef9939 170 //=============imprime resposta
pancotinho 25:ecdee9ef9939 171 wait_ms(50);
pancotinho 25:ecdee9ef9939 172 gps_le_envia_linha();
pancotinho 25:ecdee9ef9939 173 gps_le_envia_linha();
pancotinho 25:ecdee9ef9939 174
pancotinho 25:ecdee9ef9939 175 }
pancotinho 25:ecdee9ef9939 176
pancotinho 25:ecdee9ef9939 177 gps_navPVT le_nav_pvt () {
pancotinho 25:ecdee9ef9939 178
pancotinho 25:ecdee9ef9939 179 gps_navPVT Pac;
pancotinho 25:ecdee9ef9939 180
pancotinho 25:ecdee9ef9939 181 char state = 0;
pancotinho 25:ecdee9ef9939 182 int cont =0;
pancotinho 25:ecdee9ef9939 183 int numb=0;
pancotinho 25:ecdee9ef9939 184
pancotinho 25:ecdee9ef9939 185 while (1){ //começou mensagem
pancotinho 25:ecdee9ef9939 186 if (cont > 100) {
pancotinho 25:ecdee9ef9939 187 // BMX160_read_acc();
pancotinho 25:ecdee9ef9939 188 return Pac;
pancotinho 25:ecdee9ef9939 189 }
pancotinho 25:ecdee9ef9939 190 if (state == 0 ){
pancotinho 25:ecdee9ef9939 191
pancotinho 25:ecdee9ef9939 192 if ( spi_2.write(0x00) == 0xB5){
pancotinho 25:ecdee9ef9939 193 state =1;
pancotinho 25:ecdee9ef9939 194 }
pancotinho 25:ecdee9ef9939 195 else {
pancotinho 25:ecdee9ef9939 196 cont++;
pancotinho 25:ecdee9ef9939 197 wait_ms(40);
pancotinho 25:ecdee9ef9939 198 }
pancotinho 25:ecdee9ef9939 199
pancotinho 25:ecdee9ef9939 200 }
pancotinho 25:ecdee9ef9939 201 else if (state == 1){ // read 0xb5
pancotinho 25:ecdee9ef9939 202 if (spi_2.write(0x00) == 0x62){
pancotinho 25:ecdee9ef9939 203 state =2;
pancotinho 25:ecdee9ef9939 204 //wait_ms(30);
pancotinho 25:ecdee9ef9939 205 }
pancotinho 25:ecdee9ef9939 206 else state =0;
pancotinho 25:ecdee9ef9939 207 }
pancotinho 25:ecdee9ef9939 208 else if (state == 2) {// read 0xb5 0x62
pancotinho 25:ecdee9ef9939 209 if (spi_2.write(0x00) == 0x01){
pancotinho 25:ecdee9ef9939 210 printf("le_nav_pvt going to state 3");
pancotinho 25:ecdee9ef9939 211 state =3;
pancotinho 25:ecdee9ef9939 212 //wait_ms(30);
pancotinho 25:ecdee9ef9939 213 }
pancotinho 25:ecdee9ef9939 214 else state =0;
pancotinho 25:ecdee9ef9939 215 }
pancotinho 25:ecdee9ef9939 216 else if (state == 3) {// read 0xb5 0x62 0x01
pancotinho 25:ecdee9ef9939 217 if (spi_2.write(0x00) == 0x07){
pancotinho 25:ecdee9ef9939 218 state =4;
pancotinho 25:ecdee9ef9939 219 printf("le_nav_pvt going to state 4");
pancotinho 25:ecdee9ef9939 220 //wait_ms(30);
pancotinho 25:ecdee9ef9939 221 }
pancotinho 25:ecdee9ef9939 222 else state =0;
pancotinho 25:ecdee9ef9939 223 }
pancotinho 25:ecdee9ef9939 224 else if (state == 4) {// read 0xb5 0x62 0x01 0x07
pancotinho 25:ecdee9ef9939 225 if (spi_2.write(0x00) == 0x5c){
pancotinho 25:ecdee9ef9939 226 state =5;
pancotinho 25:ecdee9ef9939 227 printf("le_nav_pvt going to state 5");
pancotinho 25:ecdee9ef9939 228 //wait_ms(30);
pancotinho 25:ecdee9ef9939 229 }
pancotinho 25:ecdee9ef9939 230 else state =0;
pancotinho 25:ecdee9ef9939 231 }
pancotinho 25:ecdee9ef9939 232 else if (state == 5) {// read 0xb5 0x62 0x01 0x07 0x5c
pancotinho 25:ecdee9ef9939 233 if (spi_2.write(0x00) == 0x00){
pancotinho 25:ecdee9ef9939 234 state =6;
pancotinho 25:ecdee9ef9939 235 printf("le_nav_pvt going to state 6");
pancotinho 25:ecdee9ef9939 236 //wait_ms(30);
pancotinho 25:ecdee9ef9939 237 }
pancotinho 25:ecdee9ef9939 238 else state =0;
pancotinho 25:ecdee9ef9939 239 }
pancotinho 25:ecdee9ef9939 240 else if (state == 6){ // read 0xb5 0x62 0x01 0x07 0x5c 0x00
pancotinho 25:ecdee9ef9939 241 uint8_t value1,value2,value3,value4;
pancotinho 25:ecdee9ef9939 242 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 243 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 244 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 245 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 246 Pac.iTOW = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 247
pancotinho 25:ecdee9ef9939 248 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 249 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 250 Pac.year = (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 251
pancotinho 25:ecdee9ef9939 252 Pac.month = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 253 Pac.day = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 254 Pac.hour = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 255 Pac.min = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 256 Pac.sec = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 257 Pac.valid = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 258
pancotinho 25:ecdee9ef9939 259 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 260 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 261 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 262 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 263 Pac.tAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 264
pancotinho 25:ecdee9ef9939 265 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 266 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 267 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 268 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 269 Pac.nano = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 270
pancotinho 25:ecdee9ef9939 271 Pac.fixtype = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 272 Pac.flags = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 273 Pac.flags2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 274 Pac.numSV = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 275
pancotinho 25:ecdee9ef9939 276 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 277 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 278 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 279 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 280 Pac.lon = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 281 lon= (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 282 printf("Long Data %d \n ", lon);
pancotinho 25:ecdee9ef9939 283
pancotinho 25:ecdee9ef9939 284 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 285 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 286 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 287 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 288 Pac.lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 289 lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 290 printf("Lat Data %d", lat);
pancotinho 25:ecdee9ef9939 291
pancotinho 25:ecdee9ef9939 292
pancotinho 25:ecdee9ef9939 293 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 294 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 295 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 296 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 297 Pac.height = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 298
pancotinho 25:ecdee9ef9939 299 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 300 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 301 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 302 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 303 Pac.hMSL = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 304
pancotinho 25:ecdee9ef9939 305 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 306 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 307 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 308 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 309 Pac.hAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 310
pancotinho 25:ecdee9ef9939 311 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 312 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 313 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 314 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 315 Pac.vAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 316
pancotinho 25:ecdee9ef9939 317 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 318 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 319 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 320 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 321 Pac.velN = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 322
pancotinho 25:ecdee9ef9939 323 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 324 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 325 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 326 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 327 Pac.velE = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 328
pancotinho 25:ecdee9ef9939 329 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 330 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 331 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 332 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 333 Pac.velD = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 334
pancotinho 25:ecdee9ef9939 335 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 336 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 337 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 338 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 339 Pac.gSpeed = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 340
pancotinho 25:ecdee9ef9939 341 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 342 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 343 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 344 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 345 Pac.headMot = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 346
pancotinho 25:ecdee9ef9939 347 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 348 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 349 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 350 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 351 Pac.sAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 352
pancotinho 25:ecdee9ef9939 353 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 354 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 355 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 356 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 357 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 358
pancotinho 25:ecdee9ef9939 359 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 360 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 361 Pac.pDOP = (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 362
pancotinho 25:ecdee9ef9939 363 for (int i=0; i < 6; i++)spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 364
pancotinho 25:ecdee9ef9939 365 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 366 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 367 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 368 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 369 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 370
pancotinho 25:ecdee9ef9939 371 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 372 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 373 value3 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 374 value4 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 375 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 376
pancotinho 25:ecdee9ef9939 377 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 378 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 379 Pac.magDec = (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 380
pancotinho 25:ecdee9ef9939 381 value1 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 382 value2 = 0xff & spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 383 Pac.magAcc = (value2 << 8) + value1;
pancotinho 25:ecdee9ef9939 384
pancotinho 25:ecdee9ef9939 385
pancotinho 25:ecdee9ef9939 386 return Pac;
pancotinho 25:ecdee9ef9939 387 }
pancotinho 25:ecdee9ef9939 388 }
pancotinho 25:ecdee9ef9939 389 wait_ms(100);
pancotinho 25:ecdee9ef9939 390 }
pancotinho 25:ecdee9ef9939 391
pancotinho 25:ecdee9ef9939 392 void send_nav_pvt (){
pancotinho 25:ecdee9ef9939 393 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
pancotinho 25:ecdee9ef9939 394
pancotinho 25:ecdee9ef9939 395 //=============envia pacote nav pvt
pancotinho 25:ecdee9ef9939 396 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
pancotinho 25:ecdee9ef9939 397 spi_2.write(packet_nav_pvt[i]);
pancotinho 25:ecdee9ef9939 398 wait_ms(5);
pancotinho 25:ecdee9ef9939 399 }
pancotinho 25:ecdee9ef9939 400
pancotinho 25:ecdee9ef9939 401 gps_navPVT Data = le_nav_pvt();
pancotinho 25:ecdee9ef9939 402
pancotinho 25:ecdee9ef9939 403 uint8_t packet [100];
pancotinho 25:ecdee9ef9939 404
pancotinho 25:ecdee9ef9939 405 packet [0]= (Data.lon >> 24)& 0xff;
pancotinho 25:ecdee9ef9939 406 packet [1]= (Data.lon >> 16) & 0xff ;
pancotinho 25:ecdee9ef9939 407 packet [2]= (Data.lon >> 8) & 0xff;
pancotinho 25:ecdee9ef9939 408 packet [3]= Data.lon & 0xff;
pancotinho 25:ecdee9ef9939 409 packet [4]= (Data.lat >> 24)& 0xff;
pancotinho 25:ecdee9ef9939 410 packet [5]= (Data.lat >> 16) & 0xff ;
pancotinho 25:ecdee9ef9939 411 packet [6]= (Data.lat >> 8) & 0xff;
pancotinho 25:ecdee9ef9939 412 packet [7]= Data.lat & 0xff;
pancotinho 25:ecdee9ef9939 413 packet [8]= (Data.hMSL >> 24)& 0xff;
pancotinho 25:ecdee9ef9939 414 packet [9]= (Data.hMSL >> 16) & 0xff ;
pancotinho 25:ecdee9ef9939 415 packet [10]= (Data.hMSL >> 8) & 0xff;
pancotinho 25:ecdee9ef9939 416 packet [11]= Data.hMSL & 0xff;
pancotinho 25:ecdee9ef9939 417
pancotinho 25:ecdee9ef9939 418 if (Data.lon !=0 || Data.lat !=0 ){
pancotinho 25:ecdee9ef9939 419 //lora_send_packet (packet , (uint8_t) 12);
pancotinho 25:ecdee9ef9939 420 }
pancotinho 25:ecdee9ef9939 421 }
pancotinho 25:ecdee9ef9939 422
pancotinho 25:ecdee9ef9939 423 void send_gps_data(uint8_t *packet, uint8_t size){
pancotinho 25:ecdee9ef9939 424 uint8_t packet_rec[size];
pancotinho 25:ecdee9ef9939 425 for ( int i=0; i< size ; i++){
pancotinho 25:ecdee9ef9939 426 spi_2.write(packet[i]);
pancotinho 25:ecdee9ef9939 427
pancotinho 25:ecdee9ef9939 428 //wait_ms(5);
pancotinho 25:ecdee9ef9939 429 }
pancotinho 25:ecdee9ef9939 430 //send_packet (packet_rec ,size);
pancotinho 25:ecdee9ef9939 431 }
pancotinho 25:ecdee9ef9939 432
pancotinho 25:ecdee9ef9939 433 /*
pancotinho 25:ecdee9ef9939 434 void wait_packet (uint8_t *header) {
pancotinho 25:ecdee9ef9939 435
pancotinho 25:ecdee9ef9939 436 char state = 0;
pancotinho 25:ecdee9ef9939 437 int cont =0;
pancotinho 25:ecdee9ef9939 438
pancotinho 25:ecdee9ef9939 439 while (1){ //começou mensagem
pancotinho 25:ecdee9ef9939 440 if (cont > 250) {
pancotinho 25:ecdee9ef9939 441 //led2=!led2;
pancotinho 25:ecdee9ef9939 442 return;
pancotinho 25:ecdee9ef9939 443 }
pancotinho 25:ecdee9ef9939 444 if (state == 0 ){
pancotinho 25:ecdee9ef9939 445 if (spi_2.write(0x00) == header[0])
pancotinho 25:ecdee9ef9939 446 state =1;
pancotinho 25:ecdee9ef9939 447 else {
pancotinho 25:ecdee9ef9939 448 cont++;
pancotinho 25:ecdee9ef9939 449 wait_ms(10);
pancotinho 25:ecdee9ef9939 450 }
pancotinho 25:ecdee9ef9939 451
pancotinho 25:ecdee9ef9939 452
pancotinho 25:ecdee9ef9939 453 }
pancotinho 25:ecdee9ef9939 454 else if (state == 1){ // read 0xb5
pancotinho 25:ecdee9ef9939 455 if (spi_2.write(0x00) == header[1]){
pancotinho 25:ecdee9ef9939 456 state =2;
pancotinho 25:ecdee9ef9939 457 }
pancotinho 25:ecdee9ef9939 458 else state =0;
pancotinho 25:ecdee9ef9939 459 }
pancotinho 25:ecdee9ef9939 460 else if (state == 2) {// read 0xb5 0x62
pancotinho 25:ecdee9ef9939 461 if (spi_2.write(0x00) == header[2]){
pancotinho 25:ecdee9ef9939 462 state =3;
pancotinho 25:ecdee9ef9939 463 }
pancotinho 25:ecdee9ef9939 464 else state =0;
pancotinho 25:ecdee9ef9939 465 }
pancotinho 25:ecdee9ef9939 466 else if (state == 3) {// read 0xb5 0x62 0x06
pancotinho 25:ecdee9ef9939 467 if (spi_2.write(0x00) == header[3]){
pancotinho 25:ecdee9ef9939 468 state =4;
pancotinho 25:ecdee9ef9939 469 }
pancotinho 25:ecdee9ef9939 470 else state =0;
pancotinho 25:ecdee9ef9939 471 }
pancotinho 25:ecdee9ef9939 472 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
pancotinho 25:ecdee9ef9939 473
pancotinho 25:ecdee9ef9939 474 uint8_t packet[100];
pancotinho 25:ecdee9ef9939 475 uint8_t value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 476 uint8_t packet_size;
pancotinho 25:ecdee9ef9939 477
pancotinho 25:ecdee9ef9939 478 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
pancotinho 25:ecdee9ef9939 479 if (value != '\n' ){
pancotinho 25:ecdee9ef9939 480 packet [packet_size]= value;
pancotinho 25:ecdee9ef9939 481 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 482 }
pancotinho 25:ecdee9ef9939 483 else {
pancotinho 25:ecdee9ef9939 484 lora_send_packet (packet , (uint8_t) packet_size+1);
pancotinho 25:ecdee9ef9939 485 //packet_size = MAXIMUM_PACKET_SIZE +1;
pancotinho 25:ecdee9ef9939 486 return;
pancotinho 25:ecdee9ef9939 487 }
pancotinho 25:ecdee9ef9939 488 }
pancotinho 25:ecdee9ef9939 489
pancotinho 25:ecdee9ef9939 490 }
pancotinho 25:ecdee9ef9939 491 }
pancotinho 25:ecdee9ef9939 492 }*/
pancotinho 25:ecdee9ef9939 493
pancotinho 25:ecdee9ef9939 494 void wait_packet_byte (uint8_t *header, uint8_t byte) {
pancotinho 25:ecdee9ef9939 495
pancotinho 25:ecdee9ef9939 496 char state = 0;
pancotinho 25:ecdee9ef9939 497 int cont =0;
pancotinho 25:ecdee9ef9939 498
pancotinho 25:ecdee9ef9939 499 while (1){ //começou mensagem
pancotinho 25:ecdee9ef9939 500 if (cont > 250) {
pancotinho 25:ecdee9ef9939 501 //led2=!led2;
pancotinho 25:ecdee9ef9939 502 return;
pancotinho 25:ecdee9ef9939 503 }
pancotinho 25:ecdee9ef9939 504 if (state == 0 ){
pancotinho 25:ecdee9ef9939 505 if (spi_2.write(0x00) == header[0])
pancotinho 25:ecdee9ef9939 506 state =1;
pancotinho 25:ecdee9ef9939 507 else {
pancotinho 25:ecdee9ef9939 508 cont++;
pancotinho 25:ecdee9ef9939 509 wait_ms(10);
pancotinho 25:ecdee9ef9939 510 }
pancotinho 25:ecdee9ef9939 511
pancotinho 25:ecdee9ef9939 512
pancotinho 25:ecdee9ef9939 513 }
pancotinho 25:ecdee9ef9939 514 else if (state == 1){ // read 0xb5
pancotinho 25:ecdee9ef9939 515 if (spi_2.write(0x00) == header[1]){
pancotinho 25:ecdee9ef9939 516 state =2;
pancotinho 25:ecdee9ef9939 517 }
pancotinho 25:ecdee9ef9939 518 else state =0;
pancotinho 25:ecdee9ef9939 519 }
pancotinho 25:ecdee9ef9939 520 else if (state == 2) {// read 0xb5 0x62
pancotinho 25:ecdee9ef9939 521 if (spi_2.write(0x00) == header[2]){
pancotinho 25:ecdee9ef9939 522 state =3;
pancotinho 25:ecdee9ef9939 523 }
pancotinho 25:ecdee9ef9939 524 else state =0;
pancotinho 25:ecdee9ef9939 525 }
pancotinho 25:ecdee9ef9939 526 else if (state == 3) {// read 0xb5 0x62 0x06
pancotinho 25:ecdee9ef9939 527 if (spi_2.write(0x00) == header[3]){
pancotinho 25:ecdee9ef9939 528 state =4;
pancotinho 25:ecdee9ef9939 529 }
pancotinho 25:ecdee9ef9939 530 else state =0;
pancotinho 25:ecdee9ef9939 531 }
pancotinho 25:ecdee9ef9939 532 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
pancotinho 25:ecdee9ef9939 533
pancotinho 25:ecdee9ef9939 534 if (byte == 0){//mostrar todo o pacote
pancotinho 25:ecdee9ef9939 535 uint8_t packet[100];
pancotinho 25:ecdee9ef9939 536 uint8_t value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 537 uint8_t packet_size;
pancotinho 25:ecdee9ef9939 538
pancotinho 25:ecdee9ef9939 539 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
pancotinho 25:ecdee9ef9939 540 if (value != '\n' ){
pancotinho 25:ecdee9ef9939 541 packet [packet_size]= value;
pancotinho 25:ecdee9ef9939 542 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 543 }
pancotinho 25:ecdee9ef9939 544 else {
pancotinho 25:ecdee9ef9939 545 //lora_send_packet (packet , (uint8_t) packet_size+1);
pancotinho 25:ecdee9ef9939 546 //packet_size = MAXIMUM_PACKET_SIZE +1;
pancotinho 25:ecdee9ef9939 547 return;
pancotinho 25:ecdee9ef9939 548 }
pancotinho 25:ecdee9ef9939 549 }//fim for
pancotinho 25:ecdee9ef9939 550 }//fim if byte
pancotinho 25:ecdee9ef9939 551
pancotinho 25:ecdee9ef9939 552 else {//mostrar apenas um byte
pancotinho 25:ecdee9ef9939 553
pancotinho 25:ecdee9ef9939 554
pancotinho 25:ecdee9ef9939 555 for (int i = 0 ; i < byte-1 ;i++)
pancotinho 25:ecdee9ef9939 556 spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 557
pancotinho 25:ecdee9ef9939 558 uint8_t packet[]={(uint8_t)99,(uint8_t)spi_2.write(0x00)};
pancotinho 25:ecdee9ef9939 559 //lora_send_packet (packet , (uint8_t) 2);
pancotinho 25:ecdee9ef9939 560
pancotinho 25:ecdee9ef9939 561
pancotinho 25:ecdee9ef9939 562 for (int i = 0 ; i < 100 ;i++)
pancotinho 25:ecdee9ef9939 563 if (spi_2.write(0x00) == '\n')
pancotinho 25:ecdee9ef9939 564 return;
pancotinho 25:ecdee9ef9939 565
pancotinho 25:ecdee9ef9939 566 return;
pancotinho 25:ecdee9ef9939 567
pancotinho 25:ecdee9ef9939 568 }//fim else byte
pancotinho 25:ecdee9ef9939 569
pancotinho 25:ecdee9ef9939 570 }
pancotinho 25:ecdee9ef9939 571
pancotinho 25:ecdee9ef9939 572 }
pancotinho 25:ecdee9ef9939 573
pancotinho 25:ecdee9ef9939 574 }
pancotinho 25:ecdee9ef9939 575
pancotinho 25:ecdee9ef9939 576
pancotinho 25:ecdee9ef9939 577 void gps_wait_same_packet () {
pancotinho 25:ecdee9ef9939 578
pancotinho 25:ecdee9ef9939 579 char state = 0;
pancotinho 25:ecdee9ef9939 580 int cont =0;
pancotinho 25:ecdee9ef9939 581
pancotinho 25:ecdee9ef9939 582 while (1){ //começou mensagem
pancotinho 25:ecdee9ef9939 583 if (cont > 250) {
pancotinho 25:ecdee9ef9939 584 //led2=!led2;
pancotinho 25:ecdee9ef9939 585 return;
pancotinho 25:ecdee9ef9939 586 }
pancotinho 25:ecdee9ef9939 587 if (state == 0 ){
pancotinho 25:ecdee9ef9939 588 if (spi_2.write(0x00) == 0xb5)
pancotinho 25:ecdee9ef9939 589 state =1;
pancotinho 25:ecdee9ef9939 590 else {
pancotinho 25:ecdee9ef9939 591 cont++;
pancotinho 25:ecdee9ef9939 592 wait_ms(10);
pancotinho 25:ecdee9ef9939 593 }
pancotinho 25:ecdee9ef9939 594
pancotinho 25:ecdee9ef9939 595
pancotinho 25:ecdee9ef9939 596 }
pancotinho 25:ecdee9ef9939 597 else if (state == 1){ // read 0xb5
pancotinho 25:ecdee9ef9939 598 if (spi_2.write(0x00) == 0x62){
pancotinho 25:ecdee9ef9939 599 state =2;
pancotinho 25:ecdee9ef9939 600 }
pancotinho 25:ecdee9ef9939 601 else state =0;
pancotinho 25:ecdee9ef9939 602 }
pancotinho 25:ecdee9ef9939 603 else if (state == 2){
pancotinho 25:ecdee9ef9939 604 uint8_t packet[200];
pancotinho 25:ecdee9ef9939 605 uint8_t value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 606 uint8_t packet_size;
pancotinho 25:ecdee9ef9939 607
pancotinho 25:ecdee9ef9939 608 for (packet_size = 0 ; packet_size < 200 ;packet_size++) {
pancotinho 25:ecdee9ef9939 609 if (value != '\n' ){
pancotinho 25:ecdee9ef9939 610 packet [packet_size]= value;
pancotinho 25:ecdee9ef9939 611 value = spi_2.write(0x00);
pancotinho 25:ecdee9ef9939 612 }
pancotinho 25:ecdee9ef9939 613 else {
pancotinho 25:ecdee9ef9939 614 //lora_send_packet (packet , (uint8_t) packet_size+1);
pancotinho 25:ecdee9ef9939 615 //packet_size = MAXIMUM_PACKET_SIZE +1;
pancotinho 25:ecdee9ef9939 616 return;
pancotinho 25:ecdee9ef9939 617 }
pancotinho 25:ecdee9ef9939 618
pancotinho 25:ecdee9ef9939 619 }//fim for
pancotinho 25:ecdee9ef9939 620 // lora_send_packet (packet , 200);
pancotinho 25:ecdee9ef9939 621 }
pancotinho 25:ecdee9ef9939 622 }
pancotinho 25:ecdee9ef9939 623 }
pancotinho 25:ecdee9ef9939 624
pancotinho 25:ecdee9ef9939 625 void gps_config_gnss (){
pancotinho 25:ecdee9ef9939 626
pancotinho 25:ecdee9ef9939 627 uint8_t packet_cfg_gnss[] = {
pancotinho 25:ecdee9ef9939 628 0xB5, 0x62, // Header
pancotinho 25:ecdee9ef9939 629 0x03, 0x3E, // Class ID = CFG, Msg ID = UBX-CFG-GNSS
pancotinho 25:ecdee9ef9939 630 0x3C, 0x00, // Payload Length = 60 bytes
pancotinho 25:ecdee9ef9939 631 0x00, 0x00, 0x20, 0x07, // msgVer=0, numTrkChHw=32, numTrkChUse=32, numConfigBlocks=7
pancotinho 25:ecdee9ef9939 632 0x00, 0x08, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, // gnssId=0 (GPS), resTrkCh=8, maxTrkCh=12, ENABLE
pancotinho 25:ecdee9ef9939 633 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=1 (SBAS), resTrkCh=1, maxTrkCh=2, ENABLE
pancotinho 25:ecdee9ef9939 634 0x02, 0x04, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=2 (Galileo), resTrkCh=4, maxTrkCh=10, ENABLE
pancotinho 25:ecdee9ef9939 635 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=3 (BeiDou), resTrkCh=4, maxTrkCh=8, DISABLE
pancotinho 25:ecdee9ef9939 636 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=4 (IMES), resTrkCh=0, maxTrkCh=8, DISABLE
pancotinho 25:ecdee9ef9939 637 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=5 (QZSS), resTrkCh=0, maxTrkCh=3, DISABLE
pancotinho 25:ecdee9ef9939 638 0x06, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=6 (GLONASS), resTrkCh=4, maxTrkCh=8, ENABLE
pancotinho 25:ecdee9ef9939 639 0x00, 0x00 //checksums A &amp; B
pancotinho 25:ecdee9ef9939 640 };
pancotinho 25:ecdee9ef9939 641 uint8_t pos_ck = sizeof(packet_cfg_gnss)-2;
pancotinho 25:ecdee9ef9939 642 printf("gnss config finish");
pancotinho 25:ecdee9ef9939 643 uint8_t ubxi;
pancotinho 25:ecdee9ef9939 644 //calcula checksum
pancotinho 25:ecdee9ef9939 645 for (ubxi=2; ubxi<pos_ck ; ubxi++) {
pancotinho 25:ecdee9ef9939 646 packet_cfg_gnss[pos_ck] = packet_cfg_gnss[pos_ck] + packet_cfg_gnss[ubxi];
pancotinho 25:ecdee9ef9939 647 packet_cfg_gnss[pos_ck+1] = packet_cfg_gnss[pos_ck+1] + packet_cfg_gnss[pos_ck];
pancotinho 25:ecdee9ef9939 648 }
pancotinho 25:ecdee9ef9939 649
pancotinho 25:ecdee9ef9939 650 }
pancotinho 25:ecdee9ef9939 651
pancotinho 25:ecdee9ef9939 652
pancotinho 25:ecdee9ef9939 653 void gps_print_local (){
pancotinho 25:ecdee9ef9939 654 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
pancotinho 25:ecdee9ef9939 655
pancotinho 25:ecdee9ef9939 656 //=============envia pacote nav pvt
pancotinho 25:ecdee9ef9939 657 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
pancotinho 25:ecdee9ef9939 658 spi_2.write(packet_nav_pvt[i]);
pancotinho 25:ecdee9ef9939 659 wait_ms(20);
pancotinho 25:ecdee9ef9939 660 }
pancotinho 25:ecdee9ef9939 661
pancotinho 25:ecdee9ef9939 662 gps_navPVT Data = le_nav_pvt();
pancotinho 25:ecdee9ef9939 663
pancotinho 25:ecdee9ef9939 664 //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon );
pancotinho 25:ecdee9ef9939 665 //lat=Data.lat;
pancotinho 25:ecdee9ef9939 666 //lon=Data.lon;
pancotinho 25:ecdee9ef9939 667 }
pancotinho 25:ecdee9ef9939 668
pancotinho 25:ecdee9ef9939 669 void gps_config (){
pancotinho 25:ecdee9ef9939 670 gps_DSEL = 0;
pancotinho 25:ecdee9ef9939 671 //spi gps configuration
pancotinho 25:ecdee9ef9939 672 spi_2.format(8,0);
pancotinho 25:ecdee9ef9939 673 spi_2.frequency(1000000); //1MHz
pancotinho 25:ecdee9ef9939 674 cs=1;
pancotinho 25:ecdee9ef9939 675 wait(0.1);
pancotinho 25:ecdee9ef9939 676 cs=0;
pancotinho 25:ecdee9ef9939 677 wait(0.1);
pancotinho 25:ecdee9ef9939 678
pancotinho 25:ecdee9ef9939 679 gps_int = 0;
pancotinho 25:ecdee9ef9939 680
pancotinho 25:ecdee9ef9939 681 //gps reset
pancotinho 25:ecdee9ef9939 682 gps_reset = 1;
pancotinho 25:ecdee9ef9939 683 wait_ms(50);
pancotinho 25:ecdee9ef9939 684 //gps_reset = 0;
pancotinho 25:ecdee9ef9939 685 //wait(1.5);
pancotinho 25:ecdee9ef9939 686 }
pancotinho 25:ecdee9ef9939 687