Problem with comparison.
/Modules/TDC/GP201A/SW/PICinterface/main.c
0,0 → 1,140
#include "main.h"
#include <math.h>
 
#define INTN_PIN PIN_D7
#include "GP2.h"
 
#define VERSION 0.2
 
#define ONE_WIRE_PIN PIN_E2
#include "ds1820.c"
 
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
 
TDC_reset();
 
delay_ms(50);
 
int16 ret16;
int8 ret8;
 
TDC_reset();
delay_ms(100);
while(TRUE)
{
//----------------------------------------------- Nastaveni registru
MRange=TDC_MRANGE2; // sets measurement mode
hit1=TDC_MRANGE2_HIT1_START;
hitin1=TDC_HITIN1_4; // set nomber of hits on channel 1
hitin2=TDC_HITIN2_0; // disable channel 2 (normal state for this mode)
en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT; // eneble all possible interrupt flags
en_err_val=TDC_ERRVAL_EN; // enable of error value output
clkhsdiv=TDC_CLKHSDIV_4; // divide clkHS by 4
delval1=0x0; // windowing disabled
delval2=0x0;
delval3=0x0;
TDC_update_registers();
 
delay_ms(10);
 
//----------------------------------------------- Measuring mode 2
TDC_init();
delay_ms(50);
TDC_start_cycle();
While(!input(INTN_PIN)); // waiting for interrupt flag
//----------------------------------------------- Pocitani
 
// printf("Time2: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
 
output_low(TDC_ENABLE); //status register read
ret8=0;
ret8=(0b1011<<4)|4;
spi_xfer(TDC_stream,ret8,8);
ret16=spi_xfer(TDC_stream,0,16);
output_high(TDC_ENABLE);
printf("[%Lu %Lu %Lu %Lu %Lu %Lu %Lu]\r\n", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&TDC_get_status()); //status register print
 
printf("Time2: %3.7f %3.7f %3.7f \r\n", TDC_mrange2_get_time(1), TDC_mrange2_get_time(2), TDC_mrange2_get_time(3));
 
 
//----------------------------------------------- Nastaveni registru
/* MRange=TDC_MRANGE1;
hit1=TDC_MRANGE1_HIT1_NOAC;
hit2=TDC_MRANGE1_HIT2_NOAC;
hitin1=TDC_HITIN1_1;
hitin2=TDC_HITIN2_1;
en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT;
en_err_val=TDC_ERRVAL_EN;
clkhsdiv=TDC_CLKHSDIV_4;
delval1=0x0;
delval2=0x0;
delval3=0x0;
TDC_update_registers();
 
delay_ms(100);
 
 
//----------------------------------------------- Mereni 1
TDC_init();
 
//----------------------------------------------- Pocitani
 
// printf("Time1: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
 
output_low(TDC_ENABLE); //status register
ret8=0;
ret8=(0b1011<<4)|4;
spi_xfer(TDC_stream,ret8,8);
ret16=spi_xfer(TDC_stream,0,16);
output_high(TDC_ENABLE);
 
printf("[%Lu %Lu %Lu %Lu %Lu %Lu %Lu]\r\n", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&TDC_get_status());
 
printf("Time1: %3.7f %3.7f %3.7f \r\n", TDC_mrange1_get_time(1,0,1,1), TDC_mrange1_get_time(2,0,2,1), TDC_mrange1_get_time(1,1,2,1));
 
/// ----------------------------------------------- Temperature masurement
 
*/
TDC_reset();
portnum=TDC_TPORTNUM_4;
Tcycle=TDC_TCYCLE_SHORT;
fakenum=TDC_TFAKENUM_2;
selclkT=TDC_TSELCLK_128HS;
 
TDC_update_registers();
 
TDC_init();
TDC_start_temp();
output_low(TDC_ENABLE); //status register
ret8=0;
ret8=(0b1011<<4)|4;
spi_xfer(TDC_stream,ret8,8);
ret16=spi_xfer(TDC_stream,0,16);
output_high(TDC_ENABLE);
printf("Temp: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
printf(" [%Lu %Lu %Lu %Lu %Lu %Lu %Lu] \r\n", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&TDC_get_status());
}
}
/Modules/TDC/GP201A/SW/PICinterface/main.hex
0,0 → 1,383
:1000000008308A0025280000D434ED32321DA012B9
:1000100033173733A01233173733A0123317373360
:10002000A0060A00D4326D383A102526581025262D
:1000300058102526581025265810800BA02D25264F
:100040007510252675102526751025267510252670
:100050007510252675102526F52EA0060A005E08C7
:10006000203C03193A28DF00DA0DDB0DDC0DDD0D35
:10007000DF0B34288316861406100611831206112E
:100080005E08DF000615DD1F0610DD1B0614DA0D05
:10009000DB0DDC0DDD0D0611F70DF80DF90DFA0D78
:1000A000861C771086187714DF0B42280800831609
:1000B000861183128611DD01DC01DB015030DA008C
:1000C0000830DE002F208316861183128615080063
:1000D000523084008313000803197B280630F8008F
:1000E000F701F70B7128F80B70287B30F700F70B3E
:1000F0007728800B6E2808008316861183128611DC
:10010000DD01DC01DB018130DA000830DE002F2068
:10011000DD01DC01DB012708DA000430DE002F20DE
:10012000DD01DC01DB012808DA000430DE002F20CD
:10013000003026190130D200DD01DC01DB0152085C
:10014000DA000130DE002F20DD01DC01DB010130AF
:10015000DA00DE002F20DD01DC01DB012908DA00F6
:100160000330DE002F20DD01DC01DB012A08DA008C
:100170000330DE002F20DD01DC01DB01DA01083075
:10018000DE002F2083168611831286150800831641
:10019000861183128611DD01DC01DB018030DA007B
:1001A0000830DE002F20DD01DC01DB012008DA0051
:1001B0000430DE002F20DD01DC01DB012108DA0044
:1001C0000430DE002F20DD01DC01DB012208DA0033
:1001D0000230DE002F20DD01DC01DB012308DA0024
:1001E0000230DE002F20DD01DC01DB012408DA0013
:1001F0000230DE002F20003025180130C100DD0163
:10020000DC01DB014108DA000130DE002F20003084
:10021000A5180130C100DD01DC01DB014108DA0075
:100220000130DE002F20003025190130C100DD0132
:10023000DC01DB014108DA000130DE002F20003054
:10024000A5190130C100DD01DC01DB014108DA0044
:100250000130DE002F200030251A0130C100DD0101
:10026000DC01DB014108DA000130DE002F20003024
:10027000A51A0130C100DD01DC01DB014108DA0013
:100280000130DE002F200030251B0130C100DD01D0
:10029000DC01DB014108DA000130DE002F200030F4
:1002A000A51B0130C100DD01DC01DB014108DA00E2
:1002B0000130DE002F20003026180130C100DD01A2
:1002C000DC01DB014108DA000130DE002F200030C4
:1002D000A6180130C100DD01DC01DB014108DA00B4
:1002E0000130DE002F2083168611831286157C20B4
:1002F0008316861183128611DD01DC01DB01823059
:10030000DA002030DE002F20DD01DC01DB012B08CC
:10031000DA000330DE002F200030A6190130C100C2
:10032000DD01DC01DB014108DA000130DE002F20B5
:100330000030261A0130C100DD01DC01DB0141087B
:10034000DA000130DE002F202F08DD002E08DC004F
:100350002D08DB002C08DA001330DE002F20831676
:100360008611831286158316861183128611DD018C
:10037000DC01DB018330DA002030DE002F20DD01DC
:10038000DC01DB01DA010230DE002F200030A61A8A
:100390000130C100DD01DC01DB014108DA00013080
:1003A000DE002F20DD01DC01DB013008DA00023045
:1003B000DE002F203408DD003308DC003208DB00CB
:1003C0003108DA001330DE002F20831686118312E5
:1003D00086158316861183128611DD01DC01DB018F
:1003E0008430DA002030DE002F20DD01DC01DB016B
:1003F0000430DA000530DE002F203808DD00370831
:10040000DC003608DB003508DA001330DE002F2070
:100410008316861183128615831686118312861120
:10042000DD01DC01DB018530DA002030DE002F2029
:10043000DD01DC01DB013908DA000330DE002F20AA
:100440000030261B0130C100DD01DC01DB01410869
:10045000DA000130DE002F200030A61B0130C10081
:10046000DD01DC01DB014108DA000130DE002F2074
:10047000DD01DC01DB013A08DA000330DE002F2069
:10048000DD01DC013C08DB003B08DA001030DE0057
:100490002F20831686118312861508008316861175
:1004A00083128611DD01DC01DB017030DA000830D7
:1004B000DE002F208316861183128615080083160E
:1004C000861183128611DD01DC01DB010130DA00C7
:1004D0000830DE002F2083168611831286158A15B8
:1004E0000A12F3288316861183128611DD01DC01BE
:1004F000DB01B430DA000830DE002F20DD01DC0142
:10050000DB01DA011030DE002F207808D3007708F5
:10051000D20083168611831286155208F8005308FC
:10052000F900080083168613831286130830F8003A
:10053000992A0000F817AA2AF813DA0C031886176C
:10054000031C86137817AA2A7813F80B9D2AA82A69
:1005500000008617A7308400840BAC2AAF2AF81B52
:100560009C2A781BA42A0800D7010408D60057103B
:10057000831B5714500EF038D200D207E23ED3004E
:10058000323ED50050080F39D307D307D507E93ECF
:10059000D400D407D4074F0E0F39D407D507D40D94
:1005A000D50DD509D50D4F080F39D507D20D073018
:1005B000D1000A30D507D403031CDA2AD407D303A9
:1005C000031CDE2AD307D203031CE22AD207D1037D
:1005D000031CE62A51308400831307305605561356
:1005E000840755300402031956170008F700031D4D
:1005F000012B561B012B561A132BD619012B203019
:10060000042BD61556123030F707D0010408CF005E
:100610005010831B50147708DA0092224F08840090
:10062000831350188317840A561FF12A0800831673
:10063000861183128611B0305407FF3ED900DD01C8
:10064000DC01DB015908DA000830DE002F20DD0173
:10065000DC01DB01DA012030DE002F207A08D8002F
:100660007908D7007808D6007708D5008316861158
:10067000831286155508F7005608F8005708F90048
:100680005808FA000800B630F700FA01F901F8013D
:100690005208530454045504031D502BF7015D2BDD
:1006A0000310F81B5C2BD20DD30DD40DD50DFA0D14
:1006B000F90DF80DF70B502BF81308005608031925
:1006C000232CE2005A080319232CE202031C6D2B91
:1006D0007F30E2070318232C732B8130E202031CC6
:1006E000232C0319232C6208F700F801F901FA0101
:1006F000E1015708E000E0175808DF005908DE0064
:100700001930E2005D08DE020318962B0130DF028B
:100710000318962BE0020318962BE1020318962B80
:10072000E10AE00ADF0A5D08DE07C82B5C08DF0289
:100730000318B12B0130E0020318B12BE1020318BA
:10074000B12BE10AE00A5C08DF075D08DE07031C45
:10075000C82BDF0A031DC82BE00A031DC82BE10AC2
:10076000C82B5B088038E0020318C72B0130E10278
:100770000318C72BE10A5B088038E0075C08DF0735
:10078000031CA52BE00A031DA52BE10AA52B7A1457
:10079000E20BCB2BD62B0310DE0DDF0DE00DE10DB0
:1007A0000310FA0DF90DF80DE30D822B631CDE2BFF
:1007B0000310F80CF90CFA0CE30CE12BF703031906
:1007C000232CE31B0A2C0310DE0DDF0DE00DE10DE1
:1007D0005D08DE020318F62B0130DF020318F62B4A
:1007E000E0020318F62BE102031C192C5C08DF025F
:1007F0000318012C0130E0020318012CE102031C54
:10080000192C5B088038E00203180A2C0130E10241
:10081000031C192CFA0A031D192CF90A031D192CA3
:10082000F80A031D192CF70A0319232CF80CF90CEC
:10083000FA0C5708E2005B08E206E21F212CF817C9
:10084000272CF813272CF701F801F901FA01080009
:100850005A080319982CE2005E080319982CE20745
:100860000318392C7F30E202031C982C0319982CB2
:100870003D2C8130E2070318982C6208F700F8013C
:10088000F901FA015B08E600E6175C08E5005D087F
:10089000E4001830E200E301641C662C6108FA07EA
:1008A000031C582CF90A031D582CF80A0319E317E6
:1008B0006008F907031C5F2CF80A0319E3175F08A7
:1008C000DC00DC175C08F8070318E317E30DF80CED
:1008D000F90CFA0CE60CE50CE40C0310E20B4B2CC3
:1008E0000130F7070318982CF81B7D2CE60DFA0D44
:1008F000F90DF80DF7030319982CE61F8E2CFA0A50
:10090000031D8E2CF90A031D8E2CF80A031D8E2C54
:10091000F80CF90CFA0CF70A0319982C5B08E300A1
:100920005F08E306E31F962CF8179C2CF8139C2C09
:10093000F701F801F901FA0108004908013A031921
:10094000A82C033A0319AB2C013A0319AE2CB12C95
:100950000230A700B12C0330A700B12C0430A7004F
:10096000B12C7C203230D200682072227908FA0043
:1009700078080739D200D3015208D40017237A0827
:10098000CD007908CC007808CB007708CA0023088E
:10099000FC3E0318482E043E512E4D08D5004C084D
:1009A000D4004B08D3004A08D20043237A08D90068
:1009B0007908D8007808D7007708D600DD01DC0177
:1009C000DB018F30DA005E237708D2007808D3008D
:1009D0007908D4007A08D500DD007908DC007808B1
:1009E000DB007708DA00E1012430E0007430DF003A
:1009F0009230DE0028247708D2007808D3007908E6
:100A0000D4007A08D500D9007908D8007808D70032
:100A10007708D6008030DD009630DC001830DB002F
:100A20009530DA005E237A08D1007908D000780882
:100A3000CF007708CE00482E4D08D5004C08D400D2
:100A40004B08D3004A08D20043237A08D90079081A
:100A5000D8007808D7007708D600DD01DC01DB017B
:100A60008F30DA005E237708D2007808D300790847
:100A7000D4007A08D500DD007908DC007808DB00B6
:100A80007708DA00E1012430E0007430DF009230B2
:100A9000DE0028247708D2007808D3007908D40033
:100AA0007A08D500D9007908D8007808D7007708E7
:100AB000D6008030DD009630DC001830DB00953049
:100AC000DA005E237708D2007808D3007908D400D2
:100AD0007A08D500DD007908DC007808DB007708AB
:100AE000DA00E101E001DF018030DE0028247A082D
:100AF000D1007908D0007808CF007708CE00482EC2
:100B00004D08D5004C08D4004B08D3004A08D20049
:100B100043237A08D9007908D8007808D7007708E5
:100B2000D600DD01DC01DB018F30DA005E237708BF
:100B3000D2007808D3007908D4007A08D500DD0007
:100B40007908DC007808DB007708DA00E10124305E
:100B5000E0007430DF009230DE0028247708D200F5
:100B60007808D3007908D4007A08D500D90079082C
:100B7000D8007808D7007708D6008030DD0096309E
:100B8000DC001830DB009530DA005E237708D200F5
:100B90007808D3007908D4007A08D500DD007908F8
:100BA000DC007808DB007708DA00E101E001DF0112
:100BB0008130DE0028247A08D1007908D000780836
:100BC000CF007708CE00482E4D08D5004C08D40041
:100BD0004B08D3004A08D20043237A08D900790889
:100BE000D8007808D7007708D600DD01DC01DB01EA
:100BF0008F30DA005E237708D2007808D3007908B6
:100C0000D4007A08D500DD007908DC007808DB0024
:100C10007708DA00E1012430E0007430DF00923020
:100C2000DE0028247708D2007808D3007908D400A1
:100C30007A08D500D9007908D8007808D700770855
:100C4000D6008030DD009630DC001830DB009530B7
:100C5000DA005E237708D2007808D3007908D40040
:100C60007A08D500DD007908DC007808DB00770819
:100C7000DA00E101E001DF018230DE0028247A0899
:100C8000D1007908D0007808CF007708CE00482E30
:100C90004E08F7004F08F8005008F9005108FA0014
:100CA00008000A108A140A158207CD2C1C2D802DED
:100CB000E42D831603178C170C1400000000031892
:100CC000882E83120C087F390313D20003170D08F6
:100CD0000313D30003170F080313D4005208DA00DC
:100CE0009222530803178D000313540803178F0033
:100CF00083168C170C140000000083120313D10B11
:100D0000822E852E83160317882EA72E831603178F
:100D100083120C0D0E0D7F390313D20003170D083B
:100D20000313D30003170F080313D4005208DA008B
:100D30009222530803178D000313540803178F00E2
:100D40008D0A03198F0A03100313D10B592E0800C3
:100D5000F701F801F901FA01E201E301E401E5011B
:100D6000610860045F045E040319E62E2030E6008B
:100D70000310DA0DDB0DDC0DDD0DE20DE30DE40DEE
:100D8000E50D61086502031DCF2E60086402031D96
:100D9000CF2E5F086302031DCF2E5E086202031C84
:100DA000E02E5E08E2025F08031C5F0FE3026008AA
:100DB000031C600FE4026108031C610FE5020314C9
:100DC000F70DF80DF90DFA0DE60BB82E6230840020
:100DD000831308000408D2005108D4000319092F16
:100DE0005008DD004F08DC004E08DB004D08DA003B
:100DF000E101E0012030DF008230DE0028247A08A3
:100E0000D0007908CF007808CE007708CD00D40B49
:100E1000F02E5008DD004F08DC004E08DB004D08C6
:100E2000DA005A08B63CDA00FA015B08DE00DB178C
:100E30000310DB0CDC0CDD0CFA0CF90CF80CF70CD5
:100E4000DA0B182FDE1F2F2FF709F809F909FA0915
:100E5000F70A0319F80A0319F90A0319FA0A7A08B2
:100E6000D0007908CF007808CE007708CD00D01FD9
:100E7000462FD203D216CD09CE09CF09D009CD0A0B
:100E80000319CE0A0319CF0A0319D00A3B30D9003F
:100E90009A30D800CA30D700D6010A30D4005108A1
:100EA0000319D20A5008DD004F08DC004E08DB00B1
:100EB0004D08DA005908E1005808E0005708DF0043
:100EC0005608DE00A8260008CD00840A0008CE00DF
:100ED000840A0008CF00840A0008D000FD3084078F
:100EE000F708031D862F510A54020319862F520852
:100EF0000319882F0F3954020319802F0318B82FB4
:100F0000D21BB82F521B882F2030B42F2030D2058F
:100F1000D21E962FD2125108031DD2037708D20099
:100F20002D30DA0092225208F700D2015108540203
:100F3000031DA42F7708D2002E30DA009222520827
:100F4000F7002030D20500303030D21EB42FD2123C
:100F50005108031DD2037708D2002D30DA00922207
:100F60005208F700D2013030F7077708DA009222F2
:100F70005908DD005808DC005708DB005608DA0085
:100F8000E101E001DF010A30DE00A8267A08D9007D
:100F90007908D8007808D7007708D600D40B522FEC
:100FA00008008316861183128611DD01DC01DB0146
:100FB0000230DA000830DE002F20831686118312FB
:080FC00086158A150A12642A45
:10100000D21B14280F30F700510EF7050A30770273
:1010100003180D283030F7070F285208F707770814
:10102000DA008A1192228A150F30D1050A30510256
:1010300003181C2830301E28D2135208D10751083B
:10104000DA008A1192228A150800840183131F3066
:10105000830583168613831286178316861406105B
:10106000061183120611A0010130A100A201A30103
:10107000A4002514A5102511A5152516A5122517C0
:10108000A5132610A6100530A700A8002611A90157
:10109000AA010130AB00A6112612AF01AE01AD01CD
:1010A000AC01A6120330B000B401B301B201B1012A
:1010B000B801B701B601B501B9012613A617BA01E7
:1010C000BC01BB01831603170908C039890003134B
:1010D0001F129F12003003178800831287018801B6
:1010E0008901FF300313BD00831603170908C039B7
:1010F000890003131F129F12003003178800831208
:1011000003131F139F1383169F1383121F1494122C
:10111000BD123D088316870083123D163D088316D5
:1011200087008312BD113D088316870001308312AA
:1011300094000030831694000108C73908388100F4
:10114000831290010030F800920000308316920064
:1011500083123D153D08831687008312970183167D
:101160009B019C0101309D008312031787018801B8
:1011700089018A11031357208A153230D2008A114F
:1011800068208A158A1157208A156430D2008A1186
:1011900068208A1525170130A8000430AA00A9018B
:1011A0000730AB00A6160230A300AF01AE01AD01BF
:1011B000AC01B401B301B201B101B801B701B6018C
:1011C000B5018A11C7208A150A30D2008A11682019
:1011D0008A158A114E228A153230D2008A1168206F
:1011E0008A158A115F2A8A15831688178312881F29
:1011F000F4288316861183128611C001B430C00012
:10120000DD01DC01DB014008DA000830DE008A1174
:101210002F208A15DD01DC01DB01DA011030DE0050
:101220008A112F208A157808BF007708BE00831620
:101230008611831286153F0EF900FA010F30F90569
:1012400079080139C100C201FA013F0CF900F90C1B
:10125000F90C1F30F90579080139C300C401FA01FE
:101260003F0CF900F90C3F30F90579080139C50048
:10127000C6010310FA013F0CF9000139C700C8018B
:101280003F0CFA003E0CF900FA0CF90CFA0CF90CC0
:10129000FA0CF90CFA0CF90CFA0CF90C0330FA05FB
:1012A00079080739C900CA013F0CFA003E0CF90061
:1012B000FA0CF90CFA0CF90C1F30FA057908073909
:1012C000CB00CC018A1172228A157908FA007808BD
:1012D0000739CD00CE015B30DA008A1192228A15DF
:1012E000103084004208D0004108CF008A11B42297
:1012F0008A152030DA008A1192228A151030840073
:101300004408D0004308CF008A11B4228A15203047
:10131000DA008A1192228A15103084004608D00023
:101320004508CF008A11B4228A152030DA008A11CC
:1013300092228A15103084004808D0004708CF0058
:101340008A11B4228A152030DA008A1192228A1575
:10135000103084004A08D0004908CF008A11B42216
:101360008A152030DA008A1192228A151030840002
:101370004C08D0004B08CF008A11B4228A152030C7
:10138000DA008A1192228A15103084004E08D000AB
:101390004D08CF008A11B4228A155D30DA008A1117
:1013A00092228A150D30DA008A1192228A150A30AB
:1013B000DA008A1192228A150130C9008A119D240F
:1013C0008A157708C1007808C2007908C3007A0836
:1013D000C4000230C9008A119D248A157708C5000F
:1013E0007808C6007908C7007A08C8000330C90029
:1013F0008A119D248A157708C9007808CA007908DF
:10140000CB007A08CC00043003178D0000308F0029
:10141000031007300313D1008A1159268A15893029
:1014200084004408D0004308CF004208CE004108A1
:10143000CD000730D1008A11EA268A152030DA0063
:101440008A1192228A15893084004808D000470802
:10145000CF004608CE004508CD000730D1008A11E4
:10146000EA268A152030DA008A1192228A158930FC
:1014700084004C08D0004B08CF004A08CE00490831
:10148000CD000730D1008A11EA268A152030DA0013
:101490008A1192228A150D30DA008A1192228A1559
:1014A0000A30DA008A1192228A158A1157208A1589
:1014B0002514A5102511A5158A11C7208A158A1192
:1014C0004E228A158A11D12F8A158316861183120E
:1014D0008611C001B430C000DD01DC01DB01400831
:1014E000DA000830DE008A112F208A15DD01DC01C8
:1014F000DB01DA011030DE008A112F208A1578080E
:10150000BF007708BE00831686118312861501304E
:10151000D4008A1117238A157A08C4007908C300F9
:101520007808C2007708C1000230D4008A1117235E
:101530008A157A08C8007908C7007808C6007708B5
:10154000C5000330D4008A1117238A157A08CC000D
:101550007908CB007808CA007708C9000430D400A5
:101560008A1117238A157A08D0007908CF007808E5
:10157000CE007708CD00123003178D0000308F00A9
:10158000031006300313D1008A1159268A15440826
:10159000D1003730D20000204308D1003730D200CC
:1015A00000204208D1003730D20000204108D1008D
:1015B0003730D20000202030DA008A1192228A15BA
:1015C0004808D1003730D20000204708D10037301A
:1015D000D20000204608D1003730D2000020450854
:1015E000D1003730D20000202030DA008A11922258
:1015F0008A154C08D1003730D20000204B08D100AA
:101600003730D20000204A08D1003730D200002005
:101610004908D1003730D20000202030DA008A118A
:1016200092228A155008D1003730D20000204F088E
:10163000D1003730D20000204E08D1003730D20020
:1016400000204D08D1003730D20000202030DA00D1
:101650008A1192228A153F0EF900FA010F30F9051E
:1016600079080139C100C201FA013F0CF900F90CF7
:10167000F90C1F30F90579080139C300C401FA01DA
:101680003F0CF900F90C3F30F90579080139C50024
:10169000C6010310FA013F0CF9000139C700C80167
:1016A0003F0CFA003E0CF900FA0CF90CFA0CF90C9C
:1016B000FA0CF90CFA0CF90CFA0CF90C0330FA05D7
:1016C00079080739C900CA013F0CFA003E0CF9003D
:1016D000FA0CF90CFA0CF90C1F30FA0579080739E5
:1016E000CB00CC018A1172228A157908FA00780899
:1016F0000739CD00CE012030DA008A1192228A15F6
:101700005B30DA008A1192228A1510308400420878
:10171000D0004108CF008A11B4228A152030DA00A7
:101720008A1192228A15103084004408D0004308A0
:10173000CF008A11B4228A152030DA008A11922251
:101740008A15103084004608D0004508CF008A1161
:10175000B4228A152030DA008A1192228A151030BC
:1017600084004808D0004708CF008A11B4228A15A7
:101770002030DA008A1192228A15103084004A083B
:10178000D0004908CF008A11B4228A152030DA002F
:101790008A1192228A15103084004C08D0004B0820
:1017A000CF008A11B4228A152030DA008A119222E1
:1017B0008A15103084004E08D0004D08CF008A11E1
:1017C000B4228A152C3003178D0000308F000314CB
:1017D00004300313D1008A1159268A15CA286300E0
:04400E00F22CFF3F52
:00000001FF
;PIC16F887
;CRC=DEF0 CREATED="27-8-11 21:48"
/Modules/TDC/GP201A/SW/PICinterface/main.pjt
0,0 → 1,33
[PROJECT]
Target=.\main.hex
Development_Mode=
Processor_Text=PIC16F887
ToolSuite=CCS
Processor=0x887F
[.\main]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
[mru-list]
1=.\main.c
[Windows]
0=0000 %S 0 0 796 451 3 0
[Opened Files]
1=main.c
2=GP2.c
3=
4=..\..\..\..\..\..\..\..\..\Program Files (x86)\PICC\drivers\math.h
5=GP2.h
6=GP2.c
7=ds1820.c
8=1wire.c
9=
[Target Data]
OptionString=-p +FM
FileList=D:\MLAB\Modules\TDC\GP201A\SW\PICinterface\main.c
[Units]
Count=1
1=main (main)
/Modules/TDC/GP201A/SW/PICinterface/main.h
0,0 → 1,61
/*
#include <18F4550.h>
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES PBADEN //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES MCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL12 //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV1 //System Clock by 1
#FUSES USBDIV //USB clock source comes from PLL divide by 2
#FUSES VREGEN //USB voltage regulator enabled
#FUSES ICPRT //ICPRT enabled
*/
 
