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

📄 function.h

📁 MSP4250单芯片电子称,采样数据无线发送给主机,编译环境IAR for MSP430
💻 H
字号:
#ifndef __FUNCTION_H
#define __FUNCTION_H

//------------------------------------------------------------------------------
#ifndef DEBUG
 #pragma message("\r\n---------DEBUG---------")
 #define DEBUG
 #define DEBUG_I2C
 #define DEBUG_RF
#endif

//#define USE_WDT
  #define USE_TIMER_A3
//#define USE_DAC12
  #define USE_SD16_A
//#define USE_LCD_A
  #define USE_BT
//------------------------------------------------------------------------------
//#define SYSCLOCK_512K					//system clock
//#define SYSCLOCK_1M
#define SYSCLOCK_2M
//#define SYSCLOCK_4M

//#define SD16_OSR64					//SD16 OSR
//#define SD16_OSR128
#define SD16_OSR256
//#define SD16_OSR512
//#define SD16_OSR1024

#define SD16_MAX_SAMP	256				//64 128 256 512 1024	how many samples need to get one data
#define SD16_DIV_SAMP	8				//6  7   8   9   10

#define SENSOR1							//sensor
//#define SENSOR2

#define MASTER_REQ_EN					//request master enable
//#define MULTI_WAITER					//allow more the one waiters

#define OSR_CHAGE_EN					//OSR rate changeable

#define MAX_RFRETRY     9
#define RFCH_WAITER     3
#define RFCH_MASTER     0
#define RFCH_SECURITY   0
#define RFPA_WAITER     7
#define RFPA_MASTER     7
#define RFPA_SECURITY   7
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Function prototypes

void Init_Sys(void);
void SD16Set(unsigned int Osr,unsigned int  count);
void SD16Start(char inch);
void StoreCalInFlash(void);
int	 SD16GetAverage(unsigned int n);

void halWait(BYTE timeout);
void Pause_10uS(unsigned int delay);
void Pause_1mS(unsigned int delay);

void Disp_Led(char cmd);
void Disp_RGB(char cmd, char ch);
char KeyScan(void);

char I2C_Test();
char I2C_Read_Byte(char addr);
void I2C_Read_String(char addr, char *pdata, char n);
char I2C_Write_Byte(char addr,char data);
char I2C_Write_String(char addr, char *pdata, char n);

void CopyEep2Flash(char infox);

void SpiWriteReg(char addr, char value);
void SpiWriteBurstReg(char addr, char *buffer, char count);
char SpiReadReg(char addr);
void SpiReadBurstReg(char addr, char *buffer, char count);
char SpiReadStatus(char addr);
void SpiStrobe(char strobe);
void CC_PowerupResetCCxxxx(void);
void CC_SPI_bitbang_out(char);
char CC_SPI_bitbang_in();

signed char Cc_RSSI(char Rssi);
void CC_INIT(void);
void Cc_Reset(void);
void Cc_Send(char *buf, char length);
void Cc_Receive(char *buf, char length);
void RF_TEST(void);

void Req_Waiter(void);
void Req_Master(char cmd);
void Dpr_Init(void);
void Dpr_main(void);
void WeightPrc(void);

#define	CC_Wait(x) 	Pause_10uS(x)

void SpiWriteCd(char value, char ch);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
extern  unsigned int SysCtrl;
extern  unsigned int PlateFlag;
extern  unsigned int SlaveSN;

extern  unsigned int BottleMinWeight;
extern  unsigned int HandleMinWeight;

extern  unsigned int SD16Config;
 #define SD16_OVER		0x8000
 #define SD16_CHANGE	0x4000
 #define SD16_VOLC		0x0200
 #define SD16_ON		0x0100

extern  const char PaTable[];

extern   long MaxSpan;

extern   long Cal0Min;
extern   long Cal0Max;			
extern   long Cal1Min;
extern   long Cal1Max;	
extern   long Cal2Min;
extern   long Cal2Max;
extern   long Cal3Min;
extern   long Cal3Max;
extern   long Cal4Min;
extern   long Cal4Max;
extern   unsigned int  Product[5];

extern 	 const char EepromShadow0[0x80];
extern 	 const char EepromShadow1[0x80];

extern 	 char PmMode;                	// Current program mode

extern 	unsigned int SD16Config;

extern 	int Wt_Old[5];	
extern 	int Wt_Delta1[5];	
extern 	int Wt_Delta2[5];	

extern 	char WaiterId[5];
extern 	char PlateNow;
extern  char PlateInfo[5];

