Adding gnss code
This commit is contained in:
43
Gnss_emulator/Gnss_emulator.ino
Normal file
43
Gnss_emulator/Gnss_emulator.ino
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <HardwareSerial.h>
|
||||
|
||||
#define RX_PIN 16
|
||||
#define TX_PIN 17
|
||||
|
||||
const int timeOut = 50; // in ms
|
||||
|
||||
HardwareSerial SerialUART(2);
|
||||
|
||||
const char gngga[] = "$GNGGA,072446.00,3130.5226316,N,12024.0937010,E,4,27,0.5,31.924,M,0.000,M,2.0,*44";
|
||||
const char gngga2[] = "$GNGGA,072446.00,3130.5526316,N,12024.1237010,E,4,27,0.5,41.924,M,0.000,M,2.0,*44";
|
||||
|
||||
hw_timer_t *timer = NULL;
|
||||
portMUX_TYPE timeMux = portMUX_INITIALIZER_UNLOCKED;
|
||||
|
||||
volatile bool sendFlag = false;
|
||||
bool even = false;
|
||||
|
||||
void IRAM_ATTR onTimer() {
|
||||
portENTER_CRITICAL_ISR(&timeMux);
|
||||
sendFlag = true;
|
||||
portEXIT_CRITICAL_ISR(&timeMux);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
SerialUART.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN);
|
||||
|
||||
timer = timerBegin(1000000);
|
||||
timerAttachInterrupt(timer, &onTimer);
|
||||
timerAlarm(timer, timeOut*1000, true, 0);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (sendFlag) {
|
||||
portENTER_CRITICAL(&timeMux);
|
||||
sendFlag = false;
|
||||
portEXIT_CRITICAL(&timeMux);
|
||||
even = !even;
|
||||
const uint8_t* message = even? (const uint8_t*)gngga : (const uint8_t*)gngga2;
|
||||
SerialUART.write(message, 82);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user