#include <16F887.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //External crystal oscillator
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES NOBROWNOUT //No brownout reset
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOWRT //Program memory not write protected
#FUSES BORV40 //Brownout reset at 4.0V
 
 
 
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B7,rcv=PIN_B6,bits=8)
 
#define TDC_ENABLE PIN_B3 //enable pin for SPI communication with TDC
#use spi(DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2, stream=TDC_stream, bits=32,baud=9600) // uses software SPI
 
 
 
/Modules/TDC/GP201A/SW/PICinterface/GP2.h
0,0 → 1,154
 
 
#define TDC_CLKHS 5000000 // frequency of highspeed oscillator
 
//register 0
#define TDC_NEG_START_INV 1
#define TDC_NEG_START 0
#define TDC_NEG_STOP1_INV 1
#define TDC_NEG_STOP1 0
#define TDC_NEG_STOP2_INV 1
#define TDC_NEG_STOP2 0
#define TDC_MRANGE1 0
#define TDC_MRANGE2 1
#define TDC_AUTOCAL_EN 0
#define TDC_AUTOCAL_DIS 1
#define TDC_CALIBRATE_EN 1
#define TDC_CALIBRATE_DIS 0
#define TDC_TSELCLK_32KHZ 0
#define TDC_TSELCLK_128HS 1
#define TDC_TFAKENUM_2 0
#define TDC_TFAKENUM_8 1
#define TDC_TCYCLE_SHORT 0
#define TDC_TCYCLE_LONG 1
#define TDC_TPORTNUM_2 0
#define TDC_TPORTNUM_4 1
#define TDC_CLKHS_OFF 0
#define TDC_CLKHS_ON 1
#define TDC_CLKHS_640US 2
#define TDC_CLKHS_1280US 4
#define TDC_CLKHSDIV_1 0
#define TDC_CLKHSDIV_2 1
#define TDC_CLKHSDIV_4 2
#define TDC_CLKHSDIV_8 3
#define TDC_CALPERIODS_2 0
#define TDC_CALPERIODS_4 1
#define TDC_CALPERIODS_8 2
#define TDC_CALPERIODS_16 3
 
