Files
Balsam_166/Source/Internal/Include/log_to_mem.h
andrey eb2ff79932 Устранена зависимость дискретов СИФУ от основного цикла в 166
Фронты START/STOP обрабатываются при принятии командного слова CAN/RS,
а окончание импульса обслуживается таймером. STOP имеет приоритет,
перекрытие выходов исключено, сохранена защита от самопуска при включении.
Загрузка параметров больше не подменяет живые команды нагрузки.

Добавлены подробные русские комментарии во все собственные C-модули
и основные заголовки, описание поведения и host-тест автомата.
Обновлены файлы прошивки. Полная сборка TI 22.6.1.LTS и тесты пройдены;
проверка на физической плате не выполнялась.
2026-09-23 01:28:11 +03:00

58 lines
1.6 KiB
C

/* Êîíòðàêò ëîããåðà ñ SetGUI: ðàçìåð çàïèñè, âåðñèÿ è àäðåñà.
* ×òåíèå öåëîãî áëîêà çàùèùàåòñÿ îò IRQ íà ñòîðîíå RS/CAN îáðàáîò÷èêà.
*/
#ifndef _LOG_TO_MEM
#define _LOG_TO_MEM
#ifdef __cplusplus
extern "C" {
#endif
/* Îïðåäåëåíèa äëa ðàáîòû ëîããåðà */
#define LOG_PAGE_START 0x0200000
#define LOG_PAGE_LEN 0xFA00
extern int no_write, never_write; // Ôëàãè, ÷òîáû íå ïèñàòü (åñëè ÷òî)
typedef struct
{
unsigned long Start;
unsigned long Finis;
unsigned long Adres;
unsigned int Circl;
} LOG;
extern LOG Log;
/* Çàïèñü ñëîâa â ïàìàòü, ãäå ëîãè ëåæàò */
#define Log_to_mem(x) *(int *)(Log.Adres++) = x
/* Ïðîâåðêà ãðàíèöû ïàìàòè äëà ëîãîâ */
#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres = Log.Start
/* Î÷èñòêà ïàìàòè (îáíóëåíèå) */
void clear_mem();
/* Ëîããåð ÓÌÏ: îòäåëüíîå àäðåñíîå ïðîñòðàíñòâî Modbus, áåç èçìåíåíèÿ
* 128 òåõíîëîãè÷åñêèõ ðåãèñòðîâ. Äâà áàíêà ïî 800 çàïèñåé:
* òåêóùèé êîëüöåâîé æóðíàë è çàôèêñèðîâàííûé ôðàãìåíò îòêëþ÷åíèÿ. */
#define UMP_LOG_BASE 0x1000U
#define UMP_LOG_DATA 0x1010U
#define UMP_LOG_WORDS 40U
#define UMP_LOG_CAPACITY 800U
#define UMP_LOG_LIVE 0x1100U
extern unsigned int ump_dac_ramp, ump_dac_duration, ump_dac_go10, ump_dac_stop10, ump_dac_position;
void ump_log_tick(void);
void ump_log_io(void);
void ump_log_can(unsigned int header, unsigned int a, unsigned int b, unsigned int c);
void ump_log_rs(void);
unsigned int ump_log_read(unsigned int address);
int ump_log_write(unsigned int address, unsigned int value);
#ifdef __cplusplus
}
#endif
#endif /* _LOG_TO_MEM */