Compare commits
1 Commits
discip-pat
...
v2.21
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d96470e45 |
2
.github/workflows/push.yml
vendored
2
.github/workflows/push.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
|||||||
image: alpine:3.16
|
image: alpine:3.16
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2", "S60", "TS101"]
|
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2"]
|
||||||
fail-fast: true
|
fail-fast: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ This OLED screen features burn-in protection; if no buttons or movement have bee
|
|||||||
|
|
||||||
Additionally to the two icons shown, there are two "hidden" actions that can be performed on this menu.
|
Additionally to the two icons shown, there are two "hidden" actions that can be performed on this menu.
|
||||||
|
|
||||||
On devices that do not support profile mode, if you press and hold the button near the tip (`+/A`), this enters the temperature adjustment screen. Normally this is not required; but if you would like to adjust the set temperature _before_ the tip starts to heat, this can be useful.
|
If you press and hold the button near the tip (`+/A`), this enters the temperature adjustment screen. Normally this is not required; but if you would like to adjust the set temperature _before_ the tip starts to heat, this can be useful.
|
||||||
|
|
||||||
If you press and hold the button near the rear of the iron (`-/B`), it will take you into the [debug menu](https://ralim.github.io/IronOS/DebugMenu/).
|
If you press and hold the button near the rear of the iron (`-/B`), it will take you into the [debug menu](https://ralim.github.io/IronOS/DebugMenu/).
|
||||||
|
|
||||||
@@ -74,23 +74,6 @@ Pinecil has an unpopulated footprint (U14) for a hall effect sensor (Si7210-B-00
|
|||||||
|
|
||||||
If, after entering sleep mode, the iron still does not see movement for a much longer time (default=10 minutes); it will shut down and return to the home screen.
|
If, after entering sleep mode, the iron still does not see movement for a much longer time (default=10 minutes); it will shut down and return to the home screen.
|
||||||
|
|
||||||
## Profile Mode (MHP30 only)
|
|
||||||
|
|
||||||
On devices that support it, a long press on `(+/A)` takes you into profile mode, which initiates the profile selected in the relevant settings.
|
|
||||||
|
|
||||||
Profile mode plays out as follows:
|
|
||||||
|
|
||||||
1. Check if the temperature is below 55C. If not, you will get a warning and cannot enter profile mode.
|
|
||||||
2. Preheat by raising the target temperature to the configured preheat temperature with the configured preheat speed.
|
|
||||||
3. Wait for the device to reach the preheat temperature.
|
|
||||||
4. Gradually move the target temperature to the configured end temperature of the first phase over the configured duration.
|
|
||||||
5. Wait for the device to reach the end temperature.
|
|
||||||
6. Repeat steps 4 and 5 for the next phases until there are no more phases configured.
|
|
||||||
7. Cool down by lowering the target temperature to 0 with the configured cooldown speed.
|
|
||||||
8. Once the temperature is below 55C, sound the buzzer (if available) and exit profile mode.
|
|
||||||
|
|
||||||
You can manually exit profile mode manually in the same way as the soldering mode, by pressing and holding the rear button or pressing both buttons at once.
|
|
||||||
|
|
||||||
## Settings Menu
|
## Settings Menu
|
||||||
|
|
||||||
The settings menu is the most evolving aspect of the firmware, so each option is not documented here. However, do not panic, as every menu option has an on-screen description so you don't _need_ to come back here to figure them all out.
|
The settings menu is the most evolving aspect of the firmware, so each option is not documented here. However, do not panic, as every menu option has an on-screen description so you don't _need_ to come back here to figure them all out.
|
||||||
|
|||||||
@@ -9,12 +9,6 @@ In this mode the iron works as you would expect, pressing either button will tak
|
|||||||
- Pressing both buttons or holding the rear button (`-/B`) will exit Soldering Mode.
|
- Pressing both buttons or holding the rear button (`-/B`) will exit Soldering Mode.
|
||||||
- Holding the front button (`+/A`) will enter [Boost mode](https://ralim.github.io/IronOS/Menu/#boost-mode) (if enabled).
|
- Holding the front button (`+/A`) will enter [Boost mode](https://ralim.github.io/IronOS/Menu/#boost-mode) (if enabled).
|
||||||
|
|
||||||
## Profile mode (MHP30 only)
|
|
||||||
|
|
||||||
In this mode, accessible by long pressing `(+/A)`, the configured profile will be initiated.
|
|
||||||
- You cannot adjust the temperature or enter boost mode.
|
|
||||||
- Pressing both buttons or holding the rear button (`-/B`) will exit Profile Mode as well.
|
|
||||||
|
|
||||||
## Settings mode
|
## Settings mode
|
||||||
|
|
||||||
This mode allows you to cycle through all the options and set custom values.
|
This mode allows you to cycle through all the options and set custom values.
|
||||||
|
|||||||
@@ -66,29 +66,6 @@ def read_translation(json_root: Union[str, Path], lang_code: str) -> dict:
|
|||||||
return lang
|
return lang
|
||||||
|
|
||||||
|
|
||||||
def filter_translation(lang: dict, defs: dict, macros: frozenset):
|
|
||||||
def check_excluded(record):
|
|
||||||
if "include" in record and not any(m in macros for m in record["include"]):
|
|
||||||
return True
|
|
||||||
|
|
||||||
if "exclude" in record and any(m in macros for m in record["exclude"]):
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
for category in ("menuOptions", "menuGroups"):
|
|
||||||
for index, record in enumerate(defs[category]):
|
|
||||||
if check_excluded(record):
|
|
||||||
lang[category][record["id"]]["displayText"] = ""
|
|
||||||
lang[category][record["id"]]["description"] = ""
|
|
||||||
|
|
||||||
for index, record in enumerate(defs["messagesWarn"]):
|
|
||||||
if check_excluded(record):
|
|
||||||
lang["messagesWarn"][record["id"]]["message"] = ""
|
|
||||||
|
|
||||||
return lang
|
|
||||||
|
|
||||||
|
|
||||||
def validate_langcode_matches_content(filename: str, content: dict) -> None:
|
def validate_langcode_matches_content(filename: str, content: dict) -> None:
|
||||||
# Extract lang code from file name
|
# Extract lang code from file name
|
||||||
lang_code = filename[12:-5].upper()
|
lang_code = filename[12:-5].upper()
|
||||||
@@ -124,8 +101,6 @@ def get_constants() -> List[Tuple[str, str]]:
|
|||||||
("SmallSymbolSpace", " "),
|
("SmallSymbolSpace", " "),
|
||||||
("LargeSymbolDot", "."),
|
("LargeSymbolDot", "."),
|
||||||
("SmallSymbolDot", "."),
|
("SmallSymbolDot", "."),
|
||||||
("SmallSymbolSlash", "/"),
|
|
||||||
("SmallSymbolColon", ":"),
|
|
||||||
("LargeSymbolDegC", "C"),
|
("LargeSymbolDegC", "C"),
|
||||||
("SmallSymbolDegC", "C"),
|
("SmallSymbolDegC", "C"),
|
||||||
("LargeSymbolDegF", "F"),
|
("LargeSymbolDegF", "F"),
|
||||||
@@ -180,8 +155,6 @@ def get_accel_names_list() -> List[str]:
|
|||||||
"BMA223",
|
"BMA223",
|
||||||
"MSA301",
|
"MSA301",
|
||||||
"SC7A20",
|
"SC7A20",
|
||||||
"GPIO",
|
|
||||||
"LIS2 CLONE",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -189,8 +162,8 @@ def get_power_source_list() -> List[str]:
|
|||||||
return [
|
return [
|
||||||
"DC",
|
"DC",
|
||||||
"QC",
|
"QC",
|
||||||
"PV:PDwVBus",
|
"PD W. VBus",
|
||||||
"PD:No VBus",
|
"PD No VBus",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -277,6 +250,7 @@ def get_letter_counts(defs: dict, lang: dict, build_version: str) -> Dict:
|
|||||||
# collapse all strings down into the composite letters and store totals for these
|
# collapse all strings down into the composite letters and store totals for these
|
||||||
# Doing this seperately for small and big font
|
# Doing this seperately for small and big font
|
||||||
def sort_and_count(list_in: List[str]):
|
def sort_and_count(list_in: List[str]):
|
||||||
|
|
||||||
symbol_counts: dict[str, int] = {}
|
symbol_counts: dict[str, int] = {}
|
||||||
for line in list_in:
|
for line in list_in:
|
||||||
line = line.replace("\n", "").replace("\r", "")
|
line = line.replace("\n", "").replace("\r", "")
|
||||||
@@ -465,6 +439,7 @@ class FontMapsPerFont:
|
|||||||
def get_font_map_per_font(
|
def get_font_map_per_font(
|
||||||
text_list_small_font: List[str], text_list_large_font: List[str]
|
text_list_small_font: List[str], text_list_large_font: List[str]
|
||||||
) -> FontMapsPerFont:
|
) -> FontMapsPerFont:
|
||||||
|
|
||||||
pending_small_symbols = set(text_list_small_font)
|
pending_small_symbols = set(text_list_small_font)
|
||||||
pending_large_symbols = set(text_list_large_font)
|
pending_large_symbols = set(text_list_large_font)
|
||||||
|
|
||||||
@@ -1054,6 +1029,7 @@ def get_translation_strings_and_indices_text(
|
|||||||
large_font_symbol_conversion_table: Dict[str, bytes],
|
large_font_symbol_conversion_table: Dict[str, bytes],
|
||||||
suffix: str = "",
|
suffix: str = "",
|
||||||
) -> str:
|
) -> str:
|
||||||
|
|
||||||
# For all strings; we want to convert them to their byte encoded form (using font index lookups)
|
# For all strings; we want to convert them to their byte encoded form (using font index lookups)
|
||||||
# Then we want to sort by their reversed format to see if we can remove any duplicates by combining the tails (last n bytes;n>0)
|
# Then we want to sort by their reversed format to see if we can remove any duplicates by combining the tails (last n bytes;n>0)
|
||||||
# Finally we look for any that are contained inside one another, and if they are we update them to point to this
|
# Finally we look for any that are contained inside one another, and if they are we update them to point to this
|
||||||
@@ -1142,6 +1118,7 @@ def get_translation_strings_and_indices_text(
|
|||||||
translation_strings_text = " /* .strings = */ {\n"
|
translation_strings_text = " /* .strings = */ {\n"
|
||||||
|
|
||||||
for i, encoded_bytes in enumerate(byte_encoded_strings):
|
for i, encoded_bytes in enumerate(byte_encoded_strings):
|
||||||
|
|
||||||
if i > 0:
|
if i > 0:
|
||||||
translation_strings_text += ' "\\0"\n'
|
translation_strings_text += ' "\\0"\n'
|
||||||
|
|
||||||
@@ -1308,13 +1285,6 @@ def parse_args() -> argparse.Namespace:
|
|||||||
required=False,
|
required=False,
|
||||||
dest="compress_font",
|
dest="compress_font",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
|
||||||
"--macros",
|
|
||||||
help="Extracted macros to filter translation strings by",
|
|
||||||
type=argparse.FileType("r"),
|
|
||||||
required=True,
|
|
||||||
dest="macros",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--output", "-o", help="Target file", type=argparse.FileType("w"), required=True
|
"--output", "-o", help="Target file", type=argparse.FileType("w"), required=True
|
||||||
)
|
)
|
||||||
@@ -1335,12 +1305,6 @@ def main() -> None:
|
|||||||
logging.error("error: Both --output-pickled and --input-pickled are specified")
|
logging.error("error: Both --output-pickled and --input-pickled are specified")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
macros = (
|
|
||||||
frozenset(re.findall(r"#define ([^ ]+)", args.macros.read()))
|
|
||||||
if args.macros
|
|
||||||
else frozenset()
|
|
||||||
)
|
|
||||||
|
|
||||||
language_data: LanguageData
|
language_data: LanguageData
|
||||||
if args.input_pickled:
|
if args.input_pickled:
|
||||||
logging.info(f"Reading pickled language data from {args.input_pickled.name}...")
|
logging.info(f"Reading pickled language data from {args.input_pickled.name}...")
|
||||||
@@ -1365,13 +1329,11 @@ def main() -> None:
|
|||||||
|
|
||||||
defs_ = load_json(os.path.join(json_dir, "translations_definitions.json"))
|
defs_ = load_json(os.path.join(json_dir, "translations_definitions.json"))
|
||||||
if len(args.languageCodes) == 1:
|
if len(args.languageCodes) == 1:
|
||||||
lang_ = filter_translation(
|
lang_ = read_translation(json_dir, args.languageCodes[0])
|
||||||
read_translation(json_dir, args.languageCodes[0]), defs_, macros
|
|
||||||
)
|
|
||||||
language_data = prepare_language(lang_, defs_, build_version)
|
language_data = prepare_language(lang_, defs_, build_version)
|
||||||
else:
|
else:
|
||||||
langs_ = [
|
langs_ = [
|
||||||
filter_translation(read_translation(json_dir, lang_code), defs_, macros)
|
read_translation(json_dir, lang_code)
|
||||||
for lang_code in args.languageCodes
|
for lang_code in args.languageCodes
|
||||||
]
|
]
|
||||||
language_data = prepare_languages(langs_, defs_, build_version)
|
language_data = prepare_languages(langs_, defs_, build_version)
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Выкл."
|
"message": "Выкл."
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Ваша прылада, хутчэй за ўсё, падробка!"
|
"message": "Ваша прылада, хутчэй за ўсё, падробка!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Дазволіць\nблок. кнопак",
|
"displayText": "Дазволіць\nблок. кнопак",
|
||||||
"description": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
|
"description": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Адчувальнасць\nакселерометра",
|
"displayText": "Адчувальнасць\nакселерометра",
|
||||||
"description": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
|
"description": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Изкл."
|
"message": "Изкл."
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Allow locking\nbuttons",
|
"displayText": "Allow locking\nbuttons",
|
||||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Усещане\nза движение",
|
"displayText": "Усещане\nза движение",
|
||||||
"description": "Усещане за движение (0=Изключено | 1=Слабо | ... | 9=Силно)"
|
"description": "Усещане за движение (0=Изключено | 1=Слабо | ... | 9=Силно)"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"tempUnitFahrenheit": false,
|
"tempUnitFahrenheit": false,
|
||||||
"messagesWarn": {
|
"messagesWarn": {
|
||||||
"CJCCalibrationDone": {
|
"CJCCalibrationDone": {
|
||||||
"message": "Kalibrace\ndokončena!"
|
"message": "Calibration\ndone!"
|
||||||
},
|
},
|
||||||
"ResetOKMessage": {
|
"ResetOKMessage": {
|
||||||
"message": "Reset OK"
|
"message": "Reset OK"
|
||||||
@@ -31,10 +31,10 @@
|
|||||||
"message": "Teplotní\nOchrana"
|
"message": "Teplotní\nOchrana"
|
||||||
},
|
},
|
||||||
"SettingsCalibrationWarning": {
|
"SettingsCalibrationWarning": {
|
||||||
"message": "Před restartem se ujistěte, že hrot a držák mají pokojovou teplotu!"
|
"message": "Before rebooting, make sure tip & handle are at room temperature!"
|
||||||
},
|
},
|
||||||
"CJCCalibrating": {
|
"CJCCalibrating": {
|
||||||
"message": "kalibrování\n"
|
"message": "calibrating\n"
|
||||||
},
|
},
|
||||||
"SettingsResetWarning": {
|
"SettingsResetWarning": {
|
||||||
"message": "Opravdu chcete resetovat zařízení do továrního nastavení?"
|
"message": "Opravdu chcete resetovat zařízení do továrního nastavení?"
|
||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Vyp"
|
"message": "Vyp"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Vaše zařízení je s nejvyšší pravděpodobností padělek!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -130,7 +121,7 @@
|
|||||||
},
|
},
|
||||||
"PDVpdo": {
|
"PDVpdo": {
|
||||||
"displayText": "PD\nVPDO",
|
"displayText": "PD\nVPDO",
|
||||||
"description": "Povoluje režimy PPS & EPR"
|
"description": "Enables PPS & EPR modes"
|
||||||
},
|
},
|
||||||
"BoostTemperature": {
|
"BoostTemperature": {
|
||||||
"displayText": "Teplota\nboostu",
|
"displayText": "Teplota\nboostu",
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Povolit zamč.\ntlačítek",
|
"displayText": "Povolit zamč.\ntlačítek",
|
||||||
"description": "Při pájení podržte obě tlačítka pro jejich zamčení (Z=zakázáno | B=pouze v režimu boost | U=úplné zamčení)"
|
"description": "Při pájení podržte obě tlačítka pro jejich zamčení (Z=zakázáno | B=pouze v režimu boost | U=úplné zamčení)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Citlivost\nna pohyb",
|
"displayText": "Citlivost\nna pohyb",
|
||||||
"description": "0=vyp | 1=nejméně citlivé | ... | 9=nejvíce citlivé"
|
"description": "0=vyp | 1=nejméně citlivé | ... | 9=nejvíce citlivé"
|
||||||
@@ -278,15 +213,15 @@
|
|||||||
},
|
},
|
||||||
"BluetoothLE": {
|
"BluetoothLE": {
|
||||||
"displayText": "Bluetooth\n",
|
"displayText": "Bluetooth\n",
|
||||||
"description": "Povoluje BLE"
|
"description": "Enables BLE"
|
||||||
},
|
},
|
||||||
"PowerLimit": {
|
"PowerLimit": {
|
||||||
"displayText": "Omezení\nVýkonu",
|
"displayText": "Omezení\nVýkonu",
|
||||||
"description": "Maximální příkon páječky (W=watt)"
|
"description": "Maximální příkon páječky (W=watt)"
|
||||||
},
|
},
|
||||||
"CalibrateCJC": {
|
"CalibrateCJC": {
|
||||||
"displayText": "Kalibrovat CJC\npři příštím startu",
|
"displayText": "Calibrate CJC\nat next boot",
|
||||||
"description": "Při příštím startu bude kalibrována kompenzace studeného spoje (není třeba pokud Delta T je < 5°C)"
|
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
|
||||||
},
|
},
|
||||||
"VoltageCalibration": {
|
"VoltageCalibration": {
|
||||||
"displayText": "Kalibrovat\nvstupní napětí?",
|
"displayText": "Kalibrovat\nvstupní napětí?",
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Din enhed er højst sandsyneligt en Kopivare!"
|
"message": "Din enhed er højst sandsyneligt en Kopivare!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Tillad låsning\naf knapperne",
|
"displayText": "Tillad låsning\naf knapperne",
|
||||||
"description": "Hold begge knapper nede under lodning for at låse dem (D=deaktiver | B=kun boost-tilstand | F=fuld låsning)"
|
"description": "Hold begge knapper nede under lodning for at låse dem (D=deaktiver | B=kun boost-tilstand | F=fuld låsning)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Bevægelses\nfølsomhed",
|
"displayText": "Bevægelses\nfølsomhed",
|
||||||
"description": "Bevægelsesfølsomhed (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
|
"description": "Bevægelsesfølsomhed (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Aus"
|
"message": "Aus"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Vorwärmen\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Abkühlen\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Höchstwahrscheinlich ist das Gerät eine Fälschung!"
|
"message": "Höchstwahrscheinlich ist das Gerät eine Fälschung!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Zu heiß für\nProfilstart!"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Tasten-\nsperre",
|
"displayText": "Tasten-\nsperre",
|
||||||
"description": "Langes drücken beider Tasten im Lötmodus sperrt diese (A=aus | B=nur Boost | V=vollständig)"
|
"description": "Langes drücken beider Tasten im Lötmodus sperrt diese (A=aus | B=nur Boost | V=vollständig)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhasen",
|
|
||||||
"description": "Anzahl an Phasen im Profilmodus"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Vorheiz-\ntemperatur",
|
|
||||||
"description": "Zu Beginn des Profilmodus auf diese Temperatur vorheizen"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Vorheiz-\nrate",
|
|
||||||
"description": "Mit dieser Geschwindigkeit vorheizen (Grad pro Sekunde)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemperatur",
|
|
||||||
"description": "Zieltemperatur zum Ende dieser Phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDauer",
|
|
||||||
"description": "Zieldauer dieser Phase (Sekunden)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemperatur",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDauer",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemperatur",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDauer",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemperatur",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDauer",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemperatur",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDauer",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Abkühl-\nrate",
|
|
||||||
"description": "Am Ende des Profilmodus mit dieser Geschwindigkeit abkühlen (Grad pro Sekunde)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Bewegungs-\nempfindlichk.",
|
"displayText": "Bewegungs-\nempfindlichk.",
|
||||||
"description": "0=aus | 1=minimal | ... | 9=maximal"
|
"description": "0=aus | 1=minimal | ... | 9=maximal"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Απ."
|
"message": "Απ."
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Η συσκευή σας ίσως να μην είναι αυθεντική!"
|
"message": "Η συσκευή σας ίσως να μην είναι αυθεντική!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Κλείδωμα\nπλήκτρων",
|
"displayText": "Κλείδωμα\nπλήκτρων",
|
||||||
"description": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
|
"description": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Ευαισθησία\nκίνησης",
|
"displayText": "Ευαισθησία\nκίνησης",
|
||||||
"description": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
|
"description": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Allow locking\nbuttons",
|
"displayText": "Allow locking\nbuttons",
|
||||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Motion\nsensitivity",
|
"displayText": "Motion\nsensitivity",
|
||||||
"description": "0=off | 1=least sensitive | ... | 9=most sensitive"
|
"description": "0=off | 1=least sensitive | ... | 9=most sensitive"
|
||||||
@@ -282,7 +217,7 @@
|
|||||||
},
|
},
|
||||||
"PowerLimit": {
|
"PowerLimit": {
|
||||||
"displayText": "Power\nlimit",
|
"displayText": "Power\nlimit",
|
||||||
"description": "Average maximum power the iron can use (W=watt)"
|
"description": "Maximum power the iron can use (W=watt)"
|
||||||
},
|
},
|
||||||
"CalibrateCJC": {
|
"CalibrateCJC": {
|
||||||
"displayText": "Calibrate CJC\nat next boot",
|
"displayText": "Calibrate CJC\nat next boot",
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
{
|
{
|
||||||
"languageCode": "ES",
|
"languageCode": "ES",
|
||||||
"languageLocalName": "Castellano",
|
"languageLocalName": "Castellano",
|
||||||
"tempUnitFahrenheit": false,
|
"tempUnitFahrenheit": true,
|
||||||
"messagesWarn": {
|
"messagesWarn": {
|
||||||
"CJCCalibrationDone": {
|
"CJCCalibrationDone": {
|
||||||
"message": "¡Calibracion\nlista!"
|
"message": "Calibration\ndone!"
|
||||||
},
|
},
|
||||||
"ResetOKMessage": {
|
"ResetOKMessage": {
|
||||||
"message": "Listo"
|
"message": "Hecho"
|
||||||
},
|
},
|
||||||
"SettingsResetMessage": {
|
"SettingsResetMessage": {
|
||||||
"message": "¡Ajustes\nReiniciados!"
|
"message": "Ajustes\n¡Reiniciados!"
|
||||||
},
|
},
|
||||||
"NoAccelerometerMessage": {
|
"NoAccelerometerMessage": {
|
||||||
"message": "¡Sin acelerómetro\nDetectado!"
|
"message": "Sin acelerómetro\n¡Detectado!"
|
||||||
},
|
},
|
||||||
"NoPowerDeliveryMessage": {
|
"NoPowerDeliveryMessage": {
|
||||||
"message": "¡Sin USB-PD IC\nDetectado!"
|
"message": "Sin USB-PD IC\n¡Detectado!"
|
||||||
},
|
},
|
||||||
"LockingKeysString": {
|
"LockingKeysString": {
|
||||||
"message": "BLOQUEADO"
|
"message": "BLOQUEADO"
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"message": "¡Antes de reiniciar, asegúrese de que la punta y el mango estén a temperatura ambiente!"
|
"message": "¡Antes de reiniciar, asegúrese de que la punta y el mango estén a temperatura ambiente!"
|
||||||
},
|
},
|
||||||
"CJCCalibrating": {
|
"CJCCalibrating": {
|
||||||
"message": "Calibrando\n"
|
"message": "calibrando\n"
|
||||||
},
|
},
|
||||||
"SettingsResetWarning": {
|
"SettingsResetWarning": {
|
||||||
"message": "¿Quieres restablecer los ajustes?"
|
"message": "¿Quieres restablecer los ajustes?"
|
||||||
@@ -58,19 +58,10 @@
|
|||||||
"message": "Punta: \n"
|
"message": "Punta: \n"
|
||||||
},
|
},
|
||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Apagado"
|
"message": "No"
|
||||||
},
|
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Precalentado\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Enfriado\n"
|
|
||||||
},
|
},
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "¡Es probable es que su dispositivo sea falso!"
|
"message": "¡Lo más probable es que su dispositivo sea una falsificación!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Muy caliente para \nempezar perfil"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -118,28 +109,27 @@
|
|||||||
},
|
},
|
||||||
"MinVolCell": {
|
"MinVolCell": {
|
||||||
"displayText": "Mínimo\nvoltaje",
|
"displayText": "Mínimo\nvoltaje",
|
||||||
"description": "Voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
|
"description": "voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
|
||||||
},
|
},
|
||||||
"QCMaxVoltage": {
|
"QCMaxVoltage": {
|
||||||
"displayText": "Potencia de\nentrada",
|
"displayText": "Potencia de\nentrada",
|
||||||
"description": "Potencia en Watts del adaptador de corriente utilizado"
|
"description": "Potencia en vatios del adaptador de corriente utilizado"
|
||||||
},
|
},
|
||||||
"PDNegTimeout": {
|
"PDNegTimeout": {
|
||||||
"displayText": "PD\ntiempo de espera",
|
"displayText": "PD\ntiempo de espera",
|
||||||
"description": "Timeout de negociación de PD en pasos de 100ms para compatibilidad con algunos cargadores QC (0: apagado)"
|
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)"
|
||||||
|
|
||||||
},
|
},
|
||||||
"PDVpdo": {
|
"PDVpdo": {
|
||||||
"displayText": "PD\nVPDO",
|
"displayText": "PD\nVPDO",
|
||||||
"description": "Permite modos PPS & EPR"
|
"description": "Enables PPS & EPR modes"
|
||||||
},
|
},
|
||||||
"BoostTemperature": {
|
"BoostTemperature": {
|
||||||
"displayText": "Ajustar la\ntemp. extra",
|
"displayText": "Ajustar la\ntemp. extra",
|
||||||
"description": "Temperatura de la punta de \"modo boost\""
|
"description": "Temperatura de la punta utilizada en el \"modo de impulso\""
|
||||||
},
|
},
|
||||||
"AutoStart": {
|
"AutoStart": {
|
||||||
"displayText": "Calentar\nal enchufar",
|
"displayText": "Calentar\nal enchufar",
|
||||||
"description": "Calentado automático al iniciar (N=no | S=entrar en modo soldar | R=solo entrar en reposo | F=en reposo pero mantiene la punta fría)"
|
"description": "Se calienta él solo al arrancar (N=no | S=entrar en modo soldar | R=solo entrar en reposo | F=en reposo pero mantiene la punta fría)"
|
||||||
},
|
},
|
||||||
"TempChangeShortStep": {
|
"TempChangeShortStep": {
|
||||||
"displayText": "Cambio temp.\npuls. cortas",
|
"displayText": "Cambio temp.\npuls. cortas",
|
||||||
@@ -153,62 +143,6 @@
|
|||||||
"displayText": "Permitir botones\nbloqueo",
|
"displayText": "Permitir botones\nbloqueo",
|
||||||
"description": "Mientras suelda, mantenga pulsados ambos botones para alternar su bloqueo (D=desactivar | B=sólo modo boost | F=bloqueo total)"
|
"description": "Mientras suelda, mantenga pulsados ambos botones para alternar su bloqueo (D=desactivar | B=sólo modo boost | F=bloqueo total)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Fases de\nPerfil",
|
|
||||||
"description": "Numero de fases en modo perfil"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Temp de \n precalentado",
|
|
||||||
"description": "Precalentar a esta temperatura al inicio del modo perfil"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Velocidad de \nPrecalentado",
|
|
||||||
"description": "Precalentar a esta velocidad (grados por segundo)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Fase 1\nTemp",
|
|
||||||
"description": "Temperatura objetivo al final de esta fase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Fase 1\nDuración",
|
|
||||||
"description": "Duración objetivo de esta fase (segundos)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Fase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Fase 2\nDuración",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Fase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Fase 3\nDuración",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Fase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Fase 4\nDuración",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Fase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Fase 5\nDuración",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Velocidad de\nEnfriamineto",
|
|
||||||
"description": "Enfriar a esta velocidad al final del modo perfil (grados por segundo)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Detección de\nmovimiento",
|
"displayText": "Detección de\nmovimiento",
|
||||||
"description": "Tiempo de reacción al agarrar (0=no | 1=menos sensible | ... | 9=más sensible)"
|
"description": "Tiempo de reacción al agarrar (0=no | 1=menos sensible | ... | 9=más sensible)"
|
||||||
@@ -231,7 +165,7 @@
|
|||||||
},
|
},
|
||||||
"TemperatureUnit": {
|
"TemperatureUnit": {
|
||||||
"displayText": "Unidad de\ntemperatura",
|
"displayText": "Unidad de\ntemperatura",
|
||||||
"description": "Unidad de temperatura (C=entígrados | F=Fahrenheit)"
|
"description": "Unidad de temperatura (C=centígrados | F=Fahrenheit)"
|
||||||
},
|
},
|
||||||
"DisplayRotation": {
|
"DisplayRotation": {
|
||||||
"displayText": "Orientación\nde pantalla",
|
"displayText": "Orientación\nde pantalla",
|
||||||
@@ -239,7 +173,7 @@
|
|||||||
},
|
},
|
||||||
"CooldownBlink": {
|
"CooldownBlink": {
|
||||||
"displayText": "Parpadear\nal enfriar",
|
"displayText": "Parpadear\nal enfriar",
|
||||||
"description": "Parpadear texto en inactivo cuando la punta este caliente"
|
"description": "Lectura de la temperatura al ralentí mientras la punta está caliente"
|
||||||
},
|
},
|
||||||
"ScrollingSpeed": {
|
"ScrollingSpeed": {
|
||||||
"displayText": "Velocidad\ndel texto",
|
"displayText": "Velocidad\ndel texto",
|
||||||
@@ -247,15 +181,15 @@
|
|||||||
},
|
},
|
||||||
"ReverseButtonTempChange": {
|
"ReverseButtonTempChange": {
|
||||||
"displayText": "Invertir\nbotones +/-",
|
"displayText": "Invertir\nbotones +/-",
|
||||||
"description": "Invertir botones de ajuste de temperatura"
|
"description": "Intercambio inversa de los botones para ajustar la temperatura"
|
||||||
},
|
},
|
||||||
"AnimSpeed": {
|
"AnimSpeed": {
|
||||||
"displayText": "Anim.\nvelocidad",
|
"displayText": "Anim.\nvelocidad",
|
||||||
"description": "Velocidad de animaciones de iconos en el menú (O=apagado | L=baja | M=media | R=alta)"
|
"description": "Velocidad de las animaciones de los iconos en el menú (O=off | L=low | M=medium | R=high)"
|
||||||
},
|
},
|
||||||
"AnimLoop": {
|
"AnimLoop": {
|
||||||
"displayText": "Anim.\nbucle",
|
"displayText": "Anim.\nbucle",
|
||||||
"description": "Bucle de animaciones del menú principal"
|
"description": "Animaciones de iconos en bucle en el menú raíz"
|
||||||
},
|
},
|
||||||
"Brightness": {
|
"Brightness": {
|
||||||
"displayText": "Pantalla\nbrillo",
|
"displayText": "Pantalla\nbrillo",
|
||||||
@@ -266,28 +200,28 @@
|
|||||||
"description": "Invertir la pantalla OLED"
|
"description": "Invertir la pantalla OLED"
|
||||||
},
|
},
|
||||||
"LOGOTime": {
|
"LOGOTime": {
|
||||||
"displayText": "Logo inicial\nduración",
|
"displayText": "logo inicial\nduración",
|
||||||
"description": "Duración de la animación del logo inicial (s=segundos)"
|
"description": "Duración de la animación del logo inicial (s=segundos)"
|
||||||
},
|
},
|
||||||
"AdvancedIdle": {
|
"AdvancedIdle": {
|
||||||
"displayText": "Info extra en\nmodo reposo",
|
"displayText": "Info extra en\nmodo reposo",
|
||||||
"description": "Mostrar información detallada en tamaño pequeño en la pantalla de reposo"
|
"description": "Mostrar información detallada en una fuente más pequeña en la pantalla inactiva"
|
||||||
},
|
},
|
||||||
"AdvancedSoldering": {
|
"AdvancedSoldering": {
|
||||||
"displayText": "Info extra\nal soldar",
|
"displayText": "Info extra\nal soldar",
|
||||||
"description": "Mostrar información detallada en tamaño pequeño en la pantalla de soldadura"
|
"description": "Mostrar información detallada en una fuente más pequeña en la pantalla de soldadura"
|
||||||
},
|
},
|
||||||
"BluetoothLE": {
|
"BluetoothLE": {
|
||||||
"displayText": "Bluetooth\n",
|
"displayText": "Bluetooth\n",
|
||||||
"description": "Habilitar BLE"
|
"description": "Habilita BLE"
|
||||||
},
|
},
|
||||||
"PowerLimit": {
|
"PowerLimit": {
|
||||||
"displayText": "Potencia\nlímite",
|
"displayText": "Potencia\nlímite",
|
||||||
"description": "Elige el límite de potencia máxima del soldador (en Watts)"
|
"description": "Elige el límite de potencia máxima del soldador (en vatios)"
|
||||||
},
|
},
|
||||||
"CalibrateCJC": {
|
"CalibrateCJC": {
|
||||||
"displayText": "Calibrar CJC\nen el próximo inicio",
|
"displayText": "Calibrar CJC\nen el próximo inicio",
|
||||||
"description": "Al siguinte inicio el Cold Junction Compensation sera calibrado (no requerido si el Delta T es < 5°C)"
|
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
|
||||||
},
|
},
|
||||||
"VoltageCalibration": {
|
"VoltageCalibration": {
|
||||||
"displayText": "Calibrar voltaje\nde entrada",
|
"displayText": "Calibrar voltaje\nde entrada",
|
||||||
@@ -295,15 +229,15 @@
|
|||||||
},
|
},
|
||||||
"PowerPulsePower": {
|
"PowerPulsePower": {
|
||||||
"displayText": "Pulsos bat.\nconstantes",
|
"displayText": "Pulsos bat.\nconstantes",
|
||||||
"description": "Intensidad de la potencia del pulso para mantener encendido (W=Watt)"
|
"description": "Intensidad de la potencia del pulso de mantenimiento del estado de vigilia (W=vatio)"
|
||||||
},
|
},
|
||||||
"PowerPulseWait": {
|
"PowerPulseWait": {
|
||||||
"displayText": "Tiempor entre\n pulso de energia",
|
"displayText": "Impulso de potencia\ntiempo de espera",
|
||||||
"description": "Tiempo de espera del pulso para mantener encendido (x 2,5s)"
|
"description": "Tiempo de espera antes de disparar cada pulso de mantenimiento de la vigilia (x 2,5s)"
|
||||||
},
|
},
|
||||||
"PowerPulseDuration": {
|
"PowerPulseDuration": {
|
||||||
"displayText": "Duración de\n pulso de energia",
|
"displayText": "Impulso de potencia\nduración",
|
||||||
"description": "Duración del pulso para mantener encendido (x 250ms)"
|
"description": "Duración del impulso de mantenimiento de la vigilia (x 250ms)"
|
||||||
},
|
},
|
||||||
"SettingsReset": {
|
"SettingsReset": {
|
||||||
"displayText": "Volver a ajustes\nde fábrica",
|
"displayText": "Volver a ajustes\nde fábrica",
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Salli nappien\nlukitus",
|
"displayText": "Salli nappien\nlukitus",
|
||||||
"description": "Kolvatessa paina molempia näppäimiä lukitaksesi ne (P=pois | V=vain tehostus | K=kaikki)"
|
"description": "Kolvatessa paina molempia näppäimiä lukitaksesi ne (P=pois | V=vain tehostus | K=kaikki)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Liikkeen\nherkkyys",
|
"displayText": "Liikkeen\nherkkyys",
|
||||||
"description": "0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys"
|
"description": "0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Votre appareil semble être une contrefaçon !"
|
"message": "Votre appareil semble être une contrefaçon !"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Verrouiller\nles boutons",
|
"displayText": "Verrouiller\nles boutons",
|
||||||
"description": "Pendant la soudure, appuyer sur les deux boutons pour les verrouiller (D=désactivé | B=boost seulement | V=verr. total)"
|
"description": "Pendant la soudure, appuyer sur les deux boutons pour les verrouiller (D=désactivé | B=boost seulement | V=verr. total)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Sensibilité\nau mouvement",
|
"displayText": "Sensibilité\nau mouvement",
|
||||||
"description": "0=désactivé | 1=peu sensible | ... | 9=très sensible"
|
"description": "0=désactivé | 1=peu sensible | ... | 9=très sensible"
|
||||||
@@ -265,7 +200,7 @@
|
|||||||
"description": "Inverser les couleurs de l'écran OLED"
|
"description": "Inverser les couleurs de l'écran OLED"
|
||||||
},
|
},
|
||||||
"LOGOTime": {
|
"LOGOTime": {
|
||||||
"displayText": "Durée logo\ndémarrage",
|
"displayText": "Durée logo\nau démarrage",
|
||||||
"description": "Définit la durée d'affichage du logo au démarrage (s=secondes)"
|
"description": "Définit la durée d'affichage du logo au démarrage (s=secondes)"
|
||||||
},
|
},
|
||||||
"AdvancedIdle": {
|
"AdvancedIdle": {
|
||||||
@@ -278,14 +213,14 @@
|
|||||||
},
|
},
|
||||||
"BluetoothLE": {
|
"BluetoothLE": {
|
||||||
"displayText": "Bluetooth\n",
|
"displayText": "Bluetooth\n",
|
||||||
"description": "Activer le bluetooth basse consommation"
|
"description": "Enables BLE"
|
||||||
},
|
},
|
||||||
"PowerLimit": {
|
"PowerLimit": {
|
||||||
"displayText": "Limite de\npuissance",
|
"displayText": "Limite de\npuissance",
|
||||||
"description": "Puissance maximale utilisable (W=watts)"
|
"description": "Puissance maximale utilisable (W=watts)"
|
||||||
},
|
},
|
||||||
"CalibrateCJC": {
|
"CalibrateCJC": {
|
||||||
"displayText": "Étalonner CJC\nau prochain démarrage",
|
"displayText": "Étalonner CJC\nau prochain démarage",
|
||||||
"description": "Au prochain démarrage, la compensation de soudure froide sera calibrée (non nécessaire si Delta T est < 5°C)."
|
"description": "Au prochain démarrage, la compensation de soudure froide sera calibrée (non nécessaire si Delta T est < 5°C)."
|
||||||
},
|
},
|
||||||
"VoltageCalibration": {
|
"VoltageCalibration": {
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Vaš uređaj je najvjerojatnije krivotvoren!"
|
"message": "Vaš uređaj je najvjerojatnije krivotvoren!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Zaključavanje\ntipki",
|
"displayText": "Zaključavanje\ntipki",
|
||||||
"description": "Tokom lemljenja, držite obje tipke kako biste ih zaključali ili otključali (O=otključano | B=zaključan boost | Z=zaključano sve)"
|
"description": "Tokom lemljenja, držite obje tipke kako biste ih zaključali ili otključali (O=otključano | B=zaključan boost | Z=zaključano sve)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Osjetljivost\npokreta",
|
"displayText": "Osjetljivost\npokreta",
|
||||||
"description": "Osjetljivost prepoznavanja pokreta. (0=ugašeno | 1=najmanje osjetljivo | ... | 9=najosjetljivije)"
|
"description": "Osjetljivost prepoznavanja pokreta. (0=ugašeno | 1=najmanje osjetljivo | ... | 9=najosjetljivije)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Ki"
|
"message": "Ki"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Az eszköz valószínűleg nem eredeti!"
|
"message": "Az eszköz valószínűleg nem eredeti!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Lezárás\nengedélyezés",
|
"displayText": "Lezárás\nengedélyezés",
|
||||||
"description": "Forrasztás közben mindkét gombot hosszan lenyomva lezárja a kezelést (K=ki | B=csak \"boost\" módban | T=teljes lezárás)"
|
"description": "Forrasztás közben mindkét gombot hosszan lenyomva lezárja a kezelést (K=ki | B=csak \"boost\" módban | T=teljes lezárás)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Mozgás\nérzékenység",
|
"displayText": "Mozgás\nérzékenység",
|
||||||
"description": "Mozgás érzékenység beállítása (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
|
"description": "Mozgás érzékenység beállítása (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "OFF"
|
"message": "OFF"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preriscaldamento\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Raffreddamento\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "È probabile che questo dispositivo sia contraffatto!"
|
"message": "È probabile che questo dispositivo sia contraffatto!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Troppo caldo\nper il profilo"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -134,7 +125,7 @@
|
|||||||
},
|
},
|
||||||
"BoostTemperature": {
|
"BoostTemperature": {
|
||||||
"displayText": "Temp\nTurbo",
|
"displayText": "Temp\nTurbo",
|
||||||
"description": "Imposta la temperatura della funzione turbo [°C/°F]"
|
"description": "Imposta la temperatura della funzione Turbo [°C/°F]"
|
||||||
},
|
},
|
||||||
"AutoStart": {
|
"AutoStart": {
|
||||||
"displayText": "Avvio\nautomatico",
|
"displayText": "Avvio\nautomatico",
|
||||||
@@ -150,75 +141,19 @@
|
|||||||
},
|
},
|
||||||
"LockingMode": {
|
"LockingMode": {
|
||||||
"displayText": "Blocco\ntasti",
|
"displayText": "Blocco\ntasti",
|
||||||
"description": "Blocca i tasti durante la modalità saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
|
"description": "Blocca i tasti durante la modalità Saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
|
||||||
},
|
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Fasi modalità\nprofilo",
|
|
||||||
"description": "Imposta il numero di fasi da attuare per un profilo di riscaldamento personalizzato"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Temperatura\npreriscaldamento",
|
|
||||||
"description": "Imposta la temperatura di preriscaldamento da raggiungere all'inizio del profilo di riscaldamento"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Velocità\npreriscaldamento",
|
|
||||||
"description": "Imposta la velocità di preriscaldamento [gradi al secondo]"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Temperatura\nfase 1",
|
|
||||||
"description": "Imposta la temperatura da raggiungere alla fine di questa fase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Durata\nfase 1",
|
|
||||||
"description": "Imposta la durata di questa fase [secondi]"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Temperatura\nfase 2",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Durata\nfase 2",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Temperatura\nfase 3",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Durata\nfase 3",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Temperatura\nfase 4",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Durata\nfase 4",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Temperatura\nfase 5",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Durata\nfase 5",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Velocità\nraffreddamento",
|
|
||||||
"description": "Imposta la velocità di raffreddamento al termine del profilo di riscaldamento [gradi al secondo]"
|
|
||||||
},
|
},
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Sensibilità\nal movimento",
|
"displayText": "Sensibilità\nal movimento",
|
||||||
"description": "Imposta la sensibilità al movimento per uscire dalla modalità riposo [0: nessuna; 1: minima; 9: massima]"
|
"description": "Imposta la sensibilità al movimento per uscire dalla modalità Riposo [0: nessuna; 1: minima; 9: massima]"
|
||||||
},
|
},
|
||||||
"SleepTemperature": {
|
"SleepTemperature": {
|
||||||
"displayText": "Temperatura\nriposo",
|
"displayText": "Temp\nriposo",
|
||||||
"description": "Imposta la temperatura da mantenere in modalità riposo [°C/°F]"
|
"description": "Imposta la temperatura da mantenere in modalità Riposo [°C/°F]"
|
||||||
},
|
},
|
||||||
"SleepTimeout": {
|
"SleepTimeout": {
|
||||||
"displayText": "Timer\nriposo",
|
"displayText": "Timer\nriposo",
|
||||||
"description": "Imposta il timer per entrare in modalità riposo [secondi/minuti]"
|
"description": "Imposta il timer per entrare in modalità Riposo [secondi/minuti]"
|
||||||
},
|
},
|
||||||
"ShutdownTimeout": {
|
"ShutdownTimeout": {
|
||||||
"displayText": "Timer\nspegnimento",
|
"displayText": "Timer\nspegnimento",
|
||||||
@@ -226,7 +161,7 @@
|
|||||||
},
|
},
|
||||||
"HallEffSensitivity": {
|
"HallEffSensitivity": {
|
||||||
"displayText": "Sensore\nHall",
|
"displayText": "Sensore\nHall",
|
||||||
"description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità riposo [0: nessuna; 1: minima; 9: massima]"
|
"description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità Riposo [0: nessuna; 1: minima; 9: massima]"
|
||||||
},
|
},
|
||||||
"TemperatureUnit": {
|
"TemperatureUnit": {
|
||||||
"displayText": "Unità di\ntemperatura",
|
"displayText": "Unità di\ntemperatura",
|
||||||
@@ -274,7 +209,7 @@
|
|||||||
},
|
},
|
||||||
"AdvancedSoldering": {
|
"AdvancedSoldering": {
|
||||||
"displayText": "Dettagli\nsaldatura",
|
"displayText": "Dettagli\nsaldatura",
|
||||||
"description": "Mostra informazioni dettagliate durante la modalità saldatura"
|
"description": "Mostra informazioni dettagliate durante la modalità Saldatura"
|
||||||
},
|
},
|
||||||
"BluetoothLE": {
|
"BluetoothLE": {
|
||||||
"displayText": "Bluetooth\n",
|
"displayText": "Bluetooth\n",
|
||||||
@@ -286,7 +221,7 @@
|
|||||||
},
|
},
|
||||||
"CalibrateCJC": {
|
"CalibrateCJC": {
|
||||||
"displayText": "Calibra T\nall'avvio",
|
"displayText": "Calibra T\nall'avvio",
|
||||||
"description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se lo scarto di temperatura è minore di 5 °C)"
|
"description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se il Delta T<5 °C)"
|
||||||
},
|
},
|
||||||
"VoltageCalibration": {
|
"VoltageCalibration": {
|
||||||
"displayText": "Calibrazione\ntensione",
|
"displayText": "Calibrazione\ntensione",
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "オフ"
|
"message": "オフ"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "このデバイスはおそらく偽造品です"
|
"message": "このデバイスはおそらく偽造品です"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to start profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "ボタンロック",
|
"displayText": "ボタンロック",
|
||||||
"description": "半田付けモード時に両方のボタンを長押しし、ボタンロックする <×=オフ | ブ=ブーストのみ許可 | 全=すべてをロック>"
|
"description": "半田付けモード時に両方のボタンを長押しし、ボタンロックする <×=オフ | ブ=ブーストのみ許可 | 全=すべてをロック>"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile Phases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat Temp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat Speed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1 Temp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1 Duration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown Speed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "動きの感度",
|
"displayText": "動きの感度",
|
||||||
"description": "0=オフ | 1=最低感度 | ... | 9=最高感度"
|
"description": "0=オフ | 1=最低感度 | ... | 9=最高感度"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Išj"
|
"message": "Išj"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Mygtukų\nužraktas",
|
"displayText": "Mygtukų\nužraktas",
|
||||||
"description": "Lituodami, ilgai paspauskite abu mygtukus, kad juos užrakintumėte (I=Išjungta | T=leidžiamas tik Turbo režimas | V=Visiškas užrakinimas)"
|
"description": "Lituodami, ilgai paspauskite abu mygtukus, kad juos užrakintumėte (I=Išjungta | T=leidžiamas tik Turbo režimas | V=Visiškas užrakinimas)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Judesio\njautrumas",
|
"displayText": "Judesio\njautrumas",
|
||||||
"description": "Judesio jautrumas (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
|
"description": "Judesio jautrumas (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Av"
|
"message": "Av"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Enheten din er sannsynligvis en forfalskning!"
|
"message": "Enheten din er sannsynligvis en forfalskning!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Tillat å låse\nknapper",
|
"displayText": "Tillat å låse\nknapper",
|
||||||
"description": "Mens du lodder, hold nede begge knapper for å bytte mellom låsemodus (D=deaktiver | B=kun boost | F=full lås)"
|
"description": "Mens du lodder, hold nede begge knapper for å bytte mellom låsemodus (D=deaktiver | B=kun boost | F=full lås)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "BSensr\n",
|
"displayText": "BSensr\n",
|
||||||
"description": "Bevegelsesfølsomhet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
|
"description": "Bevegelsesfølsomhet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Uit"
|
"message": "Uit"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Jouw toestel is wellicht een namaak-versie!"
|
"message": "Jouw toestel is wellicht een namaak-versie!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Knopblokkering\ninschakelen",
|
"displayText": "Knopblokkering\ninschakelen",
|
||||||
"description": "Tijdens solderen lang op beide knoppen drukken blokkeert de knoppen (U=Uit | B=Alleen boost mode | V=Volledig blokkeren)"
|
"description": "Tijdens solderen lang op beide knoppen drukken blokkeert de knoppen (U=Uit | B=Alleen boost mode | V=Volledig blokkeren)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Bewegings-\ngevoeligheid",
|
"displayText": "Bewegings-\ngevoeligheid",
|
||||||
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
|
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Uit"
|
"message": "Uit"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Allow locking\nbuttons",
|
"displayText": "Allow locking\nbuttons",
|
||||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Bewegings-\ngevoeligheid",
|
"displayText": "Bewegings-\ngevoeligheid",
|
||||||
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
|
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Wył"
|
"message": "Wył"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Twoje urządzenie jest najprawdopodobniej podróbką!"
|
"message": "Twoje urządzenie jest najprawdopodobniej podróbką!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Blokada\nprzycisków",
|
"displayText": "Blokada\nprzycisków",
|
||||||
"description": "W trybie lutowania, wciśnij oba przyciski aby je zablokować (O=Wyłączona | B=tylko Boost | P=pełna blokada)"
|
"description": "W trybie lutowania, wciśnij oba przyciski aby je zablokować (O=Wyłączona | B=tylko Boost | P=pełna blokada)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Czułość\nwykr. ruchu",
|
"displayText": "Czułość\nwykr. ruchu",
|
||||||
"description": "Czułość wykrywania ruchu (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
|
"description": "Czułość wykrywania ruchu (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
"message": "Algumas configurações\nforam alteradas!"
|
"message": "Algumas configurações\nforam alteradas!"
|
||||||
},
|
},
|
||||||
"NoAccelerometerMessage": {
|
"NoAccelerometerMessage": {
|
||||||
"message": "Acelerómetro não\ndetetado!"
|
"message": "Acelerómetro não\ndetectado!"
|
||||||
},
|
},
|
||||||
"NoPowerDeliveryMessage": {
|
"NoPowerDeliveryMessage": {
|
||||||
"message": "USB-PD IC não\ndetetado!"
|
"message": "USB-PD IC não\ndetectado!"
|
||||||
},
|
},
|
||||||
"LockingKeysString": {
|
"LockingKeysString": {
|
||||||
"message": "Bloqueado"
|
"message": "Bloqueado"
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"message": "Thermal\nRunaway"
|
"message": "Thermal\nRunaway"
|
||||||
},
|
},
|
||||||
"SettingsCalibrationWarning": {
|
"SettingsCalibrationWarning": {
|
||||||
"message": "Antes de reiniciar certifique-se que o ferro está à temperatura ambiente!"
|
"message": "Antes de reninciar certifique-se que o ferro est à temperatura ambiente!"
|
||||||
},
|
},
|
||||||
"CJCCalibrating": {
|
"CJCCalibrating": {
|
||||||
"message": "calibrar\n"
|
"message": "calibrar\n"
|
||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "O seu dispositivo provavelmente é falsificado!"
|
"message": "Seu dispositivo provavelmente é falsificado!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -133,7 +124,7 @@
|
|||||||
"description": "Activa o modo PPS & EPR"
|
"description": "Activa o modo PPS & EPR"
|
||||||
},
|
},
|
||||||
"BoostTemperature": {
|
"BoostTemperature": {
|
||||||
"displayText": "Temp.\nModo turbo",
|
"displayText": "Modo turbo\ntemperat.",
|
||||||
"description": "Ajuste de temperatura do \"modo turbo\""
|
"description": "Ajuste de temperatura do \"modo turbo\""
|
||||||
},
|
},
|
||||||
"AutoStart": {
|
"AutoStart": {
|
||||||
@@ -141,72 +132,16 @@
|
|||||||
"description": "Aquece a ponta automaticamente ao ligar (D=desligar | S=soldagem | H=hibernar | A=hibernar temp. ambiente)"
|
"description": "Aquece a ponta automaticamente ao ligar (D=desligar | S=soldagem | H=hibernar | A=hibernar temp. ambiente)"
|
||||||
},
|
},
|
||||||
"TempChangeShortStep": {
|
"TempChangeShortStep": {
|
||||||
"displayText": "Mudança temp.\ncurta",
|
"displayText": "Temp mudança\ncurta",
|
||||||
"description": "A temperatura será aumentada com um click curto"
|
"description": "A temperatura será aumentada com um click curto"
|
||||||
},
|
},
|
||||||
"TempChangeLongStep": {
|
"TempChangeLongStep": {
|
||||||
"displayText": "Mudança temp.\nlonga",
|
"displayText": "Temp mudança\nlonga",
|
||||||
"description": "A temperatura será aumentada com um click longo"
|
"description": "A temperatura será aumentada com um click longo"
|
||||||
},
|
},
|
||||||
"LockingMode": {
|
"LockingMode": {
|
||||||
"displayText": "Permitir bloquear\nbotões",
|
"displayText": "Permitir bloquear\nbutões",
|
||||||
"description": "Durante a solda premir os dois botões para alternar entre (D=desativados | B=modo turbo | F=bloqueio total)"
|
"description": "Durante a solda primir os dois butões para alternar entre (D=disativas | B=boost mode | F=bloqueio total)"
|
||||||
},
|
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
},
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Sensibilidade\nmovimento",
|
"displayText": "Sensibilidade\nmovimento",
|
||||||
@@ -225,7 +160,7 @@
|
|||||||
"description": "Tempo para desligar (Minutos)"
|
"description": "Tempo para desligar (Minutos)"
|
||||||
},
|
},
|
||||||
"HallEffSensitivity": {
|
"HallEffSensitivity": {
|
||||||
"displayText": "Sensibilidade de\nmagnetismo",
|
"displayText": "Sensibilidade de\nmagentismo",
|
||||||
"description": "Sensibilidade de magnetismo (0=Desligado | 1=Menor | ... | 9=Maior)"
|
"description": "Sensibilidade de magnetismo (0=Desligado | 1=Menor | ... | 9=Maior)"
|
||||||
},
|
},
|
||||||
"TemperatureUnit": {
|
"TemperatureUnit": {
|
||||||
@@ -242,50 +177,50 @@
|
|||||||
},
|
},
|
||||||
"ScrollingSpeed": {
|
"ScrollingSpeed": {
|
||||||
"displayText": "Velocidade\ntexto ajuda",
|
"displayText": "Velocidade\ntexto ajuda",
|
||||||
"description": "Velocidade a que o texto de ajuda é apresentado"
|
"description": "Velocidade a que o texto é mostrado"
|
||||||
},
|
},
|
||||||
"ReverseButtonTempChange": {
|
"ReverseButtonTempChange": {
|
||||||
"displayText": "Trocar\nbotões + -",
|
"displayText": "Mudar\n+ - teclas",
|
||||||
"description": "Inverte o funcionamento dos botões de ajuste da temperatura"
|
"description": "Inverter o alinhamento dos butões para ajudar a temperatura"
|
||||||
},
|
},
|
||||||
"AnimSpeed": {
|
"AnimSpeed": {
|
||||||
"displayText": "Velocidade de\nanimação",
|
"displayText": "Velocidade de\nanimação",
|
||||||
"description": "Velocidade das animações no menu (O=off | S=lenta | M=média | F=rápida)"
|
"description": "Sitio das animações no menu (O=off | S=lentas | M=medias | F=rapidas)"
|
||||||
},
|
},
|
||||||
"AnimLoop": {
|
"AnimLoop": {
|
||||||
"displayText": "Repetir\nanimações",
|
"displayText": "Repetir\nanimações",
|
||||||
"description": "Repete animações de ícones no menu principal"
|
"description": "Repetir icon de animações no ecrã principal"
|
||||||
},
|
},
|
||||||
"Brightness": {
|
"Brightness": {
|
||||||
"displayText": "Brilho\ndo ecrã",
|
"displayText": "Screen\nbrightness",
|
||||||
"description": "Ajusta o brilho do ecrã OLED"
|
"description": "Ajustar o brilho do ecrã OLED"
|
||||||
},
|
},
|
||||||
"ColourInversion": {
|
"ColourInversion": {
|
||||||
"displayText": "Inverter\necrã",
|
"displayText": "Inverter\necrã",
|
||||||
"description": "Inverte as cores do ecrã OLED"
|
"description": "Inverter as cores do ecrã OLED"
|
||||||
},
|
},
|
||||||
"LOGOTime": {
|
"LOGOTime": {
|
||||||
"displayText": "Duração do\nlogo no arranque",
|
"displayText": "Duração do\nlogo no arranque",
|
||||||
"description": "Define a duração do logotipo no arranque em (s=segundos)"
|
"description": "Definir a duração do logotipo no arranque em (s=segundos)"
|
||||||
},
|
},
|
||||||
"AdvancedIdle": {
|
"AdvancedIdle": {
|
||||||
"displayText": "Ecrã repouso\navançado",
|
"displayText": "Ecrã repouso\navançada",
|
||||||
"description": "Mostra informações avançadas quando em repouso"
|
"description": "Mostra informações avançadas quando em espera"
|
||||||
},
|
},
|
||||||
"AdvancedSoldering": {
|
"AdvancedSoldering": {
|
||||||
"displayText": "Ecrã solda\navançado",
|
"displayText": "Ecrã trabalho\navançado",
|
||||||
"description": "Mostra informações avançadas durante a solda"
|
"description": "Mostra informações avançadas durante o uso"
|
||||||
},
|
},
|
||||||
"BluetoothLE": {
|
"BluetoothLE": {
|
||||||
"displayText": "Bluetooth\n",
|
"displayText": "Bluetooth\n",
|
||||||
"description": "Ativa o Bluetooth Low Energy (BLE)"
|
"description": "Enables BLE"
|
||||||
},
|
},
|
||||||
"PowerLimit": {
|
"PowerLimit": {
|
||||||
"displayText": "Limite de\npotência",
|
"displayText": "Limite de\npotência",
|
||||||
"description": "Potência máxima a usar (W=watt)"
|
"description": "Potência máxima a usar (W=watt)"
|
||||||
},
|
},
|
||||||
"CalibrateCJC": {
|
"CalibrateCJC": {
|
||||||
"displayText": "Calibrar CJC\nno próximo arranque",
|
"displayText": "Calibrar CJC\nno prozimo arranque",
|
||||||
"description": "No próximo arranque CJC será calibrada (não será necessário caso o Delta T seja < 5°C)"
|
"description": "No próximo arranque CJC será calibrada (não será necessário caso o Delta T seja < 5°C)"
|
||||||
},
|
},
|
||||||
"VoltageCalibration": {
|
"VoltageCalibration": {
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Nu"
|
"message": "Nu"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Dispozitivul dvs. este cel mai probabil un fals!"
|
"message": "Dispozitivul dvs. este cel mai probabil un fals!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Blocare\nbutoane",
|
"displayText": "Blocare\nbutoane",
|
||||||
"description": "Când lipiţi, apăsaţi lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
|
"description": "Când lipiţi, apăsaţi lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Sensibilitate\nla miscare",
|
"displayText": "Sensibilitate\nla miscare",
|
||||||
"description": "Sensibilitate senzor miscare (0=oprit | 1=puţin sensibil | ... | 9=cel mai sensibil)"
|
"description": "Sensibilitate senzor miscare (0=oprit | 1=puţin sensibil | ... | 9=cel mai sensibil)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Вык"
|
"message": "Вык"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Преднагрев\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Остывание\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Вероятно, это устройство подделка!"
|
"message": "Скорее всего, это устройство подделка!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Слишком горячо для\nстарта профиля"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Разрешить\nблок. кнопок",
|
"displayText": "Разрешить\nблок. кнопок",
|
||||||
"description": "При работе длинное нажатие обеих кнопок блокирует их (О=Отключено | Т=Только турбо | П=Полная блокировка)"
|
"description": "При работе длинное нажатие обеих кнопок блокирует их (О=Отключено | Т=Только турбо | П=Полная блокировка)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Профиль\nЭтапы",
|
|
||||||
"description": "Количество этапов в режиме профиля"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Преднагрев\nТемпература",
|
|
||||||
"description": "Разогреть до этой температуры в начале режима профиля"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Преднагрев\nСкорость",
|
|
||||||
"description": "Предварительный нагрев с этой скоростью (градусов в секунду)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Этап 1\nТемпература",
|
|
||||||
"description": "Целевая температура в конце этого эатпа"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Этап 1\nДлительность",
|
|
||||||
"description": "Целевая длительность этого этапа (секунды)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Этап 2\nТемпература",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Этап 2\nДлительность",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Этап 3\nТемпература",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Этап 3\nДлительность",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Этап 4\nТемпература",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Этап 4\nДлительность",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Этап 5\nТемпература",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Этап 5\nДлительность",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Остывание\nСкорость",
|
|
||||||
"description": "Остывать с такой скоростью в конце режима профиля (градусов в секунду)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Чувствительн.\nакселерометра",
|
"displayText": "Чувствительн.\nакселерометра",
|
||||||
"description": "Чувствительность акселерометра (0=Выкл. | 1=мин. | ... | 9=макс.)"
|
"description": "Чувствительность акселерометра (0=Выкл. | 1=мин. | ... | 9=макс.)"
|
||||||
@@ -242,7 +177,7 @@
|
|||||||
},
|
},
|
||||||
"ScrollingSpeed": {
|
"ScrollingSpeed": {
|
||||||
"displayText": "Скорость\nтекста",
|
"displayText": "Скорость\nтекста",
|
||||||
"description": "Скорость прокрутки текста (М=Медленная | Б=Быстрая)"
|
"description": "Скорость прокрутки текста (М=медленно | Б=быстро)"
|
||||||
},
|
},
|
||||||
"ReverseButtonTempChange": {
|
"ReverseButtonTempChange": {
|
||||||
"displayText": "Поменять\nкнопки+-",
|
"displayText": "Поменять\nкнопки+-",
|
||||||
@@ -250,7 +185,7 @@
|
|||||||
},
|
},
|
||||||
"AnimSpeed": {
|
"AnimSpeed": {
|
||||||
"displayText": "Скорость\nанимации",
|
"displayText": "Скорость\nанимации",
|
||||||
"description": "Скорость анимации иконок в главном меню (О=Отключено | М=Медленная| С=Средняя | Б=Быстрая)"
|
"description": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
|
||||||
},
|
},
|
||||||
"AnimLoop": {
|
"AnimLoop": {
|
||||||
"displayText": "Зацикленная\nанимация",
|
"displayText": "Зацикленная\nанимация",
|
||||||
@@ -278,7 +213,7 @@
|
|||||||
},
|
},
|
||||||
"BluetoothLE": {
|
"BluetoothLE": {
|
||||||
"displayText": "Bluetooth\n",
|
"displayText": "Bluetooth\n",
|
||||||
"description": "Активирует BLE"
|
"description": "Enables BLE"
|
||||||
},
|
},
|
||||||
"PowerLimit": {
|
"PowerLimit": {
|
||||||
"displayText": "Предел\nмощности",
|
"displayText": "Предел\nмощности",
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Vyp"
|
"message": "Vyp"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Vaše zariadenie je pravdepodobne falzifikát!"
|
"message": "Vaše zariadenie je pravdepodobne falzifikát!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Povoliť zámok\ntlačidiel",
|
"displayText": "Povoliť zámok\ntlačidiel",
|
||||||
"description": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)"
|
"description": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Citlivosť\npohybu",
|
"displayText": "Citlivosť\npohybu",
|
||||||
"description": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)"
|
"description": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Off"
|
"message": "Off"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Omogoči\nzaklep gumbov",
|
"displayText": "Omogoči\nzaklep gumbov",
|
||||||
"description": "Za zaklep med spajkanjem drži oba gumba (O=onemogoči | L=le pospešeno | P=polno)"
|
"description": "Za zaklep med spajkanjem drži oba gumba (O=onemogoči | L=le pospešeno | P=polno)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Občutljivost\npremikanja",
|
"displayText": "Občutljivost\npremikanja",
|
||||||
"description": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
|
"description": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Иск"
|
"message": "Иск"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Allow locking\nbuttons",
|
"displayText": "Allow locking\nbuttons",
|
||||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Осетљивост\nна покрет",
|
"displayText": "Осетљивост\nна покрет",
|
||||||
"description": "Осетљивост сензора покрета. (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
|
"description": "Осетљивост сензора покрета. (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Isk"
|
"message": "Isk"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Allow locking\nbuttons",
|
"displayText": "Allow locking\nbuttons",
|
||||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Osetljivost\nna pokret",
|
"displayText": "Osetljivost\nna pokret",
|
||||||
"description": "Osetljivost senzora pokreta. (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
|
"description": "Osetljivost senzora pokreta. (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Av"
|
"message": "Av"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Tillåt lås\nvia knappar",
|
"displayText": "Tillåt lås\nvia knappar",
|
||||||
"description": "Vid lödning, håll nere bägge knappar för att slå på lås (A=Av | T=Bara turbo | F=Fullt lås)"
|
"description": "Vid lödning, håll nere bägge knappar för att slå på lås (A=Av | T=Bara turbo | F=Fullt lås)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Rörelse-\nkänslighet",
|
"displayText": "Rörelse-\nkänslighet",
|
||||||
"description": "Rörelsekänslighet (0=Av | 1=minst känslig | ... | 9=mest känslig)"
|
"description": "Rörelsekänslighet (0=Av | 1=minst känslig | ... | 9=mest känslig)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Kapalı"
|
"message": "Kapalı"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Allow locking\nbuttons",
|
"displayText": "Allow locking\nbuttons",
|
||||||
"description": "While soldering, hold down both buttons to toggle locking them (K=Kapalı | B=boost mode only | F=full locking)"
|
"description": "While soldering, hold down both buttons to toggle locking them (K=Kapalı | B=boost mode only | F=full locking)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "HARHAS\n",
|
"displayText": "HARHAS\n",
|
||||||
"description": "Hareket Hassasiyeti (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
|
"description": "Hareket Hassasiyeti (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Вимк"
|
"message": "Вимк"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Вірогідно ваш пристрій підробний!"
|
"message": "Вірогідно ваш пристрій підробний!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -79,7 +70,7 @@
|
|||||||
"SettingAutoChar": "A",
|
"SettingAutoChar": "A",
|
||||||
"SettingOffChar": "B",
|
"SettingOffChar": "B",
|
||||||
"SettingSlowChar": "Н",
|
"SettingSlowChar": "Н",
|
||||||
"SettingMediumChar": "С",
|
"SettingMediumChar": "M",
|
||||||
"SettingFastChar": "М",
|
"SettingFastChar": "М",
|
||||||
"SettingStartNoneChar": "В",
|
"SettingStartNoneChar": "В",
|
||||||
"SettingStartSolderingChar": "П",
|
"SettingStartSolderingChar": "П",
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Дозволити\nблок. кнопок",
|
"displayText": "Дозволити\nблок. кнопок",
|
||||||
"description": "Під час пайки тривале натискання обох кнопок заблокує їх (В=Вимк | Т=Тільки турбо | П=Повне)"
|
"description": "Під час пайки тривале натискання обох кнопок заблокує їх (В=Вимк | Т=Тільки турбо | П=Повне)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Чутливість\nсенсору руху",
|
"displayText": "Чутливість\nсенсору руху",
|
||||||
"description": "Акселерометр (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
|
"description": "Акселерометр (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
|
||||||
@@ -242,7 +177,7 @@
|
|||||||
},
|
},
|
||||||
"ScrollingSpeed": {
|
"ScrollingSpeed": {
|
||||||
"displayText": "Швидкість\nтексту",
|
"displayText": "Швидкість\nтексту",
|
||||||
"description": "Швидкість прокрутки тексту (Н=Низькa | М=Максимальна)"
|
"description": "Швидкість прокрутки тексту (П=повільно | Ш=швидко)"
|
||||||
},
|
},
|
||||||
"ReverseButtonTempChange": {
|
"ReverseButtonTempChange": {
|
||||||
"displayText": "Інвертувати\nкнопки +-?",
|
"displayText": "Інвертувати\nкнопки +-?",
|
||||||
@@ -250,7 +185,7 @@
|
|||||||
},
|
},
|
||||||
"AnimSpeed": {
|
"AnimSpeed": {
|
||||||
"displayText": "Швидкість\nанімації",
|
"displayText": "Швидкість\nанімації",
|
||||||
"description": "Швидкість анімації іконок у головному меню (В=Вимк | Н=Низькa | С=Середня | М=Максимальна)"
|
"description": "Швидкість анімації іконок у головному меню (Мілісекунди) (В=Вимк | Н=Низькa | С=Середня | М=Макс)"
|
||||||
},
|
},
|
||||||
"AnimLoop": {
|
"AnimLoop": {
|
||||||
"displayText": "Циклічна\nанімація",
|
"displayText": "Циклічна\nанімація",
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "Tat"
|
"message": "Tat"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat\n"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown\n"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "Your device is most likely a counterfeit!"
|
"message": "Your device is most likely a counterfeit!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to\nstart profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "Cho phép khóa\ncác nút",
|
"displayText": "Cho phép khóa\ncác nút",
|
||||||
"description": "Trong khi hàn, giu ca 2 nút đe khóa(D=tat | B=chi che đo tăng cuong | F=khóa hoàn toàn)"
|
"description": "Trong khi hàn, giu ca 2 nút đe khóa(D=tat | B=chi che đo tăng cuong | F=khóa hoàn toàn)"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile\nPhases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat\nTemp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat\nSpeed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1\nTemp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1\nDuration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5\nTemp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5\nDuration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown\nSpeed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "Cam bien\ncu đong",
|
"displayText": "Cam bien\ncu đong",
|
||||||
"description": "- 0=tat | 1=đo nhay thap nhat| ... | 9=đo nhay cao nhat"
|
"description": "- 0=tat | 1=đo nhay thap nhat| ... | 9=đo nhay cao nhat"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "關"
|
"message": "關"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "依支焫雞好有可能係冒牌貨!"
|
"message": "依支焫雞好有可能係冒牌貨!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to start profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "撳掣鎖定",
|
"displayText": "撳掣鎖定",
|
||||||
"description": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=淨係容許增熱模式 | 全=鎖定全部>"
|
"description": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=淨係容許增熱模式 | 全=鎖定全部>"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile Phases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat Temp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat Speed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1 Temp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1 Duration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown Speed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "動作敏感度",
|
"displayText": "動作敏感度",
|
||||||
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
|
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "关"
|
"message": "关"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "这支电烙铁很有可能是冒牌货!"
|
"message": "这支电烙铁很有可能是冒牌货!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to start profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "按键锁定",
|
"displayText": "按键锁定",
|
||||||
"description": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
|
"description": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile Phases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat Temp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat Speed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1 Temp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1 Duration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown Speed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "动作灵敏度",
|
"displayText": "动作灵敏度",
|
||||||
"description": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
|
"description": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
|
||||||
|
|||||||
@@ -60,17 +60,8 @@
|
|||||||
"OffString": {
|
"OffString": {
|
||||||
"message": "關"
|
"message": "關"
|
||||||
},
|
},
|
||||||
"ProfilePreheatString": {
|
|
||||||
"message": "Preheat"
|
|
||||||
},
|
|
||||||
"ProfileCooldownString": {
|
|
||||||
"message": "Cooldown"
|
|
||||||
},
|
|
||||||
"DeviceFailedValidationWarning": {
|
"DeviceFailedValidationWarning": {
|
||||||
"message": "這支電烙鐵很有可能是冒牌貨!"
|
"message": "這支電烙鐵很有可能是冒牌貨!"
|
||||||
},
|
|
||||||
"TooHotToStartProfileWarning": {
|
|
||||||
"message": "Too hot to start profile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
@@ -152,62 +143,6 @@
|
|||||||
"displayText": "按鍵鎖定",
|
"displayText": "按鍵鎖定",
|
||||||
"description": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=只容許增熱模式 | 全=鎖定全部>"
|
"description": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=只容許增熱模式 | 全=鎖定全部>"
|
||||||
},
|
},
|
||||||
"ProfilePhases": {
|
|
||||||
"displayText": "Profile Phases",
|
|
||||||
"description": "Number of phases in profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatTemp": {
|
|
||||||
"displayText": "Preheat Temp",
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode"
|
|
||||||
},
|
|
||||||
"ProfilePreheatSpeed": {
|
|
||||||
"displayText": "Preheat Speed",
|
|
||||||
"description": "Preheat at this rate (degrees per second)"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Temp": {
|
|
||||||
"displayText": "Phase 1 Temp",
|
|
||||||
"description": "Target temperature for the end of this phase"
|
|
||||||
},
|
|
||||||
"ProfilePhase1Duration": {
|
|
||||||
"displayText": "Phase 1 Duration",
|
|
||||||
"description": "Target duration of this phase (seconds)"
|
|
||||||
},
|
|
||||||
"ProfilePhase2Temp": {
|
|
||||||
"displayText": "Phase 2 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase2Duration": {
|
|
||||||
"displayText": "Phase 2 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Temp": {
|
|
||||||
"displayText": "Phase 3 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase3Duration": {
|
|
||||||
"displayText": "Phase 3 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Temp": {
|
|
||||||
"displayText": "Phase 4 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase4Duration": {
|
|
||||||
"displayText": "Phase 4 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Temp": {
|
|
||||||
"displayText": "Phase 5 Temp",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfilePhase5Duration": {
|
|
||||||
"displayText": "Phase 5 Duration",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"ProfileCooldownSpeed": {
|
|
||||||
"displayText": "Cooldown Speed",
|
|
||||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
|
||||||
},
|
|
||||||
"MotionSensitivity": {
|
"MotionSensitivity": {
|
||||||
"displayText": "動作敏感度",
|
"displayText": "動作敏感度",
|
||||||
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
|
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "NoPowerDeliveryMessage",
|
"id": "NoPowerDeliveryMessage",
|
||||||
"include": ["POW_PD"],
|
|
||||||
"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."
|
"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."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -50,50 +49,32 @@
|
|||||||
{
|
{
|
||||||
"id": "UVLOWarningString",
|
"id": "UVLOWarningString",
|
||||||
"maxLen": 8,
|
"maxLen": 8,
|
||||||
"include": ["POW_DC"],
|
|
||||||
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
|
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "UndervoltageString",
|
"id": "UndervoltageString",
|
||||||
"maxLen": 15,
|
"maxLen": 15,
|
||||||
"include": ["POW_DC"],
|
|
||||||
"description": "Warning text shown when the unit turns off due to undervoltage in advanced mode."
|
"description": "Warning text shown when the unit turns off due to undervoltage in advanced mode."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "InputVoltageString",
|
"id": "InputVoltageString",
|
||||||
"maxLen": 11,
|
"maxLen": 11,
|
||||||
"note": "Preferably end with a space",
|
"note": "Preferably end with a space",
|
||||||
"include": ["POW_DC"],
|
|
||||||
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
|
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "ProfilePreheatString",
|
|
||||||
"maxLen": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Shown in profile mode while preheating"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfileCooldownString",
|
|
||||||
"maxLen": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Shown in profile mode while cooling down"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "SleepingSimpleString",
|
"id": "SleepingSimpleString",
|
||||||
"maxLen": 4,
|
"maxLen": 4,
|
||||||
"exclude": ["NO_SLEEP_MODE"],
|
|
||||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
|
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "SleepingAdvancedString",
|
"id": "SleepingAdvancedString",
|
||||||
"maxLen": 15,
|
"maxLen": 15,
|
||||||
"exclude": ["NO_SLEEP_MODE"],
|
|
||||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
|
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "SleepingTipAdvancedString",
|
"id": "SleepingTipAdvancedString",
|
||||||
"maxLen": 6,
|
"maxLen": 6,
|
||||||
"exclude": ["NO_SLEEP_MODE"],
|
|
||||||
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
|
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -105,12 +86,6 @@
|
|||||||
"id": "DeviceFailedValidationWarning",
|
"id": "DeviceFailedValidationWarning",
|
||||||
"default": "Device may be\ncounterfeit",
|
"default": "Device may be\ncounterfeit",
|
||||||
"description": "Warning shown if the device may be a clone or counterfeit unit."
|
"description": "Warning shown if the device may be a clone or counterfeit unit."
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "TooHotToStartProfileWarning",
|
|
||||||
"default": "Too hot to\nstart profile",
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Shown when profile mode is started while the device is too hot."
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"characters": [{
|
"characters": [{
|
||||||
@@ -191,7 +166,6 @@
|
|||||||
"id": "PowerMenu",
|
"id": "PowerMenu",
|
||||||
"maxLen": 5,
|
"maxLen": 5,
|
||||||
"maxLen2": 11,
|
"maxLen2": 11,
|
||||||
"include": ["POW_DC", "POW_QC"],
|
|
||||||
"description": "Menu for settings related to power. Main settings to do with the input voltage."
|
"description": "Menu for settings related to power. Main settings to do with the input voltage."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -223,35 +197,30 @@
|
|||||||
"id": "DCInCutoff",
|
"id": "DCInCutoff",
|
||||||
"maxLen": 5,
|
"maxLen": 5,
|
||||||
"maxLen2": 11,
|
"maxLen2": 11,
|
||||||
"include": ["POW_DC"],
|
|
||||||
"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."
|
"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": "MinVolCell",
|
"id": "MinVolCell",
|
||||||
"maxLen": 4,
|
"maxLen": 4,
|
||||||
"maxLen2": 9,
|
"maxLen2": 9,
|
||||||
"include": ["POW_DC"],
|
|
||||||
"description": "When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)"
|
"description": "When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "QCMaxVoltage",
|
"id": "QCMaxVoltage",
|
||||||
"maxLen": 8,
|
"maxLen": 8,
|
||||||
"maxLen2": 15,
|
"maxLen2": 15,
|
||||||
"include": ["POW_QC"],
|
|
||||||
"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."
|
"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",
|
"id": "PDNegTimeout",
|
||||||
"maxLen": 8,
|
"maxLen": 8,
|
||||||
"maxLen2": 15,
|
"maxLen2": 15,
|
||||||
"include": ["POW_PD"],
|
|
||||||
"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."
|
"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": "PDVpdo",
|
"id": "PDVpdo",
|
||||||
"maxLen": 7,
|
"maxLen": 7,
|
||||||
"maxLen2": 15,
|
"maxLen2": 15,
|
||||||
"include": ["POW_PD"],
|
|
||||||
"description": "Enabled PPS & EPR modes."
|
"description": "Enabled PPS & EPR modes."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -284,104 +253,6 @@
|
|||||||
"maxLen2": 13,
|
"maxLen2": 13,
|
||||||
"description": "If locking the buttons against accidental presses is enabled."
|
"description": "If locking the buttons against accidental presses is enabled."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "ProfilePhases",
|
|
||||||
"maxLen": 6,
|
|
||||||
"maxLen2": 13,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "set the number of phases for profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePreheatTemp",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Preheat to this temperature at the start of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePreheatSpeed",
|
|
||||||
"maxLen": 5,
|
|
||||||
"maxLen2": 11,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "How fast the temperature is allowed to rise during the preheat phase at the start of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase1Temp",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Target temperature for the end of phase 1 of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase1Duration",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Duration of phase 1 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase2Temp",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Target temperature for the end of phase 2 of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase2Duration",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Duration of phase 2 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase3Temp",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Target temperature for the end of phase 3 of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase3Duration",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Duration of phase 3 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase4Temp",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Target temperature for the end of phase 5 of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase4Duration",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase5Temp",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Target temperature for the end of phase 5 of profile mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfilePhase5Duration",
|
|
||||||
"maxLen": 4,
|
|
||||||
"maxLen2": 9,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ProfileCooldownSpeed",
|
|
||||||
"maxLen": 5,
|
|
||||||
"maxLen2": 11,
|
|
||||||
"include": ["PROFILE_SUPPORT"],
|
|
||||||
"description": "How fast the temperature is allowed to drop during the cooldown phase at the end of profile mode."
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "MotionSensitivity",
|
"id": "MotionSensitivity",
|
||||||
"maxLen": 6,
|
"maxLen": 6,
|
||||||
@@ -392,14 +263,12 @@
|
|||||||
"id": "SleepTemperature",
|
"id": "SleepTemperature",
|
||||||
"maxLen": 4,
|
"maxLen": 4,
|
||||||
"maxLen2": 9,
|
"maxLen2": 9,
|
||||||
"exclude": ["NO_SLEEP_MODE"],
|
|
||||||
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
|
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "SleepTimeout",
|
"id": "SleepTimeout",
|
||||||
"maxLen": 4,
|
"maxLen": 4,
|
||||||
"maxLen2": 9,
|
"maxLen2": 9,
|
||||||
"exclude": ["NO_SLEEP_MODE"],
|
|
||||||
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
|
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -412,7 +281,6 @@
|
|||||||
"id": "HallEffSensitivity",
|
"id": "HallEffSensitivity",
|
||||||
"maxLen": 6,
|
"maxLen": 6,
|
||||||
"maxLen2": 13,
|
"maxLen2": 13,
|
||||||
"include": ["HALL_SENSOR"],
|
|
||||||
"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."
|
"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."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -425,7 +293,6 @@
|
|||||||
"id": "DisplayRotation",
|
"id": "DisplayRotation",
|
||||||
"maxLen": 6,
|
"maxLen": 6,
|
||||||
"maxLen2": 13,
|
"maxLen2": 13,
|
||||||
"exclude": ["NO_DISPLAY_ROTATE"],
|
|
||||||
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
|
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -492,7 +359,6 @@
|
|||||||
"id": "BluetoothLE",
|
"id": "BluetoothLE",
|
||||||
"maxLen": 7,
|
"maxLen": 7,
|
||||||
"maxLen2": 15,
|
"maxLen2": 15,
|
||||||
"include": ["BLE_ENABLED"],
|
|
||||||
"description": "Should BLE be enabled at boot time."
|
"description": "Should BLE be enabled at boot time."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -94,8 +94,6 @@ enum StatusLED {
|
|||||||
};
|
};
|
||||||
void setStatusLED(const enum StatusLED state);
|
void setStatusLED(const enum StatusLED state);
|
||||||
|
|
||||||
void setBuzzer(bool on);
|
|
||||||
|
|
||||||
// preStartChecks are run until they return 0
|
// preStartChecks are run until they return 0
|
||||||
// By the PID, after each ADC sample comes in
|
// 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
|
// For example, on the MHP30 this is used to figure out the resistance of the hotplate
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ void power_check();
|
|||||||
uint8_t getTipResistanceX10();
|
uint8_t getTipResistanceX10();
|
||||||
|
|
||||||
uint8_t getTipThermalMass();
|
uint8_t getTipThermalMass();
|
||||||
uint8_t getTipInertia();
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -455,6 +455,8 @@ void setStatusLED(const enum StatusLED state) {
|
|||||||
} break;
|
} break;
|
||||||
case LED_HOT:
|
case LED_HOT:
|
||||||
ws2812.led_set_color(0, 0xFF, 0, 0); // red
|
ws2812.led_set_color(0, 0xFF, 0, 0); // red
|
||||||
|
// We have hit the right temp, run buzzer for a short period
|
||||||
|
buzzerEnd = xTaskGetTickCount() + TICKS_SECOND / 3;
|
||||||
break;
|
break;
|
||||||
case LED_COOLING_STILL_HOT:
|
case LED_COOLING_STILL_HOT:
|
||||||
ws2812.led_set_color(0, 0xFF, 0x8C, 0x00); // Orange
|
ws2812.led_set_color(0, 0xFF, 0x8C, 0x00); // Orange
|
||||||
@@ -463,6 +465,11 @@ void setStatusLED(const enum StatusLED state) {
|
|||||||
ws2812.led_update();
|
ws2812.led_update();
|
||||||
lastState = state;
|
lastState = state;
|
||||||
}
|
}
|
||||||
|
if (state == LED_HOT && xTaskGetTickCount() < buzzerEnd) {
|
||||||
|
setBuzzer(true);
|
||||||
|
} else {
|
||||||
|
setBuzzer(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
uint64_t getDeviceID() {
|
uint64_t getDeviceID() {
|
||||||
//
|
//
|
||||||
@@ -472,4 +479,3 @@ uint64_t getDeviceID() {
|
|||||||
uint8_t preStartChecksDone() { return 1; }
|
uint8_t preStartChecksDone() { return 1; }
|
||||||
|
|
||||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||||
uint8_t getTipInertia() { return TIP_THERMAL_MASS; }
|
|
||||||
@@ -123,7 +123,7 @@ extern uint32_t SystemCoreClock;
|
|||||||
#define INCLUDE_vTaskDelete 0
|
#define INCLUDE_vTaskDelete 0
|
||||||
#define INCLUDE_vTaskCleanUpResources 0
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
#define INCLUDE_vTaskSuspend 0
|
#define INCLUDE_vTaskSuspend 0
|
||||||
#define INCLUDE_vTaskDelayUntil 1
|
#define INCLUDE_vTaskDelayUntil 0
|
||||||
#define INCLUDE_vTaskDelay 1
|
#define INCLUDE_vTaskDelay 1
|
||||||
#define INCLUDE_xTaskGetSchedulerState 1
|
#define INCLUDE_xTaskGetSchedulerState 1
|
||||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool getFUS302IRQLow() {
|
bool getFUS302IRQLow() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
// Return true if the IRQ line is still held low
|
// Return true if the IRQ line is still held low
|
||||||
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
|
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
void power_check() {
|
void power_check() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
|
|
||||||
// Cant start QC until either PD works or fails
|
// Cant start QC until either PD works or fails
|
||||||
if (USBPowerDelivery::negotiationComplete()) {
|
if (USBPowerDelivery::negotiationComplete()) {
|
||||||
|
|||||||
@@ -10,14 +10,14 @@
|
|||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
#ifdef I2C_SOFT_BUS_2
|
#ifdef I2C_SOFT
|
||||||
|
|
||||||
#define SOFT_SCL2_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
#define SOFT_SCL_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
||||||
#define SOFT_SCL2_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
#define SOFT_SCL_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
||||||
#define SOFT_SDA2_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
#define SOFT_SDA_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
||||||
#define SOFT_SDA2_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
#define SOFT_SDA_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
||||||
#define SOFT_SDA2_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
#define SOFT_SDA_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||||
#define SOFT_SCL2_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
#define SOFT_SCL_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||||
#define SOFT_I2C_DELAY() \
|
#define SOFT_I2C_DELAY() \
|
||||||
{ \
|
{ \
|
||||||
for (int xx = 0; xx < 20; xx++) { \
|
for (int xx = 0; xx < 20; xx++) { \
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
#ifndef CONFIGURATION_H_
|
#ifndef CONFIGURATION_H_
|
||||||
#define CONFIGURATION_H_
|
#define CONFIGURATION_H_
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
#include "configuration.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
/**
|
/**
|
||||||
* Configuration.h
|
* Configuration.h
|
||||||
* Define here your default pre settings for MHP30
|
* Define here your default pre settings for TS80 or TS100
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -85,9 +86,13 @@
|
|||||||
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
||||||
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
||||||
|
|
||||||
|
#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_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
|
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||||
#define POWER_PULSE_DEFAULT 5
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OLED Orientation Sensitivity on Automatic mode!
|
* OLED Orientation Sensitivity on Automatic mode!
|
||||||
@@ -150,27 +155,22 @@
|
|||||||
#define ACCEL_SC7
|
#define ACCEL_SC7
|
||||||
#define ACCEL_MSA
|
#define ACCEL_MSA
|
||||||
|
|
||||||
#define PROFILE_SUPPORT
|
|
||||||
|
|
||||||
#define POW_PD 1
|
#define POW_PD 1
|
||||||
#define POW_PD_EXT 0
|
|
||||||
#define TEMP_NTC
|
#define TEMP_NTC
|
||||||
#define I2C_SOFT_BUS_2
|
#define I2C_SOFT
|
||||||
#define BATTFILTERDEPTH 8
|
#define BATTFILTERDEPTH 8
|
||||||
#define OLED_I2CBB2
|
#define OLED_I2CBB
|
||||||
#define ACCEL_EXITS_ON_MOVEMENT
|
#define ACCEL_EXITS_ON_MOVEMENT
|
||||||
#define NEEDS_VBUS_PROBE 0
|
#define NEEDS_VBUS_PROBE 0
|
||||||
|
|
||||||
#define HARDWARE_MAX_WATTAGE_X10 650
|
#define HARDWARE_MAX_WATTAGE_X10 650
|
||||||
#define TIP_THERMAL_MASS 65 // TODO, needs refinement
|
#define TIP_THERMAL_MASS 65 // TODO, needs refinement
|
||||||
#define TIP_RESISTANCE 60 // x10 ohms, ~6 typical
|
#define TIP_RESISTANCE 60 // x10 ohms, ~6 typical
|
||||||
#endif /* MHP30 */
|
#endif
|
||||||
|
|
||||||
#ifdef ACCEL_EXITS_ON_MOVEMENT
|
#ifdef ACCEL_EXITS_ON_MOVEMENT
|
||||||
#define NO_SLEEP_MODE
|
#define NO_SLEEP_MODE
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
||||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
|
||||||
|
|
||||||
#endif /* CONFIGURATION_H_ */
|
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
|
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||||
|
|
||||||
|
|
||||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||||
FLASH_EraseInitTypeDef pEraseInit;
|
FLASH_EraseInitTypeDef pEraseInit;
|
||||||
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
|
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "I2C_Wrapper.hpp"
|
#include "I2C_Wrapper.hpp"
|
||||||
#include "Pins.h"
|
#include "Pins.h"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "I2CBB2.hpp"
|
#include "I2CBB.hpp"
|
||||||
#include "Pins.h"
|
#include "Pins.h"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
#include <I2C_Wrapper.hpp>
|
#include <I2C_Wrapper.hpp>
|
||||||
@@ -17,7 +17,7 @@ void preRToSInit() {
|
|||||||
HAL_Init();
|
HAL_Init();
|
||||||
Setup_HAL(); // Setup all the HAL objects
|
Setup_HAL(); // Setup all the HAL objects
|
||||||
BSPInit();
|
BSPInit();
|
||||||
I2CBB2::init();
|
I2CBB::init();
|
||||||
/* Init the IPC objects */
|
/* Init the IPC objects */
|
||||||
FRToSI2C::FRToSInit();
|
FRToSI2C::FRToSInit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
#include "Pins.h"
|
#include "Pins.h"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
#include "TipThermoModel.h"
|
#include "TipThermoModel.h"
|
||||||
#include "USBPD.h"
|
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "history.hpp"
|
#include "history.hpp"
|
||||||
#include "main.hpp"
|
#include "main.hpp"
|
||||||
@@ -18,7 +17,7 @@ const uint16_t powerPWM = 255;
|
|||||||
static const uint8_t holdoffTicks = 14; // delay of 8 ms
|
static const uint8_t holdoffTicks = 14; // delay of 8 ms
|
||||||
static const uint8_t tempMeasureTicks = 14;
|
static const uint8_t tempMeasureTicks = 14;
|
||||||
|
|
||||||
uint16_t totalPWM; // htimADC.Init.Period, the full PWM cycle
|
uint16_t totalPWM; // htim2.Init.Period, the full PWM cycle
|
||||||
|
|
||||||
static bool fastPWM;
|
static bool fastPWM;
|
||||||
static bool infastPWM;
|
static bool infastPWM;
|
||||||
@@ -102,18 +101,18 @@ static void switchToFastPWM(void) {
|
|||||||
// 10Hz
|
// 10Hz
|
||||||
infastPWM = true;
|
infastPWM = true;
|
||||||
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
|
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
|
||||||
htimADC.Instance->ARR = totalPWM;
|
htim2.Instance->ARR = totalPWM;
|
||||||
htimADC.Instance->CCR1 = powerPWM + holdoffTicks;
|
htim2.Instance->CCR1 = powerPWM + holdoffTicks;
|
||||||
htimADC.Instance->PSC = 2690;
|
htim2.Instance->PSC = 2690;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void switchToSlowPWM(void) {
|
static void switchToSlowPWM(void) {
|
||||||
// 5Hz
|
// 5Hz
|
||||||
infastPWM = false;
|
infastPWM = false;
|
||||||
totalPWM = powerPWM + tempMeasureTicks / 2 + holdoffTicks / 2;
|
totalPWM = powerPWM + tempMeasureTicks / 2 + holdoffTicks / 2;
|
||||||
htimADC.Instance->ARR = totalPWM;
|
htim2.Instance->ARR = totalPWM;
|
||||||
htimADC.Instance->CCR1 = powerPWM + holdoffTicks / 2;
|
htim2.Instance->CCR1 = powerPWM + holdoffTicks / 2;
|
||||||
htimADC.Instance->PSC = 2690 * 2;
|
htim2.Instance->PSC = 2690 * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
||||||
@@ -127,7 +126,7 @@ void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
|||||||
|
|
||||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
||||||
// Period has elapsed
|
// Period has elapsed
|
||||||
if (htim->Instance == ADC_CONTROL_TIMER) {
|
if (htim->Instance == TIM2) {
|
||||||
// we want to turn on the output again
|
// we want to turn on the output again
|
||||||
PWMSafetyTimer--;
|
PWMSafetyTimer--;
|
||||||
// We decrement this safety value so that lockups in the
|
// We decrement this safety value so that lockups in the
|
||||||
@@ -135,22 +134,12 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
|||||||
// active driving state.
|
// active driving state.
|
||||||
// While we could assume this could never happen, its a small price for
|
// While we could assume this could never happen, its a small price for
|
||||||
// increased safety
|
// increased safety
|
||||||
#ifdef TIP_HAS_DIRECT_PWM
|
htim2.Instance->CCR4 = pendingPWM;
|
||||||
htimADC.Instance->CCR4 = powerPWM;
|
if (htim2.Instance->CCR4 && PWMSafetyTimer) {
|
||||||
if (pendingPWM && PWMSafetyTimer) {
|
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
|
||||||
htimTip.Instance->CCR1 = pendingPWM;
|
|
||||||
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
|
|
||||||
} else {
|
} else {
|
||||||
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
|
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
htimADC.Instance->CCR4 = pendingPWM;
|
|
||||||
if (htimADC.Instance->CCR4 && PWMSafetyTimer) {
|
|
||||||
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
|
|
||||||
} else {
|
|
||||||
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (fastPWM != infastPWM) {
|
if (fastPWM != infastPWM) {
|
||||||
if (fastPWM) {
|
if (fastPWM) {
|
||||||
switchToFastPWM();
|
switchToFastPWM();
|
||||||
@@ -168,11 +157,10 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
|||||||
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
|
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
|
||||||
// This was a when the PWM for the output has timed out
|
// This was a when the PWM for the output has timed out
|
||||||
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) {
|
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) {
|
||||||
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
|
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void unstick_I2C() {
|
void unstick_I2C() {
|
||||||
#ifndef I2C_SOFT_BUS_1
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
int timeout = 100;
|
int timeout = 100;
|
||||||
int timeout_cnt = 0;
|
int timeout_cnt = 0;
|
||||||
@@ -239,7 +227,6 @@ void unstick_I2C() {
|
|||||||
|
|
||||||
// Call initialization function.
|
// Call initialization function.
|
||||||
HAL_I2C_Init(&hi2c1);
|
HAL_I2C_Init(&hi2c1);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t getButtonA() { return HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
uint8_t getButtonA() { return HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
||||||
@@ -251,10 +238,6 @@ void reboot() { NVIC_SystemReset(); }
|
|||||||
|
|
||||||
void delay_ms(uint16_t count) { HAL_Delay(count); }
|
void delay_ms(uint16_t count) { HAL_Delay(count); }
|
||||||
|
|
||||||
uint8_t lastTipResistance = 0; // default to unknown
|
|
||||||
const uint8_t numTipResistanceReadings = 3;
|
|
||||||
uint32_t tipResistanceReadings[3] = {0, 0, 0};
|
|
||||||
uint8_t tipResistanceReadingSlot = 0;
|
|
||||||
bool isTipDisconnected() {
|
bool isTipDisconnected() {
|
||||||
|
|
||||||
uint16_t tipDisconnectedThres = TipThermoModel::getTipMaxInC() - 5;
|
uint16_t tipDisconnectedThres = TipThermoModel::getTipMaxInC() - 5;
|
||||||
@@ -263,148 +246,14 @@ bool isTipDisconnected() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setStatusLED(const enum StatusLED state) {}
|
void setStatusLED(const enum StatusLED state) {}
|
||||||
void setBuzzer(bool on) {}
|
uint8_t preStartChecks() { return 1; }
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
// We want to calculate lastTipResistance
|
|
||||||
// If tip is connected, and the tip is cold and the tip is not being heated
|
|
||||||
// We can use the GPIO to inject a small current into the tip and measure this
|
|
||||||
// The gpio is 100k -> diode -> tip -> gnd
|
|
||||||
// Source is 3.3V-0.5V
|
|
||||||
// Which is around 0.028mA this will induce:
|
|
||||||
// 6 ohm tip -> 3.24mV (Real world ~= 3320)
|
|
||||||
// 8 ohm tip -> 4.32mV (Real world ~= 4500)
|
|
||||||
// Which is definitely measureable
|
|
||||||
// Taking shortcuts here as we know we only really have to pick apart 6 and 8 ohm tips
|
|
||||||
// These are reported as 60 and 75 respectively
|
|
||||||
void performTipResistanceSampleReading() {
|
|
||||||
// 0 = read then turn on pullup, 1 = read then turn off pullup, 2 = read again
|
|
||||||
tipResistanceReadings[tipResistanceReadingSlot] = TipThermoModel::convertTipRawADCTouV(getTipRawTemp(1));
|
|
||||||
|
|
||||||
HAL_GPIO_WritePin(TIP_RESISTANCE_SENSE_GPIO_Port, TIP_RESISTANCE_SENSE_Pin, (tipResistanceReadingSlot == 0) ? GPIO_PIN_SET : GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
tipResistanceReadingSlot++;
|
|
||||||
}
|
|
||||||
void FinishMeasureTipResistance() {
|
|
||||||
|
|
||||||
// Otherwise we now have the 4 samples;
|
|
||||||
// _^_ order, 2 delta's, combine these
|
|
||||||
|
|
||||||
int32_t calculatedSkew = tipResistanceReadings[0] - tipResistanceReadings[2]; // If positive tip is cooling
|
|
||||||
calculatedSkew /= 2; // divide by two to get offset per time constant
|
|
||||||
|
|
||||||
int32_t reading = (((tipResistanceReadings[1] - tipResistanceReadings[0]) + calculatedSkew) // jump 1 - skew
|
|
||||||
+ // +
|
|
||||||
((tipResistanceReadings[1] - tipResistanceReadings[2]) + calculatedSkew) // jump 2 - skew
|
|
||||||
) //
|
|
||||||
/ 2; // Take average
|
|
||||||
// // As we are only detecting two resistances; we can split the difference for now
|
|
||||||
uint8_t newRes = 0;
|
|
||||||
if (reading > 1200) {
|
|
||||||
// return; // Change nothing as probably disconnected tip
|
|
||||||
tipResistanceReadingSlot = lastTipResistance = 0;
|
|
||||||
return;
|
|
||||||
} else if (reading < 800) {
|
|
||||||
newRes = 62;
|
|
||||||
} else {
|
|
||||||
newRes = 80;
|
|
||||||
}
|
|
||||||
lastTipResistance = newRes;
|
|
||||||
}
|
|
||||||
volatile bool tipMeasurementOccuring = true;
|
|
||||||
volatile TickType_t nextTipMeasurement = 100;
|
|
||||||
|
|
||||||
void performTipMeasurementStep() {
|
|
||||||
|
|
||||||
// Wait 200ms for settle time
|
|
||||||
if (xTaskGetTickCount() < (nextTipMeasurement)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
nextTipMeasurement = xTaskGetTickCount() + (TICKS_100MS * 5);
|
|
||||||
if (tipResistanceReadingSlot < numTipResistanceReadings) {
|
|
||||||
performTipResistanceSampleReading();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We are sensing the resistance
|
|
||||||
FinishMeasureTipResistance();
|
|
||||||
|
|
||||||
tipMeasurementOccuring = false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
uint8_t preStartChecks() {
|
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
performTipMeasurementStep();
|
|
||||||
if (preStartChecksDone() != 1) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HAS_SPLIT_POWER_PATH
|
|
||||||
|
|
||||||
// We want to enable the power path that has the highest voltage
|
|
||||||
// Nominally one will be ~=0 and one will be high. Unless you jamb both in, then both _may_ be high, or device may be dead
|
|
||||||
{
|
|
||||||
uint16_t dc = getRawDCVin();
|
|
||||||
uint16_t pd = getRawPDVin();
|
|
||||||
if (dc > pd) {
|
|
||||||
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_RESET);
|
|
||||||
} else {
|
|
||||||
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_RESET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#ifdef POW_PD
|
|
||||||
// If we are in the middle of negotiating PD, wait until timeout
|
|
||||||
// Before turning on the heater
|
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
uint64_t getDeviceID() {
|
uint64_t getDeviceID() {
|
||||||
//
|
//
|
||||||
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t preStartChecksDone() {
|
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
return (lastTipResistance == 0 || tipResistanceReadingSlot < numTipResistanceReadings || tipMeasurementOccuring) ? 0 : 1;
|
|
||||||
#else
|
|
||||||
return 1;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getTipResistanceX10() {
|
uint8_t preStartChecksDone() { return 1; }
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
// Return tip resistance in x10 ohms
|
|
||||||
// We can measure this using the op-amp
|
|
||||||
return lastTipResistance;
|
|
||||||
#else
|
|
||||||
return TIP_RESISTANCE;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getTipThermalMass() {
|
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
if (lastTipResistance >= 80) {
|
|
||||||
return TIP_THERMAL_MASS;
|
|
||||||
}
|
|
||||||
return 45;
|
|
||||||
#else
|
|
||||||
return TIP_THERMAL_MASS;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
uint8_t getTipInertia() {
|
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
if (lastTipResistance >= 80) {
|
|
||||||
return TIP_THERMAL_MASS;
|
|
||||||
}
|
|
||||||
return 10;
|
|
||||||
#else
|
|
||||||
return TIP_THERMAL_MASS;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
@@ -123,7 +123,7 @@ extern uint32_t SystemCoreClock;
|
|||||||
#define INCLUDE_vTaskDelete 0
|
#define INCLUDE_vTaskDelete 0
|
||||||
#define INCLUDE_vTaskCleanUpResources 0
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
#define INCLUDE_vTaskSuspend 0
|
#define INCLUDE_vTaskSuspend 0
|
||||||
#define INCLUDE_vTaskDelayUntil 1
|
#define INCLUDE_vTaskDelayUntil 0
|
||||||
#define INCLUDE_vTaskDelay 1
|
#define INCLUDE_vTaskDelay 1
|
||||||
#define INCLUDE_xTaskGetSchedulerState 1
|
#define INCLUDE_xTaskGetSchedulerState 1
|
||||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool getFUS302IRQLow() {
|
bool getFUS302IRQLow() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
// Return true if the IRQ line is still held low
|
// Return true if the IRQ line is still held low
|
||||||
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
|
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -34,10 +34,7 @@
|
|||||||
#define PWM_Out_Pin GPIO_PIN_4
|
#define PWM_Out_Pin GPIO_PIN_4
|
||||||
#define PWM_Out_GPIO_Port GPIOB
|
#define PWM_Out_GPIO_Port GPIOB
|
||||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||||
#define TIP_CONTROL_TIMER TIM3
|
#define PWM_Out_CCR
|
||||||
#define ADC_CONTROL_TIMER TIM2
|
|
||||||
#define ADC_CONTROL_TIMER_IRQ TIM2_IRQn
|
|
||||||
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T2_TRGO
|
|
||||||
#define INT_Movement_Pin GPIO_PIN_5
|
#define INT_Movement_Pin GPIO_PIN_5
|
||||||
#define INT_Movement_GPIO_Port GPIOB
|
#define INT_Movement_GPIO_Port GPIOB
|
||||||
#define SCL_Pin GPIO_PIN_6
|
#define SCL_Pin GPIO_PIN_6
|
||||||
@@ -46,58 +43,6 @@
|
|||||||
#define SDA_GPIO_Port GPIOB
|
#define SDA_GPIO_Port GPIOB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS101
|
|
||||||
|
|
||||||
#define KEY_B_Pin GPIO_PIN_10
|
|
||||||
#define KEY_B_GPIO_Port GPIOA
|
|
||||||
#define TMP36_INPUT_Pin GPIO_PIN_4
|
|
||||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
|
||||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
|
|
||||||
#define TMP36_ADC2_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 PD_VIN_Pin GPIO_PIN_6
|
|
||||||
#define PD_VIN_GPIO_Port GPIOA
|
|
||||||
#define PD_VIN_ADC1_CHANNEL ADC_CHANNEL_6
|
|
||||||
#define PD_VIN_ADC2_CHANNEL ADC_CHANNEL_6
|
|
||||||
#define OLED_RESET_Pin GPIO_PIN_7
|
|
||||||
#define OLED_RESET_GPIO_Port GPIOA
|
|
||||||
#define KEY_A_Pin GPIO_PIN_8
|
|
||||||
#define KEY_A_GPIO_Port GPIOA
|
|
||||||
#define PWM_Out_Pin GPIO_PIN_0
|
|
||||||
#define PWM_Out_GPIO_Port GPIOA
|
|
||||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
|
||||||
#define TIP_CONTROL_TIMER TIM2
|
|
||||||
#define ADC_CONTROL_TIMER TIM4
|
|
||||||
#define ADC_CONTROL_TIMER_IRQ TIM4_IRQn
|
|
||||||
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T4_TRGO
|
|
||||||
#define SCL_Pin GPIO_PIN_0
|
|
||||||
#define SCL_GPIO_Port GPIOB
|
|
||||||
#define SDA_Pin GPIO_PIN_1
|
|
||||||
#define SDA_GPIO_Port GPIOB
|
|
||||||
// PD controller
|
|
||||||
#define SCL2_Pin GPIO_PIN_6
|
|
||||||
#define SCL2_GPIO_Port GPIOB
|
|
||||||
#define SDA2_Pin GPIO_PIN_5
|
|
||||||
#define SDA2_GPIO_Port GPIOB
|
|
||||||
#define INT_PD_Pin GPIO_PIN_7
|
|
||||||
#define INT_PD_GPIO_Port GPIOB
|
|
||||||
// Selecting the DC source to route to theg
|
|
||||||
#define DC_SELECT_Pin GPIO_PIN_4
|
|
||||||
#define DC_SELECT_GPIO_Port GPIOB
|
|
||||||
#define PD_SELECT_Pin GPIO_PIN_15
|
|
||||||
#define PD_SELECT_GPIO_Port GPIOA
|
|
||||||
|
|
||||||
#define TIP_RESISTANCE_SENSE_Pin GPIO_PIN_1
|
|
||||||
#define TIP_RESISTANCE_SENSE_GPIO_Port GPIOA
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||||
// TS80 & TS80P pin map
|
// TS80 & TS80P pin map
|
||||||
#define KEY_B_Pin GPIO_PIN_0
|
#define KEY_B_Pin GPIO_PIN_0
|
||||||
@@ -110,6 +55,7 @@
|
|||||||
#define TIP_TEMP_GPIO_Port GPIOA
|
#define TIP_TEMP_GPIO_Port GPIOA
|
||||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
|
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
|
||||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
|
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
|
||||||
|
|
||||||
#define VIN_Pin GPIO_PIN_2
|
#define VIN_Pin GPIO_PIN_2
|
||||||
#define VIN_GPIO_Port GPIOA
|
#define VIN_GPIO_Port GPIOA
|
||||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
|
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
|
||||||
@@ -123,10 +69,6 @@
|
|||||||
#define PWM_Out_Pin GPIO_PIN_6
|
#define PWM_Out_Pin GPIO_PIN_6
|
||||||
#define PWM_Out_GPIO_Port GPIOA
|
#define PWM_Out_GPIO_Port GPIOA
|
||||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||||
#define TIP_CONTROL_TIMER TIM3
|
|
||||||
#define ADC_CONTROL_TIMER TIM2
|
|
||||||
#define ADC_CONTROL_TIMER_IRQ TIM2_IRQn
|
|
||||||
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T2_TRGO
|
|
||||||
#define INT_Movement_Pin GPIO_PIN_5
|
#define INT_Movement_Pin GPIO_PIN_5
|
||||||
#define INT_Movement_GPIO_Port GPIOB
|
#define INT_Movement_GPIO_Port GPIOB
|
||||||
#define SCL_Pin GPIO_PIN_6
|
#define SCL_Pin GPIO_PIN_6
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "USBPD.h"
|
#include "USBPD.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
void power_check() {
|
void power_check() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
// Cant start QC until either PD works or fails
|
// Cant start QC until either PD works or fails
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
if (!USBPowerDelivery::negotiationComplete()) {
|
||||||
return;
|
return;
|
||||||
@@ -25,10 +25,7 @@ bool getIsPoweredByDCIN() {
|
|||||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
#ifdef MODEL_TS101
|
|
||||||
// TODO have to check what we are using
|
|
||||||
return HAL_GPIO_ReadPin(DC_SELECT_GPIO_Port, DC_SELECT_Pin) == GPIO_PIN_SET;
|
|
||||||
#endif
|
|
||||||
#ifdef MODEL_TS100
|
#ifdef MODEL_TS100
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ DMA_HandleTypeDef hdma_i2c1_rx;
|
|||||||
DMA_HandleTypeDef hdma_i2c1_tx;
|
DMA_HandleTypeDef hdma_i2c1_tx;
|
||||||
|
|
||||||
IWDG_HandleTypeDef hiwdg;
|
IWDG_HandleTypeDef hiwdg;
|
||||||
TIM_HandleTypeDef htimADC;
|
TIM_HandleTypeDef htim2;
|
||||||
TIM_HandleTypeDef htimTip;
|
TIM_HandleTypeDef htim3;
|
||||||
#define ADC_FILTER_LEN 4
|
#define ADC_FILTER_LEN 4
|
||||||
#define ADC_SAMPLES 16
|
#define ADC_SAMPLES 16
|
||||||
uint16_t ADCReadings[ADC_SAMPLES]; // Used to store the adc readings for the handle cold junction temp
|
uint16_t ADCReadings[ADC_SAMPLES]; // Used to store the adc readings for the handle cold junction temp
|
||||||
@@ -29,8 +29,8 @@ static void SystemClock_Config(void);
|
|||||||
static void MX_ADC1_Init(void);
|
static void MX_ADC1_Init(void);
|
||||||
static void MX_I2C1_Init(void);
|
static void MX_I2C1_Init(void);
|
||||||
static void MX_IWDG_Init(void);
|
static void MX_IWDG_Init(void);
|
||||||
static void MX_TIP_CONTROL_TIMER_Init(void);
|
static void MX_TIM3_Init(void);
|
||||||
static void MX_ADC_CONTROL_TIMER_Init(void);
|
static void MX_TIM2_Init(void);
|
||||||
static void MX_DMA_Init(void);
|
static void MX_DMA_Init(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
static void MX_ADC2_Init(void);
|
static void MX_ADC2_Init(void);
|
||||||
@@ -45,13 +45,11 @@ void Setup_HAL() {
|
|||||||
|
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
MX_DMA_Init();
|
MX_DMA_Init();
|
||||||
#ifndef I2C_SOFT_BUS_1
|
|
||||||
MX_I2C1_Init();
|
MX_I2C1_Init();
|
||||||
#endif
|
|
||||||
MX_ADC1_Init();
|
MX_ADC1_Init();
|
||||||
MX_ADC2_Init();
|
MX_ADC2_Init();
|
||||||
MX_TIP_CONTROL_TIMER_Init();
|
MX_TIM3_Init();
|
||||||
MX_ADC_CONTROL_TIMER_Init();
|
MX_TIM2_Init();
|
||||||
MX_IWDG_Init();
|
MX_IWDG_Init();
|
||||||
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADCReadings, (ADC_SAMPLES)); // start DMA of normal readings
|
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADCReadings, (ADC_SAMPLES)); // start DMA of normal readings
|
||||||
HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
|
HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
|
||||||
@@ -70,41 +68,7 @@ uint16_t getADCHandleTemp(uint8_t sample) {
|
|||||||
return filter.average() >> 1;
|
return filter.average() >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAS_SPLIT_POWER_PATH
|
|
||||||
static history<uint16_t, ADC_FILTER_LEN> filteredDC = {{0}, 0, 0};
|
|
||||||
static history<uint16_t, ADC_FILTER_LEN> filteredPD = {{0}, 0, 0};
|
|
||||||
|
|
||||||
uint16_t getRawDCVin() { return filteredDC.average(); }
|
|
||||||
uint16_t getRawPDVin() { return filteredPD.average(); }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint16_t getADCVin(uint8_t sample) {
|
uint16_t getADCVin(uint8_t sample) {
|
||||||
#ifdef HAS_SPLIT_POWER_PATH
|
|
||||||
// In split power path operation, we need to read both inputs, and return the larger
|
|
||||||
|
|
||||||
if (sample) {
|
|
||||||
{
|
|
||||||
uint16_t latestADC = 0;
|
|
||||||
latestADC += hadc2.Instance->JDR1;
|
|
||||||
latestADC += hadc2.Instance->JDR2;
|
|
||||||
latestADC <<= 3;
|
|
||||||
filteredDC.update(latestADC);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
uint16_t latestADC = 0;
|
|
||||||
latestADC += hadc2.Instance->JDR3;
|
|
||||||
latestADC += hadc2.Instance->JDR4;
|
|
||||||
latestADC <<= 3;
|
|
||||||
filteredPD.update(latestADC);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
uint16_t dc = filteredDC.average();
|
|
||||||
uint16_t pd = filteredPD.average();
|
|
||||||
if (dc > pd) {
|
|
||||||
return dc;
|
|
||||||
}
|
|
||||||
return pd;
|
|
||||||
#else
|
|
||||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
||||||
if (sample) {
|
if (sample) {
|
||||||
uint16_t latestADC = 0;
|
uint16_t latestADC = 0;
|
||||||
@@ -113,11 +77,10 @@ uint16_t getADCVin(uint8_t sample) {
|
|||||||
latestADC += hadc2.Instance->JDR2;
|
latestADC += hadc2.Instance->JDR2;
|
||||||
latestADC += hadc2.Instance->JDR3;
|
latestADC += hadc2.Instance->JDR3;
|
||||||
latestADC += hadc2.Instance->JDR4;
|
latestADC += hadc2.Instance->JDR4;
|
||||||
latestADC <<= 1;
|
latestADC <<= 3;
|
||||||
filter.update(latestADC);
|
filter.update(latestADC);
|
||||||
}
|
}
|
||||||
return filter.average();
|
return filter.average();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
// Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned
|
// Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned
|
||||||
uint16_t getTipRawTemp(uint8_t sample) {
|
uint16_t getTipRawTemp(uint8_t sample) {
|
||||||
@@ -215,7 +178,7 @@ static void MX_ADC1_Init(void) {
|
|||||||
sConfigInjected.InjectedRank = 1;
|
sConfigInjected.InjectedRank = 1;
|
||||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
sConfigInjected.InjectedNbrOfConversion = 4;
|
||||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
||||||
sConfigInjected.ExternalTrigInjecConv = ADC_TRIGGER;
|
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
||||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
sConfigInjected.AutoInjectedConv = DISABLE;
|
||||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
||||||
sConfigInjected.InjectedOffset = 0;
|
sConfigInjected.InjectedOffset = 0;
|
||||||
@@ -240,7 +203,7 @@ static void MX_ADC2_Init(void) {
|
|||||||
/**Common config
|
/**Common config
|
||||||
*/
|
*/
|
||||||
hadc2.Instance = ADC2;
|
hadc2.Instance = ADC2;
|
||||||
hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
|
hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
|
||||||
hadc2.Init.ContinuousConvMode = ENABLE;
|
hadc2.Init.ContinuousConvMode = ENABLE;
|
||||||
hadc2.Init.DiscontinuousConvMode = DISABLE;
|
hadc2.Init.DiscontinuousConvMode = DISABLE;
|
||||||
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
||||||
@@ -254,18 +217,13 @@ static void MX_ADC2_Init(void) {
|
|||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
|
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
|
||||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
sConfigInjected.InjectedNbrOfConversion = 4;
|
||||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
||||||
sConfigInjected.ExternalTrigInjecConv = ADC_TRIGGER;
|
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
||||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
sConfigInjected.AutoInjectedConv = DISABLE;
|
||||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
||||||
sConfigInjected.InjectedOffset = 0;
|
sConfigInjected.InjectedOffset = 0;
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
|
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||||
|
|
||||||
#ifdef HAS_SPLIT_POWER_PATH
|
|
||||||
sConfigInjected.InjectedChannel = PD_VIN_ADC2_CHANNEL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
|
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_4;
|
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_4;
|
||||||
@@ -301,43 +259,35 @@ static void MX_IWDG_Init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* TIM3 init function */
|
/* TIM3 init function */
|
||||||
static void MX_TIP_CONTROL_TIMER_Init(void) {
|
static void MX_TIM3_Init(void) {
|
||||||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
TIM_MasterConfigTypeDef sMasterConfig;
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
TIM_OC_InitTypeDef sConfigOC;
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
htimTip.Instance = TIP_CONTROL_TIMER;
|
htim3.Instance = TIM3;
|
||||||
#ifdef TIP_HAS_DIRECT_PWM
|
htim3.Init.Prescaler = 8;
|
||||||
htimTip.Init.Prescaler = 100;
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
#else
|
htim3.Init.Period = 100; // 5 Khz PWM freq
|
||||||
htimTip.Init.Prescaler = 3;
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 4mhz before div
|
||||||
#endif
|
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; // Preload the ARR register (though we dont use this)
|
||||||
htimTip.Init.CounterMode = TIM_COUNTERMODE_UP;
|
HAL_TIM_Base_Init(&htim3);
|
||||||
htimTip.Init.Period = 255; // 5 Khz PWM freq
|
|
||||||
htimTip.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 4mhz before div
|
|
||||||
htimTip.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; // Preload the ARR register (though we dont use this)
|
|
||||||
HAL_TIM_Base_Init(&htimTip);
|
|
||||||
|
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
HAL_TIM_ConfigClockSource(&htimTip, &sClockSourceConfig);
|
HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig);
|
||||||
|
|
||||||
HAL_TIM_PWM_Init(&htimTip);
|
HAL_TIM_PWM_Init(&htim3);
|
||||||
|
|
||||||
HAL_TIM_OC_Init(&htimTip);
|
HAL_TIM_OC_Init(&htim3);
|
||||||
|
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
HAL_TIMEx_MasterConfigSynchronization(&htimTip, &sMasterConfig);
|
HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
#ifdef TIP_HAS_DIRECT_PWM
|
sConfigOC.Pulse = 50; // 50% duty cycle, that is AC coupled through the cap
|
||||||
sConfigOC.Pulse = 0; // PWM is direct to tip
|
|
||||||
#else
|
|
||||||
sConfigOC.Pulse = 127; // 50% duty cycle, that is AC coupled through the cap to provide an on signal (This does not do tip at 50% duty cycle)
|
|
||||||
#endif
|
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||||
HAL_TIM_PWM_ConfigChannel(&htimTip, &sConfigOC, PWM_Out_CHANNEL);
|
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, PWM_Out_CHANNEL);
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
|
||||||
@@ -354,10 +304,10 @@ static void MX_TIP_CONTROL_TIMER_Init(void) {
|
|||||||
#else
|
#else
|
||||||
// No re-map required
|
// No re-map required
|
||||||
#endif
|
#endif
|
||||||
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
|
HAL_TIM_PWM_Start(&htim3, PWM_Out_CHANNEL);
|
||||||
}
|
}
|
||||||
/* TIM3 init function */
|
/* TIM3 init function */
|
||||||
static void MX_ADC_CONTROL_TIMER_Init(void) {
|
static void MX_TIM2_Init(void) {
|
||||||
/*
|
/*
|
||||||
* We use the channel 1 to trigger the ADC at end of PWM period
|
* We use the channel 1 to trigger the ADC at end of PWM period
|
||||||
* And we use the channel 4 as the PWM modulation source using Interrupts
|
* And we use the channel 4 as the PWM modulation source using Interrupts
|
||||||
@@ -368,30 +318,30 @@ static void MX_ADC_CONTROL_TIMER_Init(void) {
|
|||||||
|
|
||||||
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
||||||
// in the PWM off time.
|
// in the PWM off time.
|
||||||
htimADC.Instance = ADC_CONTROL_TIMER;
|
htim2.Instance = TIM2;
|
||||||
// dummy value, will be reconfigured by BSPInit()
|
// dummy value, will be reconfigured by BSPInit()
|
||||||
htimADC.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
|
htim2.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
|
||||||
|
|
||||||
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
||||||
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
||||||
htimADC.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
// dummy value, will be reconfigured by BSPInit()
|
// dummy value, will be reconfigured by BSPInit()
|
||||||
htimADC.Init.Period = powerPWM + 14 * 2;
|
htim2.Init.Period = powerPWM + 14 * 2;
|
||||||
|
|
||||||
htimADC.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
|
||||||
htimADC.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
htimADC.Init.RepetitionCounter = 0;
|
htim2.Init.RepetitionCounter = 0;
|
||||||
HAL_TIM_Base_Init(&htimADC);
|
HAL_TIM_Base_Init(&htim2);
|
||||||
|
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
HAL_TIM_ConfigClockSource(&htimADC, &sClockSourceConfig);
|
HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
|
||||||
|
|
||||||
HAL_TIM_PWM_Init(&htimADC);
|
HAL_TIM_PWM_Init(&htim2);
|
||||||
HAL_TIM_OC_Init(&htimADC);
|
HAL_TIM_OC_Init(&htim2);
|
||||||
|
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1;
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1;
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
HAL_TIMEx_MasterConfigSynchronization(&htimADC, &sMasterConfig);
|
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
// dummy value, will be reconfigured by BSPInit() in the BSP.cpp
|
// dummy value, will be reconfigured by BSPInit() in the BSP.cpp
|
||||||
@@ -404,15 +354,15 @@ static void MX_ADC_CONTROL_TIMER_Init(void) {
|
|||||||
* */
|
* */
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||||
HAL_TIM_PWM_ConfigChannel(&htimADC, &sConfigOC, TIM_CHANNEL_1);
|
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
|
||||||
sConfigOC.Pulse = 0; // default to entirely off
|
sConfigOC.Pulse = 0; // default to entirely off
|
||||||
HAL_TIM_OC_ConfigChannel(&htimADC, &sConfigOC, TIM_CHANNEL_4);
|
HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4);
|
||||||
|
|
||||||
HAL_TIM_Base_Start_IT(&htimADC);
|
HAL_TIM_Base_Start_IT(&htim2);
|
||||||
HAL_TIM_PWM_Start(&htimADC, TIM_CHANNEL_1);
|
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
|
||||||
HAL_TIM_PWM_Start_IT(&htimADC, TIM_CHANNEL_4);
|
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_4);
|
||||||
HAL_NVIC_SetPriority(ADC_CONTROL_TIMER_IRQ, 15, 0);
|
HAL_NVIC_SetPriority(TIM2_IRQn, 15, 0);
|
||||||
HAL_NVIC_EnableIRQ(ADC_CONTROL_TIMER_IRQ);
|
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -512,45 +462,12 @@ static void MX_GPIO_Init(void) {
|
|||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(OLED_RESET_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(OLED_RESET_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
// Pull down LCD reset
|
// Pull down LCD reset
|
||||||
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
|
||||||
HAL_Delay(30);
|
HAL_Delay(30);
|
||||||
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_SET);
|
||||||
|
|
||||||
#ifdef DC_SELECT_Pin
|
|
||||||
GPIO_InitStruct.Pin = DC_SELECT_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(DC_SELECT_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_RESET);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PD_SELECT_Pin
|
|
||||||
GPIO_InitStruct.Pin = PD_SELECT_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(PD_SELECT_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
|
||||||
GPIO_InitStruct.Pin = TIP_RESISTANCE_SENSE_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(TIP_RESISTANCE_SENSE_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
HAL_GPIO_WritePin(TIP_RESISTANCE_SENSE_GPIO_Port, TIP_RESISTANCE_SENSE_Pin, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INT_PD_Pin
|
|
||||||
GPIO_InitStruct.Pin = INT_PD_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
||||||
HAL_GPIO_Init(INT_PD_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#ifdef USE_FULL_ASSERT
|
#ifdef USE_FULL_ASSERT
|
||||||
void assert_failed(uint8_t *file, uint32_t line) { asm("bkpt"); }
|
void assert_failed(uint8_t *file, uint32_t line) { asm("bkpt"); }
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#ifndef SETUP_H_
|
#ifndef SETUP_H_
|
||||||
#define SETUP_H_
|
#define SETUP_H_
|
||||||
#include "configuration.h"
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@@ -24,18 +24,13 @@ extern I2C_HandleTypeDef hi2c1;
|
|||||||
|
|
||||||
extern IWDG_HandleTypeDef hiwdg;
|
extern IWDG_HandleTypeDef hiwdg;
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htimADC;
|
extern TIM_HandleTypeDef htim2;
|
||||||
extern TIM_HandleTypeDef htimTip;
|
extern TIM_HandleTypeDef htim3;
|
||||||
void Setup_HAL();
|
void Setup_HAL();
|
||||||
uint16_t getADCHandleTemp(uint8_t sample);
|
uint16_t getADCHandleTemp(uint8_t sample);
|
||||||
uint16_t getADCVin(uint8_t sample);
|
uint16_t getADCVin(uint8_t sample);
|
||||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); // Since the hal header file does not define this one
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); // Since the hal header file does not define this one
|
||||||
|
|
||||||
#ifdef HAS_SPLIT_POWER_PATH
|
|
||||||
uint16_t getRawDCVin();
|
|
||||||
uint16_t getRawPDVin();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -10,27 +10,14 @@
|
|||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
#ifdef I2C_SOFT_BUS_2
|
#ifdef I2C_SOFT
|
||||||
|
|
||||||
#define SOFT_SCL2_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
|
||||||
#define SOFT_SCL2_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
|
||||||
#define SOFT_SDA2_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
|
||||||
#define SOFT_SDA2_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
|
||||||
#define SOFT_SDA2_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
|
||||||
#define SOFT_SCL2_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef I2C_SOFT_BUS_1
|
|
||||||
#define SOFT_SCL1_HIGH() HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET)
|
|
||||||
#define SOFT_SCL1_LOW() HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_RESET)
|
|
||||||
#define SOFT_SDA1_HIGH() HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET)
|
|
||||||
#define SOFT_SDA1_LOW() HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_RESET)
|
|
||||||
#define SOFT_SDA1_READ() (HAL_GPIO_ReadPin(SDA_GPIO_Port, SDA_Pin) == GPIO_PIN_SET ? 1 : 0)
|
|
||||||
#define SOFT_SCL1_READ() (HAL_GPIO_ReadPin(SCL_GPIO_Port, SCL_Pin) == GPIO_PIN_SET ? 1 : 0)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#define SOFT_SCL_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
||||||
|
#define SOFT_SCL_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
||||||
|
#define SOFT_SDA_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
||||||
|
#define SOFT_SDA_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
||||||
|
#define SOFT_SDA_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||||
|
#define SOFT_SCL_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||||
#define SOFT_I2C_DELAY() \
|
#define SOFT_I2C_DELAY() \
|
||||||
{ \
|
{ \
|
||||||
for (int xx = 0; xx < 15; xx++) { \
|
for (int xx = 0; xx < 15; xx++) { \
|
||||||
@@ -38,6 +25,7 @@
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
// 40 ~= 100kHz; 15 gives around 250kHz or so which is fast _and_ stable
|
// 40 ~= 100kHz; 15 gives around 250kHz or so which is fast _and_ stable
|
||||||
|
|
||||||
#endif /* BSP_MINIWARE_SOFTWARE_I2C_H_ */
|
#endif /* BSP_MINIWARE_SOFTWARE_I2C_H_ */
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
/**
|
/**
|
||||||
* Configuration.h
|
* Configuration.h
|
||||||
* Define here your default pre settings for TS80(P) or TS10(0/1)
|
* Define here your default pre settings for TS80(P) or TS100
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
#define POWER_PULSE_DEFAULT 0
|
#define POWER_PULSE_DEFAULT 0
|
||||||
#else
|
#else
|
||||||
#define POWER_PULSE_DEFAULT 5
|
#define POWER_PULSE_DEFAULT 5
|
||||||
#endif /* TS100 */
|
#endif
|
||||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
#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
|
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||||
|
|
||||||
@@ -126,15 +126,13 @@
|
|||||||
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
||||||
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
||||||
|
|
||||||
#define POW_PD_EXT 0
|
|
||||||
|
|
||||||
// Deriving the Voltage div:
|
// Deriving the Voltage div:
|
||||||
// Vin_max = (3.3*(r1+r2))/(r2)
|
// Vin_max = (3.3*(r1+r2))/(r2)
|
||||||
// vdiv = (32768*4)/(vin_max*10)
|
// vdiv = (32768*4)/(vin_max*10)
|
||||||
|
|
||||||
#if defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) + defined(MODEL_TS101) > 1
|
#if defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) > 1
|
||||||
#error "Multiple models defined!"
|
#error "Multiple models defined!"
|
||||||
#elif defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) + defined(MODEL_TS101) == 0
|
#elif defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) == 0
|
||||||
#error "No model defined!"
|
#error "No model defined!"
|
||||||
#endif
|
#endif
|
||||||
#define NEEDS_VBUS_PROBE 0
|
#define NEEDS_VBUS_PROBE 0
|
||||||
@@ -172,42 +170,9 @@
|
|||||||
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips
|
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips
|
||||||
|
|
||||||
#define POW_DC
|
#define POW_DC
|
||||||
|
#define POW_PD 0
|
||||||
#define TEMP_TMP36
|
#define TEMP_TMP36
|
||||||
#endif /* TS100 */
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS101
|
|
||||||
#define VOLTAGE_DIV 700 // 700 - Default divider from schematic
|
|
||||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
|
||||||
#define PID_POWER_LIMIT 100 // Sets the max pwm power limit
|
|
||||||
#define POWER_LIMIT 0 // 0 watts default limit
|
|
||||||
#define MAX_POWER_LIMIT 100
|
|
||||||
#define POWER_LIMIT_STEPS 5
|
|
||||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
|
||||||
#define TEMP_uV_LOOKUP_HAKKO
|
|
||||||
|
|
||||||
#define HARDWARE_MAX_WATTAGE_X10 1000
|
|
||||||
#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 TIP_HAS_DIRECT_PWM 1
|
|
||||||
#define POW_DC 1
|
|
||||||
#define POW_PD 1
|
|
||||||
#define I2C_SOFT_BUS_2 1
|
|
||||||
#define I2C_SOFT_BUS_1 1
|
|
||||||
#define OLED_I2CBB1 1
|
|
||||||
#define USB_PD_I2CBB2 1
|
|
||||||
#define USB_PD_VMAX 28 // Device supposedly can do 28V; looks like vmax is 33 ish
|
|
||||||
#define OLED_128x32 1
|
|
||||||
#define OLED_FLIP 1
|
|
||||||
#define HAS_SPLIT_POWER_PATH 1
|
|
||||||
#define TEMP_NTC 1
|
|
||||||
#define ACCEL_I2CBB1 1
|
|
||||||
#define POW_EPR 1
|
|
||||||
#define HAS_POWER_DEBUG_MENU
|
|
||||||
#define DEBUG_POWER_MENU_BUTTON_B
|
|
||||||
|
|
||||||
#endif /* TS101 */
|
|
||||||
|
|
||||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||||
#define MAX_POWER_LIMIT 40
|
#define MAX_POWER_LIMIT 40
|
||||||
@@ -221,42 +186,35 @@
|
|||||||
|
|
||||||
#define LIS_ORI_FLIP
|
#define LIS_ORI_FLIP
|
||||||
#define OLED_FLIP
|
#define OLED_FLIP
|
||||||
#endif /* TS80(P) */
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS80
|
#ifdef MODEL_TS80
|
||||||
#define VOLTAGE_DIV 780 // Default divider from schematic
|
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||||
#define POWER_LIMIT 32 // 24 watts default power limit
|
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||||
|
|
||||||
#define HARDWARE_MAX_WATTAGE_X10 320
|
#define HARDWARE_MAX_WATTAGE_X10 180
|
||||||
|
|
||||||
#define POW_QC
|
#define POW_QC
|
||||||
|
#define POW_PD 0
|
||||||
#define TEMP_TMP36
|
#define TEMP_TMP36
|
||||||
#endif /* TS80 */
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS80P
|
#ifdef MODEL_TS80P
|
||||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||||
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
||||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||||
#define POWER_LIMIT 32 // 30 watts default power limit
|
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||||
|
|
||||||
#define HARDWARE_MAX_WATTAGE_X10 320
|
#define HARDWARE_MAX_WATTAGE_X10 300
|
||||||
|
|
||||||
#define POW_PD 1
|
#define POW_PD 1
|
||||||
#define POW_QC 1
|
#define POW_QC 1
|
||||||
#define TEMP_NTC
|
#define TEMP_NTC
|
||||||
#define I2C_SOFT_BUS_2 1
|
#define I2C_SOFT
|
||||||
#define SC7_ORI_FLIP
|
#define SC7_ORI_FLIP
|
||||||
#endif /* TS80P */
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS101
|
|
||||||
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
|
|
||||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
|
||||||
#else
|
|
||||||
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
||||||
#define SETTINGS_START_PAGE (0x08000000 + (63 * 1024))
|
|
||||||
#endif /* TS101 */
|
|
||||||
|
|
||||||
#endif /* CONFIGURATION_H_ */
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
|
#define SETTINGS_START_PAGE (0x08000000 + (63 * 1024))
|
||||||
|
|
||||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||||
FLASH_EraseInitTypeDef pEraseInit;
|
FLASH_EraseInitTypeDef pEraseInit;
|
||||||
@@ -34,6 +35,7 @@ void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
|||||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, SETTINGS_START_PAGE+ (i*sizeof(uint16_t)), data[i]);
|
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, SETTINGS_START_PAGE+ (i*sizeof(uint16_t)), data[i]);
|
||||||
}
|
}
|
||||||
HAL_FLASH_Lock();
|
HAL_FLASH_Lock();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void flash_read_buffer(uint8_t *buffer, const uint16_t length) { memcpy(buffer, (uint8_t*)SETTINGS_START_PAGE, length); }
|
void flash_read_buffer(uint8_t *buffer, const uint16_t length) { memcpy(buffer, (uint8_t*)SETTINGS_START_PAGE, length); }
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "I2CBB2.hpp"
|
#include "I2CBB.hpp"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
|
|
||||||
bool fusb_read_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB2::Mem_Read(deviceAddr, registerAdd, buf, size); }
|
bool fusb_read_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB::Mem_Read(deviceAddr, registerAdd, buf, size); }
|
||||||
|
|
||||||
bool fusb_write_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB2::Mem_Write(deviceAddr, registerAdd, buf, size); }
|
bool fusb_write_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB::Mem_Write(deviceAddr, registerAdd, buf, size); }
|
||||||
|
|
||||||
void setupFUSBIRQ() {
|
void setupFUSBIRQ() {
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
|||||||
@@ -6,27 +6,20 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "I2CBB1.hpp"
|
#include "I2CBB.hpp"
|
||||||
#include "I2CBB2.hpp"
|
|
||||||
#include "Pins.h"
|
#include "Pins.h"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
#include "configuration.h"
|
|
||||||
#include <I2C_Wrapper.hpp>
|
#include <I2C_Wrapper.hpp>
|
||||||
|
|
||||||
|
|
||||||
void preRToSInit() {
|
void preRToSInit() {
|
||||||
/* Reset of all peripherals, Initializes the Flash interface and the Systick.
|
/* Reset of all peripherals, Initializes the Flash interface and the Systick.
|
||||||
*/
|
*/
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
Setup_HAL(); // Setup all the HAL objects
|
Setup_HAL(); // Setup all the HAL objects
|
||||||
BSPInit();
|
BSPInit();
|
||||||
#ifdef I2C_SOFT_BUS_2
|
#ifdef I2C_SOFT
|
||||||
I2CBB2::init();
|
I2CBB::init();
|
||||||
#endif
|
#endif
|
||||||
#ifdef I2C_SOFT_BUS_1
|
|
||||||
I2CBB1::init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Init the IPC objects */
|
/* Init the IPC objects */
|
||||||
FRToSI2C::FRToSInit();
|
FRToSI2C::FRToSInit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,23 +58,14 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) {
|
|||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = TIP_TEMP_Pin;
|
GPIO_InitStruct.Pin = TIP_TEMP_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(TIP_TEMP_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(TIP_TEMP_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = TMP36_INPUT_Pin;
|
GPIO_InitStruct.Pin = TMP36_INPUT_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||||
HAL_GPIO_Init(TMP36_INPUT_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(TMP36_INPUT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = VIN_Pin;
|
GPIO_InitStruct.Pin = VIN_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||||
HAL_GPIO_Init(VIN_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(VIN_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
#ifdef PD_VIN_Pin
|
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = PD_VIN_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
|
||||||
HAL_GPIO_Init(PD_VIN_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
#endif
|
|
||||||
/* ADC2 interrupt Init */
|
/* ADC2 interrupt Init */
|
||||||
HAL_NVIC_SetPriority(ADC1_2_IRQn, 15, 0);
|
HAL_NVIC_SetPriority(ADC1_2_IRQn, 15, 0);
|
||||||
HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
|
HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
|
||||||
@@ -92,7 +83,7 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) {
|
|||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* Peripheral clock enable */
|
/* Peripheral clock enable */
|
||||||
__HAL_RCC_I2C1_CLK_ENABLE();
|
__HAL_RCC_I2C1_CLK_ENABLE();
|
||||||
@@ -137,8 +128,5 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim_base) {
|
|||||||
} else if (htim_base->Instance == TIM2) {
|
} else if (htim_base->Instance == TIM2) {
|
||||||
/* Peripheral clock enable */
|
/* Peripheral clock enable */
|
||||||
__HAL_RCC_TIM2_CLK_ENABLE();
|
__HAL_RCC_TIM2_CLK_ENABLE();
|
||||||
} else if (htim_base->Instance == TIM4) {
|
|
||||||
/* Peripheral clock enable */
|
|
||||||
__HAL_RCC_TIM4_CLK_ENABLE();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
// This is the stock standard STM interrupt file full of handlers
|
// This is the stock standard STM interrupt file full of handlers
|
||||||
#include "stm32f1xx_it.h"
|
#include "stm32f1xx_it.h"
|
||||||
#include "Pins.h"
|
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
#include "cmsis_os.h"
|
#include "cmsis_os.h"
|
||||||
#include "stm32f1xx.h"
|
#include "stm32f1xx.h"
|
||||||
@@ -12,6 +11,7 @@ extern TIM_HandleTypeDef htim1; // used for the systick
|
|||||||
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
// Systick is used by FreeRTOS tick
|
// Systick is used by FreeRTOS tick
|
||||||
void SysTick_Handler(void) { osSystickHandler(); }
|
void SysTick_Handler(void) { osSystickHandler(); }
|
||||||
|
|
||||||
@@ -29,33 +29,11 @@ void ADC1_2_IRQHandler(void) { HAL_ADC_IRQHandler(&hadc1); }
|
|||||||
|
|
||||||
// Timer 1 has overflowed, used for HAL ticks
|
// Timer 1 has overflowed, used for HAL ticks
|
||||||
void TIM1_UP_IRQHandler(void) { HAL_TIM_IRQHandler(&htim1); }
|
void TIM1_UP_IRQHandler(void) { HAL_TIM_IRQHandler(&htim1); }
|
||||||
|
|
||||||
// Timer 3 is used for the PWM output to the tip
|
// Timer 3 is used for the PWM output to the tip
|
||||||
void TIM3_IRQHandler(void) {
|
void TIM3_IRQHandler(void) { HAL_TIM_IRQHandler(&htim3); }
|
||||||
TIM_HandleTypeDef *handle = &htimADC;
|
|
||||||
if (htimTip.Instance == TIM3) {
|
|
||||||
handle = &htimTip;
|
|
||||||
}
|
|
||||||
HAL_TIM_IRQHandler(handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Timer 2 is used for co-ordination of PWM & ADC
|
// Timer 2 is used for co-ordination of PWM & ADC
|
||||||
void TIM2_IRQHandler(void) {
|
void TIM2_IRQHandler(void) { HAL_TIM_IRQHandler(&htim2); }
|
||||||
TIM_HandleTypeDef *handle = &htimADC;
|
|
||||||
if (htimTip.Instance == TIM2) {
|
|
||||||
handle = &htimTip;
|
|
||||||
}
|
|
||||||
HAL_TIM_IRQHandler(handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Timer 2 is used for co-ordination of PWM & ADC
|
|
||||||
void TIM4_IRQHandler(void) {
|
|
||||||
TIM_HandleTypeDef *handle = &htimADC;
|
|
||||||
if (htimTip.Instance == TIM4) {
|
|
||||||
handle = &htimTip;
|
|
||||||
}
|
|
||||||
HAL_TIM_IRQHandler(handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2C1_EV_IRQHandler(void) { HAL_I2C_EV_IRQHandler(&hi2c1); }
|
void I2C1_EV_IRQHandler(void) { HAL_I2C_EV_IRQHandler(&hi2c1); }
|
||||||
void I2C1_ER_IRQHandler(void) { HAL_I2C_ER_IRQHandler(&hi2c1); }
|
void I2C1_ER_IRQHandler(void) { HAL_I2C_ER_IRQHandler(&hi2c1); }
|
||||||
@@ -63,9 +41,4 @@ void I2C1_ER_IRQHandler(void) { HAL_I2C_ER_IRQHandler(&hi2c1); }
|
|||||||
void DMA1_Channel6_IRQHandler(void) { HAL_DMA_IRQHandler(&hdma_i2c1_tx); }
|
void DMA1_Channel6_IRQHandler(void) { HAL_DMA_IRQHandler(&hdma_i2c1_tx); }
|
||||||
|
|
||||||
void DMA1_Channel7_IRQHandler(void) { HAL_DMA_IRQHandler(&hdma_i2c1_rx); }
|
void DMA1_Channel7_IRQHandler(void) { HAL_DMA_IRQHandler(&hdma_i2c1_rx); }
|
||||||
|
void EXTI9_5_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9); }
|
||||||
void EXTI9_5_IRQHandler(void) {
|
|
||||||
#ifdef INT_PD_Pin
|
|
||||||
HAL_GPIO_EXTI_IRQHandler(INT_PD_Pin);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -12,8 +12,12 @@
|
|||||||
#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
|
#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
|
||||||
/* #define DATA_IN_ExtSRAM */
|
/* #define DATA_IN_ExtSRAM */
|
||||||
#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
|
#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
|
||||||
|
|
||||||
#ifndef VECT_TAB_OFFSET
|
#ifndef VECT_TAB_OFFSET
|
||||||
#error VECT_TAB_OFFSET
|
#define VECT_TAB_OFFSET \
|
||||||
|
0x00004000U /*!< Vector Table base offset field. \
|
||||||
|
This value must be a multiple of 0x200. */
|
||||||
|
// We offset this by 0x4000 to because of the bootloader
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ bool isTipDisconnected() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setStatusLED(const enum StatusLED state) {}
|
void setStatusLED(const enum StatusLED state) {}
|
||||||
void setBuzzer(bool on) {}
|
|
||||||
|
|
||||||
uint8_t preStartChecks() { return 1; }
|
uint8_t preStartChecks() { return 1; }
|
||||||
uint64_t getDeviceID() { return dbg_id_get(); }
|
uint64_t getDeviceID() { return dbg_id_get(); }
|
||||||
@@ -97,4 +96,3 @@ uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
|||||||
uint8_t preStartChecksDone() { return 1; }
|
uint8_t preStartChecksDone() { return 1; }
|
||||||
|
|
||||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||||
uint8_t getTipInertia() { return TIP_THERMAL_MASS; }
|
|
||||||
@@ -93,7 +93,7 @@ void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
|||||||
extern osThreadId POWTaskHandle;
|
extern osThreadId POWTaskHandle;
|
||||||
|
|
||||||
void EXTI5_9_IRQHandler(void) {
|
void EXTI5_9_IRQHandler(void) {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
if (RESET != exti_interrupt_flag_get(EXTI_5)) {
|
if (RESET != exti_interrupt_flag_get(EXTI_5)) {
|
||||||
exti_interrupt_flag_clear(EXTI_5);
|
exti_interrupt_flag_clear(EXTI_5);
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
void power_check() {
|
void power_check() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
// Cant start QC until either PD works or fails
|
// Cant start QC until either PD works or fails
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
if (!USBPowerDelivery::negotiationComplete()) {
|
||||||
return;
|
return;
|
||||||
@@ -22,7 +22,7 @@ void power_check() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool getIsPoweredByDCIN() {
|
bool getIsPoweredByDCIN() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
if (!USBPowerDelivery::negotiationComplete()) {
|
||||||
return false; // We are assuming not dc while negotiating
|
return false; // We are assuming not dc while negotiating
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
#define POWER_PULSE_DEFAULT 0
|
#define POWER_PULSE_DEFAULT 0
|
||||||
#else
|
#else
|
||||||
#define POWER_PULSE_DEFAULT 5
|
#define POWER_PULSE_DEFAULT 5
|
||||||
#endif /* Pinecil */
|
#endif
|
||||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
#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
|
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||||
|
|
||||||
@@ -146,7 +146,6 @@
|
|||||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||||
|
|
||||||
#define POW_PD 1
|
#define POW_PD 1
|
||||||
#define POW_PD_EXT 0
|
|
||||||
#define POW_QC 1
|
#define POW_QC 1
|
||||||
#define POW_DC 1
|
#define POW_DC 1
|
||||||
#define POW_QC_20V 1
|
#define POW_QC_20V 1
|
||||||
@@ -163,12 +162,9 @@
|
|||||||
#define HARDWARE_MAX_WATTAGE_X10 750
|
#define HARDWARE_MAX_WATTAGE_X10 750
|
||||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
#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 Pinecil tips
|
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for Pinecil tips
|
||||||
#define CANT_DIRECT_READ_SETTINGS
|
#endif
|
||||||
#endif /* Pinecil */
|
#endif
|
||||||
|
|
||||||
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
|
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
|
||||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
|
||||||
|
|
||||||
#define HAS_POWER_DEBUG_MENU
|
#define HAS_POWER_DEBUG_MENU
|
||||||
|
|
||||||
#endif /* CONFIGURATION_H_ */
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
#include "gd32vf103_libopt.h"
|
#include "gd32vf103_libopt.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#define FMC_PAGE_SIZE ((uint16_t)0x400U)
|
#define FMC_PAGE_SIZE ((uint16_t)0x400U)
|
||||||
|
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||||
|
|
||||||
/* unlock the flash program/erase controller */
|
/* unlock the flash program/erase controller */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "I2C_Wrapper.hpp"
|
#include "I2C_Wrapper.hpp"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
|
|||||||
@@ -125,7 +125,9 @@ uint8_t getButtonB() {
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reboot() { hal_system_reset(); }
|
void reboot() {
|
||||||
|
hal_system_reset();
|
||||||
|
}
|
||||||
|
|
||||||
void delay_ms(uint16_t count) {
|
void delay_ms(uint16_t count) {
|
||||||
// delay_1ms(count);
|
// delay_1ms(count);
|
||||||
@@ -146,7 +148,6 @@ bool isTipDisconnected() {
|
|||||||
void setStatusLED(const enum StatusLED state) {
|
void setStatusLED(const enum StatusLED state) {
|
||||||
// Dont have one
|
// Dont have one
|
||||||
}
|
}
|
||||||
void setBuzzer(bool on) {}
|
|
||||||
|
|
||||||
uint8_t lastTipResistance = 0; // default to unknown
|
uint8_t lastTipResistance = 0; // default to unknown
|
||||||
const uint8_t numTipResistanceReadings = 3;
|
const uint8_t numTipResistanceReadings = 3;
|
||||||
@@ -162,13 +163,7 @@ uint8_t getTipThermalMass() {
|
|||||||
if (lastTipResistance >= 80) {
|
if (lastTipResistance >= 80) {
|
||||||
return TIP_THERMAL_MASS;
|
return TIP_THERMAL_MASS;
|
||||||
}
|
}
|
||||||
return 45;
|
return (TIP_THERMAL_MASS * 25) / 10;
|
||||||
}
|
|
||||||
uint8_t getTipInertia() {
|
|
||||||
if (lastTipResistance >= 80) {
|
|
||||||
return TIP_THERMAL_MASS;
|
|
||||||
}
|
|
||||||
return 10;
|
|
||||||
}
|
}
|
||||||
// We want to calculate lastTipResistance
|
// We want to calculate lastTipResistance
|
||||||
// If tip is connected, and the tip is cold and the tip is not being heated
|
// If tip is connected, and the tip is cold and the tip is not being heated
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ extern osThreadId POWTaskHandle;
|
|||||||
void GPIO_IRQHandler(void) {
|
void GPIO_IRQHandler(void) {
|
||||||
if (SET == GLB_Get_GPIO_IntStatus(FUSB302_IRQ_GLB_Pin)) {
|
if (SET == GLB_Get_GPIO_IntStatus(FUSB302_IRQ_GLB_Pin)) {
|
||||||
GLB_GPIO_IntClear(FUSB302_IRQ_GLB_Pin, SET);
|
GLB_GPIO_IntClear(FUSB302_IRQ_GLB_Pin, SET);
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
if (POWTaskHandle != nullptr) {
|
if (POWTaskHandle != nullptr) {
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xTaskNotifyFromISR(POWTaskHandle, 1, eSetBits, &xHigherPriorityTaskWoken);
|
xTaskNotifyFromISR(POWTaskHandle, 1, eSetBits, &xHigherPriorityTaskWoken);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
void power_check() {
|
void power_check() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
// Cant start QC until either PD works or fails
|
// Cant start QC until either PD works or fails
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
if (!USBPowerDelivery::negotiationComplete()) {
|
||||||
return;
|
return;
|
||||||
@@ -22,7 +22,7 @@ void power_check() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool getIsPoweredByDCIN() {
|
bool getIsPoweredByDCIN() {
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
if (!USBPowerDelivery::negotiationComplete()) {
|
||||||
return false; // We are assuming not dc while negotiating
|
return false; // We are assuming not dc while negotiating
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,10 @@ uint16_t ADCReadings[ADC_NORM_SAMPLES]; // room for 32 lots of the pair of readi
|
|||||||
|
|
||||||
// Heap
|
// Heap
|
||||||
|
|
||||||
extern uint8_t __HeapBase;
|
extern uint8_t _heap_start;
|
||||||
extern uint8_t __HeapLimit; // @suppress("Type cannot be resolved")
|
extern uint8_t _heap_size; // @suppress("Type cannot be resolved")
|
||||||
const uint32_t _heap_size = ((&__HeapLimit) - (&__HeapBase));
|
|
||||||
static HeapRegion_t xHeapRegions[] = {
|
static HeapRegion_t xHeapRegions[] = {
|
||||||
{&__HeapBase, (unsigned int)_heap_size},
|
{&_heap_start, (unsigned int)&_heap_size},
|
||||||
{NULL, 0}, /* Terminates the array. */
|
{NULL, 0}, /* Terminates the array. */
|
||||||
{NULL, 0} /* Terminates the array. */
|
{NULL, 0} /* Terminates the array. */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
#define ATTR_CLOCK_CONST_SECTION __attribute__((section(".sclock_rlt_const." ATTR_UNI_SYMBOL)))
|
#define ATTR_CLOCK_CONST_SECTION __attribute__((section(".sclock_rlt_const." ATTR_UNI_SYMBOL)))
|
||||||
#define ATTR_TCM_SECTION __attribute__((section(".tcm_code." ATTR_UNI_SYMBOL)))
|
#define ATTR_TCM_SECTION __attribute__((section(".tcm_code." ATTR_UNI_SYMBOL)))
|
||||||
#define ATTR_TCM_CONST_SECTION __attribute__((section(".tcm_const." ATTR_UNI_SYMBOL)))
|
#define ATTR_TCM_CONST_SECTION __attribute__((section(".tcm_const." ATTR_UNI_SYMBOL)))
|
||||||
// #define ATTR_DTCM_SECTION __attribute__((section(".tcm_data")))
|
#define ATTR_DTCM_SECTION __attribute__((section(".tcm_data")))
|
||||||
#define ATTR_HSRAM_SECTION __attribute__((section(".hsram_code")))
|
#define ATTR_HSRAM_SECTION __attribute__((section(".hsram_code")))
|
||||||
#define ATTR_DMA_RAM_SECTION __attribute__((section(".system_ram")))
|
#define ATTR_DMA_RAM_SECTION __attribute__((section(".system_ram")))
|
||||||
#define ATTR_NOCACHE_RAM_SECTION __attribute__((section(".nocache_ram")))
|
#define ATTR_NOCACHE_RAM_SECTION __attribute__((section(".nocache_ram")))
|
||||||
|
|||||||
@@ -18,15 +18,17 @@ OUTPUT_ARCH( "riscv" )
|
|||||||
ENTRY(_enter)
|
ENTRY(_enter)
|
||||||
|
|
||||||
StackSize = 0x800; /* 2KB */
|
StackSize = 0x800; /* 2KB */
|
||||||
|
HeapSize = 0x800; /* 2KB */
|
||||||
__EM_SIZE = DEFINED(ble_controller_init) ? 8K : 0K;
|
__EM_SIZE = DEFINED(ble_controller_init) ? 8K : 0K;
|
||||||
|
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 1022K
|
xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 1022K
|
||||||
itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 12K
|
itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 16K
|
||||||
dtcm_memory (rx) : ORIGIN = 0x42017000, LENGTH = 4K
|
dtcm_memory (rx) : ORIGIN = 0x42017000, LENGTH = 4K
|
||||||
ram_memory (!rx) : ORIGIN = 0x42018000, LENGTH = 96K
|
ram_memory (!rx) : ORIGIN = 0x42018000, LENGTH = 64K
|
||||||
|
rsvd_memory (!rx) : ORIGIN = 0x42028000, LENGTH = 1K
|
||||||
|
ram2_memory (!rx) : ORIGIN = 0x42028400, LENGTH = (31K - __EM_SIZE)
|
||||||
hbn_memory (rx) : ORIGIN = 0x40010000, LENGTH = 0xE00 /* hbn ram 4K used 3.5K*/
|
hbn_memory (rx) : ORIGIN = 0x40010000, LENGTH = 0xE00 /* hbn ram 4K used 3.5K*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,27 +211,21 @@ SECTIONS
|
|||||||
__tcm_data_end__ = .;
|
__tcm_data_end__ = .;
|
||||||
} > dtcm_memory
|
} > dtcm_memory
|
||||||
|
|
||||||
|
/* .heap_dummy section doesn't contains any symbols. It is only
|
||||||
/*************************************************************************/
|
* used for linker to calculate size of heap sections, and assign
|
||||||
/* .stack_dummy section doesn't contains any symbols. It is only
|
* values to heap symbols later */
|
||||||
* used for linker to calculate size of stack sections, and assign
|
.heap_dummy (NOLOAD):
|
||||||
* values to stack symbols later */
|
|
||||||
.stack_dummy (NOLOAD):
|
|
||||||
{
|
{
|
||||||
. = ALIGN(0x4);
|
. = ALIGN(0x4);
|
||||||
. = . + StackSize;
|
. = . + HeapSize;
|
||||||
. = ALIGN(0x4);
|
. = ALIGN(0x4);
|
||||||
} > dtcm_memory
|
} > dtcm_memory
|
||||||
|
|
||||||
/* Set stack top to end of RAM, and stack limit move down by
|
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
|
||||||
* size of stack_dummy section */
|
_HeapSize = HeapSize;
|
||||||
__StackTop = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory);
|
|
||||||
PROVIDE( __freertos_irq_stack_top = __StackTop);
|
|
||||||
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
|
|
||||||
|
|
||||||
/* Check if data + heap + stack exceeds RAM limit */
|
/* Check if data + heap + stack exceeds RAM limit */
|
||||||
ASSERT(__StackLimit >= __tcm_data_end__, "region RAM overflowed with stack")
|
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* .stack_dummy section doesn't contains any symbols. It is only
|
/* .stack_dummy section doesn't contains any symbols. It is only
|
||||||
@@ -315,16 +311,17 @@ SECTIONS
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__HeapBase = .;
|
__HeapBase = .;
|
||||||
|
|
||||||
|
/*__end__ = .;*/
|
||||||
|
/*end = __end__;*/
|
||||||
KEEP(*(.heap*))
|
KEEP(*(.heap*))
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__HeapLimit = .;
|
__HeapLimit = .;
|
||||||
} > ram_memory
|
} > ram_memory
|
||||||
|
|
||||||
PROVIDE (__heap_min_size = 0x400);
|
|
||||||
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
|
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
|
||||||
|
|
||||||
ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
|
PROVIDE( _heap_start = ORIGIN(ram2_memory) );
|
||||||
|
PROVIDE( _heap_size = LENGTH(ram2_memory) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,8 +44,7 @@
|
|||||||
#define BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1001, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
#define BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1001, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1002, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
#define BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1002, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_BUILD BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1003, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
#define BT_UUID_CHAR_BLE_LIVE_BUILD BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1003, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_DEV_SN BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1004, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
#define BT_UUID_CHAR_BLE_LIVE_DEV_ID BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1004, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_DEV_ID BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1005, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include "ble_handlers.h"
|
#include "ble_handlers.h"
|
||||||
#include "pd.h"
|
#include "pd.h"
|
||||||
#include "power.hpp"
|
#include "power.hpp"
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
#include "USBPD.h"
|
#include "USBPD.h"
|
||||||
#include "pd.h"
|
#include "pd.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -136,7 +136,6 @@ int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_att
|
|||||||
MSG((char *)"Unhandled attr read %d | %d\n", (uint32_t)attr->uuid, uuid_value);
|
MSG((char *)"Unhandled attr read %d | %d\n", (uint32_t)attr->uuid, uuid_value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
||||||
if (attr == NULL || attr->uuid == NULL) {
|
if (attr == NULL || attr->uuid == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -185,23 +184,13 @@ int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt
|
|||||||
memcpy(buf, &BUILD_VERSION, sizeof(BUILD_VERSION) - 1);
|
memcpy(buf, &BUILD_VERSION, sizeof(BUILD_VERSION) - 1);
|
||||||
return sizeof(BUILD_VERSION) - 1;
|
return sizeof(BUILD_VERSION) - 1;
|
||||||
case 4:
|
case 4:
|
||||||
// Device serial number.
|
// Device unique id
|
||||||
// Serial number is the ID burned by manufacturer.
|
|
||||||
// In case of Pinecil V2, device SN = device MAC.
|
|
||||||
{
|
{
|
||||||
uint64_t sn = getDeviceID();
|
uint64_t id = getDeviceID();
|
||||||
memcpy(buf, &sn, sizeof(sn));
|
|
||||||
return sizeof(sn);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
// Device ID [https://github.com/Ralim/IronOS/issues/1609].
|
|
||||||
// ID is a unique key Pine burns at the factory and records in their db.
|
|
||||||
{
|
|
||||||
uint32_t id = getDeviceValidation();
|
|
||||||
memcpy(buf, &id, sizeof(id));
|
memcpy(buf, &id, sizeof(id));
|
||||||
return sizeof(id);
|
return sizeof(id);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -287,7 +276,7 @@ uint32_t getPowerSrc() {
|
|||||||
// We are not powered via DC, so want to display the appropriate state for PD or QC
|
// We are not powered via DC, so want to display the appropriate state for PD or QC
|
||||||
bool poweredbyPD = false;
|
bool poweredbyPD = false;
|
||||||
bool pdHasVBUSConnected = false;
|
bool pdHasVBUSConnected = false;
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
if (USBPowerDelivery::fusbPresent()) {
|
if (USBPowerDelivery::fusbPresent()) {
|
||||||
// We are PD capable
|
// We are PD capable
|
||||||
if (USBPowerDelivery::negotiationComplete()) {
|
if (USBPowerDelivery::negotiationComplete()) {
|
||||||
|
|||||||
@@ -164,7 +164,6 @@ static struct bt_gatt_attr ble_attrs_declaration[] = {
|
|||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BUILD, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BUILD, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_DEV_SN, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_DEV_ID, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_DEV_ID, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
|
|
||||||
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_SETTINGS_DATA),
|
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_SETTINGS_DATA),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
/**
|
/**
|
||||||
* Configuration.h
|
* Configuration.h
|
||||||
* Define here your default pre settings for Pinecilv2
|
* Define here your default pre settings for Pinecil
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
#define POWER_PULSE_DEFAULT 0
|
#define POWER_PULSE_DEFAULT 0
|
||||||
#else
|
#else
|
||||||
#define POWER_PULSE_DEFAULT 5
|
#define POWER_PULSE_DEFAULT 5
|
||||||
#endif /* Pinecil */
|
#endif
|
||||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
#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
|
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||||
|
|
||||||
@@ -146,7 +146,6 @@
|
|||||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||||
#define DEVICE_HAS_VALIDATION_CODE // We have 2 digit validations
|
#define DEVICE_HAS_VALIDATION_CODE // We have 2 digit validations
|
||||||
#define POW_PD 1 // Supported features
|
#define POW_PD 1 // Supported features
|
||||||
#define POW_PD_EXT 0 // Future-proof macro for other models with other PD modes
|
|
||||||
#define POW_QC 1 // Supported features
|
#define POW_QC 1 // Supported features
|
||||||
#define POW_DC 1 // Supported features
|
#define POW_DC 1 // Supported features
|
||||||
#define POW_QC_20V 1 // Supported features
|
#define POW_QC_20V 1 // Supported features
|
||||||
@@ -164,11 +163,8 @@
|
|||||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
||||||
#define BLE_ENABLED
|
#define BLE_ENABLED
|
||||||
#define NEEDS_VBUS_PROBE 0
|
#define NEEDS_VBUS_PROBE 0
|
||||||
#define CANT_DIRECT_READ_SETTINGS
|
|
||||||
#endif /* Pinecilv2 */
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FLASH_LOGOADDR (0x23000000 + (1022 * 1024))
|
#define FLASH_LOGOADDR (0x23000000 + (1022 * 1024))
|
||||||
#define FLASH_PAGE_SIZE (1024)
|
|
||||||
#define SETTINGS_START_PAGE (1023 * FLASH_PAGE_SIZE) // Hal auto offsets base addr
|
|
||||||
|
|
||||||
#endif /* CONFIGURATION_H_ */
|
|
||||||
|
|||||||
@@ -10,6 +10,10 @@
|
|||||||
#include "hal_flash.h"
|
#include "hal_flash.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
|
#define FLASH_PAGE_SIZE (1024)
|
||||||
|
|
||||||
|
#define SETTINGS_START_PAGE (1023 * FLASH_PAGE_SIZE) // Hal auto offsets base addr
|
||||||
|
|
||||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||||
BL_Err_Type err = flash_erase(SETTINGS_START_PAGE, FLASH_PAGE_SIZE);
|
BL_Err_Type err = flash_erase(SETTINGS_START_PAGE, FLASH_PAGE_SIZE);
|
||||||
err = flash_write(SETTINGS_START_PAGE, buffer, length);
|
err = flash_write(SETTINGS_START_PAGE, buffer, length);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#ifdef POW_PD
|
#if POW_PD
|
||||||
#include "BSP.h"
|
#include "BSP.h"
|
||||||
#include "I2C_Wrapper.hpp"
|
#include "I2C_Wrapper.hpp"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
|
|||||||
@@ -1,239 +0,0 @@
|
|||||||
// BSP mapping functions
|
|
||||||
|
|
||||||
#include "BSP.h"
|
|
||||||
#include "HUB238.hpp"
|
|
||||||
#include "I2C_Wrapper.hpp"
|
|
||||||
#include "Pins.h"
|
|
||||||
#include "Setup.h"
|
|
||||||
#include "TipThermoModel.h"
|
|
||||||
#include "configuration.h"
|
|
||||||
#include "history.hpp"
|
|
||||||
#include "main.hpp"
|
|
||||||
#include <IRQ.h>
|
|
||||||
|
|
||||||
volatile uint16_t PWMSafetyTimer = 0;
|
|
||||||
volatile uint8_t pendingPWM = 0;
|
|
||||||
const uint16_t powerPWM = 255;
|
|
||||||
static const uint8_t holdoffTicks = 15; // delay of 8 ish ms
|
|
||||||
static const uint8_t tempMeasureTicks = 15;
|
|
||||||
|
|
||||||
uint16_t totalPWM = powerPWM + tempMeasureTicks + holdoffTicks; // htim2.Init.Period, the full PWM cycle
|
|
||||||
|
|
||||||
void resetWatchdog() { HAL_IWDG_Refresh(&hiwdg); }
|
|
||||||
// Lookup table for the NTC
|
|
||||||
// We dont know exact specs, but it loooks to be roughly a 10K B=4000 NTC
|
|
||||||
// Stored as ADCReading,Temp in degC
|
|
||||||
static const uint16_t NTCHandleLookup[] = {
|
|
||||||
// ADC Reading , Temp in C
|
|
||||||
23931, 0, //
|
|
||||||
23210, 2, //
|
|
||||||
22466, 4, //
|
|
||||||
21703, 6, //
|
|
||||||
20924, 8, //
|
|
||||||
20135, 10, //
|
|
||||||
19338, 12, //
|
|
||||||
18538, 14, //
|
|
||||||
17738, 16, //
|
|
||||||
16943, 18, //
|
|
||||||
16156, 20, //
|
|
||||||
15381, 22, //
|
|
||||||
14621, 24, //
|
|
||||||
13878, 26, //
|
|
||||||
13155, 28, //
|
|
||||||
12455, 30, //
|
|
||||||
11778, 32, //
|
|
||||||
11126, 34, //
|
|
||||||
10501, 36, //
|
|
||||||
9902, 38, //
|
|
||||||
9330, 40, //
|
|
||||||
8786, 42, //
|
|
||||||
8269, 44, //
|
|
||||||
};
|
|
||||||
|
|
||||||
uint16_t getHandleTemperature(uint8_t sample) {
|
|
||||||
int32_t result = getADCHandleTemp(sample);
|
|
||||||
// S60 uses 10k NTC resistor
|
|
||||||
// For now not doing interpolation
|
|
||||||
for (uint32_t i = 0; i < (sizeof(NTCHandleLookup) / (2 * sizeof(uint16_t))); i++) {
|
|
||||||
if (result > NTCHandleLookup[(i * 2) + 0]) {
|
|
||||||
return NTCHandleLookup[(i * 2) + 1] * 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 45 * 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) {
|
|
||||||
// ADC maximum is 32767 == 3.3V at input == 28.05V at VIN
|
|
||||||
// Therefore we can divide down from there
|
|
||||||
// Multiplying ADC max by 4 for additional calibration options,
|
|
||||||
// ideal term is 467
|
|
||||||
uint32_t res = getADCVin(sample);
|
|
||||||
res *= 4;
|
|
||||||
res /= divisor;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void switchToFastPWM(void) {
|
|
||||||
// 20Hz
|
|
||||||
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
|
|
||||||
htim2.Instance->ARR = totalPWM;
|
|
||||||
htim2.Instance->CCR1 = powerPWM + holdoffTicks;
|
|
||||||
htim2.Instance->CCR4 = powerPWM;
|
|
||||||
htim2.Instance->PSC = 1500;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
|
||||||
PWMSafetyTimer = 20; // This is decremented in the handler for PWM so that the tip pwm is
|
|
||||||
// disabled if the PID task is not scheduled often enough.
|
|
||||||
pendingPWM = pulse;
|
|
||||||
}
|
|
||||||
// These are called by the HAL after the corresponding events from the system
|
|
||||||
// timers.
|
|
||||||
|
|
||||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
|
||||||
// Period has elapsed
|
|
||||||
if (htim->Instance == TIM2) {
|
|
||||||
// we want to turn on the output again
|
|
||||||
PWMSafetyTimer--;
|
|
||||||
// We decrement this safety value so that lockups in the
|
|
||||||
// scheduler will not cause the PWM to become locked in an
|
|
||||||
// active driving state.
|
|
||||||
// While we could assume this could never happen, its a small price for
|
|
||||||
// increased safety
|
|
||||||
if (PWMSafetyTimer == 0) {
|
|
||||||
htim4.Instance->CCR3 = 0;
|
|
||||||
} else {
|
|
||||||
htim4.Instance->CCR3 = pendingPWM;
|
|
||||||
}
|
|
||||||
} else if (htim->Instance == TIM1) {
|
|
||||||
// STM uses this for internal functions as a counter for timeouts
|
|
||||||
HAL_IncTick();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
|
|
||||||
// This was a when the PWM for the output has timed out
|
|
||||||
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) {
|
|
||||||
// HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_3);
|
|
||||||
htim4.Instance->CCR3 = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void unstick_I2C() {
|
|
||||||
#ifdef SCL_Pin
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
|
||||||
int timeout = 100;
|
|
||||||
int timeout_cnt = 0;
|
|
||||||
|
|
||||||
// 1. Clear PE bit.
|
|
||||||
hi2c1.Instance->CR1 &= ~(0x0001);
|
|
||||||
/**I2C1 GPIO Configuration
|
|
||||||
PB6 ------> I2C1_SCL
|
|
||||||
PB7 ------> I2C1_SDA
|
|
||||||
*/
|
|
||||||
// 2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level (Write 1 to GPIOx_ODR).
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = SCL_Pin;
|
|
||||||
HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET);
|
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = SDA_Pin;
|
|
||||||
HAL_GPIO_Init(SDA_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
|
|
||||||
|
|
||||||
while (GPIO_PIN_SET != HAL_GPIO_ReadPin(SDA_GPIO_Port, SDA_Pin)) {
|
|
||||||
// Move clock to release I2C
|
|
||||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_RESET);
|
|
||||||
asm("nop");
|
|
||||||
asm("nop");
|
|
||||||
asm("nop");
|
|
||||||
asm("nop");
|
|
||||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET);
|
|
||||||
|
|
||||||
timeout_cnt++;
|
|
||||||
if (timeout_cnt > timeout)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 12. Configure the SCL and SDA I/Os as Alternate function Open-Drain.
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = SCL_Pin;
|
|
||||||
HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = SDA_Pin;
|
|
||||||
HAL_GPIO_Init(SDA_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
|
|
||||||
|
|
||||||
// 13. Set SWRST bit in I2Cx_CR1 register.
|
|
||||||
hi2c1.Instance->CR1 |= 0x8000;
|
|
||||||
|
|
||||||
asm("nop");
|
|
||||||
|
|
||||||
// 14. Clear SWRST bit in I2Cx_CR1 register.
|
|
||||||
hi2c1.Instance->CR1 &= ~0x8000;
|
|
||||||
|
|
||||||
asm("nop");
|
|
||||||
|
|
||||||
// 15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register
|
|
||||||
hi2c1.Instance->CR1 |= 0x0001;
|
|
||||||
|
|
||||||
// Call initialization function.
|
|
||||||
HAL_I2C_Init(&hi2c1);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getButtonA() { return HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
|
||||||
uint8_t getButtonB() { return HAL_GPIO_ReadPin(KEY_B_GPIO_Port, KEY_B_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
|
||||||
|
|
||||||
void BSPInit(void) { switchToFastPWM(); }
|
|
||||||
|
|
||||||
void reboot() { NVIC_SystemReset(); }
|
|
||||||
|
|
||||||
void delay_ms(uint16_t count) { HAL_Delay(count); }
|
|
||||||
|
|
||||||
bool isTipDisconnected() {
|
|
||||||
|
|
||||||
uint16_t tipDisconnectedThres = TipThermoModel::getTipMaxInC() - 5;
|
|
||||||
uint32_t tipTemp = TipThermoModel::getTipInC();
|
|
||||||
return tipTemp > tipDisconnectedThres;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setStatusLED(const enum StatusLED state) {}
|
|
||||||
uint8_t preStartChecks() {
|
|
||||||
if (!hub238_has_run_selection()) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
// We check if we are in a "Limited" mode; where we have to run the PWM really fast
|
|
||||||
// Where as if we are on 9V for example, the tip resistance is enough
|
|
||||||
uint16_t voltage = hub238_source_voltage();
|
|
||||||
uint16_t currentx100 = hub238_source_currentX100();
|
|
||||||
uint16_t thresholdResistancex10 = ((voltage * 1000) / currentx100) + 5;
|
|
||||||
|
|
||||||
if (getTipResistanceX10() <= thresholdResistancex10) {
|
|
||||||
// We are limited by resistance, not our current limiting, we can slow down PWM to avoid audible noise
|
|
||||||
htim4.Instance->PSC = 50; // 10 -> 500 removes audible noise
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1; // We are done now
|
|
||||||
}
|
|
||||||
uint64_t getDeviceID() {
|
|
||||||
//
|
|
||||||
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
|
||||||
|
|
||||||
uint8_t preStartChecksDone() { return 1; }
|
|
||||||
|
|
||||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
|
||||||
uint8_t getTipInertia() { return TIP_THERMAL_INERTIA; }
|
|
||||||
|
|
||||||
void setBuzzer(bool on) {}
|
|
||||||
@@ -1,180 +0,0 @@
|
|||||||
/*
|
|
||||||
FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
|
|
||||||
All rights reserved
|
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
|
||||||
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
|
||||||
|
|
||||||
***************************************************************************
|
|
||||||
>>! NOTE: The modification to the GPL is included to allow you to !<<
|
|
||||||
>>! distribute a combined work that includes FreeRTOS without being !<<
|
|
||||||
>>! obliged to provide the source code for proprietary components !<<
|
|
||||||
>>! outside of the FreeRTOS kernel. !<<
|
|
||||||
***************************************************************************
|
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE. Full license text is available on the following
|
|
||||||
link: http://www.freertos.org/a00114.html
|
|
||||||
|
|
||||||
***************************************************************************
|
|
||||||
* *
|
|
||||||
* FreeRTOS provides completely free yet professionally developed, *
|
|
||||||
* robust, strictly quality controlled, supported, and cross *
|
|
||||||
* platform software that is more than just the market leader, it *
|
|
||||||
* is the industry's de facto standard. *
|
|
||||||
* *
|
|
||||||
* Help yourself get started quickly while simultaneously helping *
|
|
||||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
|
||||||
* tutorial book, reference manual, or both: *
|
|
||||||
* http://www.FreeRTOS.org/Documentation *
|
|
||||||
* *
|
|
||||||
***************************************************************************
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
|
||||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
|
||||||
defined configASSERT()?
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
|
||||||
embedded software for free we request you assist our global community by
|
|
||||||
participating in the support forum.
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
|
||||||
be as productive as possible as early as possible. Now you can receive
|
|
||||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
|
||||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
|
||||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
|
||||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
|
||||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
|
||||||
licenses offer ticketed support, indemnification and commercial middleware.
|
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
|
||||||
mission critical applications that require provable dependability.
|
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef FREERTOS_CONFIG_H
|
|
||||||
#define FREERTOS_CONFIG_H
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
|
||||||
* Application specific definitions.
|
|
||||||
*
|
|
||||||
* These definitions should be adjusted for your particular hardware and
|
|
||||||
* application requirements.
|
|
||||||
*
|
|
||||||
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
|
||||||
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
|
||||||
*
|
|
||||||
* See http://www.freertos.org/a00110.html.
|
|
||||||
*----------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Ensure stdint is only used by the compiler, and not the assembler. */
|
|
||||||
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
|
|
||||||
#include <stdint.h>
|
|
||||||
extern uint32_t SystemCoreClock;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define configUSE_PREEMPTION 1
|
|
||||||
#define configSUPPORT_STATIC_ALLOCATION 1
|
|
||||||
#define configSUPPORT_DYNAMIC_ALLOCATION 0
|
|
||||||
#define configUSE_IDLE_HOOK 1
|
|
||||||
#define configUSE_TICK_HOOK 0
|
|
||||||
#define configCPU_CLOCK_HZ (SystemCoreClock)
|
|
||||||
#define configTICK_RATE_HZ (1000)
|
|
||||||
#define configMAX_PRIORITIES (6)
|
|
||||||
#define configMINIMAL_STACK_SIZE ((uint16_t)256)
|
|
||||||
#define configTOTAL_HEAP_SIZE ((size_t)1024 * 14) /*Currently use about 9000*/
|
|
||||||
#define configMAX_TASK_NAME_LEN (32)
|
|
||||||
#define configUSE_16_BIT_TICKS 0
|
|
||||||
#define configUSE_MUTEXES 1
|
|
||||||
#define configQUEUE_REGISTRY_SIZE 8
|
|
||||||
#define configUSE_TIMERS 0
|
|
||||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
|
||||||
#define configCHECK_FOR_STACK_OVERFLOW 2 /*Bump this to 2 during development and bug hunting*/
|
|
||||||
|
|
||||||
/* Co-routine definitions. */
|
|
||||||
#define configUSE_CO_ROUTINES 0
|
|
||||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
|
||||||
|
|
||||||
/* Set the following definitions to 1 to include the API function, or zero
|
|
||||||
to exclude the API function. */
|
|
||||||
#define INCLUDE_vTaskPrioritySet 1
|
|
||||||
#define INCLUDE_uxTaskPriorityGet 0
|
|
||||||
#define INCLUDE_vTaskDelete 0
|
|
||||||
#define INCLUDE_vTaskCleanUpResources 0
|
|
||||||
#define INCLUDE_vTaskSuspend 0
|
|
||||||
#define INCLUDE_vTaskDelayUntil 1
|
|
||||||
#define INCLUDE_vTaskDelay 1
|
|
||||||
#define INCLUDE_xTaskGetSchedulerState 1
|
|
||||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
|
||||||
|
|
||||||
/* Cortex-M specific definitions. */
|
|
||||||
#ifdef __NVIC_PRIO_BITS
|
|
||||||
/* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
|
|
||||||
#define configPRIO_BITS __NVIC_PRIO_BITS
|
|
||||||
#else
|
|
||||||
#define configPRIO_BITS 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The lowest interrupt priority that can be used in a call to a "set priority"
|
|
||||||
function. */
|
|
||||||
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15
|
|
||||||
|
|
||||||
/* The highest interrupt priority that can be used by any interrupt service
|
|
||||||
routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL
|
|
||||||
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
|
|
||||||
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
|
|
||||||
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
|
|
||||||
|
|
||||||
/* Interrupt priorities used by the kernel port layer itself. These are generic
|
|
||||||
to all Cortex-M ports, and do not rely on any particular library functions. */
|
|
||||||
#define configKERNEL_INTERRUPT_PRIORITY (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
|
|
||||||
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
|
|
||||||
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
|
|
||||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
|
|
||||||
|
|
||||||
/* Normal assert() semantics without relying on the provision of an assert.h
|
|
||||||
header file. */
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
#define configASSERT(x) \
|
|
||||||
if ((x) == 0) { \
|
|
||||||
taskDISABLE_INTERRUPTS(); \
|
|
||||||
for (;;) \
|
|
||||||
; \
|
|
||||||
}
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
|
|
||||||
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
|
|
||||||
standard names. */
|
|
||||||
#define vPortSVCHandler SVC_Handler
|
|
||||||
#define xPortPendSVHandler PendSV_Handler
|
|
||||||
|
|
||||||
#if configUSE_TIMERS
|
|
||||||
#define configTIMER_TASK_PRIORITY 2
|
|
||||||
#define configTIMER_QUEUE_LENGTH 8
|
|
||||||
#define configTIMER_TASK_STACK_DEPTH (512 / 4)
|
|
||||||
#endif
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* FREERTOS_CONFIG_H */
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
/*
|
|
||||||
* FRToSI2C.cpp
|
|
||||||
*
|
|
||||||
* Created on: 14Apr.,2018
|
|
||||||
* Author: Ralim
|
|
||||||
*/
|
|
||||||
#include "BSP.h"
|
|
||||||
#include "Setup.h"
|
|
||||||
#include <I2C_Wrapper.hpp>
|
|
||||||
SemaphoreHandle_t FRToSI2C::I2CSemaphore = nullptr;
|
|
||||||
StaticSemaphore_t FRToSI2C::xSemaphoreBuffer;
|
|
||||||
|
|
||||||
void FRToSI2C::CpltCallback() {
|
|
||||||
hi2c1.State = HAL_I2C_STATE_READY; // Force state reset (even if tx error)
|
|
||||||
if (I2CSemaphore) {
|
|
||||||
xSemaphoreGiveFromISR(I2CSemaphore, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size) {
|
|
||||||
|
|
||||||
if (!lock())
|
|
||||||
return false;
|
|
||||||
if (HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) {
|
|
||||||
|
|
||||||
I2C_Unstick();
|
|
||||||
unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
unlock();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
bool FRToSI2C::I2C_RegisterWrite(uint8_t address, uint8_t reg, uint8_t data) { return Mem_Write(address, reg, &data, 1); }
|
|
||||||
|
|
||||||
uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) {
|
|
||||||
uint8_t tx_data[1];
|
|
||||||
Mem_Read(add, reg, tx_data, 1);
|
|
||||||
return tx_data[0];
|
|
||||||
}
|
|
||||||
bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size) {
|
|
||||||
|
|
||||||
if (!lock())
|
|
||||||
return false;
|
|
||||||
if (HAL_I2C_Mem_Write(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) {
|
|
||||||
|
|
||||||
I2C_Unstick();
|
|
||||||
unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
unlock();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FRToSI2C::Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size) {
|
|
||||||
if (!lock())
|
|
||||||
return false;
|
|
||||||
if (HAL_I2C_Master_Transmit_IT(&hi2c1, DevAddress, pData, Size) != HAL_OK) {
|
|
||||||
I2C_Unstick();
|
|
||||||
unlock();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FRToSI2C::probe(uint16_t DevAddress) {
|
|
||||||
if (!lock())
|
|
||||||
return false;
|
|
||||||
uint8_t buffer[1];
|
|
||||||
bool worked = HAL_I2C_Mem_Read(&hi2c1, DevAddress, 0x0F, I2C_MEMADD_SIZE_8BIT, buffer, 1, 1000) == HAL_OK;
|
|
||||||
unlock();
|
|
||||||
return worked;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FRToSI2C::I2C_Unstick() { unstick_I2C(); }
|
|
||||||
|
|
||||||
void FRToSI2C::unlock() { xSemaphoreGive(I2CSemaphore); }
|
|
||||||
|
|
||||||
bool FRToSI2C::lock() { return xSemaphoreTake(I2CSemaphore, (TickType_t)50) == pdTRUE; }
|
|
||||||
|
|
||||||
bool FRToSI2C::writeRegistersBulk(const uint8_t address, const I2C_REG *registers, const uint8_t registersLength) {
|
|
||||||
for (int index = 0; index < registersLength; index++) {
|
|
||||||
if (!I2C_RegisterWrite(address, registers[index].reg, registers[index].val)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (registers[index].pause_ms)
|
|
||||||
delay_ms(registers[index].pause_ms);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* IRQ.c
|
|
||||||
*
|
|
||||||
* Created on: 30 May 2020
|
|
||||||
* Author: Ralim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "IRQ.h"
|
|
||||||
#include "Pins.h"
|
|
||||||
#include "configuration.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Catch the IRQ that says that the conversion is done on the temperature
|
|
||||||
* readings coming in Once these have come in we can unblock the PID so that it
|
|
||||||
* runs again
|
|
||||||
*/
|
|
||||||
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc) {
|
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
||||||
if (hadc == &hadc1) {
|
|
||||||
if (pidTaskNotification) {
|
|
||||||
vTaskNotifyGiveFromISR(pidTaskNotification, &xHigherPriorityTaskWoken);
|
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
|
||||||
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
|
||||||
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
|
||||||
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
|
||||||
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
|
||||||
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
|
||||||
|
|
||||||
extern osThreadId POWTaskHandle;
|
|
||||||
|
|
||||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
|
||||||
(void)GPIO_Pin;
|
|
||||||
// Notify POW thread that an irq occured
|
|
||||||
if (POWTaskHandle != nullptr) {
|
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
||||||
xTaskNotifyFromISR(POWTaskHandle, 1, eSetBits, &xHigherPriorityTaskWoken);
|
|
||||||
/* Force a context switch if xHigherPriorityTaskWoken is now set to pdTRUE.
|
|
||||||
The macro used to do this is dependent on the port and may be called
|
|
||||||
portEND_SWITCHING_ISR. */
|
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// No FUSB302 support
|
|
||||||
bool getFUS302IRQLow() { return false; }
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Irqs.h
|
|
||||||
*
|
|
||||||
* Created on: 30 May 2020
|
|
||||||
* Author: Ralim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BSP_MINIWARE_IRQ_H_
|
|
||||||
#define BSP_MINIWARE_IRQ_H_
|
|
||||||
|
|
||||||
#include "BSP.h"
|
|
||||||
#include "I2C_Wrapper.hpp"
|
|
||||||
#include "Setup.h"
|
|
||||||
#include "main.hpp"
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc);
|
|
||||||
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c);
|
|
||||||
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c);
|
|
||||||
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);
|
|
||||||
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);
|
|
||||||
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c);
|
|
||||||
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c);
|
|
||||||
void HAL_GPIO_EXTI_Callback(uint16_t);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* BSP_MINIWARE_IRQ_H_ */
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* Pins.h
|
|
||||||
*
|
|
||||||
* Created on: 29 May 2020
|
|
||||||
* Author: Ralim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BSP_MINIWARE_PINS_H_
|
|
||||||
#define BSP_MINIWARE_PINS_H_
|
|
||||||
#include "configuration.h"
|
|
||||||
|
|
||||||
#ifdef MODEL_S60
|
|
||||||
|
|
||||||
#define KEY_B_Pin GPIO_PIN_1
|
|
||||||
#define KEY_B_GPIO_Port GPIOB
|
|
||||||
#define TMP36_INPUT_Pin GPIO_PIN_5
|
|
||||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
|
||||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_5
|
|
||||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_5
|
|
||||||
#define TIP_TEMP_Pin GPIO_PIN_0
|
|
||||||
#define TIP_TEMP_GPIO_Port GPIOA
|
|
||||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_0
|
|
||||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_0
|
|
||||||
#define VIN_Pin GPIO_PIN_4
|
|
||||||
#define VIN_GPIO_Port GPIOA
|
|
||||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_4
|
|
||||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_4
|
|
||||||
#define KEY_A_Pin GPIO_PIN_0
|
|
||||||
#define KEY_A_GPIO_Port GPIOB
|
|
||||||
#define PWM_Out_Pin GPIO_PIN_8
|
|
||||||
#define PWM_Out_GPIO_Port GPIOB
|
|
||||||
#define PWM_Out_CHANNEL TIM_CHANNEL_3 // Timer 4; channel 3
|
|
||||||
#define SCL2_Pin GPIO_PIN_6
|
|
||||||
#define SCL2_GPIO_Port GPIOB
|
|
||||||
#define SDA2_Pin GPIO_PIN_7
|
|
||||||
#define SDA2_GPIO_Port GPIOB
|
|
||||||
// Pin gets pulled high on movement
|
|
||||||
#define MOVEMENT_Pin GPIO_PIN_3
|
|
||||||
#define MOVEMENT_GPIO_Port GPIOA
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* BSP_MINIWARE_PINS_H_ */
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#include "BSP.h"
|
|
||||||
#include "BSP_Power.h"
|
|
||||||
#include "Pins.h"
|
|
||||||
#include "QC3.h"
|
|
||||||
#include "Settings.h"
|
|
||||||
#include "USBPD.h"
|
|
||||||
#include "configuration.h"
|
|
||||||
|
|
||||||
void power_check() {
|
|
||||||
#ifdef POW_PD
|
|
||||||
// Cant start QC until either PD works or fails
|
|
||||||
if (!USBPowerDelivery::negotiationComplete()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (USBPowerDelivery::negotiationHasWorked()) {
|
|
||||||
return; // We are using PD
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef POW_QC
|
|
||||||
QC_resync();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getIsPoweredByDCIN() { return false; }
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
# BSP section for STM32F103 based Miniware products
|
|
||||||
|
|
||||||
This folder contains the hardware abstractions required for the TS100, TS80 and probably TS80P soldering irons.
|
|
||||||
|
|
||||||
## Main abstractions
|
|
||||||
|
|
||||||
* Hardware Init
|
|
||||||
* -> Should contain all bootstrap to bring the hardware up to an operating point
|
|
||||||
* -> Two functions are required, a pre and post FreeRToS call
|
|
||||||
* I2C read/write
|
|
||||||
* Set PWM for the tip
|
|
||||||
* Links between IRQ's on the system and the calls in the rest of the firmware
|
|
||||||
@@ -1,458 +0,0 @@
|
|||||||
/*
|
|
||||||
* Setup.c
|
|
||||||
*
|
|
||||||
* Created on: 29Aug.,2017
|
|
||||||
* Author: Ben V. Brown
|
|
||||||
*/
|
|
||||||
#include "Setup.h"
|
|
||||||
#include "BSP.h"
|
|
||||||
#include "Pins.h"
|
|
||||||
#include "history.hpp"
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h>
|
|
||||||
ADC_HandleTypeDef hadc1;
|
|
||||||
ADC_HandleTypeDef hadc2;
|
|
||||||
DMA_HandleTypeDef hdma_adc1;
|
|
||||||
|
|
||||||
I2C_HandleTypeDef hi2c1;
|
|
||||||
DMA_HandleTypeDef hdma_i2c1_rx;
|
|
||||||
DMA_HandleTypeDef hdma_i2c1_tx;
|
|
||||||
|
|
||||||
IWDG_HandleTypeDef hiwdg;
|
|
||||||
TIM_HandleTypeDef htim4; // Tip control
|
|
||||||
TIM_HandleTypeDef htim2; // ADC Scheduling
|
|
||||||
#define ADC_FILTER_LEN 4
|
|
||||||
#define ADC_SAMPLES 16
|
|
||||||
uint16_t ADCReadings[ADC_SAMPLES]; // Used to store the adc readings for the handle cold junction temp
|
|
||||||
|
|
||||||
// Functions
|
|
||||||
static void SystemClock_Config(void);
|
|
||||||
static void MX_ADC1_Init(void);
|
|
||||||
static void MX_I2C1_Init(void);
|
|
||||||
static void MX_IWDG_Init(void);
|
|
||||||
static void MX_TIM4_Init(void); // Tip control
|
|
||||||
static void MX_TIM2_Init(void); // ADC Scheduling
|
|
||||||
static void MX_DMA_Init(void);
|
|
||||||
static void MX_GPIO_Init(void);
|
|
||||||
static void MX_ADC2_Init(void);
|
|
||||||
void Setup_HAL() {
|
|
||||||
__HAL_RCC_I2C1_CLK_DISABLE();
|
|
||||||
__HAL_RCC_GPIOD_CLK_DISABLE();
|
|
||||||
__HAL_RCC_GPIOA_CLK_DISABLE();
|
|
||||||
__HAL_RCC_GPIOB_CLK_DISABLE();
|
|
||||||
SystemClock_Config();
|
|
||||||
|
|
||||||
// These are not shared so no harm enabling
|
|
||||||
__HAL_AFIO_REMAP_SWJ_NOJTAG();
|
|
||||||
#ifdef SCL_Pin
|
|
||||||
MX_I2C1_Init();
|
|
||||||
#endif
|
|
||||||
MX_GPIO_Init();
|
|
||||||
MX_DMA_Init();
|
|
||||||
MX_ADC1_Init();
|
|
||||||
MX_ADC2_Init();
|
|
||||||
|
|
||||||
MX_TIM4_Init();
|
|
||||||
MX_TIM2_Init();
|
|
||||||
MX_IWDG_Init();
|
|
||||||
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADCReadings, (ADC_SAMPLES)); // start DMA of normal readings
|
|
||||||
HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
|
|
||||||
HAL_ADCEx_InjectedStart(&hadc2); // enable injected readings
|
|
||||||
|
|
||||||
// Setup movement pin
|
|
||||||
{
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
|
||||||
GPIO_InitStruct.Pin = MOVEMENT_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // We would like sharp rising edges
|
|
||||||
HAL_GPIO_Init(MOVEMENT_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t getADCHandleTemp(uint8_t sample) {
|
|
||||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
|
||||||
if (sample) {
|
|
||||||
uint32_t sum = 0;
|
|
||||||
for (uint8_t i = 0; i < ADC_SAMPLES; i++) {
|
|
||||||
sum += ADCReadings[i];
|
|
||||||
}
|
|
||||||
filter.update(sum);
|
|
||||||
}
|
|
||||||
return filter.average() >> 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t getADCVin(uint8_t sample) {
|
|
||||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
|
||||||
if (sample) {
|
|
||||||
uint16_t latestADC = 0;
|
|
||||||
|
|
||||||
latestADC += hadc2.Instance->JDR1;
|
|
||||||
latestADC += hadc2.Instance->JDR2;
|
|
||||||
latestADC += hadc2.Instance->JDR3;
|
|
||||||
latestADC += hadc2.Instance->JDR4;
|
|
||||||
latestADC <<= 3;
|
|
||||||
filter.update(latestADC);
|
|
||||||
}
|
|
||||||
return filter.average();
|
|
||||||
}
|
|
||||||
// Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned
|
|
||||||
uint16_t getTipRawTemp(uint8_t sample) {
|
|
||||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
|
||||||
if (sample) {
|
|
||||||
uint16_t latestADC = 0;
|
|
||||||
|
|
||||||
latestADC += hadc1.Instance->JDR1;
|
|
||||||
latestADC += hadc1.Instance->JDR2;
|
|
||||||
latestADC += hadc1.Instance->JDR3;
|
|
||||||
latestADC += hadc1.Instance->JDR4;
|
|
||||||
latestADC <<= 1;
|
|
||||||
filter.update(latestADC);
|
|
||||||
return latestADC;
|
|
||||||
}
|
|
||||||
return filter.average();
|
|
||||||
}
|
|
||||||
/** System Clock Configuration
|
|
||||||
*/
|
|
||||||
void SystemClock_Config(void) {
|
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct;
|
|
||||||
RCC_ClkInitTypeDef RCC_ClkInitStruct;
|
|
||||||
RCC_PeriphCLKInitTypeDef PeriphClkInit;
|
|
||||||
|
|
||||||
/**Initializes the CPU, AHB and APB busses clocks
|
|
||||||
*/
|
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI;
|
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
|
||||||
RCC_OscInitStruct.HSICalibrationValue = 16;
|
|
||||||
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
|
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
|
||||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
|
|
||||||
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16; // 64MHz
|
|
||||||
HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
|
||||||
|
|
||||||
/**Initializes the CPU, AHB and APB busses clocks
|
|
||||||
*/
|
|
||||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
|
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV16; // TIM
|
|
||||||
// 2,3,4,5,6,7,12,13,14
|
|
||||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 64 mhz to some peripherals and adc
|
|
||||||
|
|
||||||
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
|
|
||||||
|
|
||||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
|
|
||||||
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; // 6 or 8 are the only non overclocked options
|
|
||||||
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
|
|
||||||
|
|
||||||
/**Configure the Systick interrupt time
|
|
||||||
*/
|
|
||||||
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000);
|
|
||||||
|
|
||||||
/**Configure the Systick
|
|
||||||
*/
|
|
||||||
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
|
|
||||||
|
|
||||||
/* SysTick_IRQn interrupt configuration */
|
|
||||||
HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ADC1 init function */
|
|
||||||
static void MX_ADC1_Init(void) {
|
|
||||||
|
|
||||||
ADC_ChannelConfTypeDef sConfig;
|
|
||||||
ADC_InjectionConfTypeDef sConfigInjected;
|
|
||||||
/**Common config
|
|
||||||
*/
|
|
||||||
hadc1.Instance = ADC1;
|
|
||||||
hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
|
|
||||||
hadc1.Init.ContinuousConvMode = ENABLE;
|
|
||||||
hadc1.Init.DiscontinuousConvMode = DISABLE;
|
|
||||||
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
|
||||||
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
|
||||||
hadc1.Init.NbrOfConversion = 1;
|
|
||||||
HAL_ADC_Init(&hadc1);
|
|
||||||
|
|
||||||
/**Configure Regular Channel
|
|
||||||
*/
|
|
||||||
sConfig.Channel = TMP36_ADC1_CHANNEL;
|
|
||||||
sConfig.Rank = ADC_REGULAR_RANK_1;
|
|
||||||
sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5;
|
|
||||||
HAL_ADC_ConfigChannel(&hadc1, &sConfig);
|
|
||||||
|
|
||||||
/**Configure Injected Channel
|
|
||||||
*/
|
|
||||||
// F in = 10.66 MHz
|
|
||||||
/*
|
|
||||||
* Injected time is 1 delay clock + (12 adc cycles*4)+4*sampletime =~217
|
|
||||||
* clocks = 0.2ms Charge time is 0.016 uS ideally So Sampling time must be >=
|
|
||||||
* 0.016uS 1/10.66MHz is 0.09uS, so 1 CLK is *should* be enough
|
|
||||||
* */
|
|
||||||
sConfigInjected.InjectedChannel = TIP_TEMP_ADC1_CHANNEL;
|
|
||||||
sConfigInjected.InjectedRank = 1;
|
|
||||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
|
||||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
|
||||||
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
|
||||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
|
||||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
|
||||||
sConfigInjected.InjectedOffset = 0;
|
|
||||||
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
|
||||||
sConfigInjected.InjectedRank = 2;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
|
||||||
sConfigInjected.InjectedRank = 3;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
|
||||||
sConfigInjected.InjectedRank = 4;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
|
||||||
SET_BIT(hadc1.Instance->CR1, (ADC_CR1_JEOCIE)); // Enable end of injected conv irq
|
|
||||||
// Run ADC internal calibration
|
|
||||||
while (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ADC2 init function */
|
|
||||||
static void MX_ADC2_Init(void) {
|
|
||||||
ADC_InjectionConfTypeDef sConfigInjected;
|
|
||||||
|
|
||||||
/**Common config
|
|
||||||
*/
|
|
||||||
hadc2.Instance = ADC2;
|
|
||||||
hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
|
|
||||||
hadc2.Init.ContinuousConvMode = ENABLE;
|
|
||||||
hadc2.Init.DiscontinuousConvMode = DISABLE;
|
|
||||||
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
|
||||||
hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
|
||||||
hadc2.Init.NbrOfConversion = 0;
|
|
||||||
HAL_ADC_Init(&hadc2);
|
|
||||||
|
|
||||||
/**Configure Injected Channel
|
|
||||||
*/
|
|
||||||
sConfigInjected.InjectedChannel = VIN_ADC2_CHANNEL;
|
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
|
|
||||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
|
||||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
|
||||||
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
|
||||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
|
||||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
|
||||||
sConfigInjected.InjectedOffset = 0;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
|
||||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_4;
|
|
||||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
|
||||||
|
|
||||||
// Run ADC internal calibration
|
|
||||||
while (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
/* I2C1 init function */
|
|
||||||
static void MX_I2C1_Init(void) {
|
|
||||||
hi2c1.Instance = I2C1;
|
|
||||||
hi2c1.Init.ClockSpeed = 200000;
|
|
||||||
// OLED doesnt handle >100k when its asleep (off).
|
|
||||||
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_16_9;
|
|
||||||
hi2c1.Init.OwnAddress1 = 0;
|
|
||||||
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
|
|
||||||
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
|
|
||||||
hi2c1.Init.OwnAddress2 = 0;
|
|
||||||
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
|
|
||||||
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
|
|
||||||
__HAL_I2C_DISABLE(&hi2c1);
|
|
||||||
|
|
||||||
__HAL_RCC_I2C1_CLK_ENABLE();
|
|
||||||
|
|
||||||
// 13. Set SWRST bit in I2Cx_CR1 register.
|
|
||||||
hi2c1.Instance->CR1 |= 0x8000;
|
|
||||||
|
|
||||||
asm("nop");
|
|
||||||
|
|
||||||
// 14. Clear SWRST bit in I2Cx_CR1 register.
|
|
||||||
hi2c1.Instance->CR1 &= ~0x8000;
|
|
||||||
|
|
||||||
HAL_I2C_Init(&hi2c1);
|
|
||||||
unstick_I2C();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IWDG init function */
|
|
||||||
static void MX_IWDG_Init(void) {
|
|
||||||
hiwdg.Instance = IWDG;
|
|
||||||
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
|
|
||||||
hiwdg.Init.Reload = 2048;
|
|
||||||
#ifndef SWD_ENABLE
|
|
||||||
HAL_IWDG_Init(&hiwdg);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MX_TIM4_Init(void) {
|
|
||||||
/*
|
|
||||||
* We use the channel 1 to trigger the ADC at end of PWM period
|
|
||||||
* And we use the channel 4 as the PWM modulation source using Interrupts
|
|
||||||
* */
|
|
||||||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
|
||||||
TIM_MasterConfigTypeDef sMasterConfig;
|
|
||||||
TIM_OC_InitTypeDef sConfigOC;
|
|
||||||
memset(&sConfigOC, 0, sizeof(sConfigOC));
|
|
||||||
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
|
||||||
// in the PWM off time.
|
|
||||||
htim4.Instance = TIM4;
|
|
||||||
// dummy value, will be reconfigured by BSPInit()
|
|
||||||
htim4.Init.Prescaler = 10; // 2 MHz timer clock/1000 = 2 kHz tick rate
|
|
||||||
|
|
||||||
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
|
||||||
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
|
||||||
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
|
||||||
htim4.Init.Period = 255;
|
|
||||||
|
|
||||||
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; // 8 MHz (x2 APB1) before divide
|
|
||||||
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
|
||||||
htim4.Init.RepetitionCounter = 0;
|
|
||||||
HAL_TIM_Base_Init(&htim4);
|
|
||||||
|
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
|
||||||
HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig);
|
|
||||||
HAL_TIM_PWM_Init(&htim4);
|
|
||||||
HAL_TIM_OC_Init(&htim4);
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
|
||||||
|
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
|
||||||
sConfigOC.Pulse = 0; // default to entirely off
|
|
||||||
HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, PWM_Out_CHANNEL);
|
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
|
||||||
GPIO_InitStruct.Pin = PWM_Out_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // We would like sharp rising edges
|
|
||||||
HAL_GPIO_Init(PWM_Out_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
// HAL_NVIC_SetPriority(TIM4_IRQn, 15, 0);
|
|
||||||
// HAL_NVIC_EnableIRQ(TIM4_IRQn);
|
|
||||||
|
|
||||||
HAL_TIM_Base_Start(&htim4);
|
|
||||||
HAL_TIM_PWM_Start(&htim4, PWM_Out_CHANNEL);
|
|
||||||
}
|
|
||||||
///////////////////
|
|
||||||
static void MX_TIM2_Init(void) {
|
|
||||||
/*
|
|
||||||
* We use the channel 1 to trigger the ADC at end of PWM period
|
|
||||||
* And we use the channel 4 as the PWM modulation source using Interrupts
|
|
||||||
* */
|
|
||||||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
|
||||||
TIM_MasterConfigTypeDef sMasterConfig;
|
|
||||||
TIM_OC_InitTypeDef sConfigOC;
|
|
||||||
|
|
||||||
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
|
||||||
// in the PWM off time.
|
|
||||||
htim2.Instance = TIM2;
|
|
||||||
// dummy value, will be reconfigured by BSPInit()
|
|
||||||
htim2.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
|
|
||||||
|
|
||||||
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
|
||||||
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
|
||||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
|
||||||
// dummy value, will be reconfigured by BSPInit()
|
|
||||||
htim2.Init.Period = powerPWM + 14 * 2;
|
|
||||||
|
|
||||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
|
|
||||||
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
|
||||||
htim2.Init.RepetitionCounter = 0;
|
|
||||||
HAL_TIM_Base_Init(&htim2);
|
|
||||||
|
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
|
||||||
HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
|
|
||||||
|
|
||||||
HAL_TIM_PWM_Init(&htim2);
|
|
||||||
HAL_TIM_OC_Init(&htim2);
|
|
||||||
|
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1;
|
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
|
||||||
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
|
||||||
// dummy value, will be reconfigured by BSPInit() in the BSP.cpp
|
|
||||||
sConfigOC.Pulse = powerPWM + 14; // 13 -> Delay of 7 ms
|
|
||||||
// 255 is the largest time period of the drive signal, and then offset ADC sample to be a bit delayed after this
|
|
||||||
/*
|
|
||||||
* It takes 4 milliseconds for output to be stable after PWM turns off.
|
|
||||||
* Assume ADC samples in 0.5ms
|
|
||||||
* We need to set this to 100% + 4.5ms
|
|
||||||
* */
|
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
|
||||||
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1); // ADC Triggers
|
|
||||||
|
|
||||||
sConfigOC.Pulse = powerPWM; // Power PWM cycle time
|
|
||||||
|
|
||||||
HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4); // Output triggers
|
|
||||||
|
|
||||||
HAL_TIM_Base_Start_IT(&htim2);
|
|
||||||
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
|
|
||||||
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_4);
|
|
||||||
|
|
||||||
HAL_NVIC_SetPriority(TIM2_IRQn, 15, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Enable DMA controller clock
|
|
||||||
*/
|
|
||||||
static void MX_DMA_Init(void) {
|
|
||||||
/* DMA controller clock enable */
|
|
||||||
__HAL_RCC_DMA1_CLK_ENABLE();
|
|
||||||
|
|
||||||
/* DMA interrupt init */
|
|
||||||
/* DMA1_Channel1_IRQn interrupt configuration */
|
|
||||||
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 5, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
|
|
||||||
/* DMA1_Channel6_IRQn interrupt configuration */
|
|
||||||
HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 5, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
|
|
||||||
/* DMA1_Channel7_IRQn interrupt configuration */
|
|
||||||
HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 5, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Configure pins as
|
|
||||||
* Analog
|
|
||||||
* Input
|
|
||||||
* Output
|
|
||||||
* EVENT_OUT
|
|
||||||
* EXTI
|
|
||||||
* Free pins are configured automatically as Analog
|
|
||||||
PB0 ------> ADCx_IN8
|
|
||||||
PB1 ------> ADCx_IN9
|
|
||||||
*/
|
|
||||||
static void MX_GPIO_Init(void) {
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
|
||||||
|
|
||||||
/* GPIO Ports Clock Enable */
|
|
||||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
||||||
|
|
||||||
/*Configure peripheral I/O remapping */
|
|
||||||
__HAL_AFIO_REMAP_PD01_ENABLE();
|
|
||||||
//^ remap XTAL so that pins can be analog (all input buffers off).
|
|
||||||
// reduces power consumption
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Configure All pins as analog by default
|
|
||||||
*/
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_15;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12
|
|
||||||
| GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pins : KEY_B_Pin KEY_A_Pin */
|
|
||||||
GPIO_InitStruct.Pin = KEY_B_Pin | KEY_A_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
||||||
HAL_GPIO_Init(KEY_B_GPIO_Port, &GPIO_InitStruct);
|
|
||||||
}
|
|
||||||
#ifdef USE_FULL_ASSERT
|
|
||||||
void assert_failed(uint8_t *file, uint32_t line) { asm("bkpt"); }
|
|
||||||
#endif
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* Setup.h
|
|
||||||
*
|
|
||||||
* Created on: 29Aug.,2017
|
|
||||||
* Author: Ben V. Brown
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SETUP_H_
|
|
||||||
#define SETUP_H_
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
|
|
||||||
extern ADC_HandleTypeDef hadc1;
|
|
||||||
extern ADC_HandleTypeDef hadc2;
|
|
||||||
extern DMA_HandleTypeDef hdma_adc1;
|
|
||||||
|
|
||||||
extern DMA_HandleTypeDef hdma_i2c1_rx;
|
|
||||||
extern DMA_HandleTypeDef hdma_i2c1_tx;
|
|
||||||
extern I2C_HandleTypeDef hi2c1;
|
|
||||||
|
|
||||||
extern IWDG_HandleTypeDef hiwdg;
|
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htim4;
|
|
||||||
extern TIM_HandleTypeDef htim2;
|
|
||||||
void Setup_HAL();
|
|
||||||
uint16_t getADCHandleTemp(uint8_t sample);
|
|
||||||
uint16_t getADCVin(uint8_t sample);
|
|
||||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); // Since the hal header file does not define this one
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* SETUP_H_ */
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Software_I2C.h
|
|
||||||
*
|
|
||||||
* Created on: 25 Jul 2020
|
|
||||||
* Author: Ralim
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BSP_MINIWARE_SOFTWARE_I2C_H_
|
|
||||||
#define BSP_MINIWARE_SOFTWARE_I2C_H_
|
|
||||||
#include "BSP.h"
|
|
||||||
#include "configuration.h"
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
#ifdef I2C_SOFT_BUS_2
|
|
||||||
|
|
||||||
#define SOFT_SCL2_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
|
||||||
#define SOFT_SCL2_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
|
||||||
#define SOFT_SDA2_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
|
||||||
#define SOFT_SDA2_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
|
||||||
#define SOFT_SDA2_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
|
||||||
#define SOFT_SCL2_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
|
||||||
#define SOFT_I2C_DELAY() \
|
|
||||||
{ \
|
|
||||||
for (int xx = 0; xx < 12; xx++) { \
|
|
||||||
asm("nop"); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
// 40 ~= 100kHz; 15 gives around 250kHz or so which is fast _and_ stable
|
|
||||||
|
|
||||||
#endif /* BSP_MINIWARE_SOFTWARE_I2C_H_ */
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
/*
|
|
||||||
* ThermoModel.cpp
|
|
||||||
*
|
|
||||||
* Created on: 1 May 2021
|
|
||||||
* Author: Ralim
|
|
||||||
*/
|
|
||||||
#include "TipThermoModel.h"
|
|
||||||
#include "Utils.h"
|
|
||||||
#include "configuration.h"
|
|
||||||
|
|
||||||
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return (tipuVDelta * 50) / 485; }
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,216 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file stm32f1xx.h
|
|
||||||
* @author MCD Application Team
|
|
||||||
* @version V4.2.0
|
|
||||||
* @date 31-March-2017
|
|
||||||
* @brief CMSIS STM32F1xx Device Peripheral Access Layer Header File.
|
|
||||||
*
|
|
||||||
* The file is the unique include file that the application programmer
|
|
||||||
* is using in the C source code, usually in main.c. This file contains:
|
|
||||||
* - Configuration section that allows to select:
|
|
||||||
* - The STM32F1xx device used in the target application
|
|
||||||
* - To use or not the peripheral<61>s drivers in application code(i.e.
|
|
||||||
* code will be based on direct access to peripheral<61>s registers
|
|
||||||
* rather than drivers API), this option is controlled by
|
|
||||||
* "#define USE_HAL_DRIVER"
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
* are permitted provided that the following conditions are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup CMSIS
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup stm32f1xx
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __STM32F1XX_H
|
|
||||||
#define __STM32F1XX_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/** @addtogroup Library_configuration_section
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief STM32 Family
|
|
||||||
*/
|
|
||||||
#if !defined(STM32F1)
|
|
||||||
#define STM32F1
|
|
||||||
#endif /* STM32F1 */
|
|
||||||
|
|
||||||
/* Uncomment the line below according to the target STM32L device used in your
|
|
||||||
application
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(STM32F100xB) && !defined(STM32F100xE) && !defined(STM32F101x6) && !defined(STM32F101xB) && !defined(STM32F101xE) && !defined(STM32F101xG) && !defined(STM32F102x6) \
|
|
||||||
&& !defined(STM32F102xB) && !defined(STM32F103x6) && !defined(STM32F103xB) && !defined(STM32F103xE) && !defined(STM32F103xG) && !defined(STM32F105xC) && !defined(STM32F107xC)
|
|
||||||
/* #define STM32F100xB */ /*!< STM32F100C4, STM32F100R4, STM32F100C6, STM32F100R6, STM32F100C8, STM32F100R8, STM32F100V8, STM32F100CB, STM32F100RB and STM32F100VB */
|
|
||||||
/* #define STM32F100xE */ /*!< STM32F100RC, STM32F100VC, STM32F100ZC, STM32F100RD, STM32F100VD, STM32F100ZD, STM32F100RE, STM32F100VE and STM32F100ZE */
|
|
||||||
/* #define STM32F101x6 */ /*!< STM32F101C4, STM32F101R4, STM32F101T4, STM32F101C6, STM32F101R6 and STM32F101T6 Devices */
|
|
||||||
/* #define STM32F101xB */ /*!< STM32F101C8, STM32F101R8, STM32F101T8, STM32F101V8, STM32F101CB, STM32F101RB, STM32F101TB and STM32F101VB */
|
|
||||||
/* #define STM32F101xE */ /*!< STM32F101RC, STM32F101VC, STM32F101ZC, STM32F101RD, STM32F101VD, STM32F101ZD, STM32F101RE, STM32F101VE and STM32F101ZE */
|
|
||||||
/* #define STM32F101xG */ /*!< STM32F101RF, STM32F101VF, STM32F101ZF, STM32F101RG, STM32F101VG and STM32F101ZG */
|
|
||||||
/* #define STM32F102x6 */ /*!< STM32F102C4, STM32F102R4, STM32F102C6 and STM32F102R6 */
|
|
||||||
/* #define STM32F102xB */ /*!< STM32F102C8, STM32F102R8, STM32F102CB and STM32F102RB */
|
|
||||||
/* #define STM32F103x6 */ /*!< STM32F103C4, STM32F103R4, STM32F103T4, STM32F103C6, STM32F103R6 and STM32F103T6 */
|
|
||||||
/* #define STM32F103xB */ /*!< STM32F103C8, STM32F103R8, STM32F103T8, STM32F103V8, STM32F103CB, STM32F103RB, STM32F103TB and STM32F103VB */
|
|
||||||
/* #define STM32F103xE */ /*!< STM32F103RC, STM32F103VC, STM32F103ZC, STM32F103RD, STM32F103VD, STM32F103ZD, STM32F103RE, STM32F103VE and STM32F103ZE */
|
|
||||||
/* #define STM32F103xG */ /*!< STM32F103RF, STM32F103VF, STM32F103ZF, STM32F103RG, STM32F103VG and STM32F103ZG */
|
|
||||||
/* #define STM32F105xC */ /*!< STM32F105R8, STM32F105V8, STM32F105RB, STM32F105VB, STM32F105RC and STM32F105VC */
|
|
||||||
/* #define STM32F107xC */ /*!< STM32F107RB, STM32F107VB, STM32F107RC and STM32F107VC */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Tip: To avoid modifying this file each time you need to switch between these
|
|
||||||
devices, you can define the device in your toolchain compiler preprocessor.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(USE_HAL_DRIVER)
|
|
||||||
/**
|
|
||||||
* @brief Comment the line below if you will not use the peripherals drivers.
|
|
||||||
In this case, these drivers will not be included and the application code will
|
|
||||||
be based on direct access to peripherals registers
|
|
||||||
*/
|
|
||||||
/*#define USE_HAL_DRIVER */
|
|
||||||
#endif /* USE_HAL_DRIVER */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief CMSIS Device version number V4.2.0
|
|
||||||
*/
|
|
||||||
#define __STM32F1_CMSIS_VERSION_MAIN (0x04) /*!< [31:24] main version */
|
|
||||||
#define __STM32F1_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
|
||||||
#define __STM32F1_CMSIS_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
|
|
||||||
#define __STM32F1_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
|
||||||
#define __STM32F1_CMSIS_VERSION ((__STM32F1_CMSIS_VERSION_MAIN << 24) | (__STM32F1_CMSIS_VERSION_SUB1 << 16) | (__STM32F1_CMSIS_VERSION_SUB2 << 8) | (__STM32F1_CMSIS_VERSION_RC))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup Device_Included
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(STM32F100xB)
|
|
||||||
#include "stm32f100xb.h"
|
|
||||||
#elif defined(STM32F100xE)
|
|
||||||
#include "stm32f100xe.h"
|
|
||||||
#elif defined(STM32F101x6)
|
|
||||||
#include "stm32f101x6.h"
|
|
||||||
#elif defined(STM32F101xB)
|
|
||||||
#include "stm32f101xb.h"
|
|
||||||
#elif defined(STM32F101xE)
|
|
||||||
#include "stm32f101xe.h"
|
|
||||||
#elif defined(STM32F101xG)
|
|
||||||
#include "stm32f101xg.h"
|
|
||||||
#elif defined(STM32F102x6)
|
|
||||||
#include "stm32f102x6.h"
|
|
||||||
#elif defined(STM32F102xB)
|
|
||||||
#include "stm32f102xb.h"
|
|
||||||
#elif defined(STM32F103x6)
|
|
||||||
#include "stm32f103x6.h"
|
|
||||||
#elif defined(STM32F103xB)
|
|
||||||
#include "stm32f103xb.h"
|
|
||||||
#elif defined(STM32F103xE)
|
|
||||||
#include "stm32f103xe.h"
|
|
||||||
#elif defined(STM32F103xG)
|
|
||||||
#include "stm32f103xg.h"
|
|
||||||
#elif defined(STM32F105xC)
|
|
||||||
#include "stm32f105xc.h"
|
|
||||||
#elif defined(STM32F107xC)
|
|
||||||
#include "stm32f107xc.h"
|
|
||||||
#else
|
|
||||||
#error "Please select first the target STM32F1xx device used in your application (in stm32f1xx.h file)"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup Exported_types
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus;
|
|
||||||
|
|
||||||
typedef enum { DISABLE = 0, ENABLE = !DISABLE } FunctionalState;
|
|
||||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
|
||||||
|
|
||||||
typedef enum { ERROR = 0, SUCCESS = !ERROR } ErrorStatus;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup Exported_macros
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
|
||||||
|
|
||||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
|
||||||
|
|
||||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
|
||||||
|
|
||||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
|
||||||
|
|
||||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
|
||||||
|
|
||||||
#define READ_REG(REG) ((REG))
|
|
||||||
|
|
||||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
|
||||||
|
|
||||||
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(USE_HAL_DRIVER)
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
#endif /* USE_HAL_DRIVER */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#endif /* __STM32F1xx_H */
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file system_stm32f10x.h
|
|
||||||
* @author MCD Application Team
|
|
||||||
* @version V4.2.0
|
|
||||||
* @date 31-March-2017
|
|
||||||
* @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
* are permitted provided that the following conditions are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup CMSIS
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup stm32f10x_system
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Define to prevent recursive inclusion
|
|
||||||
*/
|
|
||||||
#ifndef __SYSTEM_STM32F10X_H
|
|
||||||
#define __SYSTEM_STM32F10X_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** @addtogroup STM32F10x_System_Includes
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup STM32F10x_System_Exported_types
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
|
|
||||||
extern const uint8_t AHBPrescTable[16U]; /*!< AHB prescalers table values */
|
|
||||||
extern const uint8_t APBPrescTable[8U]; /*!< APB prescalers table values */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup STM32F10x_System_Exported_Constants
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup STM32F10x_System_Exported_Macros
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @addtogroup STM32F10x_System_Exported_Functions
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void SystemInit(void);
|
|
||||||
extern void SystemCoreClockUpdate(void);
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*__SYSTEM_STM32F10X_H */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
/* ----------------------------------------------------------------------
|
|
||||||
* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
|
|
||||||
*
|
|
||||||
* $Date: 19. October 2015
|
|
||||||
* $Revision: V.1.4.5 a
|
|
||||||
*
|
|
||||||
* Project: CMSIS DSP Library
|
|
||||||
* Title: arm_common_tables.h
|
|
||||||
*
|
|
||||||
* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
|
|
||||||
*
|
|
||||||
* Target Processor: Cortex-M4/Cortex-M3
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* - Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* - Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
* - Neither the name of ARM LIMITED nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this
|
|
||||||
* software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#ifndef _ARM_COMMON_TABLES_H
|
|
||||||
#define _ARM_COMMON_TABLES_H
|
|
||||||
|
|
||||||
#include "arm_math.h"
|
|
||||||
|
|
||||||
extern const uint16_t armBitRevTable[1024];
|
|
||||||
extern const q15_t armRecipTableQ15[64];
|
|
||||||
extern const q31_t armRecipTableQ31[64];
|
|
||||||
/* extern const q31_t realCoefAQ31[1024]; */
|
|
||||||
/* extern const q31_t realCoefBQ31[1024]; */
|
|
||||||
extern const float32_t twiddleCoef_16[32];
|
|
||||||
extern const float32_t twiddleCoef_32[64];
|
|
||||||
extern const float32_t twiddleCoef_64[128];
|
|
||||||
extern const float32_t twiddleCoef_128[256];
|
|
||||||
extern const float32_t twiddleCoef_256[512];
|
|
||||||
extern const float32_t twiddleCoef_512[1024];
|
|
||||||
extern const float32_t twiddleCoef_1024[2048];
|
|
||||||
extern const float32_t twiddleCoef_2048[4096];
|
|
||||||
extern const float32_t twiddleCoef_4096[8192];
|
|
||||||
#define twiddleCoef twiddleCoef_4096
|
|
||||||
extern const q31_t twiddleCoef_16_q31[24];
|
|
||||||
extern const q31_t twiddleCoef_32_q31[48];
|
|
||||||
extern const q31_t twiddleCoef_64_q31[96];
|
|
||||||
extern const q31_t twiddleCoef_128_q31[192];
|
|
||||||
extern const q31_t twiddleCoef_256_q31[384];
|
|
||||||
extern const q31_t twiddleCoef_512_q31[768];
|
|
||||||
extern const q31_t twiddleCoef_1024_q31[1536];
|
|
||||||
extern const q31_t twiddleCoef_2048_q31[3072];
|
|
||||||
extern const q31_t twiddleCoef_4096_q31[6144];
|
|
||||||
extern const q15_t twiddleCoef_16_q15[24];
|
|
||||||
extern const q15_t twiddleCoef_32_q15[48];
|
|
||||||
extern const q15_t twiddleCoef_64_q15[96];
|
|
||||||
extern const q15_t twiddleCoef_128_q15[192];
|
|
||||||
extern const q15_t twiddleCoef_256_q15[384];
|
|
||||||
extern const q15_t twiddleCoef_512_q15[768];
|
|
||||||
extern const q15_t twiddleCoef_1024_q15[1536];
|
|
||||||
extern const q15_t twiddleCoef_2048_q15[3072];
|
|
||||||
extern const q15_t twiddleCoef_4096_q15[6144];
|
|
||||||
extern const float32_t twiddleCoef_rfft_32[32];
|
|
||||||
extern const float32_t twiddleCoef_rfft_64[64];
|
|
||||||
extern const float32_t twiddleCoef_rfft_128[128];
|
|
||||||
extern const float32_t twiddleCoef_rfft_256[256];
|
|
||||||
extern const float32_t twiddleCoef_rfft_512[512];
|
|
||||||
extern const float32_t twiddleCoef_rfft_1024[1024];
|
|
||||||
extern const float32_t twiddleCoef_rfft_2048[2048];
|
|
||||||
extern const float32_t twiddleCoef_rfft_4096[4096];
|
|
||||||
|
|
||||||
/* floating-point bit reversal tables */
|
|
||||||
#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20)
|
|
||||||
#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48)
|
|
||||||
#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56)
|
|
||||||
#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208)
|
|
||||||
#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440)
|
|
||||||
#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448)
|
|
||||||
#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
|
|
||||||
#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
|
|
||||||
#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
|
|
||||||
|
|
||||||
extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
|
|
||||||
|
|
||||||
/* fixed-point bit reversal tables */
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)
|
|
||||||
#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)
|
|
||||||
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH];
|
|
||||||
extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH];
|
|
||||||
|
|
||||||
/* Tables for Fast Math Sine and Cosine */
|
|
||||||
extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1];
|
|
||||||
extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1];
|
|
||||||
extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1];
|
|
||||||
|
|
||||||
#endif /* ARM_COMMON_TABLES_H */
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
/* ----------------------------------------------------------------------
|
|
||||||
* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
|
|
||||||
*
|
|
||||||
* $Date: 19. March 2015
|
|
||||||
* $Revision: V.1.4.5
|
|
||||||
*
|
|
||||||
* Project: CMSIS DSP Library
|
|
||||||
* Title: arm_const_structs.h
|
|
||||||
*
|
|
||||||
* Description: This file has constant structs that are initialized for
|
|
||||||
* user convenience. For example, some can be given as
|
|
||||||
* arguments to the arm_cfft_f32() function.
|
|
||||||
*
|
|
||||||
* Target Processor: Cortex-M4/Cortex-M3
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* - Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* - Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
* - Neither the name of ARM LIMITED nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this
|
|
||||||
* software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#ifndef _ARM_CONST_STRUCTS_H
|
|
||||||
#define _ARM_CONST_STRUCTS_H
|
|
||||||
|
|
||||||
#include "arm_common_tables.h"
|
|
||||||
#include "arm_math.h"
|
|
||||||
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;
|
|
||||||
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;
|
|
||||||
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;
|
|
||||||
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;
|
|
||||||
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;
|
|
||||||
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user