#define TDC_DIV_FIRE_2 1
#define TDC_DIV_FIRE_3 2
#define TDC_DIV_FIRE_4 3
#define TDC_DIV_FIRE_5 4
#define TDC_DIV_FIRE_6 5
#define TDC_DIV_FIRE_7 6
#define TDC_DIV_FIRE_8 7
#define TDC_DIV_FIRE_9 8
#define TDC_DIV_FIRE_10 9
#define TDC_DIV_FIRE_11 10
#define TDC_DIV_FIRE_12 11
#define TDC_DIV_FIRE_13 12
#define TDC_DIV_FIRE_14 13
#define TDC_DIV_FIRE_15 14
#define TDC_DIV_FIRE_16 15
 
#define TDC_FIRENUM_0 0
#define TDC_FIRENUM_1 1
#define TDC_FIRENUM_2 2
#define TDC_FIRENUM_3 3
#define TDC_FIRENUM_4 4
#define TDC_FIRENUM_5 5
#define TDC_FIRENUM_6 6
#define TDC_FIRENUM_7 7
#define TDC_FIRENUM_8 8
#define TDC_FIRENUM_9 9
#define TDC_FIRENUM_10 10
#define TDC_FIRENUM_11 11
#define TDC_FIRENUM_12 12
#define TDC_FIRENUM_13 13
#define TDC_FIRENUM_14 14
#define TDC_FIRENUM_15 15
 
