Browse Source

Made rectangle signal from DAC work.

software_develop
Maximilian Stiefel 7 years ago
parent
commit
019413d75c
  1. 18
      software/app/application.cpp
  2. 2
      software/app/dac101c085.h
  3. 19
      software/app/excitation_light.cpp
  4. 1
      software/app/excitation_light.h
  5. 10
      software/app/hardware.h

18
software/app/application.cpp

@ -2,7 +2,7 @@
#include <SmingCore/SmingCore.h> #include <SmingCore/SmingCore.h>
#include <SmingCore/HardwareSerial.h> #include <SmingCore/HardwareSerial.h>
#include "ads101x.h" #include "ads101x.h"
#include "hardware.h" #include "defines.h"
#include "excitation_light.h" #include "excitation_light.h"
#include "sensor_hub.h" #include "sensor_hub.h"
#include "sensor_settings.h" #include "sensor_settings.h"
@ -40,6 +40,11 @@ void SettingsTest() {
Serial.printf("Settings: %d\n\r", adc.GetSettings()); Serial.printf("Settings: %d\n\r", adc.GetSettings());
} }
void GenerateRectangle()
{
mylight.RectangleUpdate();
}
void AdcTest() { void AdcTest() {
channel++; channel++;
if (channel > 3) { if (channel > 3) {
@ -78,6 +83,7 @@ void init() {
//WDT.enable(false); //WDT.enable(false);
pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, 1);
adc.SetMux(ads::eInputMux::AIN_0); adc.SetMux(ads::eInputMux::AIN_0);
adc.SetSampleSpeed(ads::eSampleSpeed::SPS_3300); adc.SetSampleSpeed(ads::eSampleSpeed::SPS_3300);
adc.SetGain(ads::eGainAmplifier::FSR_4_096); adc.SetGain(ads::eGainAmplifier::FSR_4_096);
@ -95,11 +101,13 @@ void init() {
WifiAccessPoint.config("Sensus", "", AUTH_OPEN, false, 3);*/ WifiAccessPoint.config("Sensus", "", AUTH_OPEN, false, 3);*/
cWebInterface::GetInstance()->Start(); cWebInterface::GetInstance()->Start();
//procTimer.initializeMs(HUB_PERIOD, updateSensorHub).start(); procTimer.initializeMs(HUB_PERIOD, updateSensorHub).start();
//procTimer.initializeMs(1000, AdcTest).start(); //procTimer.initializeMs(1000, AdcTest).start();
procTimer.initializeMs(5000, SettingsTest).start(); //procTimer.initializeMs(5000, SettingsTest).start();
mylight.SetCurrent(5000); mylight.SetCurrent(1000);
mylight.RectangleUpdate(); //mylight.DeactivateLED();
//procTimer.initializeUs(2500, GenerateRectangle).start();
} }
void STADisconnect(String ssid, uint8_t ssid_len, uint8_t bssid[6], void STADisconnect(String ssid, uint8_t ssid_len, uint8_t bssid[6],

2
software/app/dac101c085.h

@ -13,9 +13,9 @@
//-------------------------------------Libraries------------------------------------------------------------------------------ //-------------------------------------Libraries------------------------------------------------------------------------------
#include <stdint.h> #include <stdint.h>
#include "defines.h"
//-------------------------------------Defines-------------------------------------------------------------------------------- //-------------------------------------Defines--------------------------------------------------------------------------------
#define DEBUG_LEVEL 1 // 1 a lot debugging output, else rare debugging output
#define PD_BITS_POS 13 // Position of power down bits #define PD_BITS_POS 13 // Position of power down bits
#define D_BITS_POS 2 // Position of data bits #define D_BITS_POS 2 // Position of data bits

19
software/app/excitation_light.cpp

@ -10,7 +10,7 @@
//-------------------------------------Libraries------------------------------------------------------------------------------ //-------------------------------------Libraries------------------------------------------------------------------------------
#include "excitation_light.h" #include "excitation_light.h"
#include "hardware.h" #include "defines.h"
#include <SmingCore/SmingCore.h> #include <SmingCore/SmingCore.h>
//-------------------------------------Namespaces----------------------------------------------------------------------------- //-------------------------------------Namespaces-----------------------------------------------------------------------------
@ -21,7 +21,7 @@ namespace light {
cExcitationLight::cExcitationLight(): cExcitationLight::cExcitationLight():
m_rectangleStatus(0), m_DACRectHigh(0) m_rectangleStatus(0), m_DACRectHigh(0)
{ {
m_DAC = new dac::cDAC101C085(1, DAC1_ADDRESS); m_DAC = new dac::cDAC101C085(1, 0xE);
} }
//-------------------------------------Destructor----------------------------------------------------------------------------- //-------------------------------------Destructor-----------------------------------------------------------------------------
@ -33,11 +33,15 @@ cExcitationLight::~cExcitationLight()
//-------------------------------------setCurrent----------------------------------------------------------------------------- //-------------------------------------setCurrent-----------------------------------------------------------------------------
uint8_t cExcitationLight::SetCurrent(uint16_t microamp) uint8_t cExcitationLight::SetCurrent(uint16_t microamp)
{ {
uint16_t new_DACRectHigh = 0; uint32_t new_DACRectHigh = 0;
if(microamp < CURR_MAX_UAMP) if(microamp < CURR_MAX_UAMP)
{ {
new_DACRectHigh = microamp/R_SENSE_DIV_FACT; new_DACRectHigh = ( (microamp*R_SENSE*RESOLUTION_DAC)/VREF_DAC ) / 1000;
Serial.println(m_DACRectHigh); #if DEBUG_LEVEL == 1
Serial.print("DAC value: ");
Serial.println(new_DACRectHigh);
#endif
m_DACRectHigh = new_DACRectHigh;
return 1; return 1;
} }
else else
@ -51,6 +55,11 @@ uint8_t cExcitationLight::RectangleUpdate()
m_rectangleStatus ^= 0xFF; m_rectangleStatus ^= 0xFF;
} }
//-------------------------------------DeactivateLED--------------------------------------------------------------------------
uint8_t cExcitationLight::DeactivateLED()
{
return m_DAC->ChangeSettings(dac::eOpMode::PULL_DOWN_2K5, 0);
}
} }
} }

1
software/app/excitation_light.h

@ -32,6 +32,7 @@ public:
~cExcitationLight(); // Destructor ~cExcitationLight(); // Destructor
uint8_t SetCurrent(uint16_t microamp); uint8_t SetCurrent(uint16_t microamp);
uint8_t RectangleUpdate(); uint8_t RectangleUpdate();
uint8_t DeactivateLED();
private: private:
dac::cDAC101C085 *m_DAC; dac::cDAC101C085 *m_DAC;
uint8_t m_rectangleStatus; uint8_t m_rectangleStatus;

10
software/app/hardware.h

@ -12,10 +12,12 @@
#define APP_HARDWARE_H_ #define APP_HARDWARE_H_
//-------------------------------------I2C ADRESSES--------------------------------------------------------------------------- //-------------------------------------I2C ADRESSES---------------------------------------------------------------------------
static const uint8_t ADC_ADDRESS = 0x48; static const uint8_t ADC_ADDRESS = 0x49;
static const uint8_t DAC1_ADDRESS = 0xC; static const uint8_t DAC1_ADDRESS = 0xE;
#define R_SENSE_DIV_FACT 100 // 100 Ohm sensing resistor static const uint16_t R_SENSE = 100; // 100 Ohm sensing resistor
#define CURR_MAX_UAMP 10000 // 10 mA max. static const uint16_t CURR_MAX_UAMP = 10000; // 10 mA max.
static const uint16_t VREF_DAC = 3300; // in mV
static const uint16_t RESOLUTION_DAC = 1024;
#endif /* APP_HARDWARE_H_ */ #endif /* APP_HARDWARE_H_ */

Loading…
Cancel
Save