mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
* Estimated pinout into the ioc file * Fix Atollic paths to be somewhat more portable * Add make command * Add rough calls to ADC2 [untested] * Using dual ADC injected modes * Start both ADCs * Move some IRQ's to ram exec * Stabilize PID a bit more * Add in ideas for tip type selection * Update peripheral setup to support TS80 * Add tiptype formula / settings struct * Add function ids to the settings menu * Rough tip selection * Rough out new cal routine for simple tips * Hardware test is fairly close for first pass * Add Simple calibration case [UNTESTED] This adds the calibration option that uses boiling water to the calibration menu. This is untested, and may need gain adjustments before use. * [Feat] Add some QC testing code * Typo fix * Add double button press handler for different rising times * Add hook for jump to sleep mode * QC for 9V Works! * Rough out QC handler, trim out old menu help text thats useless * QC 9V working... Static all the things (Low on ROM)! * Static all I2C to save space * Move QC negotiation into background task so it doesnt block the UI * Input V display works, tune ADC * QC 3 steps working * Start tip R measurements * Impliment tip resistance * Fix up the accel position, link in auto QC stages * Fix tip title * Tip type settings, Static OLED * Revert I2C callbacks * Misc Cleanup * Better Gain value, need to investiate offset * Add model warning * Add TS80 Boot Logo (#367) * Add TS80 Boot Logo * Refined * Moved down by 1px * Add in power selection 18/24W * Clean up accelerometer, fix TS100 builds, Fix voltage div cal
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
/*
|
|
* LIS2DH12.cpp
|
|
*
|
|
* Created on: 27Feb.,2018
|
|
* Author: Ralim
|
|
*/
|
|
|
|
#include <LIS2DH12.hpp>
|
|
#include "cmsis_os.h"
|
|
|
|
|
|
typedef struct {
|
|
const uint8_t reg;
|
|
const uint8_t value;
|
|
} LIS_REG;
|
|
|
|
static const LIS_REG i2c_registers[] = {
|
|
{LIS_CTRL_REG1, 0x17}, // 25Hz
|
|
{LIS_CTRL_REG2, 0b00001000}, // Highpass filter off
|
|
{LIS_CTRL_REG3, 0b01100000}, // Setup interrupt pins
|
|
{LIS_CTRL_REG4, 0b00001000}, // Block update mode off, HR on
|
|
{LIS_CTRL_REG5, 0b00000010},
|
|
{LIS_CTRL_REG6, 0b01100010},
|
|
//Basically setup the unit to run, and enable 4D orientation detection
|
|
{LIS_INT2_CFG, 0b01111110}, //setup for movement detection
|
|
{LIS_INT2_THS, 0x28},
|
|
{LIS_INT2_DURATION, 64},
|
|
{LIS_INT1_CFG, 0b01111110},
|
|
{LIS_INT1_THS, 0x28},
|
|
{LIS_INT1_DURATION, 64}
|
|
};
|
|
|
|
void LIS2DH12::initalize() {
|
|
for (size_t index = 0; index < (sizeof(i2c_registers) / sizeof(i2c_registers[0])); index++) {
|
|
FRToSI2C::I2C_RegisterWrite(LIS2DH_I2C_ADDRESS,i2c_registers[index].reg, i2c_registers[index].value);
|
|
}
|
|
}
|
|
|
|
void LIS2DH12::getAxisReadings(int16_t* x, int16_t* y, int16_t* z) {
|
|
uint8_t tempArr[6];
|
|
FRToSI2C::Mem_Read(LIS2DH_I2C_ADDRESS, 0xA8, I2C_MEMADD_SIZE_8BIT,
|
|
(uint8_t*) tempArr, 6);
|
|
|
|
(*x) = ((uint16_t) (tempArr[1] << 8 | tempArr[0]));
|
|
(*y) = ((uint16_t) (tempArr[3] << 8 | tempArr[2]));
|
|
(*z) = ((uint16_t) (tempArr[5] << 8 | tempArr[4]));
|
|
}
|
|
|
|
|