//register 1
#define TDC_HITIN1_0 0
#define TDC_HITIN1_1 1
#define TDC_HITIN1_2 2
#define TDC_HITIN1_3 3
#define TDC_HITIN1_4 4
 
#define TDC_HITIN2_0 0
#define TDC_HITIN2_1 1
#define TDC_HITIN2_2 2
#define TDC_HITIN2_3 3
#define TDC_HITIN2_4 4
 
#define TDC_FAST_INIT_EN 1
#define TDC_FAST_INIT_DIS 0
 
#define TDC_MRANGE1_HIT1_START 0
#define TDC_MRANGE1_HIT1_1CH1 1
#define TDC_MRANGE1_HIT1_2CH1 2
#define TDC_MRANGE1_HIT1_3CH1 3
#define TDC_MRANGE1_HIT1_4CH1 4
#define TDC_MRANGE1_HIT1_NOAC 5
#define TDC_MRANGE1_HIT1_CAL1CH1 6
#define TDC_MRANGE1_HIT1_CAL2CH1 7
#define TDC_MRANGE1_HIT1_1CH2 9
#define TDC_MRANGE1_HIT1_2CH2 0xA
#define TDC_MRANGE1_HIT1_3CH2 0xB
#define TDC_MRANGE1_HIT1_4CH2 0xC
 
