Skip to content

Commit

Permalink
i2c support, not tested #feature
Browse files Browse the repository at this point in the history
  • Loading branch information
loredan committed Mar 28, 2020
1 parent f2c3843 commit 02d734b
Show file tree
Hide file tree
Showing 9 changed files with 209 additions and 230 deletions.
Expand Up @@ -84,19 +84,19 @@ update the voltMeterConstant variable in pP_config.h with the correct value
------------------------------------------------------------*/

// i2c input toggle. Uncomment to enable
#define I2C_INPUT

// Headers, variables, and functions
#include "LightChrono.h"
#include "pP_pins.h"
#include <Arduino.h>
#include <EEPROM.h>
// #include "pP_config.h"
#include "pP_function.h"
#include "pP_i2c.hpp"
#include "pP_serial.h"
#include "pP_volatile.h"

// i2c input toggle. Uncomment to enable
#define I2C_INPUT

void setup() {
// Setup PWM on voltage follower (PD3)
TCCR2A = (1 << COM2B1) | (0 << COM2B0) | (0 << WGM21) | (1 << WGM20);
Expand Down Expand Up @@ -124,6 +124,8 @@ void setup() {
Serial.begin(9600);
Serial.println("Initializing Pyr0-Piezo Sensor...");

i2cInit();

restoreConfig();

adjustGain();
Expand Down
92 changes: 92 additions & 0 deletions firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.cpp
@@ -0,0 +1,92 @@
#include "EEPROM.h"
#include "pP_config.h"
#include "pP_function.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;
}
}
102 changes: 10 additions & 92 deletions firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_cmd.h
@@ -1,97 +1,15 @@
#ifndef PP_CMD_H
#define PP_CMD_H

#include "EEPROM.h"
#include "pP_config.h"
#include "pP_function.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;
}
}
void updateGainFactor(int value);
void updateVFol(int value);
void updateVComp(int value);
void updateLoopDuration(int value);
void updateTrigDuration(int value);
void updateHysteresis(int value);
void updateLogic(int value);
void updatePzDet(int value);
void updateConstant(long value);
void updateDebug(int value);

#endif // PP_CMD_H
Expand Up @@ -12,6 +12,7 @@ int LOGIC = LOGIC_DEFAULT;
int PZDET = PZDET_DEFAULT;
int Debug = 0;
long voltMeterConstant = VM_CONST_DEFAULT;
uint8_t pP_i2c_address = 0x80;

/*------------------------------------------------*/
void eraseEEPROM() {
Expand Down
6 changes: 3 additions & 3 deletions firmware/AVR-Source/Pyr0_Piezo_Sensor_v2.x.x/src/pP_config.h
@@ -1,6 +1,8 @@
#ifndef PP_CONFIG_H
#define PP_CONFIG_H

#include "stdint.h"

// Configurable settings:

#define GAIN_FACTOR_DEFAULT 2 // Gain adjustment factor. 0=3x, 1=3.5x, 2=4.33x, 3=6x, 4=11x
Expand Down Expand Up @@ -45,10 +47,8 @@ extern int Debug;
#define VM_CONST_DEFAULT 1125300L
extern long voltMeterConstant; // For fine tuning input voltage sense

#ifdef I2C_INPUT
#define I2C_SLAVE_ADDRESS 24
uint8_t pP_i2c_address = 0xa0; // I2C Bus Address
#endif // I2C_INPUT
extern uint8_t pP_i2c_address; // I2C Bus Address (P + 0 -> 0x50 + 0x30 -> 0x80)

void eraseEEPROM();
void setDefaultConfig();
Expand Down

0 comments on commit 02d734b

Please sign in to comment.