/****************************************************************/ /* TMS320C32 */ /* ====== BIOS, КЛАИН, КЛВСП ====== */ /* ЦНИИ СЭТ (с) 1998-2001г. */ /****************************************************************/ /* log_to_mem.h **************************************************************** * Запись логов в памyть * ****************************************************************/ #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 #define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres -=(x) /* Очистка памати (обнуление) */ 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 */