#define TDC_MRANGE2_HIT1_START 1
 
#define TDC_MRANGE1_HIT2_START 0
#define TDC_MRANGE1_HIT2_1CH1 1
#define TDC_MRANGE1_HIT2_2CH1 2
#define TDC_MRANGE1_HIT2_3CH1 3
#define TDC_MRANGE1_HIT2_4CH1 4
#define TDC_MRANGE1_HIT2_NOAC 5
#define TDC_MRANGE1_HIT2_CAL1CH1 6
#define TDC_MRANGE1_HIT2_CAL2CH1 7
#define TDC_MRANGE1_HIT2_1CH2 9
#define TDC_MRANGE1_HIT2_2CH2 0xA
#define TDC_MRANGE1_HIT2_3CH2 0xB
#define TDC_MRANGE1_HIT2_4CH2 0xC
 
#define TDC_MRANGE2_HIT2_1CH1 2
#define TDC_MRANGE2_HIT2_2CH1 3
#define TDC_MRANGE2_HIT2_3CH1 4
 
//register 2
#define TDC_INT_TIMEOUT 4
#define TDC_INT_ENDHIT 2
#define TDC_INT_ALU 1
#define TDC_CH1EDGE_RIS 0
#define TDC_CH1EDGE_FAL 1
#define TDC_CH2EDGE_RIS 0
#define TDC_CH2EDGE_FAL 1
 
