Реализованы кольцевая запись CAN-команд, дискретных сигналов, уставок и состояния ЦАП, а также отдельный архив отключения с секундой постинтервала. Добавлено расширение Modbus для онлайн-графиков и чтения архива через SetGUI. Сохранены управляющая логика и существующая область технологических регистров. Добавлены русские комментарии, описание протокола и тест регистратора. Проверка алгоритма и синтаксиса C пройдена; сборка TI/CCS и испытания на плате ещё требуются.
66 lines
2.0 KiB
C
66 lines
2.0 KiB
C
/****************************************************************/
|
|
/* 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 */
|