📄 s_config.h
字号:
#ifndef _sconfig_h_
#define _sconfig_h_
#include "udcount.h"
// Digital Input Objekt
typedef struct _DIObj
{
byte idx; // index der SendMsg
byte bit_byte; // 0..3 byte 4..7 bit
byte flags_data; // 0: data; 1: normal/invers; 2: send on pos.edge 3: send on neg. edge 7: disable/enable
} TDIObj;
// 8 * 3bytes = 24
// Digital Output Objekt
typedef struct _DOObj
{
byte idx;
byte bit_byte; // 0..3 byte 4..7 bit
byte flags_data; // 0: data; 1: normal/invers; 2: timeout-data; 3: startup-data 7: disable/enable
byte dummy;
word rectime;
word timeout;
} TDOObj;
// 8 * 8bytes = 64
// Analog Input Objekt
typedef struct _AIObj
{
byte idx; // index der SendMsg
byte bit_byte; // 0..3 byte 4..7 bit
byte flags; // 0:intel/mot; 1:unsign/sign; 2-5:Bitlen-1; 7: disable/enable
byte dummy;
float scale;
float offset;
long val;
word tau; // tau f黵 Tiefpass-Filter
}TAIObj;
//8 * 18bytes = 144
// Frequency Input Objekt
typedef struct _FIObj
{
byte idx; // index der SendMsg
byte bit_byte; // 0..3 byte 4..7 bit
byte flags; // 0:intel/mot; 1:unsign/sign; 2-5:Bitlen-1; 7: disable/enable
byte dummy;
float scale;
float offset;
long val;
}TFIObj;
//4 * 16bytes = 64
// PWM & Frequency Output Objekt
typedef struct _FOObj
{
byte idx;
byte bit_byte; // 0..3 byte 4..7 bit
byte flags; // 0:intel/mot; 1:PWM/Frequenz; 2-5:Bitlen-1 6:unsigned/signed 7: disable/enable
byte dummy;
word rectime;
word timeout;
float scale;
float offset;
word val;
word timeoutval; // bei Timeout diesen Wert ausgeben
word startupval; // bei Modulstart diesen Wert ausgeben
word fixedval; // im PWM-Mode steht hier die Frequenz, im Frequenzmode der PWM-Wert
}TFOObj;
//4 * 24bytes = 96
typedef struct _ConstObj
{
byte idx;
byte bit_byte;
byte flags; // bit 7: enable bit 4 intel/motorola bit 3..0: bitlen
byte dummy;
word val;
}
TConstObj;
// 12 * 6bytes = 72 bytes
// 12 Outputs -> Max. 12 verschiedene CAN-ID's
typedef struct _TSendMsg
{
word id; // 0xFFFF->Element ung黮tig
long nextsendtime;
word sendtime;
byte len; // bit7:trigger bit6:auf RTR reagieren bit5:- bit4..0:len
byte FunctionMask; // hier steht welche Funktion in dieser ID verwendet ist
} TSendMsg;
// functionmask-values
#define FN_DIGITALIN 0x01
#define FN_ANALOGIN 0x02
#define FN_FREQUENCYIN 0x04
#define FN_DIGITALFN 0x08
#define FN_CONSTVALUE 0x10
#define FN_CURVE 0x20
#define FN_COUNTER 0x40
// 12 * 10Bytes = 120 bytes
typedef struct _TRcvMsg
{
word id;
byte FunctionMask;
byte dummy;
} TRcvMsg;
// 16*4 Bytes = 64 bytes
#define FN_DIGITALOUT 0x01
#define FN_FREQUENCYOUT 0x02
typedef struct _TDigFn
{
byte idx;
byte bit_byte;
byte flags; // 7: dis/enable CAN; 6: dis/enable HW 5: result; 3..0 functioncode
byte inputmask;
byte invmask;
byte dummy;
word timeout;
word reload;
// Functioncodes
// 0: AND
// 1: OR
// 2: XOR
// 3: NAND
// 4: NOR
// 5: XNOR
// 6: BUF
} TDigFn;
// 8 * 10 Bytes = 80 Bytes
typedef struct _TCurve
{
byte idx;
byte bit_byte;
byte flags; // 7:enable; 6:1=CAN,0=AIN; 5:intel/mot ; 3-0: bitlen-1
byte pointcnt; // 7-5 :AIN-Chan 3-0: pointcount-1
// word xval;
word DataX[16];
word DataY[16];
} TCurve;
// 2 * 68bytes = 136bytes
extern TDIObj DIObj[8];
extern TDOObj DOObj[8];
extern TAIObj AIObj[8];
extern TFIObj FIObj[4];
extern TFOObj FOObj[4];
extern TDigFn DigFn[8];
extern TCurve Curve[2];
extern TConstObj ConstObj[12];
extern TSendMsg SendMsg[12];
extern TUDCChannel UDC[4] ;
extern TRcvMsg RcvMsg[MAX_RCVMSG];
void Eval_RcvMsg(void);
void Timeout_Check(void);
void Config_Init(void);
void Set_Defaults(void);
void Edge_Check(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -