This commit is contained in:
Pawel Spychalski (DzikuVx)
2017-10-25 21:18:01 +02:00
parent 8f194e3968
commit 429d808fa2
3 changed files with 66 additions and 29 deletions

View File

@@ -3,8 +3,10 @@
#define DEVICE_MODE_TX #define DEVICE_MODE_TX
// #define DEVICE_MODE_RX // #define DEVICE_MODE_RX
#define DEBUG_SERIAL #define FEATURE_TX_OLED
// #define DEBUG_PING_PONG
// #define DEBUG_SERIAL
#define DEBUG_PING_PONG
// #define DEBUG_LED // #define DEBUG_LED
// #define WAIT_FOR_SERIAL // #define WAIT_FOR_SERIAL
@@ -25,14 +27,17 @@ int ppm[16] = {0};
* Main defines for device working in TX mode * Main defines for device working in TX mode
*/ */
#ifdef DEVICE_MODE_TX #ifdef DEVICE_MODE_TX
// #define OLED_RESET -1
#include <PPMReader.h> #include <PPMReader.h>
// #include <Adafruit_SSD1306.h>
PPMReader ppmReader(PPM_INPUT_PIN, PPM_INPUT_INTERRUPT, true); PPMReader ppmReader(PPM_INPUT_PIN, PPM_INPUT_INTERRUPT, true);
// PPMReader ppmReader(11, 2, MODE_PIN_CHANGE_INTERRUPT);
// Adafruit_SSD1306 display(OLED_RESET); #ifdef FEATURE_TX_OLED
#define OLED_RESET -1
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(OLED_RESET);
uint32_t lastOledTaskTime = 0;
#endif
#endif #endif
@@ -143,15 +148,6 @@ void setup(void)
#endif #endif
#ifdef DEVICE_MODE_RX #ifdef DEVICE_MODE_RX
/*
* Initialize OLED display
*/
// display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
// display.setTextSize(1);
// display.setTextColor(WHITE);
// display.clearDisplay();
// display.display();
//initiallize default ppm values //initiallize default ppm values
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
{ {
@@ -169,6 +165,15 @@ void setup(void)
TCCR1A = 0; //reset timer1 TCCR1A = 0; //reset timer1
TCCR1B = 0; TCCR1B = 0;
TCCR1B |= (1 << CS11); //set timer1 to increment every 0,5 us or 1us on 8MHz TCCR1B |= (1 << CS11); //set timer1 to increment every 0,5 us or 1us on 8MHz
#ifdef FEATURE_TX_OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
display.setTextSize(1);
display.setTextColor(WHITE);
display.clearDisplay();
display.display();
#endif
#endif #endif
pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
@@ -231,6 +236,40 @@ void loop(void)
#ifdef DEVICE_MODE_TX #ifdef DEVICE_MODE_TX
#ifdef FEATURE_TX_OLED
if (
currentMillis - lastOledTaskTime > OLED_UPDATE_RATE
) {
lastOledTaskTime = currentMillis;
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setCursor(0, 0);
display.print("TX RSSI: ");
display.print(map(getRadioRssi(), 0, 255, 0, 100));
display.setCursor(0, 12);
display.print("TX SNR: ");
display.print(getRadioSnr());
display.setCursor(0, 24);
display.print("RX RSSI: ");
display.print(map(rxDeviceState.rssi, 0, 255, 0, 100));
display.setCursor(0, 36);
display.print("RX SNR: ");
display.print(rxDeviceState.snr);
display.setCursor(0, 46);
display.print("Roundtrip: ");
display.print(rxDeviceState.roundtrip);
display.display();
}
#endif
#ifdef DEBUG_PING_PONG #ifdef DEBUG_PING_PONG
//PING frame //PING frame
if ( if (

15
qsp.cpp
View File

@@ -256,18 +256,13 @@ void qspDecodeIncomingFrame(QspConfiguration_t *qsp, uint8_t incomingByte, int p
break; break;
case QSP_FRAME_PONG: case QSP_FRAME_PONG:
if (qsp->debugConfig & DEBUG_FLAG_SERIAL) { rxDeviceState->roundtrip = qsp->payload[0];
rxDeviceState->roundtrip += (uint32_t) qsp->payload[1] << 8;
rxDeviceState->roundtrip += (uint32_t) qsp->payload[2] << 16;
rxDeviceState->roundtrip += (uint32_t) qsp->payload[3] << 24;
uint32_t incoming = 0; rxDeviceState->roundtrip = (micros() - rxDeviceState->roundtrip) / 1000;
incoming = qsp->payload[0];
incoming += (uint32_t) qsp->payload[1] << 8;
incoming += (uint32_t) qsp->payload[2] << 16;
incoming += (uint32_t) qsp->payload[3] << 24;
Serial.print("Rountrip: ");
Serial.println((micros() - incoming) / 1000);
}
break; break;
default: default:

View File

@@ -1,5 +1,7 @@
#pragma once #pragma once
#define OLED_UPDATE_RATE 300
#define SBUS_UPDATE_RATE 15 //ms #define SBUS_UPDATE_RATE 15 //ms
#define SBUS_PACKET_LENGTH 25 #define SBUS_PACKET_LENGTH 25
@@ -9,11 +11,11 @@
#define RX_TASK_HEALTH 200 //5Hz should be enough #define RX_TASK_HEALTH 200 //5Hz should be enough
#define RSSI_CHANNEL 11 #define RSSI_CHANNEL 11
#define RX_RX_HEALTH_FRAME_RATE 500 #define RX_RX_HEALTH_FRAME_RATE 503
#define TX_RC_FRAME_RATE 50 //ms #define TX_RC_FRAME_RATE 50 //ms
#define RX_FAILSAFE_DELAY (TX_RC_FRAME_RATE * 8) #define RX_FAILSAFE_DELAY (TX_RC_FRAME_RATE * 8)
#define TX_PING_RATE 2000 #define TX_PING_RATE 2007
#define CHANNEL_ID 0x01 #define CHANNEL_ID 0x01
#define QSP_PREAMBLE 0x51 #define QSP_PREAMBLE 0x51
@@ -90,4 +92,5 @@ struct RxDeviceState_t {
uint8_t rxVoltage = 0; uint8_t rxVoltage = 0;
uint8_t a1Voltage = 0; uint8_t a1Voltage = 0;
uint8_t a2Voltage = 0; uint8_t a2Voltage = 0;
uint32_t roundtrip = 0;
}; };