* 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
143 lines
3.6 KiB
C
143 lines
3.6 KiB
C
/*
|
|
* Hardware.h
|
|
*
|
|
* Created on: 29Aug.,2017
|
|
* Author: Ben V. Brown
|
|
*/
|
|
|
|
#ifndef HARDWARE_H_
|
|
#define HARDWARE_H_
|
|
#include "Setup.h"
|
|
#include "stm32f1xx_hal.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum Orientation {
|
|
ORIENTATION_LEFT_HAND = 0,
|
|
ORIENTATION_RIGHT_HAND = 1,
|
|
ORIENTATION_FLAT = 3
|
|
};
|
|
#ifndef MODEL_TS100
|
|
#ifndef MODEL_TS80
|
|
#error "Please Define the model you are building for! MODEL=TS100 or MODEL=TS80"
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MODEL_TS100
|
|
|
|
#define KEY_B_Pin GPIO_PIN_6
|
|
#define KEY_B_GPIO_Port GPIOA
|
|
#define TMP36_INPUT_Pin GPIO_PIN_7
|
|
#define TMP36_INPUT_GPIO_Port GPIOA
|
|
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_7
|
|
#define TIP_TEMP_Pin GPIO_PIN_0
|
|
#define TIP_TEMP_GPIO_Port GPIOB
|
|
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_8
|
|
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_8
|
|
#define VIN_Pin GPIO_PIN_1
|
|
#define VIN_GPIO_Port GPIOB
|
|
#define VIN_ADC1_CHANNEL ADC_CHANNEL_9
|
|
#define VIN_ADC2_CHANNEL ADC_CHANNEL_9
|
|
#define OLED_RESET_Pin GPIO_PIN_8
|
|
#define OLED_RESET_GPIO_Port GPIOA
|
|
#define KEY_A_Pin GPIO_PIN_9
|
|
#define KEY_A_GPIO_Port GPIOA
|
|
#define INT_Orientation_Pin GPIO_PIN_3
|
|
#define INT_Orientation_GPIO_Port GPIOB
|
|
#define PWM_Out_Pin GPIO_PIN_4
|
|
#define PWM_Out_GPIO_Port GPIOB
|
|
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
|
#define PWM_Out_CCR
|
|
#define INT_Movement_Pin GPIO_PIN_5
|
|
#define INT_Movement_GPIO_Port GPIOB
|
|
#define SCL_Pin GPIO_PIN_6
|
|
#define SCL_GPIO_Port GPIOB
|
|
#define SDA_Pin GPIO_PIN_7
|
|
#define SDA_GPIO_Port GPIOB
|
|
|
|
#else
|
|
// TS80 pin map
|
|
#define KEY_B_Pin GPIO_PIN_0
|
|
#define KEY_B_GPIO_Port GPIOB
|
|
#define TMP36_INPUT_Pin GPIO_PIN_4
|
|
#define TMP36_INPUT_GPIO_Port GPIOA
|
|
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
|
|
#define TIP_TEMP_Pin GPIO_PIN_3
|
|
#define TIP_TEMP_GPIO_Port GPIOA
|
|
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
|
|
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
|
|
|
|
#define VIN_Pin GPIO_PIN_2
|
|
#define VIN_GPIO_Port GPIOA
|
|
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
|
|
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
|
|
#define OLED_RESET_Pin GPIO_PIN_15
|
|
#define OLED_RESET_GPIO_Port GPIOA
|
|
#define KEY_A_Pin GPIO_PIN_1
|
|
#define KEY_A_GPIO_Port GPIOB
|
|
#define INT_Orientation_Pin GPIO_PIN_4
|
|
#define INT_Orientation_GPIO_Port GPIOB
|
|
#define PWM_Out_Pin GPIO_PIN_6
|
|
#define PWM_Out_GPIO_Port GPIOA
|
|
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
|
#define INT_Movement_Pin GPIO_PIN_5
|
|
#define INT_Movement_GPIO_Port GPIOB
|
|
#define SCL_Pin GPIO_PIN_6
|
|
#define SCL_GPIO_Port GPIOB
|
|
#define SDA_Pin GPIO_PIN_7
|
|
#define SDA_GPIO_Port GPIOB
|
|
|
|
#endif
|
|
|
|
/*
|
|
* Keep in a uint8_t range for the ID's
|
|
*/
|
|
#ifdef MODEL_TS100
|
|
enum TipType {
|
|
TS_B2 = 0,
|
|
TS_D24 = 1,
|
|
TS_BC2 = 2,
|
|
TS_C1 = 3,
|
|
Tip_MiniWare = 4,
|
|
HAKKO_BC2 = 4,
|
|
Tip_Hakko = 5,
|
|
Tip_Custom = 5,
|
|
};
|
|
#endif
|
|
#ifdef MODEL_TS80
|
|
enum TipType {
|
|
TS_B02 = 0,
|
|
TS_D25 = 1,
|
|
Tip_MiniWare = 2,
|
|
Tip_Custom = 2,
|
|
};
|
|
#endif
|
|
|
|
uint16_t getHandleTemperature();
|
|
uint16_t getTipRawTemp(uint8_t instant);
|
|
uint16_t getInputVoltageX10(uint16_t divisor);
|
|
uint16_t getTipInstantTemperature();
|
|
uint8_t getTipPWM();
|
|
void setTipPWM(uint8_t pulse);
|
|
uint16_t ctoTipMeasurement(uint16_t temp);
|
|
uint16_t tipMeasurementToC(uint16_t raw);
|
|
uint16_t ftoTipMeasurement(uint16_t temp);
|
|
uint16_t tipMeasurementToF(uint16_t raw);
|
|
void seekQC(int16_t Vx10);
|
|
void setCalibrationOffset(int16_t offSet);
|
|
void setTipType(enum TipType tipType, uint8_t manualCalGain);
|
|
uint32_t calculateTipR(uint8_t useFilter);
|
|
int16_t calculateMaxVoltage(uint8_t useFilter, uint8_t useHP);
|
|
void startQC(); // Tries to negotiate QC for highest voltage, must be run after
|
|
// RToS
|
|
// This will try for 12V, failing that 9V, failing that 5V
|
|
// If input is over 12V returns -1
|
|
// If the input is [5-12] Will return the value.
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* HARDWARE_H_ */
|