//register 3
#define TDC_TIM0MR2_256CLKHS 0
#define TDC_TIM0MR2_1024CLKHS 1
#define TDC_TIM0MR2_4096CLKHS 2
#define TDC_TIM0MR2_16384CLKHS 3
 
#define TDC_ERRVAL_EN 1
#define TDC_ERRVAL_DIS 0
 
//register 5
#define TDC_REPEAT_FIRE_0 0
#define TDC_REPEAT_FIRE_1 1
#define TDC_REPEAT_FIRE_2 2
#define TDC_REPEAT_FIRE_3 3
#define TDC_REPEAT_FIRE_4 4
#define TDC_REPEAT_FIRE_5 5
#define TDC_REPEAT_FIRE_6 6
#define TDC_REPEAT_FIRE_7 7
 
#define TDC_PHASENOISE_EN 0
#define TDC_PHASENOISE_DIS 1
 
#define TDC_STARTNOISE_EN 1
#define TDC_STARTNOISE_DIS 0
 
#include "GP2.c"
/Modules/TDC/GP201A/SW/PICinterface/GP2.c
0,0 → 1,335
 
//struct {
unsigned int8 firenum=TDC_FIRENUM_0;
unsigned int8 div_fire=TDC_DIV_FIRE_2;
unsigned int8 calresnum=TDC_CALPERIODS_2;
unsigned int8 clkhsdiv=TDC_CLKHSDIV_1;
unsigned int8 start_clkhs=TDC_CLKHS_ON;
unsigned int1 portnum=TDC_TPORTNUM_4;
unsigned int1 Tcycle=TDC_TCYCLE_SHORT;
unsigned int1 fakenum=TDC_TFAKENUM_2;
unsigned int1 selclkT=TDC_TSELCLK_128HS;
unsigned int1 calibrate=TDC_CALIBRATE_EN;
unsigned int1 disautocal=TDC_AUTOCAL_EN;
unsigned int1 MRange=TDC_MRANGE2;
unsigned int1 neg_stop2=TDC_NEG_STOP2;
unsigned int1 neg_stop1=TDC_NEG_STOP1;
unsigned int1 neg_start=TDC_NEG_START;
//}reg0;
 
