⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_config.h

📁 CanOpen的源代码
💻 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 + -