Перейти на компактные 12-словные записи v4 и сохранять 10 процентов банка после отключения. Добавить трёхсекундное ожидание роста ЗПТ и настраиваемый лимит пусков. Явно инициализировать состояние UART и гарантировать публикацию параметров EEPROM перед запуском Timer2. Сохранить воспроизводимые сборки, регрессионные проверки, документацию и обновлённые результаты сборки; исключить временные артефакты.
303 lines
14 KiB
C
303 lines
14 KiB
C
/* Адреса устройств, типы плат и псевдонимы технологических регистров. Русские пояснения сохранены в UTF-8. */
|
||
/* Начинает условие: PACKAGE ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||
#ifndef PACKAGE
|
||
/* Определяет защитный символ или переключатель PACKAGE для последующей компиляции. */
|
||
#define PACKAGE
|
||
|
||
/* Задаёт BALSAM = 167; данные BALSAM. */
|
||
#define BALSAM 167
|
||
|
||
/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
|
||
#if BALSAM == 167
|
||
/* Задаёт OBOROT = STRAIGHT; данные OBOROT. */
|
||
#define OBOROT STRAIGHT
|
||
/* Определяет защитный символ или переключатель CALIB_RS для последующей компиляции. */
|
||
#define CALIB_RS
|
||
/* Определяет защитный символ или переключатель OWEN для последующей компиляции. */
|
||
#define OWEN
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif
|
||
/* Условие компиляции BALSAM == 166: выбранный блок включается в текущий вариант прошивки. */
|
||
#if BALSAM == 166
|
||
/* Задаёт OBOROT = REVERSE; данные OBOROT. */
|
||
#define OBOROT REVERSE
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif
|
||
/* Условие компиляции BALSAM == 165: выбранный блок включается в текущий вариант прошивки. */
|
||
#if BALSAM == 165
|
||
/* Задаёт OBOROT = STRAIGHT; данные OBOROT. */
|
||
#define OBOROT STRAIGHT
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif
|
||
/* Условие компиляции BALSAM == 164: выбранный блок включается в текущий вариант прошивки. */
|
||
#if BALSAM == 164
|
||
/* Задаёт OBOROT = REVERSE; данные OBOROT. */
|
||
#define OBOROT REVERSE
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif
|
||
|
||
/* Определяет защитный символ или переключатель ONBOARDCALIBER для последующей компиляции. */
|
||
#define ONBOARDCALIBER
|
||
/* Задаёт TERMOPAIR = 14; данные TERMOPAIR. */
|
||
#define TERMOPAIR 14
|
||
/* Задаёт CURRENTOS = (TERMOPAIR*2); данные CURRENTOS. */
|
||
#define CURRENTOS (TERMOPAIR*2)
|
||
|
||
//-----------------------------------------------
|
||
/* Задаёт adr_TRN1 = 1; данные adr_TRN1. */
|
||
#define adr_TRN1 1
|
||
/* Задаёт adr_TRN2 = 2; данные adr_TRN2. */
|
||
#define adr_TRN2 2
|
||
/* Задаёт adr_POW1 = 3; данные adr_POW1. */
|
||
#define adr_POW1 3
|
||
/* Задаёт adr_POW2 = 4; данные adr_POW2. */
|
||
#define adr_POW2 4
|
||
/* Задаёт adr_LOA1 = 5; данные adr_LOA1. */
|
||
#define adr_LOA1 5
|
||
/* Задаёт adr_LOA2 = 6; данные adr_LOA2. */
|
||
#define adr_LOA2 6
|
||
/* Задаёт adr_ENG1 = 7; данные adr_ENG1. */
|
||
#define adr_ENG1 7
|
||
/* Задаёт adr_PULT = 8; данные adr_PULT. */
|
||
#define adr_PULT 8
|
||
/* Задаёт adr_SHKF = 9; данные adr_SHKF. */
|
||
#define adr_SHKF 9
|
||
//-------------------
|
||
/* Задаёт adr_REC1 = 0xff; данные adr_REC1. */
|
||
#define adr_REC1 0xff
|
||
/* Задаёт adr_REC2 = 0xff; данные adr_REC2. */
|
||
#define adr_REC2 0xff
|
||
/* Задаёт adr_INV1 = 0xff; данные adr_INV1. */
|
||
#define adr_INV1 0xff
|
||
/* Задаёт adr_INV2 = 0xff; данные adr_INV2. */
|
||
#define adr_INV2 0xff
|
||
/* Задаёт adr_BRK1 = 0xff; данные adr_BRK1. */
|
||
#define adr_BRK1 0xff
|
||
/* Задаёт adr_BRK2 = 0xff; данные adr_BRK2. */
|
||
#define adr_BRK2 0xff
|
||
/* Задаёт adr_ENG2 = 0xff; данные adr_ENG2. */
|
||
#define adr_ENG2 0xff
|
||
/* Задаёт adr_PLT1 = 0xff; данные adr_PLT1. */
|
||
#define adr_PLT1 0xff
|
||
/* Задаёт adr_PLT2 = 0xff; данные adr_PLT2. */
|
||
#define adr_PLT2 0xff
|
||
/* Задаёт adr_DSTR = 0xff; данные adr_DSTR. */
|
||
#define adr_DSTR 0xff
|
||
|
||
//-----------------------------------------------
|
||
/* Задаёт dsk_COMM = 1; данные dsk_COMM. */
|
||
#define dsk_COMM 1
|
||
/* Задаёт dsk_BKSD = 2; данные dsk_BKSD. */
|
||
#define dsk_BKSD 2
|
||
/* Задаёт dsk_BKST = 3; данные dsk_BKST. */
|
||
#define dsk_BKST 3
|
||
/* Задаёт dsk_EPLT = 4; данные dsk_EPLT. */
|
||
#define dsk_EPLT 4
|
||
/* Задаёт dsk_SHKF = 5; данные dsk_SHKF. */
|
||
#define dsk_SHKF 5
|
||
/* Задаёт dsk_LOAD = 6; код платы нагрузки. */
|
||
#define dsk_LOAD 6
|
||
//-----------------------------------------------
|
||
|
||
//-----------------------------------------------
|
||
/* Задаёт TPL_TRN = 10; данные TPL_TRN. */
|
||
#define TPL_TRN 10
|
||
/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
|
||
#if BALSAM == 167
|
||
/* Задаёт TPL_POW = 7; данные TPL_POW. */
|
||
#define TPL_POW 7
|
||
/* Задаёт OWEN_DT = 2; данные OWEN_DT. */
|
||
#define OWEN_DT 2
|
||
/* Выбирает альтернативный блок текущего условия компиляции. */
|
||
#else
|
||
/* Задаёт TPL_POW = 8; данные TPL_POW. */
|
||
#define TPL_POW 8
|
||
/* Задаёт OWEN_DT = 0; данные OWEN_DT. */
|
||
#define OWEN_DT 0
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif
|
||
/* Задаёт TPL_ENG = 8; данные TPL_ENG. */
|
||
#define TPL_ENG 8
|
||
/* Задаёт TPL_SHK = 15; данные TPL_SHK. */
|
||
#define TPL_SHK 15
|
||
//-----------------------------------------------
|
||
|
||
/* Задаёт Modbus = ((WORDE *)modbus); данные Modbus. */
|
||
#define Modbus ((WORDE *)modbus)
|
||
|
||
/* Задаёт start_error = 0x00; start ошибка. */
|
||
#define start_error 0x00
|
||
/* Задаёт start_data = 0x18; start данные. */
|
||
#define start_data 0x18
|
||
/* Задаёт start_hi_edge = 0x30; данные start_hi_edge. */
|
||
#define start_hi_edge 0x30
|
||
/* Задаёт start_lo_edge = 0x48; данные start_lo_edge. */
|
||
#define start_lo_edge 0x48
|
||
|
||
/* Задаёт sens_error = ((ERROR *)(modbus+start_error)); sens ошибка. */
|
||
#define sens_error ((ERROR *)(modbus+start_error))
|
||
/* Задаёт sens_data = (modbus+start_data); sens данные. */
|
||
#define sens_data (modbus+start_data)
|
||
/* Задаёт sens_hi_edge = (modbus+start_hi_edge); данные sens_hi_edge. */
|
||
#define sens_hi_edge (modbus+start_hi_edge)
|
||
/* Задаёт sens_lo_edge = (modbus+start_lo_edge); данные sens_lo_edge. */
|
||
#define sens_lo_edge (modbus+start_lo_edge)
|
||
|
||
/* Задаёт InputRep0 = Modbus[0].bit.bitA; вход Rep 0. */
|
||
#define InputRep0 Modbus[0].bit.bitA
|
||
/* Задаёт InputRep1 = Modbus[0].bit.bitB; вход Rep 1. */
|
||
#define InputRep1 Modbus[0].bit.bitB
|
||
/* Задаёт InputRep2 = Modbus[0].bit.bitC; вход Rep 2. */
|
||
#define InputRep2 Modbus[0].bit.bitC
|
||
|
||
/* Задаёт Inputs = Modbus[0x10]; данные Inputs. */
|
||
#define Inputs Modbus[0x10]
|
||
/* Задаёт Buttons = Modbus[0x16]; данные Buttons. */
|
||
#define Buttons Modbus[0x16]
|
||
|
||
/* Задаёт Jumpers = modbus[0x17]; данные Jumpers. */
|
||
#define Jumpers modbus[0x17]
|
||
|
||
/* Задаёт bTestLamp = Buttons.bit.bit0; данные bTestLamp. */
|
||
#define bTestLamp Buttons.bit.bit0
|
||
/* Задаёт bSecretBt = Buttons.bit.bit1; данные bSecretBt. */
|
||
#define bSecretBt Buttons.bit.bit1
|
||
/* Задаёт bTermoCal = Buttons.bit.bit2; данные bTermoCal. */
|
||
#define bTermoCal Buttons.bit.bit2
|
||
|
||
// Пришло врема!
|
||
/* Задаёт DAC_go = modbus[0x50]; начальный ток нагрузки в мА, технологический регистр 0x50. */
|
||
#define DAC_go modbus[0x50] // начало зарада
|
||
/* Задаёт DAC_stop = modbus[0x51]; конечный ток нагрузки в мА, технологический регистр 0x51. */
|
||
#define DAC_stop modbus[0x51] // конец зарада
|
||
|
||
/* На плате LOAD тайм-аут и лимит попыток сохраняются штатной командой Save; состояние защиты доступно только для чтения. */
|
||
/* Задаёт LOAD_CAN_TIMEOUT = modbus[0x52]; сохраняемый тайм-аут свежести напряжения CAN в миллисекундах, регистр 0x52. */
|
||
#define LOAD_CAN_TIMEOUT modbus[0x52]
|
||
/* Задаёт LOAD_STATUS = modbus[0x7C]; слово состояния защиты нагрузки для чтения, регистр 0x7C. */
|
||
#define LOAD_STATUS modbus[0x7C]
|
||
/* Задаёт записываемый лимит общего числа пусков в регистре 0x7D; допустимы 1..65535 попыток, включая первый START. */
|
||
#define LOAD_MAX_ATTEMPTS modbus[0x7D]
|
||
/* Сохраняет прежний заводской предел пяти пусков для сброса настроек и замены нуля из старой EEPROM. */
|
||
#define LOAD_DEFAULT_MAX_ATTEMPTS 5U
|
||
|
||
/* Задаёт Cancount = (modbus+0x60); данные Cancount. */
|
||
#define Cancount (modbus+0x60) // пауза между I посылками CAN
|
||
/* Задаёт Bright = (modbus+0x62); данные Bright. */
|
||
#define Bright (modbus+0x62) // аркость сигнальных лампочек
|
||
/* Задаёт Brightness = modbus[0x62]; данные Brightness. */
|
||
#define Brightness modbus[0x62] // аркость сигнальных лампочек
|
||
|
||
/* Задаёт Owncount = modbus[0x63]; данные Owncount. */
|
||
#define Owncount modbus[0x63] // пауза между опросами OWEN
|
||
|
||
/* Задаёт m_FAST = 0; данные m_FAST. */
|
||
#define m_FAST 0
|
||
/* Задаёт m_SLOW = 1; данные m_SLOW. */
|
||
#define m_SLOW 1
|
||
|
||
/* Задаёт Zero_lev = (modbus+0x70); данные Zero_lev. */
|
||
#define Zero_lev (modbus+0x70)
|
||
|
||
/* Задаёт DAC_20 = modbus[0x6E]; ЦАП 20. */
|
||
#define DAC_20 modbus[0x6E]
|
||
/* Задаёт DAC_04 = modbus[0x6F]; ЦАП 04. */
|
||
#define DAC_04 modbus[0x6F]
|
||
|
||
/* Задаёт DAC_max = modbus[0x78]; ЦАП max. */
|
||
#define DAC_max() modbus[0x78] // 751//0x0000 804
|
||
/* Задаёт DAC_min = modbus[0x79]; ЦАП min. */
|
||
#define DAC_min() modbus[0x79] // 2162//0x0FFF 2373
|
||
/* Задаёт DAC_cal = modbus[0x7A]; ЦАП cal. */
|
||
#define DAC_cal() modbus[0x7A]
|
||
|
||
/* Задаёт Caliber = (modbus+0x74); данные Caliber. */
|
||
#define Caliber (modbus+0x74)
|
||
|
||
/* Задаёт K380_1 = Caliber[0]; данные K380_1. */
|
||
#define K380_1 Caliber[0]
|
||
/* Задаёт K380_2 = Caliber[1]; данные K380_2. */
|
||
#define K380_2 Caliber[1]
|
||
|
||
/* Задаёт KPOW_1 = Caliber[0]; данные KPOW_1. */
|
||
#define KPOW_1 Caliber[0]
|
||
/* Задаёт KPOW_2 = Caliber[1]; данные KPOW_2. */
|
||
#define KPOW_2 Caliber[1]
|
||
/* Задаёт KPOW_3 = Caliber[2]; данные KPOW_3. */
|
||
#define KPOW_3 Caliber[2]
|
||
/* Задаёт KPOW_4 = Caliber[3]; данные KPOW_4. */
|
||
#define KPOW_4 Caliber[3]
|
||
|
||
/* Задаёт NormaU = Caliber[8]; данные NormaU. */
|
||
#define NormaU Caliber[8]
|
||
/* Задаёт DeltaU = Caliber[9]; данные DeltaU. */
|
||
#define DeltaU Caliber[9]
|
||
|
||
/* Задаёт TCaliber = (modbus+0x78); данные TCaliber. */
|
||
#define TCaliber (modbus+0x78)
|
||
|
||
/* Задаёт K300_1 = TCaliber[0]; данные K300_1. */
|
||
#define K300_1 TCaliber[0]
|
||
/* Задаёт K300_2 = TCaliber[1]; данные K300_2. */
|
||
#define K300_2 TCaliber[1]
|
||
/* Задаёт K400_1 = TCaliber[2]; данные K400_1. */
|
||
#define K400_1 TCaliber[2]
|
||
/* Задаёт K400_2 = TCaliber[3]; данные K400_2. */
|
||
#define K400_2 TCaliber[3]
|
||
|
||
/* Задаёт K100_1 = TCaliber[0]; данные K100_1. */
|
||
#define K100_1 TCaliber[0]
|
||
/* Задаёт K100_2 = TCaliber[1]; данные K100_2. */
|
||
#define K100_2 TCaliber[1]
|
||
/* Задаёт K150_1 = TCaliber[2]; данные K150_1. */
|
||
#define K150_1 TCaliber[2]
|
||
/* Задаёт K150_2 = TCaliber[3]; данные K150_2. */
|
||
#define K150_2 TCaliber[3]
|
||
|
||
/* Задаёт K100_D = TCaliber[0]; данные K100_D. */
|
||
#define K100_D TCaliber[0]
|
||
/* Задаёт K150_D = TCaliber[1]; данные K150_D. */
|
||
#define K150_D TCaliber[1]
|
||
|
||
/* Задаёт LastMode = Modbus[126].all; последний режим платы, технологический регистр 126. */
|
||
#define LastMode Modbus[126].all
|
||
|
||
/* Задаёт Commands = Modbus[127].all; слово команд, технологический регистр 127. */
|
||
#define Commands Modbus[127].all
|
||
/* Задаёт cTestLamp = Modbus[127].bit.bit0; данные cTestLamp. */
|
||
#define cTestLamp Modbus[127].bit.bit0
|
||
/* Задаёт cDefParam = Modbus[127].bit.bit1; данные cDefParam. */
|
||
#define cDefParam Modbus[127].bit.bit1
|
||
/* Задаёт cSaveParam = Modbus[127].bit.bit2; данные cSaveParam. */
|
||
#define cSaveParam Modbus[127].bit.bit2
|
||
/* Задаёт cLoadParam = Modbus[127].bit.bit3; данные cLoadParam. */
|
||
#define cLoadParam Modbus[127].bit.bit3
|
||
|
||
/* Задаёт cTermoCal = Modbus[127].bit.bit4; данные cTermoCal. */
|
||
#define cTermoCal Modbus[127].bit.bit4
|
||
/* Задаёт cKoefCalc = Modbus[127].bit.bit5; данные cKoefCalc. */
|
||
#define cKoefCalc Modbus[127].bit.bit5
|
||
|
||
/* Задаёт cUMPreset = Modbus[127].bit.bit6; данные cUMPreset. */
|
||
#define cUMPreset Modbus[127].bit.bit6
|
||
/* Задаёт cUMPstart = Modbus[127].bit.bit7; данные cUMPstart. */
|
||
#define cUMPstart Modbus[127].bit.bit7
|
||
/* Задаёт cInitDac = Modbus[127].bit.bit8; c Init ЦАП. */
|
||
#define cInitDac Modbus[127].bit.bit8
|
||
/* Задаёт cCalibrDac = Modbus[127].bit.bit9; c Calibr ЦАП. */
|
||
#define cCalibrDac Modbus[127].bit.bit9
|
||
|
||
/* Задаёт cSecretBt = Modbus[127].bit.bitA; данные cSecretBt. */
|
||
#define cSecretBt Modbus[127].bit.bitA
|
||
/* Задаёт cLiteFire = Modbus[127].bit.bitB; данные cLiteFire. */
|
||
#define cLiteFire Modbus[127].bit.bitB
|
||
/* Задаёт cRawMeat = Modbus[127].bit.bitC; данные cRawMeat. */
|
||
#define cRawMeat Modbus[127].bit.bitC
|
||
|
||
/* Задаёт cReset = Modbus[127].bit.bitF; c сброс. */
|
||
#define cReset Modbus[127].bit.bitF
|
||
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif //PACKAGE
|
||
|