From 30afcdd8b7be6f0fd13ab5e50c1eb692173c7a66 Mon Sep 17 00:00:00 2001 From: loredan13 Date: Thu, 6 Feb 2020 11:12:32 +0300 Subject: [PATCH] Added separate cmd file --- .../src/Pyr0_Piezo_Sensor_V2.x.x.cpp | 4 - .../Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.h | 119 +++++++ .../src/pP_config.cpp | 109 +++++++ .../src/pP_function.h | 198 ++++-------- .../Pyr0_Piezo_Sensor_v2.x.x/src/pP_serial.h | 296 +++++++----------- .../src/pP_volatile.h | 7 + 6 files changed, 411 insertions(+), 322 deletions(-) create mode 100644 firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.h diff --git a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/Pyr0_Piezo_Sensor_V2.x.x.cpp b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/Pyr0_Piezo_Sensor_V2.x.x.cpp index 6eae9d1..4062f02 100644 --- a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/Pyr0_Piezo_Sensor_V2.x.x.cpp +++ b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/Pyr0_Piezo_Sensor_V2.x.x.cpp @@ -84,10 +84,6 @@ update the voltMeterConstant variable in pP_config.h with the correct value ------------------------------------------------------------*/ -/* Debug output verbose mode will continuously output sensor readings - rather than waiting for user input */ -#define VERBOSE true - // Headers, variables, and functions #include #include diff --git a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.h b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.h new file mode 100644 index 0000000..9e4d335 --- /dev/null +++ b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.h @@ -0,0 +1,119 @@ +#ifndef PP_CMD_H +#define PP_CMD_H + +#include "pP_config.h" +#include "pP_function.h" +#include "EEPROM.h" + +/*------------------------------------------------*/ + +void updateGainFactor(int value) +{ + if (value >= 0) + { + GAIN_FACTOR = value; + adjustGain(); + EEPROM.put(GAIN_FACTOR_ADDRESS, GAIN_FACTOR); + } +} + +/*------------------------------------------------*/ + +void updateVFol(int value) +{ + if (value >= 0) + { + followerThrs = value; + adjustFollow(); + EEPROM.put(FOLLOWER_THRESHOLD_ADDRESS, followerThrs); + } +} +/*------------------------------------------------*/ + +void updateVComp(int value) +{ + if (value >= 0) + { + compThrs = value; + adjustComp(); + EEPROM.put(COMP_THRESHOLD_ADDRESS, compThrs); + } +} + +/*------------------------------------------------*/ + +void updateLoopDuration(int value) +{ + if (value >= 0) + { + LOOP_DUR = value; + EEPROM.put(LOOP_DUR_ADDRESS, LOOP_DUR); + } +} +/*------------------------------------------------*/ + +void updateTrigDuration(int value) +{ + if (value >= 0) + { + TRG_DUR = value; + EEPROM.put(TRG_DUR_ADDRESS, TRG_DUR); + } +} +/*------------------------------------------------*/ + +void updateHysteresis(int value) +{ + if (value >= 0) + { + Hyst = value; + EEPROM.put(HYST_ADDRESS, Hyst); + } +} +/*------------------------------------------------*/ + +void updateLogic(int value) +{ + if (value >= 0) + { + LOGIC = value; + EEPROM.put(LOGIC_ADDRESS, LOGIC); + pulse(); + } +} +/*------------------------------------------------*/ + +void updatePzDet(int value) +{ + if (value >= 0) + { + PZDET = value; + EEPROM.put(PZDET_ADDRESS, PZDET); + } +} +/*------------------------------------------------*/ + +void updateConstant(long value) +{ + if (value >= 0) + { + voltMeterConstant = value; + EEPROM.put(VM_CONST_ADDRESS, voltMeterConstant); + } +} + +/*------------------------------------------------*/ + +void updateDebug(int value) +{ + if (value > 0) + { + Debug = 1; + } + else if (value == 0) + { + Debug = 0; + } +} + +#endif //PP_CMD_H \ No newline at end of file diff --git a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_config.cpp b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_config.cpp index 7c74583..f284b6e 100644 --- a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_config.cpp +++ b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_config.cpp @@ -1,4 +1,5 @@ #include "pP_config.h" +#include "pP_function.h" #include int GAIN_FACTOR = GAIN_FACTOR_DEFAULT; // Gain adjustment factor. 0=3x, 1=3.5x, 2=4.33x, 3=6x, 4=11x @@ -12,3 +13,111 @@ int PZDET = PZDET_DEFAULT; // Enable/disable piezo connection detection int Debug = 0; long voltMeterConstant = VM_CONST_DEFAULT; uint8_t pP_i2c_address = 0xa0; + +/*------------------------------------------------*/ +void eraseEEPROM() { + + setDefaultConfig(); + + EEPROM.put(GAIN_FACTOR_ADDRESS, GAIN_FACTOR); + EEPROM.put(FOLLOWER_THRESHOLD_ADDRESS, followerThrs); + EEPROM.put(COMP_THRESHOLD_ADDRESS, compThrs); + EEPROM.put(LOOP_DUR_ADDRESS, LOOP_DUR); + EEPROM.put(TRG_DUR_ADDRESS, TRG_DUR); + EEPROM.put(HYST_ADDRESS, Hyst); + EEPROM.put(PZDET_ADDRESS, PZDET); + EEPROM.put(LOGIC_ADDRESS, LOGIC); + EEPROM.put(VM_CONST_ADDRESS, voltMeterConstant); +} + +// Restore config from EEPROM, otherwise erase config and write to EEPROM +void restoreConfig() { + int temp; + + bool erase = false; + + EEPROM.get(GAIN_FACTOR_ADDRESS, temp); + if (temp < 0 || temp > 4) { + erase = true; + } else { + GAIN_FACTOR = temp; + } + + EEPROM.get(FOLLOWER_THRESHOLD_ADDRESS, temp); + if (temp < 0 || temp > 5000) { + erase = true; + } else { + followerThrs = temp; + } + + EEPROM.get(COMP_THRESHOLD_ADDRESS, temp); + if (temp < 0 || temp > 5000) { + erase = true; + } else { + compThrs = temp; + } + + EEPROM.get(LOOP_DUR_ADDRESS, temp); + if (temp < 0 && temp > 1000) { + erase = true; + } else { + LOOP_DUR = temp; + } + + EEPROM.get(TRG_DUR_ADDRESS, temp); + if (temp < 0 || temp > 1000) { + erase = true; + } else { + TRG_DUR = temp; + } + + EEPROM.get(HYST_ADDRESS, temp); + if (temp < 0 || temp > 1000) { + erase = true; + } else { + Hyst = temp; + } + + EEPROM.get(PZDET_ADDRESS, temp); + if (temp < 0 || temp > 1) { + erase = true; + } else { + PZDET = temp; + } + + EEPROM.get(LOGIC_ADDRESS, temp); + if (temp < 0 || temp > 1) { + erase = true; + } else { + LOGIC = temp; + } + + long longTemp; + EEPROM.get(VM_CONST_ADDRESS, longTemp); + if (longTemp < 1000000L || longTemp > 1200000L) { + erase = true; + } else { + voltMeterConstant = longTemp; + } + + if (erase) { + eraseEEPROM(); + } + + adjustFollow(); + adjustComp(); +} + +void setDefaultConfig() { + GAIN_FACTOR = GAIN_FACTOR_DEFAULT; + followerThrs = FOLLOWER_THRESHOLD_DEFAULT; + compThrs = COMP_THRESHOLD_DEFAULT; + LOOP_DUR = LOOP_DUR_DEFAULT; + TRG_DUR = TRG_DUR_DEFAULT; + Hyst = HYST_DEFAULT; + PZDET = PZDET_DEFAULT; + LOGIC = LOGIC_DEFAULT; + voltMeterConstant = VM_CONST_DEFAULT; + adjustFollow(); + adjustComp(); +} \ No newline at end of file diff --git a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_function.h b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_function.h index d721f33..612d697 100644 --- a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_function.h +++ b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_function.h @@ -6,17 +6,29 @@ //#pragma once //#include "pP_function.h" -void digitalWriteFast(uint8_t pin, uint8_t x) { - if (pin / 8) { // pin >= 8 +#ifndef PP_FUNCTION_H +#define PP_FUNCTION_H + +#include "Arduino.h" +#include "pP_volatile.h" +#include "pP_pins.h" +#include "stdint.h" + +void digitalWriteFast(uint8_t pin, uint8_t x) +{ + if (pin / 8) + { // pin >= 8 PORTB ^= (-x ^ PORTB) & (1 << (pin % 8)); } - else { + else + { PORTD ^= (-x ^ PORTD) & (1 << (pin % 8)); } } int inline analogReadFast(byte ADCpin) -{ byte ADCSRAoriginal = ADCSRA; +{ + byte ADCSRAoriginal = ADCSRA; ADCSRA = (ADCSRA & B11111000) | 4; int adc = analogRead(ADCpin); ADCSRA = ADCSRAoriginal; @@ -25,13 +37,15 @@ int inline analogReadFast(byte ADCpin) /*------------------------------------------------*/ -void doubleFlash() { - BlinkCount = 4 ; +void doubleFlash() +{ + BlinkCount = 4; } /*------------------------------------------------*/ -void pulse() { +void pulse() +{ digitalWriteFast(TRG_OUT, LOGIC); sensorHReading = 1; delay(TRG_DUR); @@ -42,7 +56,8 @@ void pulse() { /*------------------------------------------------*/ -long readVcc() { +long readVcc() +{ // Read 1.1V reference against AVcc // Atmega's Secret Voltmeter setup: @@ -60,15 +75,16 @@ long readVcc() { delay(2); // Wait for vref to settle ADCSRA |= _BV(ADSC); // Start conversion - while (bit_is_set(ADCSRA,ADSC)); // measuring + while (bit_is_set(ADCSRA, ADSC)) + ; // measuring - uint8_t low = ADCL; // must read ADCL first - it then locks ADCH + uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both - long result = (high<<8) | low; + long result = (high << 8) | low; result = voltMeterConstant / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 - return result; // Vcc in millivolts + return result; // Vcc in millivolts } /*------------------------------------------------- @@ -88,26 +104,28 @@ If the scale_constant calculated is different from the default 1125300, update the voltMeterConstant variable in pP_config.h with the correct value --------------------------------------------------*/ - void readVin() { - VOld = Vin; - Vin = readVcc(); - followerLong = followerThrs * 1023L; - compLong = compThrs * 1023L; - followerInt = (long long) followerLong / Vin; - compInt = (long long) compLong / Vin; - followerInt = (int) followerInt; - compInt = (int) compInt; - } +void readVin() +{ + VOld = Vin; + Vin = readVcc(); + followerLong = followerThrs * 1023L; + compLong = compThrs * 1023L; + followerInt = (long long)followerLong / Vin; + compInt = (long long)compLong / Vin; + followerInt = (int)followerInt; + compInt = (int)compInt; +} /*------------------------------------------------*/ - void adjustFollow() { +void adjustFollow() +{ /* Compares diffs of threshold vs read value if positive, adjusts the follower to within the range set above*/ followerLong = followerThrs * 1023L; - followerInt = (long long) followerLong / Vin; - followerInt = (int) followerInt; + followerInt = (long long)followerLong / Vin; + followerInt = (int)followerInt; ADJ_FOLLOW = (followerInt / 4); // Analog output (PWM) of duty cycle @@ -116,25 +134,29 @@ update the voltMeterConstant variable in pP_config.h with the correct value /*------------------------------------------------*/ -void adjustComp() { +void adjustComp() +{ compLong = compThrs * 1023L; - compInt = (long long) compLong / Vin; - compInt = (int) compInt; + compInt = (long long)compLong / Vin; + compInt = (int)compInt; OCR1A = compInt; } /*------------------------------------------------*/ -void calibrateAlert() { +void calibrateAlert() +{ VLast = VOld - Vin; - if (VLast > Hyst || VLast < -Hyst ) { + if (VLast > Hyst || VLast < -Hyst) + { ERR_STATE = 1; } } /*------------------------------------------------*/ -void adjustGain() { +void adjustGain() +{ switch (GAIN_FACTOR) { case 4: @@ -184,118 +206,14 @@ void adjustGain() { /*------------------------------------------------*/ -void pzConCheck () { +void pzConCheck() +{ PZ_STATE = digitalRead(PZDET_PIN); - if (PZ_STATE == PZDET) { + if (PZ_STATE == PZDET) + { //digitalWriteFast(TRG_OUT, LOGIC); ERR_STATE = 1; } } -/*------------------------------------------------*/ -void eraseEEPROM() { - - setDefaultConfig(); - - EEPROM.put(GAIN_FACTOR_ADDRESS, GAIN_FACTOR); - EEPROM.put(FOLLOWER_THRESHOLD_ADDRESS, followerThrs); - EEPROM.put(COMP_THRESHOLD_ADDRESS, compThrs); - EEPROM.put(LOOP_DUR_ADDRESS, LOOP_DUR); - EEPROM.put(TRG_DUR_ADDRESS, TRG_DUR); - EEPROM.put(HYST_ADDRESS, Hyst); - EEPROM.put(PZDET_ADDRESS, PZDET); - EEPROM.put(LOGIC_ADDRESS, LOGIC); - EEPROM.put(VM_CONST_ADDRESS, voltMeterConstant); -} - -// Restore config from EEPROM, otherwise erase config and write to EEPROM -void restoreConfig() { - int temp; - - bool erase = false; - - EEPROM.get(GAIN_FACTOR_ADDRESS, temp); - if (temp < 0 || temp > 4) { - erase = true; - } else { - GAIN_FACTOR = temp; - } - - EEPROM.get(FOLLOWER_THRESHOLD_ADDRESS, temp); - if (temp < 0 || temp > 5000) { - erase = true; - } else { - followerThrs = temp; - } - - EEPROM.get(COMP_THRESHOLD_ADDRESS, temp); - if (temp < 0 || temp > 5000) { - erase = true; - } else { - compThrs = temp; - } - - EEPROM.get(LOOP_DUR_ADDRESS, temp); - if (temp < 0 && temp > 1000) { - erase = true; - } else { - LOOP_DUR = temp; - } - - EEPROM.get(TRG_DUR_ADDRESS, temp); - if (temp < 0 || temp > 1000) { - erase = true; - } else { - TRG_DUR = temp; - } - - EEPROM.get(HYST_ADDRESS, temp); - if (temp < 0 || temp > 1000) { - erase = true; - } else { - Hyst = temp; - } - - EEPROM.get(PZDET_ADDRESS, temp); - if (temp < 0 || temp > 1) { - erase = true; - } else { - PZDET = temp; - } - - EEPROM.get(LOGIC_ADDRESS, temp); - if (temp < 0 || temp > 1) { - erase = true; - } else { - LOGIC = temp; - } - - long longTemp; - EEPROM.get(VM_CONST_ADDRESS, longTemp); - if (longTemp < 1000000L || longTemp > 1200000L) { - erase = true; - } else { - voltMeterConstant = longTemp; - } - - if (erase) { - eraseEEPROM(); - } - - adjustFollow(); - adjustComp(); -} - -void setDefaultConfig() { - GAIN_FACTOR = GAIN_FACTOR_DEFAULT; - followerThrs = FOLLOWER_THRESHOLD_DEFAULT; - compThrs = COMP_THRESHOLD_DEFAULT; - LOOP_DUR = LOOP_DUR_DEFAULT; - TRG_DUR = TRG_DUR_DEFAULT; - Hyst = HYST_DEFAULT; - PZDET = PZDET_DEFAULT; - LOGIC = LOGIC_DEFAULT; - voltMeterConstant = VM_CONST_DEFAULT; - adjustFollow(); - adjustComp(); -} +#endif //PP_FUNCTION_H \ No newline at end of file diff --git a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_serial.h b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_serial.h index 63af5e5..9f6b098 100644 --- a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_serial.h +++ b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_serial.h @@ -1,150 +1,73 @@ -void parseData() { +#include "pP_cmd.h" + +void parseData() +{ // split the data into its parts - + char *strtokIndx; // this is used by strtok() as an index - + strtokIndx = strtok(inputBuffer, " "); // get the first part - the string strcpy(serialMessageIn, strtokIndx); // copy it to serialMessageIn - - strtokIndx = strtok(NULL, " "); // this continues where the previous call left off - serialLong = atol(strtokIndx); // convert this part to an integer + strtokIndx = strtok(NULL, " "); // this continues where the previous call left off + serialLong = atol(strtokIndx); // convert this part to an integer } /*------------------------------------------------*/ -void identifyMarkers() { - - char x = Serial.read(); - #ifdef I2C_INPUT - char y = Wire.read(); - #endif // I2C_INPUT +void identifyMarkers() +{ - if (x == '\n' || x == '\r') { + char x = Serial.read(); +#ifdef I2C_INPUT + char y = Wire.read(); +#endif // I2C_INPUT + + if (x == '\n' || x == '\r') + { serialIncoming = true; inputBuffer[bytesRecvd] = 0; parseData(); bytesRecvd = 0; - } else { + } + else + { inputBuffer[bytesRecvd] = x; bytesRecvd++; - if (bytesRecvd == buffSize) { + if (bytesRecvd == buffSize) + { bytesRecvd = buffSize - 1; } } - #ifdef I2C_INPUT - if (y == '\n' || y == '\r') { - serialIncoming = true; - inputBuffer[bytesRecvd] = 0; - parseData(); - bytesRecvd = 0; - } else { - inputBuffer[bytesRecvd] = y; - bytesRecvd++; - if (bytesRecvd == buffSize) { - bytesRecvd = buffSize - 1; - } +#ifdef I2C_INPUT + if (y == '\n' || y == '\r') + { + serialIncoming = true; + inputBuffer[bytesRecvd] = 0; + parseData(); + bytesRecvd = 0; + } + else + { + inputBuffer[bytesRecvd] = y; + bytesRecvd++; + if (bytesRecvd == buffSize) + { + bytesRecvd = buffSize - 1; } - #endif + } +#endif } /*------------------------------------------------*/ -void updateGainFactor() +void serialPrintConfig() { - if (serialLong >= 0) { - GAIN_FACTOR = serialLong; - adjustGain(); - EEPROM.put(GAIN_FACTOR_ADDRESS, GAIN_FACTOR); - } -} - -/*------------------------------------------------*/ - -void updateVFol() { - if (serialLong >= 0) { - followerThrs = serialLong; - adjustFollow(); - EEPROM.put(FOLLOWER_THRESHOLD_ADDRESS, followerThrs); - } -} -/*------------------------------------------------*/ - -void updateVComp() { - if (serialLong >= 0) { - compThrs = serialLong; - adjustComp(); - EEPROM.put(COMP_THRESHOLD_ADDRESS, compThrs); - } -} - -/*------------------------------------------------*/ - -void updateLoopDuration() { - if (serialLong >= 0) { - LOOP_DUR = serialLong; - EEPROM.put(LOOP_DUR_ADDRESS, LOOP_DUR); - } -} -/*------------------------------------------------*/ - -void updateTrigDuration() { - if (serialLong >= 0) { - TRG_DUR = serialLong; - EEPROM.put(TRG_DUR_ADDRESS, TRG_DUR); - } -} -/*------------------------------------------------*/ - -void updateHysteresis() { - if (serialLong >= 0) { - Hyst = serialLong; - EEPROM.put(HYST_ADDRESS, Hyst); - } -} -/*------------------------------------------------*/ - -void updateLogic() { - if (serialLong >= 0) { - LOGIC = serialLong; - EEPROM.put(LOGIC_ADDRESS, LOGIC); - pulse(); - } -} -/*------------------------------------------------*/ - -void updatePzDet() { - if (serialLong >= 0) { - PZDET = serialLong; - EEPROM.put(PZDET_ADDRESS, PZDET); - } -} -/*------------------------------------------------*/ - -void updateConstant() { - if (serialLong >= 0) { - voltMeterConstant = (long) serialLong; - EEPROM.put(VM_CONST_ADDRESS, voltMeterConstant); - } -} - -/*------------------------------------------------*/ - -void updateDebug() { - if (serialLong > 0) { - Debug = 1; - } else if (serialLong == 0) { - Debug = 0; - } -} - -/*------------------------------------------------*/ - -void serialPrintConfig() { Serial.print("GAIN_F "); Serial.print(GAIN_FACTOR); - switch (GAIN_FACTOR) { + switch (GAIN_FACTOR) + { case 0: Serial.println(" 3x"); break; @@ -188,12 +111,13 @@ void serialPrintConfig() { Serial.print("VM_CONST "); Serial.println(voltMeterConstant); - + Serial.print("Firmware Version "); Serial.println(PP_VERSION); } -void serialPrintState() { +void serialPrintState() +{ Serial.print("{"); Serial.print("\"Vcc\":"); @@ -201,11 +125,11 @@ void serialPrintState() { Serial.print(","); Serial.print("\"VComp\":"); - Serial.print((long) VComp * Vin / 1023); + Serial.print((long)VComp * Vin / 1023); Serial.print(","); Serial.print("\"VFol\":"); - Serial.print((long) VFol * Vin / 1023); + Serial.print((long)VFol * Vin / 1023); Serial.print(","); Serial.print("\"Err\":"); @@ -223,83 +147,99 @@ void serialPrintState() { Serial.println("}"); } -void updateParams() { +void updateParams() +{ serialIncoming = false; - if (strcmp(serialMessageIn, "GAIN_F") == 0) { - updateGainFactor(); + if (strcmp(serialMessageIn, "GAIN_F") == 0) + { + updateGainFactor(serialLong); } - else if (strcmp(serialMessageIn, "VFOL") == 0) { - updateVFol(); + else if (strcmp(serialMessageIn, "VFOL") == 0) + { + updateVFol(serialLong); } - else if (strcmp(serialMessageIn, "VCOMP") == 0) { - updateVComp(); + else if (strcmp(serialMessageIn, "VCOMP") == 0) + { + updateVComp(serialLong); } - else if (strcmp(serialMessageIn, "LOOP_D") == 0) { - updateLoopDuration(); + else if (strcmp(serialMessageIn, "LOOP_D") == 0) + { + updateLoopDuration(serialLong); } - else if (strcmp(serialMessageIn, "TRG_D") == 0) { - updateTrigDuration(); + else if (strcmp(serialMessageIn, "TRG_D") == 0) + { + updateTrigDuration(serialLong); } - else if (strcmp(serialMessageIn, "HYST") == 0) { - updateHysteresis(); + else if (strcmp(serialMessageIn, "HYST") == 0) + { + updateHysteresis(serialLong); } - else if (strcmp(serialMessageIn, "LOGIC") == 0) { - updateLogic(); + else if (strcmp(serialMessageIn, "LOGIC") == 0) + { + updateLogic(serialLong); } - else if (strcmp(serialMessageIn, "PZDET") == 0) { - updatePzDet(); + else if (strcmp(serialMessageIn, "PZDET") == 0) + { + updatePzDet(serialLong); } - else if (strcmp(serialMessageIn, "CONST") == 0) { - updateConstant(); + else if (strcmp(serialMessageIn, "CONST") == 0) + { + updateConstant(serialLong); } - else if (strcmp(serialMessageIn, "DEBUG") == 0) { - updateDebug(); + else if (strcmp(serialMessageIn, "DEBUG") == 0) + { + updateDebug(serialLong); } - else if (strcmp(serialMessageIn, "CONFIG") == 0) { + else if (strcmp(serialMessageIn, "CONFIG") == 0) + { serialPrintConfig(); } - else if (strcmp(serialMessageIn, "ERASE") == 0) { + else if (strcmp(serialMessageIn, "ERASE") == 0) + { eraseEEPROM(); serialPrintConfig(); } - else if (strcmp(serialMessageIn, "STATE") == 0) { + else if (strcmp(serialMessageIn, "STATE") == 0) + { serialPrintState(); } - else if (strcmp(serialMessageIn, "HELP") == 0) { - #if defined(ARDUINO_AVR_ATmega328PB) - Serial.println("To change gain factor: GAIN_F [integer for gain state - see note*]"); - Serial.println("To change voltage follower voltage (low threshold): VFOL [float value]"); - Serial.println("To change comparator voltage (high threshold): VCOMP [float value]"); - Serial.println("To change main loop period: LOOP_D [integer for milliseconds]"); - Serial.println("To change trigger active duration: TRG_D [integer for milliseconds]"); - Serial.println("To change the output logic: LOGIC [0|1]"); - Serial.println(" (0 for active low, 1 for active high)"); - Serial.println("To enable piezo plugged detection: PZDET [0|1]"); - Serial.println(" (0 for disabled, 1 for enabled)"); - Serial.println("To change ADC hysteresis value: HYST [integer in millivolts]"); - Serial.println("To enable or disable debug output: DEBUG [0|1]"); - Serial.println("To print current config: CONFIG"); - Serial.println("To set config to defaults: ERASE"); - Serial.println("To print current state: STATE"); - Serial.println(""); - Serial.println("Commands are entered in this format:"); - Serial.println("CMD VAL"); - Serial.println("Commands are confirmed with Enter key"); - Serial.println(""); - Serial.println("Examples:"); - Serial.println("GAIN_F 3 <~ set gain factor to index 3 (6x)"); - Serial.println("VFOL 2350 <~ set the vref floor to 2.35V"); - #else - Serial.println("Check docs.pyroballpcbs.com/config"); - #endif // defined(ARDUINO_AVR_ATmega328PB) + else if (strcmp(serialMessageIn, "HELP") == 0) + { +#if defined(ARDUINO_AVR_ATmega328PB) + Serial.println("To change gain factor: GAIN_F [integer for gain state - see note*]"); + Serial.println("To change voltage follower voltage (low threshold): VFOL [float value]"); + Serial.println("To change comparator voltage (high threshold): VCOMP [float value]"); + Serial.println("To change main loop period: LOOP_D [integer for milliseconds]"); + Serial.println("To change trigger active duration: TRG_D [integer for milliseconds]"); + Serial.println("To change the output logic: LOGIC [0|1]"); + Serial.println(" (0 for active low, 1 for active high)"); + Serial.println("To enable piezo plugged detection: PZDET [0|1]"); + Serial.println(" (0 for disabled, 1 for enabled)"); + Serial.println("To change ADC hysteresis value: HYST [integer in millivolts]"); + Serial.println("To enable or disable debug output: DEBUG [0|1]"); + Serial.println("To print current config: CONFIG"); + Serial.println("To set config to defaults: ERASE"); + Serial.println("To print current state: STATE"); + Serial.println(""); + Serial.println("Commands are entered in this format:"); + Serial.println("CMD VAL"); + Serial.println("Commands are confirmed with Enter key"); + Serial.println(""); + Serial.println("Examples:"); + Serial.println("GAIN_F 3 <~ set gain factor to index 3 (6x)"); + Serial.println("VFOL 2350 <~ set the vref floor to 2.35V"); +#else + Serial.println("Check docs.pyroballpcbs.com/config"); +#endif // defined(ARDUINO_AVR_ATmega328PB) } parseData(); -} +} - -void serialInput() { +void serialInput() +{ // receive data from Serial and save it into inputBuffer - if (Serial.available() > 0) { + if (Serial.available() > 0) + { // the order of these IF clauses is significant identifyMarkers(); diff --git a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_volatile.h b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_volatile.h index a3f5e07..ac1c5eb 100644 --- a/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_volatile.h +++ b/firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_volatile.h @@ -1,3 +1,8 @@ +#ifndef PP_VOLATILE_H +#define PP_VOLATILE_H + +#include "LightChrono.h" + // these variables will change on their own. Do not edit ANYTHING below this line volatile int sensorHReading = 0; // variable to store the value read from the sensor pin volatile int ADJ_FOLLOW = 0; // Variable for Follower adjustment @@ -41,3 +46,5 @@ long serialLong = 0; // Task scheduler instances LightChrono mainLoop; + +#endif //PP_VOLATILE_H \ No newline at end of file