extern  char RF0CTRL;
extern  char RF0CNT;
extern  char RF0ERR;
extern  char RF0STATUS[];
extern  char RfTxBuf[];
extern  char RfRxBuf[];
extern  char AppRFStatus;;

extern long SD16Result;

extern long Cal0Min_t;
extern long Cal0Max_t ;
//------------------------------------------------------------------------------
#pragma dataseg = INFOB                 // Info Flash Memory Block A

__no_init  unsigned int InfoBFlag 		@0x1000;
__no_init  unsigned int SlaveSN			@0x1000+2;
__no_init  unsigned int SysCtrl 		@0x1000+4;
__no_init  unsigned int PlateFlag 		@0x1000+6;

__no_init  unsigned int BottleMinWeight @0x1000+8;		//200g
__no_init  unsigned int HandleMinWeight @0x1000+10;		//2g
__no_init  unsigned int Product[5]		@0x1000+88;

__no_init  long MaxSpan					@0x1000+16;		//span
__no_init  long CalMin[5]				@0x1000+48;
__no_init  long CalMax[5] 				@0x1000+48+20;		


__no_init char LED_CTL0 @LCDM4_;		//last data
__no_init char LED_CTL1 @LCDM5_;		//bit7-on/0ff	 bit6..0-sp
#pragma dataseg = default
//------------------------------------------------------------------------------
//  SysCtrl
//	bit16...3
//	bit1:	0-single	1-multi
//  bit0:	0-wake up   1-always on
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//power down mode
/*
	SCG1 SCG0 OSCOFF CPUOFF Mode 	CPU and Clocks Status
	0 	 0 	  0 	 0 		Active 	 											All
	0 	 0 	  0 	 1 		LPM0 	[ CPU, MCLK] 						SMCLK, 	ACLK
	0 	 1 	  0 	 1 		LPM1 	[ CPU, MCLK, 		DCO osc. DC] 	SMCLK, 	ACLK
	1 	 0 	  0 	 1 		LPM2 	[ CPU, MCLK, SMCLK, DCO osc.   ] 	DC,		ACLK
	1 	 1 	  0 	 1 		LPM3 	[ CPU, MCLK, SMCLK, DCO osc. DC] 			ACLK
	1 	 1 	  1 	 1 		LPM4 	[ All ]
*/
/*
	main	when goto sleep - LPM0
	BT		turn on voltage - -
				sleep		- LPM3
			turn on sd16 	- LPM0
	SD16	new data		- ACTIVE
			else			- LPM3
*/
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
#define LED_DELAY	50

#define LED_ALLOFF	0
#define LED_1ON		1
#define LED_2ON		2
#define LED_WORK	LED_2ON
#define LED_3ON		3
#define LED_4ON		4
#define LED_ALLON	5
#define LED_FULL	LED_ALLON
#define LED_NOPOWER	6
#define LED_CHARGE 	8
#define LED_WAITER	13
#define LED_MASTER	18
#define LED_CAL_L	23
#define LED_CAL_H	28
#define LED_CAL_O	33
#define LED_CAL_E	38
#define LED_DISABLE	43

#define RGB_ALL_OFF	0
#define RGB_ALL_ON	2
#define RGB_R		4
#define RGB_G		6
#define RGB_B		8
#define RGB_RGB		10
#define RGB_RGB2	14

#define PM_CALL		  	BIT7
enum{
	PM_INIT,				// 0 Initialize the system
	PM_PWRDOWN,             // 1 Powered Down
  	PM_MEASURE,             // 2 Normal
	PM_WAITER,				// 3 find waiter id								
	PM_MASTER_CMD,			// 4 request master
	PM_BOTTLE_UP,			// 5
	PM_MASTER_DATA,			// 6 send data to master
	PM_CAL_ZERO,            // 7 Reset scale  zero
  	PM_CAL_LO,              // 8 Calibrate Low
  	PM_CAL_HI,              // 9 Calibrate High
	PM_CONFIG				// a Config
};

 #define PLRF_ERR			0x80
 #define PLRF_NONE		    0x00<<4	
 #define PLRF_WAITER1		0x01<<4
 #define PLRF_WAITER2		0x02<<4
 #define PLRF_MASTER1		0x03<<4
 #define PLRF_MASTER2		0x04<<4
 #define PLRF_CONFIG		0x05<<4
 #define PLRF_MSK			0x07<<4

 #define APRF_IDLE		0x00
 #define APRF_BUSY		0x40
 #define APRF_FINISH	0x80
 #define APRF_ERR		0xc0
 #define APRF_MSK		0xc0

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -