mirror of
https://github.com/Ralim/IronOS.git
synced 2025-07-23 12:23:06 +02:00
Pinecil V2 (#1341)
* Add SDK * fork * massaging makefile * Drop git module * Bring in sdk as its broken Far, Far to much crap to fix with regex now * Remove bl706 * rf_para_flash_t is missing defs * Remove crapton of junk * Remove yet more * Poking I2C * Update peripheral_config.h * Update pinmux_config.h * Update preRTOS.cpp * Update main.hpp * Setup template * Verbose boot * I2C ish * Update I2C_Wrapper.cpp * Update main.cpp * Turn off I2C reading for now * Display running * Roughing out scheduling timer0 * Starting ADC setup * Working scheduling of ADC 🎉 * Format adc headers * Update IRQ.cpp * Buttons working * Slow down I2C * Poking IRQ * Larger stack required * Accel on * Trying to chase down why __libc_init_array isnt working yet * Working c++ * Cleanup * Bump stacks * I2C wake part workaround * Cleanup * Working PWM init * qc draft * Hookup PWM * Stable enough ADC * ADC timing faster + timer without HAL * Silence * Remove boot banner * Tuning in ADC * Wake PID after ADC * Remove unused hal * Draft flash settings * Working settings save & restore * Update to prod model * Cleanup * NTC thermistor * Correct adc gain * Rough tip resistance progress * Scratch out resistance awareness of the tip * better adc settings * Tweaking ADC * ADC tweaking * Make adc range scalable * Update Dockerfile * Update configuration.h * Can read same ADC twice in a row * ADC Setup * Update PIDThread.cpp * Lesser adc backoff * Update USBPD.h * Add device ID * Update BSP_Power.h * Update BSP.cpp * DrawHex dynamicLength * Shorter ID padding * Show validation code * tip measurement * Create access for w0w1 * Expose w0 w1 * Enable debug * crc32 * Device validation * wip starting epr * Logic refactor * Safer PWM Init * PD cleanups * Update bl702_pwm.c * Update power.cpp * Update usb-pd * io * EPR decode * Better gui for showing pd specs * Rough handler for capabilities * EPR * Fix > 25V input * Perform pow step after PPS * Update BSP.cpp * Fix timer output * QC3 * Add tip resistance view * Hold PD negotiation until detection is done for tip res * Get Thermal mass * Tip res =0 protection * Update PIDThread.cpp * Update GUIThread.cpp * Rewrite tip resistance measurement * Update GUIThread.cpp * Fix fallback * Far better tip resistance measurement * Fix QC 0.6V D- * Convert the interpolator to int32 * Correct the NTC lookup * Update BSP.cpp * Update Setup.cpp * . Update configuration #defines More backported functions * Update usb-pd * More missed updates * Refactor BSP Magic BSP -> PinecilV2 Pine64 BSP -> Pinecil Update Makefile * Add Pinecilv2 to CI * Pinecil v2 multi-lang Update push.yml * Update HallSensor.md * Update README.md * Fix wrong prestartcheck default * Fix logo mapping * Update Makefile * Remove unused font block * Style * Style * Remove unused timer funcs * More culling TS80P * Revert "More culling TS80P" This reverts commit2078b89be7
. * Revert "Remove unused timer funcs" This reverts commit0c693a89cc
. * Make VBus check maskable * Remove DMA half transfer * Drop using brightness and invert icons and go back to text Saves flash space * Refactor settings UI drawing descriptions * Shorten setting function names * Store bin file assets * Fix MHP prestart
This commit is contained in:
12
.github/workflows/push.yml
vendored
12
.github/workflows/push.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
||||
image: alpine:3.16
|
||||
strategy:
|
||||
matrix:
|
||||
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30"]
|
||||
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2"]
|
||||
fail-fast: true
|
||||
|
||||
steps:
|
||||
@@ -41,6 +41,7 @@ jobs:
|
||||
path: |
|
||||
source/Hexfile/${{ matrix.model }}_*.hex
|
||||
source/Hexfile/${{ matrix.model }}_*.dfu
|
||||
source/Hexfile/${{ matrix.model }}_*.bin
|
||||
source/Hexfile/LICENSE
|
||||
source/Hexfile/LICENSE_RELEASE.md
|
||||
if-no-files-found: error
|
||||
@@ -60,12 +61,12 @@ jobs:
|
||||
image: alpine:3.16
|
||||
strategy:
|
||||
matrix:
|
||||
model: ["Pinecil"]
|
||||
model: ["Pinecil", "Pinecilv2"]
|
||||
fail-fast: true
|
||||
|
||||
steps:
|
||||
- name: Install dependencies (apk)
|
||||
run: apk add --no-cache gcc-riscv-none-elf gcc-arm-none-eabi newlib-riscv-none-elf newlib-arm-none-eabi findutils python3 py3-pip make git bash musl-dev
|
||||
run: apk add --no-cache gcc-riscv-none-elf newlib-riscv-none-elf findutils python3 py3-pip make git bash musl-dev
|
||||
- name: Install dependencies (python)
|
||||
run: python3 -m pip install bdflib
|
||||
|
||||
@@ -91,18 +92,19 @@ jobs:
|
||||
path: |
|
||||
source/Hexfile/${{ matrix.model }}_*.hex
|
||||
source/Hexfile/${{ matrix.model }}_*.dfu
|
||||
source/Hexfile/${{ matrix.model }}_*.bin
|
||||
source/Hexfile/LICENSE
|
||||
source/Hexfile/LICENSE_RELEASE.md
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Generate json index file
|
||||
run: cd source && python3 metadata.py Pinecil_multi-lang.json
|
||||
run: cd source && python3 metadata.py ${{ matrix.model }}_multi-lang.json
|
||||
|
||||
- name: Archive ${{ matrix.model }} index file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: metadata
|
||||
path: source/Hexfile/Pinecil_multi-lang.json
|
||||
path: source/Hexfile/${{ matrix.model }}_multi-lang.json
|
||||
|
||||
tests:
|
||||
runs-on: ubuntu-20.04
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@@ -176,4 +176,5 @@ fabric.properties
|
||||
|
||||
CoreCompileInputs.cache
|
||||
.vscode/settings.json
|
||||
source/compile_commands.json
|
||||
source/compile_commands.json
|
||||
.idea/
|
||||
|
@@ -6,15 +6,15 @@ In Sleep mode, the temperature of the iron automatically lowers to 150 °C (defa
|
||||
|
||||
Simply moving the iron will wake it back up into soldering mode. You can also press any button and this will also wake-up the iron.
|
||||
|
||||
### Optional Hall Effect Feature (Pinecil only):
|
||||
### Optional Hall Effect Feature (Pinecil v1/v2 only):
|
||||
|
||||
Inside the Sleep Menu is an additional type of sleep setting. Pinecil has an unpopulated footprint (U14) for a hall effect sensor (Si7210). It is possible with the hall sensor to trigger Pinecil to go to sleep after it enters the stand, and Zzzz will appear on the screen. After installing the hall sensor, a magnet is positioned on the stand close enough to the sensor to activate one of ten user selectable settings.
|
||||
- 0=off, 1=1000, 2=750, 3=500, 4=250, 5=150, 6=100, 7=75, 8=50, 9=25 (9 has the highest sensitivity to magnets)
|
||||
- Setting of 1 might be used if you solder on PCBs with magnets and do not wish Pinecil to auto-sleep constantly. A very strong/large magnet would be required on the stand to activate the sleep mode if you use setting 1.
|
||||
- Setting of 9 would be useful if you only had a small magnet and are not concerned about Pinecil falsely triggering sleep mode near magnetized items/tools.
|
||||
- Neodymium magnets are recommended. If using small magnets, 2-3 may be required, but too many can also be detrimental.
|
||||
- Actively watch the hall number change (in [debug menu](/Documentation/DebugMenu.md)) while you slowly move the magnet around to seek the best locations & whether you have too many or too few magnets. Positioning the magnet where you have the highest hall number will ensure consistent sleep mode when you place the iron in the stand. This requires some experimenting.
|
||||
- Sensor is physically located near the copper contacts for the tip at the front of the handle. Reference [Schematics U14](https://files.pine64.org/doc/Pinecil/Pinecil_schematic_v1.0a_20201120.pdf).
|
||||
- Positioning/type/quantity of magnets is important for best results. Sometimes too many magnets breaks the effect by distorting the magnetic field as seen [here](https://www.youtube.com/shorts/afkqKwCX00I). Video shows magnets at the top of the stand, and the pinecil goes correctly into Zzzz with only those magnets. Adding more magnets at the side, the Pinecil did not go to sleep, see PDF below for details on magnetic fields.
|
||||
- Orientation of North and South faces of magnets is important to increase reaction of the hall sensor [SI7210-B-00-IV](https://www.silabs.com/documents/public/application-notes/an1018-si72xx-sensors.pdf).
|
||||
|
||||
- 0=off, 1=1000, 2=750, 3=500, 4=250, 5=150, 6=100, 7=75, 8=50, 9=25 (9 has the highest sensitivity to magnets)
|
||||
- Setting of 1 might be used if you solder on PCBs with magnets and do not wish Pinecil to auto-sleep constantly. And a very strong/large magnet would be required on the stand to activate the sensor sleep mode.
|
||||
- Setting of 9 would be useful if you only had a small magnet and are not concerned about Pinecil falsely triggering sleep mode near magnetized items/tools.
|
||||
- Neodymium magnets are recommended. If using small magnets, 2-3 may be required, but too many can also be detrimental.
|
||||
- Actively watch the hall number change (in [debug menu](/Documentation/DebugMenu.md)) while you slowly move the magnet around to seek the best locations & whether you have too many or too few magnets. Positioning the magnet where you have the highest hall number will ensure consistent sleep mode when you place the iron in the stand. This requires some experimenting.
|
||||
- Sensor is physically located near the copper contacts for the tip at the front of the handle. Reference [Schematics U14](https://files.pine64.org/doc/Pinecil/Pinecil_schematic_v1.0a_20201120.pdf).
|
||||
- Positioning/type/quantity of magnets is important for best results. Sometimes [too many magnets](https://www.youtube.com/shorts/afkqKwCX00I) breaks the effect by distorting the magnetic field.
|
||||
- Orientation of North and South faces of magnets is important to increase reaction of the hall sensor [SI7210-B-00-IV](https://www.silabs.com/documents/public/application-notes/an1018-si72xx-sensors.pdf).
|
||||
|
32
README.md
32
README.md
@@ -20,22 +20,17 @@ This project is considered feature complete for use as a soldering iron, _so ple
|
||||
|
||||
_This firmware does **NOT** support the USB port while running for changing settings. This is done through the onscreen menu only. Logos are edited using the tool or python script and uploaded in DFU mode._
|
||||
|
||||
|
||||
|
||||
| Device | DC | QC | PD | EPR | BLE | Battery | Recommended |
|
||||
|----------:|:--:|:--:|:--:|:---:|:---:|:-------:|:-----------:|
|
||||
| MHP30 |❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ |
|
||||
| Pinecil |✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
|
||||
| Pinecil 2 |✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||
| TS100 |✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
|
||||
| TS80 |❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ |
|
||||
| TS80P |❌ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
|
||||
|
||||
|
||||
| Device | DC | QC | PD | EPR | BLE | Battery | Recommended |
|
||||
| --------: | :-: | :-: | :-: | :-: | :-: | :-----: | :---------: |
|
||||
| MHP30 | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ |
|
||||
| Pinecil | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
|
||||
| Pinecil 2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||
| TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
|
||||
| TS80 | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ |
|
||||
| TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
|
||||
|
||||
Please note that Miniware started shipping TS100's using cloned STM32 Chips. While these do work with IronOS, their DFU bootloader works terribly, and it is hard to get it to successfully flash larger firmware images like IronOS without timing out. This is the main reason why the TS100 is _no longer recommended_.
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
To get started with IronOS firmware, please jump to [Getting Started Guide](Documentation/GettingStarted.md).
|
||||
@@ -56,6 +51,7 @@ For notes on installation for your device, please refer to the [Flashing Guide](
|
||||
- (TS80) Set 18 W or 24 W settings for your power bank
|
||||
- (TS80P) Automatically negotiates appropriate PD and falls back to QC mode like TS80
|
||||
- (Pinecil) Supports all 3 power modes (PD, QC, DC In).
|
||||
- (Pinecilv2) Supports USB-PD EPR for 28V operation.
|
||||
- Improved readability Fonts, supporting multiple languages
|
||||
- Use hardware features to improve reliability
|
||||
- Can disable movement detection if desired
|
||||
@@ -70,17 +66,17 @@ For notes on installation for your device, please refer to the [Flashing Guide](
|
||||
This new firmware uses a new menu system to allow access to the settings on the device.
|
||||
When on the main screen and having the tip plugged in, the unit shows a pair of prompts for the two most common operations.
|
||||
|
||||
- Pressing the button near the tip enters the *soldering mode*
|
||||
- Pressing the button near the USB end enters the *settings menu*
|
||||
- When not in *soldering mode*, holding down the button near the tip will enter *soldering temperature adjust mode* (This is the same as the one in the *soldering mode*, but allows to adjust the temperature before heating up), in *soldering mode* however this will activate *boost mode* as long as you hold down the button.
|
||||
- Holding down the button near the USB end will show the *[debug menu](Documentation/DebugMenu.md).* In *soldering mode* this ends the heating.
|
||||
- Pressing the button near the tip enters the _soldering mode_
|
||||
- Pressing the button near the USB end enters the _settings menu_
|
||||
- When not in _soldering mode_, holding down the button near the tip will enter _soldering temperature adjust mode_ (This is the same as the one in the _soldering mode_, but allows to adjust the temperature before heating up), in _soldering mode_ however this will activate _boost mode_ as long as you hold down the button.
|
||||
- Holding down the button near the USB end will show the _[debug menu](Documentation/DebugMenu.md)._ In _soldering mode_ this ends the heating.
|
||||
|
||||
Operation details are over in the [Menu information.](Documentation/Menu.md)
|
||||
|
||||
## Thanks
|
||||
|
||||
If you love this firmware and want to continue my caffeine addiction, you can do so [here](https://paypal.me/RalimTek) (or email me for other options).
|
||||
I also want to give a shout out to all of the [Fantastic Contributors](https://github.com/Ralim/ts100/graphs/contributors).
|
||||
I also want to give a shout out to all of the [Fantastic Contributors](https://github.com/Ralim/IronOS/graphs/contributors).
|
||||
|
||||
Especially to the following users, who have helped in various ways that are massively appreciated:
|
||||
|
||||
|
@@ -128,8 +128,9 @@ def get_debug_menu() -> List[str]:
|
||||
"Vin ",
|
||||
"ACC ",
|
||||
"PWR ",
|
||||
"ID ",
|
||||
"ID ",
|
||||
"Max ",
|
||||
"Tip Res",
|
||||
"HW G ",
|
||||
"HW M ",
|
||||
"HW P ",
|
||||
|
@@ -1,433 +1,433 @@
|
||||
var def =
|
||||
{
|
||||
"messages": [
|
||||
{
|
||||
"id": "SettingsCalibrationWarning",
|
||||
"description": "Confirmation message shown before performing an offset calibration. Should warn the user to make sure tip and handle are at the same temperature."
|
||||
},
|
||||
{
|
||||
"id": "SettingsResetWarning",
|
||||
"description": "Confirmation message shown before confirming a settings reset."
|
||||
},
|
||||
{
|
||||
"id": "UVLOWarningString",
|
||||
"maxLen": 8,
|
||||
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
|
||||
},
|
||||
{
|
||||
"id": "UndervoltageString",
|
||||
"maxLen": 15,
|
||||
"description": "Warning text shown when the unit turns off due to undervoltage in advanced mode."
|
||||
},
|
||||
{
|
||||
"id": "InputVoltageString",
|
||||
"maxLen": 11,
|
||||
"note": "Preferably end with a space",
|
||||
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
|
||||
var def = ///
|
||||
{
|
||||
"messages": [{
|
||||
"id": "SettingsCalibrationWarning",
|
||||
"description": "Confirmation message shown before performing an offset calibration. Should warn the user to make sure tip and handle are at the same temperature."
|
||||
},
|
||||
{
|
||||
"id": "SettingsResetWarning",
|
||||
"description": "Confirmation message shown before confirming a settings reset."
|
||||
},
|
||||
{
|
||||
"id": "UVLOWarningString",
|
||||
"maxLen": 8,
|
||||
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
|
||||
},
|
||||
{
|
||||
"id": "UndervoltageString",
|
||||
"maxLen": 15,
|
||||
"description": "Warning text shown when the unit turns off due to undervoltage in advanced mode."
|
||||
},
|
||||
{
|
||||
"id": "InputVoltageString",
|
||||
"maxLen": 11,
|
||||
"note": "Preferably end with a space",
|
||||
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "SleepingSimpleString",
|
||||
"maxLen": 4,
|
||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
|
||||
},
|
||||
{
|
||||
"id": "SleepingAdvancedString",
|
||||
"maxLen": 15,
|
||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
|
||||
},
|
||||
{
|
||||
"id": "SleepingTipAdvancedString",
|
||||
"maxLen": 6,
|
||||
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
|
||||
},
|
||||
{
|
||||
"id": "OffString",
|
||||
"maxLen": 3,
|
||||
"description": "Shown when a setting is turned off."
|
||||
}
|
||||
],
|
||||
"messagesWarn": [
|
||||
{
|
||||
"id": "SettingsResetMessage",
|
||||
"description": "Shown when the settings are reset to factory defaults either by the user or by incompatible firmware changes."
|
||||
},
|
||||
{
|
||||
"id": "NoAccelerometerMessage",
|
||||
"description": "No accelerometer could be communicated with. This means that either the device's accelerometer is broken or unknown to IronOS. All motion-based settings are disabled and motion-based features will not work."
|
||||
},
|
||||
{
|
||||
"id": "NoPowerDeliveryMessage",
|
||||
"description": "The IC required for USB-PD could not be communicated with. This is an error warning that USB-PD WILL NOT FUNCTION. Generally indicative of either a hardware or software issues."
|
||||
},
|
||||
{
|
||||
"id": "LockingKeysString",
|
||||
"description": "Shown when keys are locked"
|
||||
},
|
||||
{
|
||||
"id": "UnlockingKeysString",
|
||||
"description": "Shown when keys are unlocked"
|
||||
},
|
||||
{
|
||||
"id": "WarningKeysLockedString",
|
||||
"description": "Warning that is shown when input is ignored due to the key lock being on"
|
||||
},
|
||||
{
|
||||
"id": "WarningThermalRunaway",
|
||||
"description": "Warning text shown when the software has disabled the heater as a safety precaution as the temperature reading didn't react as expected."
|
||||
}
|
||||
],
|
||||
"characters": [
|
||||
{
|
||||
"id": "SettingRightChar",
|
||||
"len": 1,
|
||||
"description": "Shown for fixed Right-handed display rotation."
|
||||
},
|
||||
{
|
||||
"id": "SettingLeftChar",
|
||||
"len": 1,
|
||||
"description": "Shown for fixed Left-handed display rotation."
|
||||
},
|
||||
{
|
||||
"id": "SettingAutoChar",
|
||||
"len": 1,
|
||||
"description": "Shown for automatic display rotation."
|
||||
},
|
||||
{
|
||||
"id": "SettingFastChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is set to a fast value i.e. animation speed"
|
||||
},
|
||||
{
|
||||
"id": "SettingSlowChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is set to a slow value i.e. animation speed"
|
||||
},
|
||||
{
|
||||
"id": "SettingMediumChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is set to a medium value i.e. animation speed"
|
||||
},
|
||||
{
|
||||
"id": "SettingOffChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is turned off"
|
||||
},
|
||||
{
|
||||
"id": "SettingStartSolderingChar",
|
||||
"len": 1,
|
||||
"description": "Shown when the auto start mode is set to go straight to soldering."
|
||||
},
|
||||
{
|
||||
"id": "SettingStartSleepChar",
|
||||
"len": 1,
|
||||
"description": "Shown when the auto start mode is set to start in sleep mode."
|
||||
},
|
||||
{
|
||||
"id": "SleepingSimpleString",
|
||||
"maxLen": 4,
|
||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
|
||||
},
|
||||
{
|
||||
"id": "SleepingAdvancedString",
|
||||
"maxLen": 15,
|
||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
|
||||
},
|
||||
{
|
||||
"id": "SleepingTipAdvancedString",
|
||||
"maxLen": 6,
|
||||
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
|
||||
},
|
||||
{
|
||||
"id": "OffString",
|
||||
"maxLen": 3,
|
||||
"description": "Shown when a setting is turned off."
|
||||
},
|
||||
{
|
||||
"id": "DeviceFailedValidationWarning",
|
||||
"default": "Device may be\ncounterfeit",
|
||||
"description": "Warning shown if the device may be a clone or counterfeit unit."
|
||||
}
|
||||
],
|
||||
"messagesWarn": [{
|
||||
"id": "SettingsResetMessage",
|
||||
"description": "Shown when the settings are reset to factory defaults either by the user or by incompatible firmware changes."
|
||||
},
|
||||
{
|
||||
"id": "NoAccelerometerMessage",
|
||||
"description": "No accelerometer could be communicated with. This means that either the device's accelerometer is broken or unknown to IronOS. All motion-based settings are disabled and motion-based features will not work."
|
||||
},
|
||||
{
|
||||
"id": "NoPowerDeliveryMessage",
|
||||
"description": "The IC required for USB-PD could not be communicated with. This is an error warning that USB-PD WILL NOT FUNCTION. Generally indicative of either a hardware or software issues."
|
||||
},
|
||||
{
|
||||
"id": "LockingKeysString",
|
||||
"description": "Shown when keys are locked"
|
||||
},
|
||||
{
|
||||
"id": "UnlockingKeysString",
|
||||
"description": "Shown when keys are unlocked"
|
||||
},
|
||||
{
|
||||
"id": "WarningKeysLockedString",
|
||||
"description": "Warning that is shown when input is ignored due to the key lock being on"
|
||||
},
|
||||
{
|
||||
"id": "WarningThermalRunaway",
|
||||
"description": "Warning text shown when the software has disabled the heater as a safety precaution as the temperature reading didn't react as expected."
|
||||
}
|
||||
],
|
||||
"characters": [{
|
||||
"id": "SettingRightChar",
|
||||
"len": 1,
|
||||
"description": "Shown for fixed Right-handed display rotation."
|
||||
},
|
||||
{
|
||||
"id": "SettingLeftChar",
|
||||
"len": 1,
|
||||
"description": "Shown for fixed Left-handed display rotation."
|
||||
},
|
||||
{
|
||||
"id": "SettingAutoChar",
|
||||
"len": 1,
|
||||
"description": "Shown for automatic display rotation."
|
||||
},
|
||||
{
|
||||
"id": "SettingFastChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is set to a fast value i.e. animation speed"
|
||||
},
|
||||
{
|
||||
"id": "SettingSlowChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is set to a slow value i.e. animation speed"
|
||||
},
|
||||
{
|
||||
"id": "SettingMediumChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is set to a medium value i.e. animation speed"
|
||||
},
|
||||
{
|
||||
"id": "SettingOffChar",
|
||||
"len": 1,
|
||||
"description": "Shown when a setting is turned off"
|
||||
},
|
||||
{
|
||||
"id": "SettingStartSolderingChar",
|
||||
"len": 1,
|
||||
"description": "Shown when the auto start mode is set to go straight to soldering."
|
||||
},
|
||||
{
|
||||
"id": "SettingStartSleepChar",
|
||||
"len": 1,
|
||||
"description": "Shown when the auto start mode is set to start in sleep mode."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "SettingStartSleepOffChar",
|
||||
"len": 1,
|
||||
"description": "Shown when the auto start state is set to go to an off state, but on movement wake into soldering mode."
|
||||
},
|
||||
{
|
||||
"id": "SettingStartSleepOffChar",
|
||||
"len": 1,
|
||||
"description": "Shown when the auto start state is set to go to an off state, but on movement wake into soldering mode."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "SettingStartNoneChar",
|
||||
"len": 1,
|
||||
"description": "Shown when autostart state is to do nothing and go to a normal boot"
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityOff",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect sensor) is disabled. Turning off the sensor."
|
||||
},
|
||||
{
|
||||
"id": "SettingStartNoneChar",
|
||||
"len": 1,
|
||||
"description": "Shown when autostart state is to do nothing and go to a normal boot"
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityOff",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect sensor) is disabled. Turning off the sensor."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityLow",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect) is not very sensitive"
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityMedium",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect) is average sensitive"
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityHigh",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect) is highly sensitive"
|
||||
},
|
||||
{
|
||||
"id": "SettingLockDisableChar",
|
||||
"len": 1,
|
||||
"default": "D",
|
||||
"description": "Shown when locking mode is turned off."
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityLow",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect) is not very sensitive"
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityMedium",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect) is average sensitive"
|
||||
},
|
||||
{
|
||||
"id": "SettingSensitivityHigh",
|
||||
"len": 1,
|
||||
"description": "Shown when a sensitivity (hall effect) is highly sensitive"
|
||||
},
|
||||
{
|
||||
"id": "SettingLockDisableChar",
|
||||
"len": 1,
|
||||
"default": "D",
|
||||
"description": "Shown when locking mode is turned off."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "SettingLockBoostChar",
|
||||
"len": 1,
|
||||
"default": "B",
|
||||
"description": "Shown when the locking mode is set to lock all buttons except for boost mode."
|
||||
},
|
||||
{
|
||||
"id": "SettingLockFullChar",
|
||||
"len": 1,
|
||||
"default": "F",
|
||||
"description": "Shown when the locking mode is set to lock all buttons."
|
||||
}
|
||||
],
|
||||
"menuGroups": [
|
||||
{
|
||||
"id": "PowerMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Menu for settings related to power. Main settings to do with the input voltage."
|
||||
},
|
||||
{
|
||||
"id": "SolderingMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Settings for soldering mode, such as boost temps, the increment used when pressing buttons and if button locking is enabled."
|
||||
},
|
||||
{
|
||||
"id": "PowerSavingMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Settings to do with power saving, such as sleep mode, sleep temps, and shutdown modes."
|
||||
},
|
||||
{
|
||||
"id": "UIMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "User interface related settings, such as units."
|
||||
},
|
||||
{
|
||||
"id": "SettingLockBoostChar",
|
||||
"len": 1,
|
||||
"default": "B",
|
||||
"description": "Shown when the locking mode is set to lock all buttons except for boost mode."
|
||||
},
|
||||
{
|
||||
"id": "SettingLockFullChar",
|
||||
"len": 1,
|
||||
"default": "F",
|
||||
"description": "Shown when the locking mode is set to lock all buttons."
|
||||
}
|
||||
],
|
||||
"menuGroups": [{
|
||||
"id": "PowerMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Menu for settings related to power. Main settings to do with the input voltage."
|
||||
},
|
||||
{
|
||||
"id": "SolderingMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Settings for soldering mode, such as boost temps, the increment used when pressing buttons and if button locking is enabled."
|
||||
},
|
||||
{
|
||||
"id": "PowerSavingMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Settings to do with power saving, such as sleep mode, sleep temps, and shutdown modes."
|
||||
},
|
||||
{
|
||||
"id": "UIMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "User interface related settings, such as units."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "AdvancedMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Advanced settings. Misc catchall for settings that don't fit anywhere else or settings that require some thought before use."
|
||||
}
|
||||
],
|
||||
"menuOptions": [
|
||||
{
|
||||
"id": "DCInCutoff",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "When the device is powered by a battery, this adjusts the low voltage threshold for when the unit should turn off the heater to protect the battery."
|
||||
},
|
||||
{
|
||||
"id": "SleepTemperature",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
|
||||
},
|
||||
{
|
||||
"id": "SleepTimeout",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
|
||||
},
|
||||
{
|
||||
"id": "AdvancedMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Advanced settings. Misc catchall for settings that don't fit anywhere else or settings that require some thought before use."
|
||||
}
|
||||
],
|
||||
"menuOptions": [{
|
||||
"id": "DCInCutoff",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "When the device is powered by a battery, this adjusts the low voltage threshold for when the unit should turn off the heater to protect the battery."
|
||||
},
|
||||
{
|
||||
"id": "SleepTemperature",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
|
||||
},
|
||||
{
|
||||
"id": "SleepTimeout",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "ShutdownTimeout",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "How long of a period without movement / button-pressing is required before the device turns off the tip heater completely and returns to the main idle screen."
|
||||
},
|
||||
{
|
||||
"id": "ShutdownTimeout",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "How long of a period without movement / button-pressing is required before the device turns off the tip heater completely and returns to the main idle screen."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "MotionSensitivity",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Scale of how sensitive the device is to movement. Higher numbers == more sensitive. 0 == motion detection turned off."
|
||||
},
|
||||
{
|
||||
"id": "TemperatureUnit",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If the device shows temperatures in °C or °F."
|
||||
},
|
||||
{
|
||||
"id": "MotionSensitivity",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Scale of how sensitive the device is to movement. Higher numbers == more sensitive. 0 == motion detection turned off."
|
||||
},
|
||||
{
|
||||
"id": "TemperatureUnit",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If the device shows temperatures in °C or °F."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "AdvancedIdle",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Should the device show an 'advanced' view on the idle screen. The advanced view uses text to show more details than the typical icons."
|
||||
},
|
||||
{
|
||||
"id": "DisplayRotation",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
|
||||
},
|
||||
{
|
||||
"id": "AdvancedIdle",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Should the device show an 'advanced' view on the idle screen. The advanced view uses text to show more details than the typical icons."
|
||||
},
|
||||
{
|
||||
"id": "DisplayRotation",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "BoostTemperature",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "When the unit is in soldering mode. You can hold down the button at the front of the device to temporarily override the soldering temperature to this value. This SETS the temperature, it does not ADD to it."
|
||||
},
|
||||
{
|
||||
"id": "AutoStart",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "When the device powers up, should it enter into a special mode. These settings set it to either start into soldering mode, sleeping mode or auto mode (Enters into soldering mode on the first movement)."
|
||||
},
|
||||
{
|
||||
"id": "BoostTemperature",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "When the unit is in soldering mode. You can hold down the button at the front of the device to temporarily override the soldering temperature to this value. This SETS the temperature, it does not ADD to it."
|
||||
},
|
||||
{
|
||||
"id": "AutoStart",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "When the device powers up, should it enter into a special mode. These settings set it to either start into soldering mode, sleeping mode or auto mode (Enters into soldering mode on the first movement)."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "CooldownBlink",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If the idle screen should blink the tip temperature for attention while the tip is over 50°C. Intended as a 'tip is still hot' warning."
|
||||
},
|
||||
{
|
||||
"id": "CooldownBlink",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If the idle screen should blink the tip temperature for attention while the tip is over 50°C. Intended as a 'tip is still hot' warning."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "TemperatureCalibration",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Used to calibrate the ADC+Op-amp offsets for the tip. This calibration must be performed when the tip temperature and the handle temperature are equal. Generally not required unless your device is reading more than 5°C off target."
|
||||
},
|
||||
{
|
||||
"id": "TemperatureCalibration",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Used to calibrate the ADC+Op-amp offsets for the tip. This calibration must be performed when the tip temperature and the handle temperature are equal. Generally not required unless your device is reading more than 5°C off target."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "SettingsReset",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Resets all settings and calibrations to factory defaults. Does NOT erase custom user boot up logo's."
|
||||
},
|
||||
{
|
||||
"id": "VoltageCalibration",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Enters an adjustment mode where you can gradually adjust the measured voltage to compensate for any unit-to-unit variance in the voltage sense resistors."
|
||||
},
|
||||
{
|
||||
"id": "AdvancedSoldering",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Should the device show an 'advanced' soldering view. This is a text-based view that shows more information at the cost of no nice graphics."
|
||||
},
|
||||
{
|
||||
"id": "ScrollingSpeed",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 11,
|
||||
"description": "How fast the description text scrolls when hovering on a menu. Faster speeds may induce tearing, but allow reading the whole description faster."
|
||||
},
|
||||
{
|
||||
"id": "SettingsReset",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Resets all settings and calibrations to factory defaults. Does NOT erase custom user boot up logo's."
|
||||
},
|
||||
{
|
||||
"id": "VoltageCalibration",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Enters an adjustment mode where you can gradually adjust the measured voltage to compensate for any unit-to-unit variance in the voltage sense resistors."
|
||||
},
|
||||
{
|
||||
"id": "AdvancedSoldering",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Should the device show an 'advanced' soldering view. This is a text-based view that shows more information at the cost of no nice graphics."
|
||||
},
|
||||
{
|
||||
"id": "ScrollingSpeed",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 11,
|
||||
"description": "How fast the description text scrolls when hovering on a menu. Faster speeds may induce tearing, but allow reading the whole description faster."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "QCMaxVoltage",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "This adjusts the maximum voltage the QC negotiation will adjust to. Does NOT affect USB-PD. Should be set safely based on the current rating of your power supply."
|
||||
},
|
||||
{
|
||||
"id": "PDNegTimeout",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "How long until firmware stops trying to negotiate for USB-PD and tries QC instead. Longer times may help dodgy / old PD adapters, faster times move onto PD quickly. Units of 100ms. Recommended to keep small values."
|
||||
},
|
||||
{
|
||||
"id": "QCMaxVoltage",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "This adjusts the maximum voltage the QC negotiation will adjust to. Does NOT affect USB-PD. Should be set safely based on the current rating of your power supply."
|
||||
},
|
||||
{
|
||||
"id": "PDNegTimeout",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "How long until firmware stops trying to negotiate for USB-PD and tries QC instead. Longer times may help dodgy / old PD adapters, faster times move onto PD quickly. Units of 100ms. Recommended to keep small values."
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"id": "PowerLimit",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Allows setting a custom wattage for the device to aim to keep the AVERAGE power below. The unit can't control its peak power no matter how you set this. (Except for MHP30 which will regulate nicely to this). If USB-PD is in use, the limit will be set to the lower of this and the supplies advertised wattage."
|
||||
{
|
||||
"id": "PowerLimit",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"description": "Allows setting a custom wattage for the device to aim to keep the AVERAGE power below. The unit can't control its peak power no matter how you set this. (Except for MHP30 which will regulate nicely to this). If USB-PD is in use, the limit will be set to the lower of this and the supplies advertised wattage."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "ReverseButtonTempChange",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 15,
|
||||
"description": "Swaps which button increments and decrements on temperature change screens."
|
||||
},
|
||||
{
|
||||
"id": "TempChangeShortStep",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Factor by which the temperature is changed with a quick press of the buttons."
|
||||
},
|
||||
{
|
||||
"id": "ReverseButtonTempChange",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 15,
|
||||
"description": "Swaps which button increments and decrements on temperature change screens."
|
||||
},
|
||||
{
|
||||
"id": "TempChangeShortStep",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"description": "Factor by which the temperature is changed with a quick press of the buttons."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "TempChangeLongStep",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 15,
|
||||
"description": "Factor by which the temperature is changed with a hold of the buttons."
|
||||
},
|
||||
{
|
||||
"id": "TempChangeLongStep",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 15,
|
||||
"description": "Factor by which the temperature is changed with a hold of the buttons."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "PowerPulsePower",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 15,
|
||||
"description": "Enables and sets the wattage of the power pulse. Power pulse causes the device to briefly turn on the heater to draw power to avoid power banks going to sleep."
|
||||
},
|
||||
{
|
||||
"id": "PowerPulsePower",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 15,
|
||||
"description": "Enables and sets the wattage of the power pulse. Power pulse causes the device to briefly turn on the heater to draw power to avoid power banks going to sleep."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "HallEffSensitivity",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 8,
|
||||
"description": "If the unit has a hall effect sensor (Pinecil), this adjusts how sensitive it is at detecting a magnet to put the device into sleep mode."
|
||||
},
|
||||
{
|
||||
"id": "HallEffSensitivity",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 8,
|
||||
"description": "If the unit has a hall effect sensor (Pinecil), this adjusts how sensitive it is at detecting a magnet to put the device into sleep mode."
|
||||
|
||||
},
|
||||
{
|
||||
"id": "LockingMode",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If locking the buttons against accidental presses is enabled."
|
||||
},
|
||||
{
|
||||
"id": "MinVolCell",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)"
|
||||
},
|
||||
{
|
||||
"id": "AnimLoop",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Should the menu animations loop. Only visible if the animation speed is not set to \"Off\""
|
||||
},
|
||||
{
|
||||
"id": "AnimSpeed",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "How fast should the menu animations loop, or if they should not loop at all."
|
||||
},
|
||||
{
|
||||
"id": "PowerPulseWait",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Adjusts the time interval between power pulses. Longer gaps reduce undesired heating of the tip, but needs to be fast enough to keep your power bank awake."
|
||||
},
|
||||
{
|
||||
"id": "PowerPulseDuration",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "How long should the power pulse go for. Some power banks require seeing the power draw be sustained for a certain duration to keep awake. Should be kept as short as possible to avoid wasting power / undesired heating of the tip."
|
||||
},
|
||||
{
|
||||
"id": "LanguageSwitch",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Changes the device language on multi-lingual builds."
|
||||
},
|
||||
{
|
||||
"id": "Brightness",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Display brightness. Higher values age the OLED faster due to burn-in. (However, it is notable that most of these screens die from other causes first.)"
|
||||
},
|
||||
{
|
||||
"id": "ColourInversion",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Inverts the entire OLED."
|
||||
},
|
||||
{
|
||||
"id": "LOGOTime",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Sets the duration for the boot logo (S=seconds)."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "LockingMode",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "If locking the buttons against accidental presses is enabled."
|
||||
},
|
||||
{
|
||||
"id": "MinVolCell",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"description": "When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)"
|
||||
},
|
||||
{
|
||||
"id": "AnimLoop",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Should the menu animations loop. Only visible if the animation speed is not set to \"Off\""
|
||||
},
|
||||
{
|
||||
"id": "AnimSpeed",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "How fast should the menu animations loop, or if they should not loop at all."
|
||||
},
|
||||
{
|
||||
"id": "PowerPulseWait",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "Adjusts the time interval between power pulses. Longer gaps reduce undesired heating of the tip, but needs to be fast enough to keep your power bank awake."
|
||||
},
|
||||
{
|
||||
"id": "PowerPulseDuration",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"description": "How long should the power pulse go for. Some power banks require seeing the power draw be sustained for a certain duration to keep awake. Should be kept as short as possible to avoid wasting power / undesired heating of the tip."
|
||||
},
|
||||
{
|
||||
"id": "LanguageSwitch",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Changes the device language on multi-lingual builds."
|
||||
},
|
||||
{
|
||||
"id": "Brightness",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Display brightness. Higher values age the OLED faster due to burn-in. (However, it is notable that most of these screens die from other causes first.)"
|
||||
},
|
||||
{
|
||||
"id": "ColourInversion",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Inverts the entire OLED."
|
||||
},
|
||||
{
|
||||
"id": "LOGOTime",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Sets the duration for the boot logo (S=seconds)."
|
||||
}
|
||||
]
|
||||
}
|
@@ -77,6 +77,11 @@ bool isTipDisconnected();
|
||||
// Return hardware unique ID if possible
|
||||
uint64_t getDeviceID();
|
||||
|
||||
// If device has burned in validation code's, return the code
|
||||
uint32_t getDeviceValidation();
|
||||
// If device validation passes returns 0
|
||||
uint8_t getDeviceValidationStatus();
|
||||
|
||||
// Status LED controls
|
||||
|
||||
enum StatusLED {
|
||||
@@ -93,6 +98,7 @@ void setStatusLED(const enum StatusLED state);
|
||||
// By the PID, after each ADC sample comes in
|
||||
// For example, on the MHP30 this is used to figure out the resistance of the hotplate
|
||||
uint8_t preStartChecks();
|
||||
uint8_t preStartChecksDone();
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -16,9 +16,11 @@ extern "C" {
|
||||
// Can be used to check any details for the power system
|
||||
void power_check();
|
||||
|
||||
// Return the tip resistance in x10 ohms (8.5 -> 85)
|
||||
// Returns the tip resistance in x10 ohms, so 7.5 = 75; 14=140 etc
|
||||
uint8_t getTipResistanceX10();
|
||||
|
||||
uint8_t getTipThermalMass();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -26,7 +26,7 @@ void resetWatchdog() { HAL_IWDG_Refresh(&hiwdg); }
|
||||
#ifdef TEMP_NTC
|
||||
// Lookup table for the NTC
|
||||
// Stored as ADCReading,Temp in degC
|
||||
static const uint16_t NTCHandleLookup[] = {
|
||||
static const int32_t NTCHandleLookup[] = {
|
||||
// ADC Reading , Temp in Cx10
|
||||
808, 1600, //
|
||||
832, 1590, //
|
||||
@@ -425,7 +425,7 @@ bool isTipDisconnected() {
|
||||
|
||||
uint8_t preStartChecks() {
|
||||
performTipMeasurementStep(false);
|
||||
return tipMeasurementOccuring ? 1 : 0;
|
||||
return tipMeasurementOccuring ? 0 : 1;
|
||||
}
|
||||
void setBuzzer(bool on) {
|
||||
if (on) {
|
||||
@@ -474,4 +474,8 @@ void setStatusLED(const enum StatusLED state) {
|
||||
uint64_t getDeviceID() {
|
||||
//
|
||||
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
@@ -175,11 +175,11 @@
|
||||
* @retval None
|
||||
*/
|
||||
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) {
|
||||
uint32_t position = 0x00u;
|
||||
uint32_t ioposition;
|
||||
uint32_t iocurrent;
|
||||
uint32_t temp;
|
||||
uint32_t config = 0x00u;
|
||||
uint32_t position = 0x00u;
|
||||
uint32_t ioposition;
|
||||
uint32_t iocurrent;
|
||||
uint32_t temp;
|
||||
uint32_t config = 0x00u;
|
||||
__IO uint32_t *configregister; /* Store the address of CRL or CRH register based on pin number */
|
||||
uint32_t registeroffset; /* offset used during computation of CNF and MODE bits placement inside CRL or CRH register */
|
||||
|
||||
@@ -326,9 +326,9 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) {
|
||||
* @retval None
|
||||
*/
|
||||
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) {
|
||||
uint32_t position = 0x00u;
|
||||
uint32_t iocurrent;
|
||||
uint32_t tmp;
|
||||
uint32_t position = 0x00u;
|
||||
uint32_t iocurrent;
|
||||
uint32_t tmp;
|
||||
__IO uint32_t *configregister; /* Store the address of CRL or CRH register based on pin number */
|
||||
uint32_t registeroffset;
|
||||
|
||||
|
@@ -74,6 +74,9 @@
|
||||
#define POWER_PULSE_WAIT_MAX 9 // 9*2.5s = 22.5 seconds
|
||||
#define POWER_PULSE_DURATION_MAX 9 // 9*250ms = 2.25 seconds
|
||||
|
||||
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
||||
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
@@ -146,6 +149,7 @@
|
||||
#define BATTFILTERDEPTH 8
|
||||
#define OLED_I2CBB
|
||||
#define ACCEL_EXITS_ON_MOVEMENT
|
||||
#define NEEDS_VBUS_PROBE 0
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 650
|
||||
#define TIP_THERMAL_MASS 65 // TODO, needs refinement
|
||||
|
@@ -283,10 +283,14 @@ bool isTipDisconnected() {
|
||||
}
|
||||
|
||||
void setStatusLED(const enum StatusLED state) {}
|
||||
uint8_t preStartChecks() { return 0; }
|
||||
uint8_t preStartChecks() { return 1; }
|
||||
uint64_t getDeviceID() {
|
||||
//
|
||||
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
||||
}
|
||||
|
||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
@@ -9,7 +9,7 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#ifdef TEMP_uV_LOOKUP_HAKKO
|
||||
const uint16_t uVtoDegC[] = {
|
||||
const int32_t uVtoDegC[] = {
|
||||
//
|
||||
//
|
||||
0, 0, //
|
||||
@@ -69,7 +69,7 @@ const uint16_t uVtoDegC[] = {
|
||||
|
||||
#ifdef TEMP_uV_LOOKUP_TS80
|
||||
|
||||
const uint16_t uVtoDegC[] = {
|
||||
const int32_t uVtoDegC[] = {
|
||||
//
|
||||
//
|
||||
530, 0, //
|
||||
|
@@ -564,21 +564,10 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) {
|
||||
|
||||
/* Half Transfer Complete Interrupt management ******************************/
|
||||
if (((flag_it & (DMA_FLAG_HT1 << hdma->ChannelIndex)) != RESET) && ((source_it & DMA_IT_HT) != RESET)) {
|
||||
/* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */
|
||||
if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) {
|
||||
/* Disable the half transfer interrupt */
|
||||
__HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
|
||||
}
|
||||
|
||||
/* Clear the half transfer complete flag */
|
||||
__HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma));
|
||||
|
||||
/* DMA peripheral state is not updated in Half Transfer */
|
||||
/* but in Transfer Complete case */
|
||||
|
||||
if (hdma->XferHalfCpltCallback != NULL) {
|
||||
/* Half transfer callback */
|
||||
hdma->XferHalfCpltCallback(hdma);
|
||||
}
|
||||
}
|
||||
|
||||
/* Transfer Complete Interrupt management ***********************************/
|
||||
|
@@ -191,11 +191,11 @@
|
||||
* @retval None
|
||||
*/
|
||||
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) {
|
||||
uint32_t position;
|
||||
uint32_t ioposition = 0x00U;
|
||||
uint32_t iocurrent = 0x00U;
|
||||
uint32_t temp = 0x00U;
|
||||
uint32_t config = 0x00U;
|
||||
uint32_t position;
|
||||
uint32_t ioposition = 0x00U;
|
||||
uint32_t iocurrent = 0x00U;
|
||||
uint32_t temp = 0x00U;
|
||||
uint32_t config = 0x00U;
|
||||
__IO uint32_t *configregister; /* Store the address of CRL or CRH register based on pin number */
|
||||
uint32_t registeroffset = 0U; /* offset used during computation of CNF and MODE bits placement inside CRL or CRH register */
|
||||
|
||||
@@ -340,9 +340,9 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) {
|
||||
* @retval None
|
||||
*/
|
||||
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) {
|
||||
uint32_t position = 0x00U;
|
||||
uint32_t iocurrent = 0x00U;
|
||||
uint32_t tmp = 0x00U;
|
||||
uint32_t position = 0x00U;
|
||||
uint32_t iocurrent = 0x00U;
|
||||
uint32_t tmp = 0x00U;
|
||||
__IO uint32_t *configregister; /* Store the address of CRL or CRH register based on pin number */
|
||||
uint32_t registeroffset = 0U;
|
||||
|
||||
|
@@ -1,208 +1,211 @@
|
||||
#ifndef CONFIGURATION_H_
|
||||
#define CONFIGURATION_H_
|
||||
#include "Settings.h"
|
||||
#include <stdint.h>
|
||||
/**
|
||||
* Configuration.h
|
||||
* Define here your default pre settings for TS80(P) or TS100
|
||||
*
|
||||
*/
|
||||
#define CONFIGURATION_H_
|
||||
#include "Settings.h"
|
||||
#include <stdint.h>
|
||||
/**
|
||||
* Configuration.h
|
||||
* Define here your default pre settings for TS80(P) or TS100
|
||||
*
|
||||
*/
|
||||
|
||||
//===========================================================================
|
||||
//============================= Default Settings ============================
|
||||
//===========================================================================
|
||||
/**
|
||||
* Default soldering temp is 320.0 C
|
||||
* Temperature the iron sleeps at - default 150.0 C
|
||||
*/
|
||||
//===========================================================================
|
||||
//============================= Default Settings ============================
|
||||
//===========================================================================
|
||||
/**
|
||||
* Default soldering temp is 320.0 C
|
||||
* Temperature the iron sleeps at - default 150.0 C
|
||||
*/
|
||||
|
||||
#define SLEEP_TEMP 150 // Default sleep temperature
|
||||
#define BOOST_TEMP 420 // Default boost temp.
|
||||
#define BOOST_MODE_ENABLED 1 // 0: Disable 1: Enable
|
||||
#define SLEEP_TEMP 150 // Default sleep temperature
|
||||
#define BOOST_TEMP 420 // Default boost temp.
|
||||
#define BOOST_MODE_ENABLED 1 // 0: Disable 1: Enable
|
||||
|
||||
/**
|
||||
* Blink the temperature on the cooling screen when its > 50C
|
||||
*/
|
||||
#define COOLING_TEMP_BLINK 0 // 0: Disable 1: Enable
|
||||
/**
|
||||
* Blink the temperature on the cooling screen when its > 50C
|
||||
*/
|
||||
#define COOLING_TEMP_BLINK 0 // 0: Disable 1: Enable
|
||||
|
||||
/**
|
||||
* How many seconds/minutes we wait until going to sleep/shutdown.
|
||||
* Values -> SLEEP_TIME * 10; i.e. 5*10 = 50 Seconds!
|
||||
*/
|
||||
#define SLEEP_TIME 5 // x10 Seconds
|
||||
#define SHUTDOWN_TIME 10 // Minutes
|
||||
/**
|
||||
* How many seconds/minutes we wait until going to sleep/shutdown.
|
||||
* Values -> SLEEP_TIME * 10; i.e. 5*10 = 50 Seconds!
|
||||
*/
|
||||
#define SLEEP_TIME 5 // x10 Seconds
|
||||
#define SHUTDOWN_TIME 10 // Minutes
|
||||
|
||||
/**
|
||||
* Auto start off for safety.
|
||||
* Pissible values are:
|
||||
* 0 - none
|
||||
* 1 - Soldering Temperature
|
||||
* 2 - Sleep Temperature
|
||||
* 3 - Sleep Off Temperature
|
||||
*/
|
||||
#define AUTO_START_MODE 0 // Default to none
|
||||
/**
|
||||
* Auto start off for safety.
|
||||
* Pissible values are:
|
||||
* 0 - none
|
||||
* 1 - Soldering Temperature
|
||||
* 2 - Sleep Temperature
|
||||
* 3 - Sleep Off Temperature
|
||||
*/
|
||||
#define AUTO_START_MODE 0 // Default to none
|
||||
|
||||
/**
|
||||
* Locking Mode
|
||||
* When in soldering mode a long press on both keys toggle the lock of the buttons
|
||||
* Possible values are:
|
||||
* 0 - Desactivated
|
||||
* 1 - Lock except boost
|
||||
* 2 - Full lock
|
||||
*/
|
||||
#define LOCKING_MODE 0 // Default to desactivated for safety
|
||||
/**
|
||||
* Locking Mode
|
||||
* When in soldering mode a long press on both keys toggle the lock of the buttons
|
||||
* Possible values are:
|
||||
* 0 - Desactivated
|
||||
* 1 - Lock except boost
|
||||
* 2 - Full lock
|
||||
*/
|
||||
#define LOCKING_MODE 0 // Default to desactivated for safety
|
||||
|
||||
/**
|
||||
* OLED Orientation
|
||||
*
|
||||
*/
|
||||
#define ORIENTATION_MODE 2 // 0: Right 1:Left 2:Automatic - Default Automatic
|
||||
#define REVERSE_BUTTON_TEMP_CHANGE 0 // 0:Default 1:Reverse - Reverse the plus and minus button assigment for temperature change
|
||||
/**
|
||||
* OLED Orientation
|
||||
*
|
||||
*/
|
||||
#define ORIENTATION_MODE 2 // 0: Right 1:Left 2:Automatic - Default Automatic
|
||||
#define REVERSE_BUTTON_TEMP_CHANGE 0 // 0:Default 1:Reverse - Reverse the plus and minus button assigment for temperature change
|
||||
|
||||
/**
|
||||
* Temp change settings
|
||||
*/
|
||||
#define TEMP_CHANGE_SHORT_STEP 1 // Default temp change short step +1
|
||||
#define TEMP_CHANGE_LONG_STEP 10 // Default temp change long step +10
|
||||
#define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value
|
||||
#define TEMP_CHANGE_LONG_STEP_MAX 90 // Temp change long step MAX value
|
||||
/**
|
||||
* Temp change settings
|
||||
*/
|
||||
#define TEMP_CHANGE_SHORT_STEP 1 // Default temp change short step +1
|
||||
#define TEMP_CHANGE_LONG_STEP 10 // Default temp change long step +10
|
||||
#define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value
|
||||
#define TEMP_CHANGE_LONG_STEP_MAX 90 // Temp change long step MAX value
|
||||
|
||||
/* Power pulse for keeping power banks awake*/
|
||||
#define POWER_PULSE_INCREMENT 1
|
||||
#define POWER_PULSE_MAX 100 // x10 max watts
|
||||
#define POWER_PULSE_WAIT_MAX 9 // 9*2.5s = 22.5 seconds
|
||||
#define POWER_PULSE_DURATION_MAX 9 // 9*250ms = 2.25 seconds
|
||||
/* Power pulse for keeping power banks awake*/
|
||||
#define POWER_PULSE_INCREMENT 1
|
||||
#define POWER_PULSE_MAX 100 // x10 max watts
|
||||
#define POWER_PULSE_WAIT_MAX 9 // 9*2.5s = 22.5 seconds
|
||||
#define POWER_PULSE_DURATION_MAX 9 // 9*250ms = 2.25 seconds
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
||||
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||
#ifdef MODEL_TS100
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
||||
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||
|
||||
/**
|
||||
* OLED Orientation Sensitivity on Automatic mode!
|
||||
* Motion Sensitivity <0=Off 1=Least Sensitive 9=Most Sensitive>
|
||||
*/
|
||||
#define SENSITIVITY 7 // Default 7
|
||||
/**
|
||||
* OLED Orientation Sensitivity on Automatic mode!
|
||||
* Motion Sensitivity <0=Off 1=Least Sensitive 9=Most Sensitive>
|
||||
*/
|
||||
#define SENSITIVITY 7 // Default 7
|
||||
|
||||
/**
|
||||
* Detailed soldering screen
|
||||
* Detailed idle screen (off for first time users)
|
||||
*/
|
||||
#define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0
|
||||
#define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0
|
||||
/**
|
||||
* Detailed soldering screen
|
||||
* Detailed idle screen (off for first time users)
|
||||
*/
|
||||
#define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0
|
||||
#define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0
|
||||
|
||||
#define THERMAL_RUNAWAY_TIME_SEC 20
|
||||
#define THERMAL_RUNAWAY_TEMP_C 10
|
||||
#define THERMAL_RUNAWAY_TIME_SEC 20
|
||||
#define THERMAL_RUNAWAY_TEMP_C 10
|
||||
|
||||
#define CUT_OUT_SETTING 0 // default to no cut-off voltage
|
||||
#define RECOM_VOL_CELL 33 // Minimum voltage per cell (Recommended 3.3V (33))
|
||||
#define TEMPERATURE_INF 0 // default to 0
|
||||
#define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow
|
||||
#define ANIMATION_LOOP 1 // 0: off 1: on
|
||||
#define ANIMATION_SPEED settingOffSpeed_t::MEDIUM
|
||||
#define CUT_OUT_SETTING 0 // default to no cut-off voltage
|
||||
#define RECOM_VOL_CELL 33 // Minimum voltage per cell (Recommended 3.3V (33))
|
||||
#define TEMPERATURE_INF 0 // default to 0
|
||||
#define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow
|
||||
#define ANIMATION_LOOP 1 // 0: off 1: on
|
||||
#define ANIMATION_SPEED settingOffSpeed_t::MEDIUM
|
||||
|
||||
#define OP_AMP_Rf_TS100 750 * 1000 // 750 Kilo-ohms -> From schematic, R1
|
||||
#define OP_AMP_Rin_TS100 2370 // 2.37 Kilo-ohms -> From schematic, R2
|
||||
#define OP_AMP_Rf_TS100 750 * 1000 // 750 Kilo-ohms -> From schematic, R1
|
||||
#define OP_AMP_Rin_TS100 2370 // 2.37 Kilo-ohms -> From schematic, R2
|
||||
|
||||
#define OP_AMP_GAIN_STAGE_TS100 (1 + (OP_AMP_Rf_TS100 / OP_AMP_Rin_TS100))
|
||||
#define OP_AMP_GAIN_STAGE_TS100 (1 + (OP_AMP_Rf_TS100 / OP_AMP_Rin_TS100))
|
||||
|
||||
#define OP_AMP_Rf_TS80 180 * 1000 // 180 Kilo-ohms -> From schematic, R6
|
||||
#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
||||
#define OP_AMP_Rf_TS80 180 * 1000 // 180 Kilo-ohms -> From schematic, R6
|
||||
#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
||||
|
||||
#define OP_AMP_GAIN_STAGE_TS80 (1 + (OP_AMP_Rf_TS80 / OP_AMP_Rin_TS80))
|
||||
#define OP_AMP_GAIN_STAGE_TS80 (1 + (OP_AMP_Rf_TS80 / OP_AMP_Rin_TS80))
|
||||
|
||||
// Deriving the Voltage div:
|
||||
// Vin_max = (3.3*(r1+r2))/(r2)
|
||||
// vdiv = (32768*4)/(vin_max*10)
|
||||
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
||||
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
||||
|
||||
#if defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) > 1
|
||||
#error "Multiple models defined!"
|
||||
#elif defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) == 0
|
||||
#error "No model defined!"
|
||||
#endif
|
||||
// Deriving the Voltage div:
|
||||
// Vin_max = (3.3*(r1+r2))/(r2)
|
||||
// vdiv = (32768*4)/(vin_max*10)
|
||||
|
||||
// Miniware is swapping IMU's around a bit now, so we turn them all on
|
||||
#if defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) > 1
|
||||
#error "Multiple models defined!"
|
||||
#elif defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) == 0
|
||||
#error "No model defined!"
|
||||
#endif
|
||||
#define NEEDS_VBUS_PROBE 0
|
||||
// Miniware is swapping IMU's around a bit now, so we turn them all on
|
||||
|
||||
#define ACCEL_MMA
|
||||
#define ACCEL_LIS
|
||||
#define ACCEL_SC7
|
||||
#define ACCEL_MSA
|
||||
#define ACCEL_BMA
|
||||
#define ACCEL_MMA
|
||||
#define ACCEL_LIS
|
||||
#define ACCEL_SC7
|
||||
#define ACCEL_MSA
|
||||
#define ACCEL_BMA
|
||||
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 70
|
||||
#define POWER_LIMIT_STEPS 5
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
||||
#define TEMP_uV_LOOKUP_HAKKO
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#ifdef MODEL_TS100
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 70
|
||||
#define POWER_LIMIT_STEPS 5
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
||||
#define TEMP_uV_LOOKUP_HAKKO
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 750
|
||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
||||
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips
|
||||
#define HARDWARE_MAX_WATTAGE_X10 750
|
||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
||||
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips
|
||||
|
||||
#define POW_DC
|
||||
#define POW_PD 0
|
||||
#define TEMP_TMP36
|
||||
#endif
|
||||
#define POW_DC
|
||||
#define POW_PD 0
|
||||
#define TEMP_TMP36
|
||||
#endif
|
||||
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||
#define MAX_POWER_LIMIT 40
|
||||
#define POWER_LIMIT_STEPS 2
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
||||
#define TEMP_uV_LOOKUP_TS80
|
||||
#define USB_PD_VMAX 12 // Maximum voltage for PD to negotiate
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||
#define MAX_POWER_LIMIT 40
|
||||
#define POWER_LIMIT_STEPS 2
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
||||
#define TEMP_uV_LOOKUP_TS80
|
||||
#define USB_PD_VMAX 12 // Maximum voltage for PD to negotiate
|
||||
|
||||
#define TIP_THERMAL_MASS 40
|
||||
#define TIP_RESISTANCE 45 // x10 ohms, 4.5 typical for ts80 tips
|
||||
#define TIP_THERMAL_MASS 40
|
||||
#define TIP_RESISTANCE 45 // x10 ohms, 4.5 typical for ts80 tips
|
||||
|
||||
#define LIS_ORI_FLIP
|
||||
#define OLED_FLIP
|
||||
#endif
|
||||
#define LIS_ORI_FLIP
|
||||
#define OLED_FLIP
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS80
|
||||
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||
#ifdef MODEL_TS80
|
||||
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 180
|
||||
#define HARDWARE_MAX_WATTAGE_X10 180
|
||||
|
||||
#define POW_QC
|
||||
#define POW_PD 0
|
||||
#define TEMP_TMP36
|
||||
#endif
|
||||
#define POW_QC
|
||||
#define POW_PD 0
|
||||
#define TEMP_TMP36
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS80P
|
||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||
#ifdef MODEL_TS80P
|
||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 300
|
||||
#define HARDWARE_MAX_WATTAGE_X10 300
|
||||
|
||||
#define POW_PD 1
|
||||
#define POW_QC 1
|
||||
#define TEMP_NTC
|
||||
#define I2C_SOFT
|
||||
#define SC7_ORI_FLIP
|
||||
#endif
|
||||
#define POW_PD 1
|
||||
#define POW_QC 1
|
||||
#define TEMP_NTC
|
||||
#define I2C_SOFT
|
||||
#define SC7_ORI_FLIP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
||||
|
@@ -91,7 +91,11 @@ bool isTipDisconnected() {
|
||||
|
||||
void setStatusLED(const enum StatusLED state) {}
|
||||
|
||||
uint8_t preStartChecks() { return 0; }
|
||||
uint8_t preStartChecks() { return 1; }
|
||||
uint64_t getDeviceID() { return dbg_id_get(); }
|
||||
|
||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
@@ -9,7 +9,7 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#ifdef TEMP_uV_LOOKUP_HAKKO
|
||||
const uint16_t uVtoDegC[] = {
|
||||
const int32_t uVtoDegC[] = {
|
||||
//
|
||||
// uv -> temp in C
|
||||
0, 0, //
|
@@ -151,8 +151,8 @@ static uint32_t usbh_int_pipe(usb_core_driver *pudev) {
|
||||
\retval operation status
|
||||
*/
|
||||
static uint32_t usbh_int_txfifoempty(usb_core_driver *pudev, usb_pipe_mode pp_mode) {
|
||||
uint8_t pp_num = 0U;
|
||||
uint16_t word_count = 0U, len = 0U;
|
||||
uint8_t pp_num = 0U;
|
||||
uint16_t word_count = 0U, len = 0U;
|
||||
__IO uint32_t *txfiforeg = 0U, txfifostate = 0U;
|
||||
|
||||
if (PIPE_NON_PERIOD == pp_mode) {
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user