//struct {
unsigned int hit2=TDC_MRANGE1_HIT2_NOAC;
unsigned int hit1=TDC_MRANGE1_HIT1_NOAC;
unsigned int1 fast_init=TDC_FAST_INIT_DIS;
unsigned int hitin2=TDC_HITIN2_0;
unsigned int hitin1=TDC_HITIN1_0;
//}reg1;
 
//struct {
unsigned int en_int=TDC_INT_ALU;
unsigned int1 rfedge2=TDC_CH2EDGE_RIS;
unsigned int1 rfedge1=TDC_CH1EDGE_RIS;
unsigned int32 delval1=0;
//}reg2;
 
//struct {
unsigned int1 en_err_val=TDC_ERRVAL_DIS;
unsigned int tim0_mr2=TDC_TIM0MR2_16384CLKHS;
unsigned int32 delval2=0;
//}reg3;
 
//reg4
unsigned int32 delval3=0;
 
//reg5
unsigned int conf_fire=0;
unsigned int1 en_startnoise=TDC_STARTNOISE_DIS;
unsigned int1 dis_phasenoise=TDC_PHASENOISE_DIS;
unsigned int repeat_fire=TDC_REPEAT_FIRE_0;
unsigned int16 phase_fire=0;
 
//}TDC_registers;
 
 
/*
1 0 0 0 0 ADR2 ADR1 ADR0 Write into address ADR
1 0 1 1 0 ADR2 ADR1 ADR0 Read from address ADR
0 1 1 1 0 0 0 0 Init
0 1 0 1 0 0 0 0 Power On Reset
0 0 0 0 0 0 0 1 Start_Cycle
0 0 0 0 0 0 1 0 Start_Temp
0 0 0 0 0 0 1 1 Start_Cal_Resonator
0 0 0 0 0 1 0 0 Start_Cal_TDC
*/
 
void TDC_init()
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x70,8);
output_high(TDC_ENABLE);
}
 
void TDC_reset()
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x50,8);
output_high(TDC_ENABLE);
}
 
void TDC_start_cycle()
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x01,8);
output_high(TDC_ENABLE);
}
 
void TDC_start_temp()
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x02,8);
output_high(TDC_ENABLE);
}
 
void TDC_start_cal_resonator()
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x03,8);
output_high(TDC_ENABLE);
}
 
void TDC_start_cal()
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x04,8);
output_high(TDC_ENABLE);
}
 
unsigned int32 TDC_get_measurement(int num)
{
unsigned int32 ret;
 
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0xB0 + num - 1, 8);
ret=spi_xfer(TDC_stream,0,32);
output_high(TDC_ENABLE);
return ret;
}
 
unsigned int16 TDC_get_status()
{
unsigned int16 ret;
 
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0xB4,8);
ret=spi_xfer(TDC_stream,0,16);
output_high(TDC_ENABLE);
return ret;
}
 
unsigned int8 TDC_get_reg1()
{
unsigned int8 ret;
 
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0xB5,8);
ret=spi_xfer(TDC_stream,0,8);
output_high(TDC_ENABLE);
return ret;
}
 
void TDC_update_reg1() // updates reg1 only
{
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x81,8);
spi_xfer(TDC_stream,hit2,4);
spi_xfer(TDC_stream,hit1,4);
spi_xfer(TDC_stream,fast_init,1);
spi_xfer(TDC_stream,1,1);
spi_xfer(TDC_stream,hitin2,3);
spi_xfer(TDC_stream,hitin1,3);
spi_xfer(TDC_stream,0,8);
output_high(TDC_ENABLE);
}
 
void TDC_update_registers()
{
//update reg0
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x80,8);
spi_xfer(TDC_stream,firenum,4);
spi_xfer(TDC_stream,div_fire,4);
spi_xfer(TDC_stream,calresnum,2);
spi_xfer(TDC_stream,clkhsdiv,2);
spi_xfer(TDC_stream,start_clkhs,2);
spi_xfer(TDC_stream,portnum,1);
spi_xfer(TDC_stream,Tcycle,1);
spi_xfer(TDC_stream,fakenum,1);
spi_xfer(TDC_stream,selclkT,1);
spi_xfer(TDC_stream,calibrate,1);
spi_xfer(TDC_stream,disautocal,1);
spi_xfer(TDC_stream,MRange,1);
spi_xfer(TDC_stream,neg_stop2,1);
spi_xfer(TDC_stream,neg_stop1,1);
spi_xfer(TDC_stream,neg_start,1);
output_high(TDC_ENABLE);
 
TDC_update_reg1(); // update reg1
 
// update reg2
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x82);
spi_xfer(TDC_stream,en_int,3);
spi_xfer(TDC_stream,rfedge2,1);
spi_xfer(TDC_stream,rfedge1,1);
spi_xfer(TDC_stream,delval1,19);
output_high(TDC_ENABLE);
 
