上传文件至 /
This commit is contained in:
122
SwDriver.H
Normal file
122
SwDriver.H
Normal file
@@ -0,0 +1,122 @@
|
||||
#ifndef _MC33993_H_
|
||||
#define _MC33993_H_
|
||||
|
||||
//*****************************************************************************
|
||||
//<2F>궨<EFBFBD><EAB6A8>
|
||||
//*****************************************************************************
|
||||
//<2F><><EFBFBD><EFBFBD>20Ƭ<30><C6AC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||
#define Mc33993_0 0
|
||||
#define Mc33993_1 1
|
||||
#define Mc33993_2 2
|
||||
#define Mc33993_3 3
|
||||
#define Mc33993_4 4
|
||||
#define Mc33993_5 5
|
||||
#define Mc33993_6 6
|
||||
#define Mc33993_7 7
|
||||
#define Mc33993_8 8
|
||||
#define Mc33993_9 9
|
||||
#define Mc33993_10 10
|
||||
#define Mc33993_11 11
|
||||
#define Mc33993_12 12
|
||||
#define Mc33993_13 13
|
||||
#define Mc33993_14 14
|
||||
#define Mc33993_15 15
|
||||
#define Mc33993_16 16
|
||||
#define Mc33993_17 17
|
||||
#define Mc33993_18 18
|
||||
#define Mc33993_19 19
|
||||
#define Mc33993_20 20
|
||||
|
||||
|
||||
#define D24V 0
|
||||
#define Gnd 1
|
||||
|
||||
#define TriOff 0
|
||||
#define TriOn 1
|
||||
|
||||
#define WetCur2mA 0
|
||||
#define WetCur16mA 1
|
||||
|
||||
#define SwToGnd 0
|
||||
#define SwToPwr 1
|
||||
|
||||
#define ALLTRI 0xff
|
||||
#define ALLD24V 0x0
|
||||
|
||||
#define DF_CMDSWSTATUS 0x00
|
||||
#define DF_CMDSETTING 0x01
|
||||
#define DF_CMDINT_SP 0x02
|
||||
#define DF_CMDINT_SG 0x03
|
||||
#define DF_CMDMETALLIC_SP 0x04
|
||||
#define DF_CMDMETALLIC_SG 0x05
|
||||
#define DF_CMDANALOG 0x06
|
||||
#define DF_CMDWETCURR_SP 0x07
|
||||
#define DF_CMDWETCURR_SG 0x08
|
||||
#define DF_CMDTRISTATE_SP 0x09
|
||||
#define DF_CMDTRISTATE_SG 0x0A
|
||||
#define DF_CMDCALIBRATION 0x0B
|
||||
#define DF_CMDSLEEP 0x0C
|
||||
#define DF_CMDRESET 0x7F
|
||||
|
||||
|
||||
#define DF_FLGTHEM 10
|
||||
#define DF_FLGINT 11
|
||||
#define DF_FLGSP7 12
|
||||
#define DF_FLGSP6 13
|
||||
#define DF_FLGSP5 14
|
||||
#define DF_FLGSP4 15
|
||||
#define DF_FLGSP3 16
|
||||
#define DF_FLGSP2 17
|
||||
#define DF_FLGSP1 18
|
||||
#define DF_FLGSP0 19
|
||||
#define DF_FLGSG13 20
|
||||
#define DF_FLGSG12 21
|
||||
#define DF_FLGSG11 22
|
||||
#define DF_FLGSG10 23
|
||||
#define DF_FLGSG9 24
|
||||
#define DF_FLGSG8 25
|
||||
#define DF_FLGSG7 26
|
||||
#define DF_FLGSG6 27
|
||||
#define DF_FLGSG5 28
|
||||
#define DF_FLGSG4 29
|
||||
#define DF_FLGSG3 30
|
||||
#define DF_FLGSG2 31
|
||||
#define DF_FLGSG1 32
|
||||
#define DF_FLGSG0 33
|
||||
|
||||
//Analog
|
||||
#define DF_AN_HIMP 1
|
||||
#define DF_AN_2MA 2
|
||||
#define DF_AN_16MA 3
|
||||
|
||||
#define DF_CH_SG0 1
|
||||
#define DF_CH_SG1 2
|
||||
#define DF_CH_SG2 3
|
||||
#define DF_CH_SG3 4
|
||||
#define DF_CH_SG4 5
|
||||
#define DF_CH_SG5 6
|
||||
#define DF_CH_SG6 7
|
||||
#define DF_CH_SG7 8
|
||||
#define DF_CH_SG8 9
|
||||
#define DF_CH_SG9 10
|
||||
#define DF_CH_SG10 11
|
||||
#define DF_CH_SG11 12
|
||||
#define DF_CH_SG12 13
|
||||
#define DF_CH_SG13 14
|
||||
#define DF_CH_SP0 15
|
||||
#define DF_CH_SP1 16
|
||||
#define DF_CH_SP2 17
|
||||
#define DF_CH_SP3 18
|
||||
#define DF_CH_SP4 19
|
||||
#define DF_CH_SP5 20
|
||||
#define DF_CH_SP6 21
|
||||
#define DF_CH_SP7 22
|
||||
//*****************************************************************************
|
||||
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ȫ<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//*****************************************************************************
|
||||
void SwStaSample(UnSwSample *ptmp);
|
||||
void InitSW(void);
|
||||
void LedLight(UnSwOut *tmpUn);
|
||||
//void Swtest2(void);
|
||||
//ubyte Mc33993AnalogChSel(ubyte NumMc,ubyte Mode,ubyte Channal);
|
||||
#endif
|
||||
175
T2.C
Normal file
175
T2.C
Normal file
@@ -0,0 +1,175 @@
|
||||
//****************************************************************************
|
||||
// @Module Timer 2
|
||||
// @Filename T2.C
|
||||
// @Project CL2.0.dav
|
||||
//----------------------------------------------------------------------------
|
||||
// @Controller Infineon XC886CLM-8FF
|
||||
//
|
||||
// @Compiler Keil
|
||||
//
|
||||
// @Codegenerator 1.3
|
||||
//
|
||||
// @Description: This file contains functions that use the T2 module.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2025/1/18 20:45:31
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,1)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Project Includes
|
||||
//****************************************************************************
|
||||
|
||||
#include "MAIN.H"
|
||||
|
||||
// USER CODE BEGIN (T2_General,2)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Macros
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,3)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Defines
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,4)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Typedefs
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,5)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Imported Global Variables
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,6)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Global Variables
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,7)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @External Prototypes
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,8)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Prototypes Of Local Functions
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_General,9)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Function void T2_vInit(void)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Description This is the initialization function of the Timer 2 function
|
||||
// library. It is assumed that the SFRs used by this library
|
||||
// are in their reset state.
|
||||
//
|
||||
// The following SFRs and SFR fields will be initialized:
|
||||
// T2_RC2H/RC2L - reload/capture timer 2 register
|
||||
// T2_T2H/T2L - timer 2 register
|
||||
// ET2 - timer 2 interrupt enable
|
||||
// T2_T2MOD - timer 2 mode register
|
||||
// CP/RL2 - Capture/Reload select
|
||||
// EXEN2 - External enable control
|
||||
// TR2 - Timer2 run control
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Returnvalue None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Parameters None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Init,1)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
void T2_vInit(void)
|
||||
{
|
||||
// USER CODE BEGIN (T2_Init,2)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Operating Mode
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
/// 16-bit timer function with automatic reload when timer 2 overflows
|
||||
/// the timer 2 resolution is 1 ?s
|
||||
/// the timer 2 overflow is 1000.000 ?s
|
||||
/// timer 2 interrupt: enabled
|
||||
/// timer 2 will be started
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Register Initialization
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
T2_T2L = 0x30; // load timer 2 register, low byte
|
||||
|
||||
T2_T2H = 0xF8; // load timer 2 register, high byte
|
||||
|
||||
T2_RC2L = 0x30; // load timer 2 reload/capture register,
|
||||
// low byte
|
||||
T2_RC2H = 0xF8; // load timer 2 reload/capture register,
|
||||
// high byte
|
||||
T2_T2MOD = 0x00; // load timer 2 mode register
|
||||
|
||||
/// timer 2 Interrupt enable bit is set in SHINT_vInit() function
|
||||
|
||||
// USER CODE BEGIN (T2_Init,3)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
TR2 = 1; // start timer
|
||||
|
||||
} // End of function T2_vInit
|
||||
|
||||
|
||||
// USER CODE BEGIN (T2_General,10)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
104
T2.H
Normal file
104
T2.H
Normal file
@@ -0,0 +1,104 @@
|
||||
//****************************************************************************
|
||||
// @Module Timer 2
|
||||
// @Filename T2.H
|
||||
// @Project CL2.0.dav
|
||||
//----------------------------------------------------------------------------
|
||||
// @Controller Infineon XC886CLM-8FF
|
||||
//
|
||||
// @Compiler Keil
|
||||
//
|
||||
// @Codegenerator 1.3
|
||||
//
|
||||
// @Description: This file contains all function prototypes and macros for
|
||||
// the T2 module.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2025/1/18 20:45:31
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,1)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
|
||||
#ifndef _T2_H_
|
||||
#define _T2_H_
|
||||
|
||||
//****************************************************************************
|
||||
// @Project Includes
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,2)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Macros
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,3)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Defines
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,4)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
//****************************************************************************
|
||||
// @Typedefs
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,5)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Imported Global Variables
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,6)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Global Variables
|
||||
//****************************************************************************
|
||||
|
||||
// USER CODE BEGIN (T2_Header,7)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Prototypes Of Global Functions
|
||||
//****************************************************************************
|
||||
|
||||
void T2_vInit(void);
|
||||
|
||||
// USER CODE BEGIN (T2_Header,8)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// @Interrupt Vectors
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
// Shared interrupt vector definitions are defined in SHARED_INT.H
|
||||
|
||||
// USER CODE BEGIN (T2_Header,9)
|
||||
|
||||
// USER CODE END
|
||||
|
||||
#endif // ifndef _T2_H_
|
||||
518
temperature.C
Normal file
518
temperature.C
Normal file
@@ -0,0 +1,518 @@
|
||||
#include "temperature.H"
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
UnSwSample UnSwSample_1 = {0};
|
||||
#define Measure_Period 11000
|
||||
|
||||
unsigned char romid[MAXNUM][8];
|
||||
int RomNum;
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>е<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
||||
* @param serial<61><6C><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* @param length<74><68><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
* @retval У<><D0A3><EFBFBD>ͣ<EFBFBD>CRC<52><43>
|
||||
*/
|
||||
#define POLYNOMIAL 0x131 //100110001
|
||||
ubyte MY_OW_CRC8(ubyte *serial, ubyte length)
|
||||
{
|
||||
ubyte result = 0x00;
|
||||
ubyte pDataBuf;
|
||||
ubyte i;
|
||||
|
||||
while(length--) {
|
||||
pDataBuf = *serial++;
|
||||
for(i=0; i<8; i++) {
|
||||
if((result^(pDataBuf))&0x01) {
|
||||
result ^= 0x18;
|
||||
result >>= 1;
|
||||
result |= 0x80;
|
||||
}
|
||||
else {
|
||||
result >>= 1;
|
||||
}
|
||||
pDataBuf >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//<2F>Ǿ<EFBFBD>ȷ<EFBFBD><C8B7>ʱ2*X us<75><73><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>10us
|
||||
//@12.000MHz 12Tģʽ
|
||||
void Delay_us(uword x)
|
||||
{
|
||||
for (; x > 0; x--)
|
||||
{
|
||||
_nop_();
|
||||
_nop_();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB><EFBFBD>壨 <20><><EFBFBD><EFBFBD> 480 us <20>͵<EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char OW_ResetPresence(void)
|
||||
{
|
||||
unsigned char presence; int count=0;
|
||||
|
||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||
P3_DIR = P3_DIR | 0x20; // load direction register P3.5<EFBFBD>л<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||
Delay_us(240); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 480us
|
||||
DQ = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||
P3_DIR = P3_DIR & 0xDF;// load direction register
|
||||
|
||||
Delay_us(40); // <20>ȴ<EFBFBD> 80us <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> presence
|
||||
presence = DQ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
while( presence && (count< 17) )
|
||||
{
|
||||
Delay_us(5);
|
||||
presence = DQ;
|
||||
count++;
|
||||
}
|
||||
Delay_us(200); // ʱ<><CAB1>ĩβ <20>ȴ<EFBFBD>
|
||||
return (presence ? FALSE : TRUE);
|
||||
} // presence =0 ʱ<><CAB1> M6 01 <20><><EFBFBD><EFBFBD> , presence =1 ʱ<><CAB1> M601 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
//// READ_BIT <20>C <20><> M601 <20><>ȡ һλ<D2BB><CEBB>
|
||||
unsigned char read_bit(void)
|
||||
{
|
||||
unsigned char res;
|
||||
|
||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
||||
|
||||
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||
Delay_us(1); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 3us
|
||||
DQ = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD> DQ <20><><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||
P3_DIR = P3_DIR & 0xDF;// load direction register
|
||||
|
||||
Delay_us(3); // <20>ȴ<EFBFBD> 10us ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
|
||||
|
||||
res = DQ;
|
||||
Delay_us(27); // ʱ<><CAB1>ĩβ <20>ȴ<EFBFBD>
|
||||
return(res); // <20><><EFBFBD>ض<EFBFBD>ȡ <20><>ֵ
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
//// WRITE_BIT <20>C <20><><EFBFBD><EFBFBD> дһλ<D2BB><CEBB><EFBFBD><EFBFBD> <20><> M601
|
||||
void write_bit(char bitval)
|
||||
{
|
||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
||||
|
||||
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||
Delay_us(2); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5us
|
||||
if(bitval == 1) DQ =1; // <20><><EFBFBD><EFBFBD> д 1<><31><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||
Delay_us(25); // <20><><EFBFBD><EFBFBD> д 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> 60 us
|
||||
DQ = 1; // <20>ͷ<EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||
Delay_us(5); // <20><>д 0<><30><EFBFBD>ָ<EFBFBD> ʱ<><CAB1> 10us
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//// READ_BYTE - <20><> M601 <20><>ȡ һ<>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char OW_ReadByte(void)
|
||||
{
|
||||
unsigned char i, j;
|
||||
unsigned char value = 0;
|
||||
for (i = 0;i < 8;i++) {
|
||||
j = read_bit();
|
||||
value = (value) | (j<<i); // ÿ<>ζ<EFBFBD><CEB6><EFBFBD> 1 λ(<28><>λ <20><><EFBFBD><EFBFBD> ), Ȼ<><C8BB> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
return(value);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//// WRITE_BYTE - <20><><EFBFBD><EFBFBD> дһ<D0B4>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD> <20><> M601
|
||||
void OW_WriteByte(char val)
|
||||
{
|
||||
unsigned char i;
|
||||
unsigned char temp;
|
||||
for (i = 0; i < 8; i++) { // д<>ֽ<EFBFBD> ,ÿ<><C3BF> һλ
|
||||
temp = val >> i;
|
||||
temp &= 0x01; // <20><>λ <20><><EFBFBD><EFBFBD>
|
||||
write_bit(temp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><>оƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param scr<63><72><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬 <20><><EFBFBD><EFBFBD>Ϊ @sizeof<6F><66>M601_SCRATCHPAD_READ<41><44>
|
||||
* @retval <20><>״̬
|
||||
*/
|
||||
BOOL M601_ReadScratchpad_SkipRom(ubyte *scr)
|
||||
{
|
||||
int i;
|
||||
|
||||
// /*size < sizeof(M601_SCRATCHPAD_READ)*/
|
||||
if(OW_ResetPresence() == FALSE)
|
||||
return FALSE;
|
||||
|
||||
OW_WriteByte(SKIP_ROM);
|
||||
OW_WriteByte(READ_SCRATCHPAD);
|
||||
|
||||
for(i=0; i < sizeof(M601_SCRATCHPAD_READ); i++)
|
||||
{
|
||||
*scr++ = OW_ReadByte();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief доƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param scr<63><72><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬 <20><><EFBFBD><EFBFBD>Ϊ @sizeof<6F><66>M601_SCRATCHPAD_WRITE<54><45>
|
||||
* @retval д״̬
|
||||
**/
|
||||
BOOL M601_WriteScratchpad_SkipRom(ubyte *scr)
|
||||
{
|
||||
int i;
|
||||
|
||||
if(OW_ResetPresence() == FALSE)
|
||||
return FALSE;
|
||||
|
||||
OW_WriteByte(SKIP_ROM);
|
||||
OW_WriteByte(WRITE_SCRATCHPAD);
|
||||
|
||||
for(i=0; i < sizeof(M601_SCRATCHPAD_WRITE); i++)
|
||||
{
|
||||
OW_WriteByte(*scr++);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ƶ<EFBFBD>ʺ<EFBFBD><CABA>ظ<EFBFBD><D8B8><EFBFBD>
|
||||
* @param mps Ҫ<><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
|
||||
* @arg CFG_MPS_Single <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD>
|
||||
* @arg CFG_MPS_Half <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>0.5<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @arg CFG_MPS_1 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>1<EFBFBD><31><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @arg CFG_MPS_2 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>2<EFBFBD><32><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @arg CFG_MPS_4 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>4<EFBFBD><34><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @arg CFG_MPS_10 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>10<31><30><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param repeatability<74><79>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5>ظ<EFBFBD><D8B8><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
|
||||
* @arg CFG_Repeatbility_Low <09><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ظ<EFBFBD><D8B8><EFBFBD>
|
||||
* @arg CFG_Repeatbility_Medium <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
||||
* @arg CFG_Repeatbility_High <09><><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8>ظ<EFBFBD><D8B8><EFBFBD>
|
||||
* @retval <20><>
|
||||
*/
|
||||
BOOL SetConfig(ubyte mps, ubyte repeatability)
|
||||
{
|
||||
ubyte scrb[sizeof(M601_SCRATCHPAD_READ)];
|
||||
M601_SCRATCHPAD_READ *scr = (M601_SCRATCHPAD_READ *) scrb;
|
||||
|
||||
/*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD><DAA1><EFBFBD>7<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ϵͳ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
||||
if(M601_ReadScratchpad_SkipRom(scrb) == FALSE)
|
||||
{
|
||||
return FALSE; /*<2A><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>ˮƽ*/
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
||||
if(scrb[8] != MY_OW_CRC8(scrb, 8))
|
||||
{
|
||||
return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
||||
}
|
||||
|
||||
scr->Cfg &= ~CFG_Repeatbility_Mask;
|
||||
scr->Cfg |= repeatability;
|
||||
scr->Cfg &= ~CFG_MPS_Mask;
|
||||
scr->Cfg |= mps;
|
||||
|
||||
M601_WriteScratchpad_SkipRom(scrb+4);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><>16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD>¶ȶ<C2B6><C8B6><EFBFBD>
|
||||
* @param out<75><74><EFBFBD>з<EFBFBD><D0B7>ŵ<EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @retval <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>¶<EFBFBD>
|
||||
*/
|
||||
float M601_OutputtoTemp(int out)
|
||||
{
|
||||
|
||||
|
||||
|
||||
return ((float)(out/256.0) + 40.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD>
|
||||
* @param <20><>
|
||||
* @retval <20><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>״̬
|
||||
*/
|
||||
BOOL ConvertTemp(void)
|
||||
{
|
||||
if(OW_ResetPresence() == FALSE)
|
||||
return FALSE;
|
||||
|
||||
OW_WriteByte(SKIP_ROM);
|
||||
OW_WriteByte(CONVERT_T);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20>ȴ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ConvertTemp<6D><70><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
* @param iTemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>16λ<36>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @retval <20><>״̬
|
||||
*/
|
||||
//BOOL ReadTempWaiting(uword *iTemp)
|
||||
//{
|
||||
// ubyte scrb[sizeof(M601_SCRATCHPAD_READ)];
|
||||
// M601_SCRATCHPAD_READ *scr = (M601_SCRATCHPAD_READ *) scrb;
|
||||
|
||||
// /*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
||||
// if(M601_ReadScratchpad_SkipRom(scrb) == FALSE)
|
||||
// {
|
||||
// UnSwSample_1.bit_data.temperature[1] = 1;
|
||||
// return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
||||
// }
|
||||
|
||||
// /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
||||
// UnSwSample_1.bit_data.temperature[1] = scrb[8];
|
||||
// if(scrb[8] != MY_OW_CRC8(scrb, 8))
|
||||
// {
|
||||
|
||||
// return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
||||
// }
|
||||
//// UnSwSample_1.bit_data.temperature[1] = *iTemp;
|
||||
// /*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
|
||||
// *iTemp = ((uword)(scr->T_msb) << 8) | scr->T_lsb;
|
||||
//
|
||||
// return TRUE;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param <20><>
|
||||
* @retval ״̬
|
||||
*/
|
||||
|
||||
//BOOL GetTemp(void)
|
||||
//{
|
||||
// static uword intTemp = 0;//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Լ<EFBFBD><D4BC>仯
|
||||
// float fTemp;
|
||||
// int signedInt_f_tem = 0;
|
||||
////---------------------------------------
|
||||
// intTemp = 0;
|
||||
// if(ConvertTemp() == FALSE) return FALSE;
|
||||
// Delay_us(6000);
|
||||
// ReadTempWaiting(&intTemp);
|
||||
|
||||
// signedInt_f_tem = (int)intTemp;
|
||||
//
|
||||
// fTemp = ( (float)(signedInt_f_tem)/256.0 ) + 40.0;
|
||||
//
|
||||
//
|
||||
//// fTemp = M601_OutputtoTemp(signedInt_f_tem);
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// signedInt_f_tem = (int)(fTemp*10);
|
||||
//// <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// UnSwSample_1.bit_data.temperature[0] = signedInt_f_tem;
|
||||
// return TRUE;
|
||||
//}
|
||||
/**-----------------------------------------------------------------------
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>bit<69><74><EFBFBD><EFBFBD>ȡ˳<C8A1><EFBFBD>λ-><3E><>λ<EFBFBD><CEBB>
|
||||
* @param <20><>
|
||||
* @retval <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bit<69><74><EFBFBD><EFBFBD>
|
||||
-------------------------------------------------------------------------*/
|
||||
unsigned char OW_Read2Bits(void)
|
||||
{
|
||||
unsigned char i, dq, owdata;
|
||||
owdata = 0;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
dq = read_bit();
|
||||
owdata = (owdata) | (dq << i);
|
||||
}
|
||||
return owdata;
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>㷨
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ROM ID
|
||||
* @param <20><><EFBFBD><EFBFBD>ROM ID<49>Ķ<EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
|
||||
* @retval <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M601<30>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
*/
|
||||
int Search_ROM(unsigned char(*romID)[8])
|
||||
{
|
||||
unsigned char k, l = 0, ConflictBit, m, n;
|
||||
unsigned char BUFFER[MAXNUM]={0};
|
||||
unsigned char ss[64];
|
||||
unsigned char s = 0;
|
||||
int num = 0;
|
||||
do
|
||||
{
|
||||
if (OW_ResetPresence() == 0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴӻ<CFB4><D3BB>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
OW_WriteByte(0xF0);//<2F><><EFBFBD><EFBFBD> ROM <20><><EFBFBD>к<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
for (m = 0; m < 8; m++)
|
||||
{
|
||||
for (n = 0; n < 8; n++)
|
||||
{
|
||||
k = OW_Read2Bits(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
k = k & 0x03;
|
||||
s = s >> 1;
|
||||
|
||||
if (k == 0x02)
|
||||
{ //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λΪ 0
|
||||
write_bit(0); //<2F><><EFBFBD><EFBFBD>д 0, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ 0 <20><><EFBFBD>豸<EFBFBD><E8B1B8>Ӧ
|
||||
ss[(m * 8 + n)] = 0;
|
||||
}
|
||||
else if (k == 0x01)
|
||||
{ //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λΪ 1
|
||||
s = s | 0x80;
|
||||
write_bit(1); //<2F><><EFBFBD><EFBFBD>д 1, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ 1 <20><><EFBFBD>豸<EFBFBD><E8B1B8>Ӧ
|
||||
ss[(m * 8 + n)] = 1;
|
||||
}
|
||||
else if (k == 0x00)
|
||||
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 00, <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
||||
ConflictBit = m * 8 + n + 1;
|
||||
if (ConflictBit > BUFFER[l])
|
||||
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µIJ<C2B5><C4B2><EFBFBD>λ<EFBFBD><CEBB>ѡ<EFBFBD><D1A1> 0
|
||||
write_bit(0);
|
||||
ss[(m * 8 + n)] = 0;
|
||||
BUFFER[++l] = ConflictBit;
|
||||
}
|
||||
else if (ConflictBit < BUFFER[l])
|
||||
{//<2F><><EFBFBD>ϴα<CFB4><CEB1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> 0 <20>IJ<EFBFBD><C4B2><EFBFBD>λ֮ǰ<D6AE>IJ<EFBFBD><C4B2><EFBFBD>λ<EFBFBD><EFBFBD><D4B0>ϴα<CFB4><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||||
s = s | ((ss[(m * 8 + n)] & 0x01) << 7);
|
||||
write_bit(ss[(m * 8 + n)]);
|
||||
}
|
||||
else if (ConflictBit == BUFFER[l])
|
||||
{ //<2F><><EFBFBD>ϴα<CFB4><CEB1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> 0 <20>IJ<EFBFBD><C4B2><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> 1
|
||||
s = s | 0x80;
|
||||
write_bit(1);
|
||||
ss[(m * 8 + n)] = 1;
|
||||
l = l - 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 11<31><31>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
return num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
romID[num][m] = s;
|
||||
s = 0;
|
||||
}
|
||||
num = num + 1;
|
||||
} while (BUFFER[l] != 0 && (num < MAXNUM));
|
||||
return num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> M601 <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><>оƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param scr<63><72><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬 <20><><EFBFBD><EFBFBD>Ϊ @sizeof<6F><66>M601_SCRATCHPAD_READ<41><44>
|
||||
* @param j <20><>search<63><68><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>оƬ<D0BE><C6AC>j<EFBFBD><6A>ֵ0
|
||||
* @retval <20><>״̬
|
||||
*/
|
||||
BOOL M601_ReadScratchpad(unsigned char* scr, unsigned char j)
|
||||
{
|
||||
unsigned char i, k;
|
||||
|
||||
/*size < sizeof(M601_SCRATCHPAD_READ)*/
|
||||
if (OW_ResetPresence() == FALSE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//#ifdef SingleIC
|
||||
// OW_WriteByte(SKIP_ROM);
|
||||
|
||||
//#else
|
||||
OW_WriteByte(MATCH_ROM);
|
||||
for (k = 0; k < 8; k++)
|
||||
{
|
||||
OW_WriteByte(romid[j][k]);
|
||||
}
|
||||
//#endif
|
||||
OW_WriteByte(READ_SCRATCHPAD);
|
||||
|
||||
for (i = 0; i < sizeof(M601_SCRATCHPAD_READ); i++)
|
||||
{
|
||||
*scr++ = OW_ReadByte();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20>ȴ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ConvertTemp<6D><70><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
* @param iTemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>16λ<36>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param j <20><>search<63><68><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>оƬ<D0BE><C6AC>j<EFBFBD><6A>ֵ0
|
||||
* @retval <20><>״̬
|
||||
*/
|
||||
BOOL ReadTempWaiting(unsigned short* iTemp, unsigned char j)
|
||||
{
|
||||
unsigned char scrb[sizeof(M601_SCRATCHPAD_READ)];
|
||||
M601_SCRATCHPAD_READ* scr = (M601_SCRATCHPAD_READ*)scrb;
|
||||
|
||||
/*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
||||
if (M601_ReadScratchpad(scrb, j) == 0)
|
||||
{
|
||||
return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
||||
if (scrb[8] != MY_OW_CRC8(scrb, 8))
|
||||
{
|
||||
return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
|
||||
*iTemp = (unsigned short)scr->T_msb << 8 | scr->T_lsb;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
/**
|
||||
* @brief <20><><EFBFBD>¶<EFBFBD><C2B6><EFBFBD>
|
||||
* @param <20><>
|
||||
* @retval ״̬
|
||||
*/
|
||||
BOOL GetTemp(void)
|
||||
{
|
||||
float fTemp;
|
||||
static unsigned int iTemp[MAXNUM];
|
||||
int i;
|
||||
int signedInt_f_tem = 0;
|
||||
//----------------------------------------------------
|
||||
// memset(romid, 0, sizeof(romid));//<2F><><EFBFBD><EFBFBD>
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬһ<C6AC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
if(ConvertTemp() == FALSE) return FALSE;
|
||||
Delay_us(6500);
|
||||
|
||||
|
||||
for (i = 0; i < RomNum; i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ
|
||||
{
|
||||
iTemp[i] = 0;
|
||||
/*<2A><><EFBFBD><EFBFBD>*/
|
||||
ReadTempWaiting(&iTemp[i], i);
|
||||
|
||||
fTemp = M601_OutputtoTemp((int)iTemp[i]); //<2F>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
signedInt_f_tem = (int)(fTemp*10);
|
||||
// <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UnSwSample_1.bit_data.temperature[i] = (unsigned int)signedInt_f_tem;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
164
temperature.h
Normal file
164
temperature.h
Normal file
@@ -0,0 +1,164 @@
|
||||
#ifndef _TEMPERATURE_H_
|
||||
#define _TEMPERATURE_H_
|
||||
|
||||
#include "MAIN.H"
|
||||
|
||||
|
||||
#define DQ P3_5
|
||||
|
||||
///*Bit definition of config register*/
|
||||
#define CFG_CLKSTRETCH_Mask 0x20
|
||||
#define CFG_MPS_Mask 0x1C
|
||||
#define CFG_Repeatbility_Mask 0x03
|
||||
|
||||
#define CFG_ClkStreatch_Disable (0x00 << 5)
|
||||
#define CFG_ClkStreatch_Enable (0x01 << 5)
|
||||
|
||||
#define CFG_MPS_Single 0x00
|
||||
#define CFG_MPS_Half 0x04
|
||||
#define CFG_MPS_1 0x08
|
||||
#define CFG_MPS_2 0x0C
|
||||
#define CFG_MPS_4 0x10
|
||||
#define CFG_MPS_10 0x14
|
||||
|
||||
#define CFG_Repeatbility_Low 0x00
|
||||
#define CFG_Repeatbility_Medium 0x01
|
||||
#define CFG_Repeatbility_High 0x02
|
||||
|
||||
|
||||
#define MAXNUM 5 /*<2A><><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>*/
|
||||
|
||||
typedef enum {
|
||||
FALSE = 0,
|
||||
TRUE = !FALSE
|
||||
} BOOL;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char Tha_set_lsb;
|
||||
char Tla_set_lsb;
|
||||
ubyte Cfg; /*ϵͳ<CFB5><CDB3><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>, RW*/
|
||||
} M601_SCRATCHPAD_WRITE;
|
||||
|
||||
|
||||
/* M601/01 ow Commands-------------------------------------------------------*/
|
||||
typedef enum
|
||||
{
|
||||
//ROM command
|
||||
SKIP_ROM = 0xcc,
|
||||
READ_ROM = 0x33,
|
||||
MATCH_ROM = 0x55,
|
||||
SEARCH_ROM = 0xf0,
|
||||
ALARM_SEARCH = 0xec,
|
||||
//Function command
|
||||
CONVERT_T = 0x44,
|
||||
READ_SCRATCHPAD = 0xbe,
|
||||
WRITE_SCRATCHPAD = 0x4e,
|
||||
} M601_OW_CMD;
|
||||
|
||||
|
||||
|
||||
|
||||
/****************** Scratchpad/SRAM ******************/
|
||||
/*SRAM scratchpad*/
|
||||
typedef struct
|
||||
{
|
||||
ubyte T_lsb; /*The LSB of <20>¶Ƚ<C2B6><C8BD><EFBFBD>, RO*/
|
||||
ubyte T_msb; /*The MSB of <20>¶Ƚ<C2B6><C8BD><EFBFBD>, RO*/
|
||||
ubyte C1_lsb; /*The LSB of <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>C1, RO*/
|
||||
ubyte C1_msb; /*The MSB of <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>C1, Ro*/
|
||||
ubyte Tha_set_lsb;
|
||||
ubyte Tla_set_lsb;
|
||||
ubyte Cfg; /*ϵͳ<CFB5><CDB3><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>, RW*/
|
||||
ubyte Status; /*ϵͳ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>, RO*/
|
||||
ubyte crc_scr; /*CRC for byte0-7, RO*/
|
||||
} M601_SCRATCHPAD_READ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//20250116 <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳɼ<C8B2><C9BC>ֽ<EFBFBD>
|
||||
typedef struct _StrSwSample
|
||||
{
|
||||
unsigned int emergency_stop_switch : 1; // ͨ<><CDA8>1<EFBFBD><31><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
|
||||
unsigned int High_voltage_switch : 1; // ͨ<><CDA8>2<EFBFBD><32><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
||||
unsigned int CH03 : 1; // ͨ<><CDA8>3
|
||||
unsigned int CH04 : 1; // ͨ<><CDA8>4
|
||||
unsigned int CH05 : 1; // ͨ<><CDA8>5
|
||||
unsigned int CH06 : 1; // ͨ<><CDA8>6
|
||||
unsigned int CH07 : 1; // ͨ<><CDA8>7
|
||||
unsigned int CH08 : 1; // ͨ<><CDA8>8
|
||||
unsigned int CH09 : 1; // ͨ<><CDA8>9
|
||||
unsigned int CH10 : 1; // ͨ<><CDA8>10
|
||||
unsigned int CH11 : 1; // ͨ<><CDA8>11
|
||||
unsigned int CH12 : 1; // ͨ<><CDA8>12
|
||||
unsigned int CH13 : 1; // ͨ<><CDA8>13
|
||||
unsigned int CH14 : 1; // ͨ<><CDA8>14
|
||||
unsigned int CH15 : 1; // ͨ<><CDA8>15
|
||||
unsigned int CH16 : 1; // ͨ<><CDA8>16
|
||||
unsigned int CH17 : 1; // ͨ<><CDA8>17
|
||||
unsigned int CH18 : 1; // ͨ<><CDA8>18
|
||||
unsigned int CH19 : 1; // ͨ<><CDA8>19
|
||||
unsigned int CH20 : 1; // ͨ<><CDA8>20
|
||||
unsigned int CH21 : 1; // ͨ<><CDA8>21
|
||||
unsigned int CH22 : 1; // ͨ<><CDA8>22
|
||||
unsigned int CH23 : 1; // ͨ<><CDA8>23
|
||||
unsigned int CH24 : 1; // ͨ<><CDA8>24
|
||||
unsigned int CH25 : 1; // ͨ<><CDA8>25
|
||||
unsigned int CH26 : 1; // ͨ<><CDA8>26
|
||||
unsigned int CH27 : 1; // ͨ<><CDA8>27
|
||||
unsigned int CH28 : 1; // ͨ<><CDA8>28
|
||||
unsigned int CH29 : 1; // ͨ<><CDA8>29
|
||||
unsigned int CH30 : 1; // ͨ<><CDA8>30
|
||||
unsigned int CH31 : 1; // ͨ<><CDA8>31
|
||||
unsigned int CH32 : 1; // ͨ<><CDA8>32
|
||||
|
||||
// unsigned int CH33 : 1; // ͨ<><CDA8>33
|
||||
// unsigned int CH34 : 1; // ͨ<><CDA8>34
|
||||
// unsigned int CH35 : 1; // ͨ<><CDA8>35
|
||||
// unsigned int CH36 : 1; // ͨ<><CDA8>36
|
||||
// unsigned int CH37 : 1; // ͨ<><CDA8>37
|
||||
// unsigned int CH38 : 1; // ͨ<><CDA8>38
|
||||
// unsigned int CH39 : 1; // ͨ<><CDA8>39
|
||||
// unsigned int CH40 : 1; // ͨ<><CDA8>40
|
||||
// unsigned int CH41 : 1; // ͨ<><CDA8>41
|
||||
// unsigned int CH42 : 1; // ͨ<><CDA8>42
|
||||
// unsigned int CH43 : 1; // ͨ<><CDA8>43
|
||||
// unsigned int CH44 : 1; // ͨ<><CDA8>44
|
||||
// unsigned int reserve : 4;
|
||||
|
||||
unsigned int temperature[2]; // <20>¶<EFBFBD>
|
||||
|
||||
} StrSwSample;
|
||||
|
||||
typedef union _UnSwSample
|
||||
{
|
||||
StrSwSample bit_data; // ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned char arr[sizeof(StrSwSample)]; // ͨ<><CDA8><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>С
|
||||
} UnSwSample;
|
||||
|
||||
|
||||
|
||||
|
||||
extern UnSwSample UnSwSample_1 ;
|
||||
|
||||
|
||||
|
||||
BOOL GetTemp(void);
|
||||
BOOL SetConfig(ubyte mps, ubyte repeatability);
|
||||
|
||||
|
||||
int Search_ROM(unsigned char(*romID)[8]);
|
||||
extern unsigned char romid[MAXNUM][8];
|
||||
extern int RomNum;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _TEMPERATURE_H_
|
||||
Reference in New Issue
Block a user