// update reg3
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x83);
spi_xfer(TDC_stream,0,2);
spi_xfer(TDC_stream,en_err_val,1);
spi_xfer(TDC_stream,tim0_mr2,2);
spi_xfer(TDC_stream,delval2,19);
output_high(TDC_ENABLE);
 
// update reg4
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x84);
spi_xfer(TDC_stream,0b00100,5);
spi_xfer(TDC_stream,delval3,19);
output_high(TDC_ENABLE);
 
// update reg5
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x85);
spi_xfer(TDC_stream,conf_fire,3);
spi_xfer(TDC_stream,en_startnoise,1);
spi_xfer(TDC_stream,dis_phasenoise,1);
spi_xfer(TDC_stream,repeat_fire,3);
spi_xfer(TDC_stream,phase_fire,16);
output_high(TDC_ENABLE);
}
 
float TDC_mrange2_get_time(unsigned int shot)
{
unsigned int32 measurement;
float time;
 
switch (shot)
{
case 1:
hit2=TDC_MRANGE2_HIT2_1CH1;
break;
 
case 2:
hit2=TDC_MRANGE2_HIT2_2CH1;
break;
 
case 3:
hit2=TDC_MRANGE2_HIT2_3CH1;
break;
}
TDC_update_reg1(); // tell to ALU which shot period must be computed
Delay_ms(50); // wait to computing of result
measurement=TDC_get_measurement(7&TDC_get_status()); // read computed value on pointer result register address
 
switch (clkhsdiv)
{
case TDC_CLKHSDIV_1:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS;
break;
 
case TDC_CLKHSDIV_2:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS * 2.0;
break;
 
case TDC_CLKHSDIV_4:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS * 4.0;
break;
case TDC_CLKHSDIV_8:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS * 8.0;
break;
}
return time;
}
 
float TDC_mrange1_get_time(unsigned int channel1, unsigned int shot1, unsigned int channel2, unsigned int shot2)
{
unsigned int32 measurement;
float time;
 
switch (shot1)
{
case 0:
hit1=TDC_MRANGE1_HIT1_START;
break;
case 1:
if (channel1 == 1) hit1=TDC_MRANGE1_HIT1_1CH1; else hit1=TDC_MRANGE1_HIT1_1CH2;
break;
 
case 2:
if (channel1 == 1) hit1=TDC_MRANGE1_HIT1_2CH1; else hit1=TDC_MRANGE1_HIT1_2CH2;
break;
 
case 3:
if (channel1 == 1) hit1=TDC_MRANGE1_HIT1_3CH1; else hit1=TDC_MRANGE1_HIT1_3CH2;
break;
 
case 4:
if (channel1 == 1) hit1=TDC_MRANGE1_HIT1_4CH1; else hit1=TDC_MRANGE1_HIT1_4CH2;
break;
}
 
switch (shot2)
{
case 0:
hit2=TDC_MRANGE1_HIT2_START;
break;
 
case 1:
if (channel2 == 1) hit2=TDC_MRANGE1_HIT2_1CH1; else hit2=TDC_MRANGE1_HIT2_1CH2;
break;
 
case 2:
if (channel2 == 1) hit2=TDC_MRANGE1_HIT2_2CH1; else hit2=TDC_MRANGE1_HIT2_2CH2;
break;
 
case 3:
if (channel2 == 1) hit2=TDC_MRANGE1_HIT2_3CH1; else hit2=TDC_MRANGE1_HIT2_3CH2;
break;
 
case 4:
if (channel2 == 1) hit2=TDC_MRANGE1_HIT2_4CH1; else hit2=TDC_MRANGE1_HIT2_4CH2;
break;
}
 
TDC_update_reg1(); // tell to ALU which shot period must be computed
Delay_ms(50); // wait to computing of result
measurement=TDC_get_measurement(7&TDC_get_status()); // read computed value on pointer result register address
 
switch (clkhsdiv)
{
case TDC_CLKHSDIV_1:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS;
break;
 
case TDC_CLKHSDIV_2:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS * 2.0;
break;
 
case TDC_CLKHSDIV_4:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS * 4.0;
break;
case TDC_CLKHSDIV_8:
time=(measurement/65536.0) * 1.0e6/TDC_CLKHS * 8.0;
break;
}
return time;
}
/Modules/TDC/GP201A/SW/PICinterface/1wire.c
0,0 → 1,43
 
void onewire_reset()
{
output_low(ONE_WIRE_PIN);
delay_us(500);
output_float(ONE_WIRE_PIN);
delay_us(500);
output_float(ONE_WIRE_PIN);
}
 
 
void onewire_write(int data)
{
int count;
 
for (count=0; count<8; ++count)
{
output_low(ONE_WIRE_PIN);
delay_us( 2 );
output_bit(ONE_WIRE_PIN, shift_right(&data,1,1));
 
delay_us( 60 );
output_float(ONE_WIRE_PIN);
delay_us( 2 );
}
}
 
 
int onewire_read()
{
int count, data;
 
for (count=0; count<8; ++count)
{
output_low(ONE_WIRE_PIN);
delay_us( 2 );
output_float(ONE_WIRE_PIN);
delay_us( 8 );
shift_right(&data,1,input(ONE_WIRE_PIN));
delay_us( 120 );
}
return( data );
}
/Modules/TDC/GP201A/SW/PICinterface/ds1820.c
0,0 → 1,25
#include "1wire.c"
 
float ds1820_read()
{
int8 busy=0, temp1, temp2;
signed int16 temp3;
float result;
 
onewire_reset();
onewire_write(0xCC);
onewire_write(0x44);
 
while (busy == 0) busy = onewire_read();
 
onewire_reset();
onewire_write(0xCC);
onewire_write(0xBE);
temp1 = onewire_read();
temp2 = onewire_read();
temp3 = make16(temp2, temp1);
 
result = (float) temp3 / 16.0; //calculation pro DS18B20 with 0.1 deg C
 
return(result);
}