Problem with comparison.
/Modules/TDC/GP201A/SW/PICinterface/main.c
0,0 → 1,192
#include "main.h"
#include <math.h>
 
#use fast_io (D)
 
#define VERSION 0.2
 
#define START PIN_D4
#define STOP1 PIN_D5
#define STOP2 PIN_D7
 
#include "GP2.h"
 
#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_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
*/
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
 
 
set_tris_d(0x00);
 
TDC_reset();
 
output_low(START);
output_low(STOP1);
output_low(STOP2);
 
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(100);
 
//----------------------------------------------- Mereni 2
TDC_init();
delay_ms(50);
TDC_start_cycle();
delay_ms(200);
output_high(STOP2); // Merime jenom jednim kanalem (druhy zrejme musi byt v H)
output_high(START);
output_low(START);
delay_us(150);
output_high(STOP1);
output_low(STOP1);
delay_us(1);
output_high(STOP1);
output_low(STOP1);
delay_us(10);
output_high(STOP1);
output_low(STOP1);
delay_us(1);
//----------------------------------------------- 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
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("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();
delay_ms(50);
output_low(START);
output_low(STOP1);
output_low(STOP2);
output_high(START); // start of time measurement
 
output_high(STOP2);
output_high(STOP1);
output_low(STOP1);
output_low(STOP2);
output_low(START);
 
 
 
//----------------------------------------------- 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_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.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 //Internal RC Osc
#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/main.hex
0,0 → 1,570
:1000000010308A0000280000D434ED32321DA012D6
:100010004C2CA0124C2CA0124C2CA0124C2C2000CA
:10002000D434ED32321DA01233173733A0123317F8
:100030003733A01233173733A0060A00D434ED3219
:10004000311DA0124C2CA0124C2CA0124C2CA01232
:100050004C2C2000D434ED32311DA012331737332D
:10006000A01233173733A01233173733A0060A0014
:10007000D4326D383A1025265810252658102526DA
:100080005810252658100001A02D2526751025266C
:100090007510252675102526751025267510252620
:1000A00075102526F52EA0060A006108203C0319CC
:1000B0006028E200DD0DDE0DDF0DE00DE20B5A28B9
:1000C0008316861406100611831206116108E200D9
:1000D0000615E01F0610E01B0614DD0DDE0DDF0D1A
:1000E000E00D0611F70DF80DF90DFA0D861C7710CD
:1000F00086187714E20B682808008316861183128D
:100100008611E001DF01DE015030DD000830E10042
:1001100055208316861183128615080055308400F9
:10012000831300080319A1280630F800F701F70B24
:100130009728F80B96287B30F700F70B9D28800B4B
:10014000942808008316861183128611E001DF01CE
:10015000DE018130DD000830E1005520E001DF01E3
:10016000DE012708DD000430E1005520E001DF0159
:10017000DE012808DD000430E1005520003026199A
:100180000130D500E001DF01DE015508DD0001305E
:10019000E1005520E001DF01DE010130DD00E1007A
:1001A0005520E001DF01DE012908DD000330E10018
:1001B0005520E001DF01DE012A08DD000330E10007
:1001C0005520E001DF01DE01DD010830E1005520AE
:1001D00083168611831286150800831686118312F2
:1001E0008611E001DF01DE018030DD000830E10032
:1001F0005520E001DF01DE012008DD000430E100D0
:100200005520E001DF01DE012108DD000430E100BE
:100210005520E001DF01DE012208DD000230E100AF
:100220005520E001DF01DE012308DD000230E1009E
:100230005520E001DF01DE012408DD000230E1008D
:100240005520003025180130C100E001DF01DE013A
:100250004108DD000130E10055200030A5180130D3
:10026000C100E001DF01DE014108DD000130E100F5
:100270005520003025190130C100E001DF01DE0109
:100280004108DD000130E10055200030A5190130A2
:10029000C100E001DF01DE014108DD000130E100C5
:1002A00055200030251A0130C100E001DF01DE01D8
:1002B0004108DD000130E10055200030A51A013071
:1002C000C100E001DF01DE014108DD000130E10095
:1002D00055200030251B0130C100E001DF01DE01A7
:1002E0004108DD000130E10055200030A51B013040
:1002F000C100E001DF01DE014108DD000130E10065
:100300005520003026180130C100E001DF01DE0178
:100310004108DD000130E10055200030A618013011
:10032000C100E001DF01DE014108DD000130E10034
:1003300055208316861183128615A22083168611F6
:1003400083128611E001DF01DE018230DD00203002
:10035000E1005520E001DF01DE012B08DD00033064
:10036000E10055200030A6190130C100E001DF0195
:10037000DE014108DD000130E10055200030261A81
:100380000130C100E001DF01DE014108DD00013084
:10039000E10055202F08E0002E08DF002D08DE00C8
:1003A0002C08DD001330E1005520831686118312DE
:1003B00086158316861183128611E001DF01DE01A6
:1003C0008330DD002030E1005520E001DF01DE0157
:1003D000DD010230E10055200030A61A0130C100D5
:1003E000E001DF01DE014108DD000130E1005520C0
:1003F000E001DF01DE013008DD000230E1005520C0
:100400003408E0003308DF003208DE003108DD0088
:100410001330E1005520831686118312861583164A
:10042000861183128611E001DF01DE018430DD00D8
:100430002030E1005520E001DF01DE010430DD0065
:100440000530E10055203808E0003708DF003608A5
:10045000DE003508DD001330E100552083168611DB
:10046000831286158316861183128611E001DF013F
:10047000DE018530DD002030E1005520E001DF01A4
:10048000DE013908DD000330E10055200030261B75
:100490000130C100E001DF01DE014108DD00013073
:1004A000E10055200030A61B0130C100E001DF0152
:1004B000DE014108DD000130E1005520E001DF01EF
:1004C000DE013A08DD000330E1005520E001DF01E4
:1004D0003C08DE003B08DD001030E10055208316AB
:1004E00086118312861508008316861183128611E1
:1004F000E001DF01DE017030DD000830E100552051
:1005000083168611831286150800831686118312BE
:100510008611E001DF01DE010130DD000830E1007D
:10052000552083168611831286158A110A16D5283E
:100530008316861183128611B0305707FF3EDC0008
:10054000E001DF01DE015C08DD000830E10055203C
:10055000E001DF01DE01DD012030E10055207A08F5
:10056000DB007908DA007808D9007708D80083160C
:100570008611831286155808F7005908F8005A08A2
:10058000F9005B08FA0008008316861383128613AD
:100590000830F800CB2A0000F817DC2AF813DA0C30
:1005A00003188617031C86137817DC2A7813F80BB8
:1005B000CF2ADA2A00008617A7308400840BDE2AAF
:1005C000E12AF81BCE2A781BD62A080083160317C7
:1005D0008C170C14000000000318152B83120C0854
:1005E0007F390313D20003170D080313D300031739
:1005F0000F080313D4005208DA00C422530803176B
:100600008D000313540803178F0083168C170C14E6
:100610000000000083120313D10B0F2B122B831643
:100620000317152B342B8316031783120C0D0E0D95
:100630007F390313D20003170D080313D3000317E8
:100640000F080313D4005208DA00C422530803171A
:100650008D000313540803178F008D0A03198F0AA6
:1006600003100313D10BE62A0800D21B472B0F30CF
:10067000F700510EF7050A3077020318422B30308D
:10068000F707442B5208F7077708DA00C4220F3027
:10069000D1050A30510203184F2B3030512BD213A1
:1006A0005208D1075108DA00C422080083168611C7
:1006B00083128611E001DF01DE01B430DD00083075
:1006C000E1005520E001DF01DE01DD011030E10035
:1006D00055207808D6007708D50083168611831236
:1006E00086155508F8005608F9000800D7010408D7
:1006F000D6005710831B5714500EF038D200D20783
:10070000E23ED300323ED50050080F39D307D3075D
:10071000D507E93ED400D407D4074F0E0F39D407CC
:10072000D507D40DD50DD509D50D4F080F39D507EF
:10073000D20D0730D1000A30D507D403031C9C2BFF
:10074000D407D303031CA02BD307D203031CA42B71
:10075000D207D103031CA82B513084008313073028
:10076000560556138407553004020319561700081E
:10077000F700031DC32B561BC32B561AD52BD619B6
:10078000C32B2030C62BD61556123030F707D001B8
:100790000408CF005010831B50147708DA00C422DD
:1007A0004F088400831350188317840A561FB32BF5
:1007B0000800B630F700FA01F901F80155085604AF
:1007C00057045804031DE62BF701F32B0310F81B05
:1007D000F22BD50DD60DD70DD80DFA0DF90DF80D5C
:1007E000F70BE62BF813080059080319B92CE5009C
:1007F0005D080319B92CE502031C032C7F30E507C3
:100800000318B92C092C8130E502031CB92C0319FB
:10081000B92C6508F700F801F901FA01E4015A085A
:10082000E300E3175B08E2005C08E1001930E50033
:100830006008E10203182C2C0130E20203182C2C72
:10084000E30203182C2CE40203182C2CE40AE30A1C
:10085000E20A6008E1075E2C5F08E2020318472CF9
:100860000130E3020318472CE4020318472CE40A82
:10087000E30A5F08E2076008E107031C5E2CE20A56
:10088000031D5E2CE30A031D5E2CE40A5E2C5E0849
:100890008038E30203185D2C0130E40203185D2C5C
:1008A000E40A5E088038E3075F08E207031C3B2C7C
:1008B000E30A031D3B2CE40A3B2C7A14E50B612C64
:1008C0006C2C0310E10DE20DE30DE40D0310FA0DA5
:1008D000F90DF80DE60D182C661C742C0310F80C9D
:1008E000F90CFA0CE60C772CF7030319B92CE61B6C
:1008F000A02C0310E10DE20DE30DE40D6008E10210
:1009000003188C2C0130E20203188C2CE30203182C
:100910008C2CE402031CAF2C5F08E2020318972C16
:100920000130E3020318972CE402031CAF2C5E088D
:100930008038E3020318A02C0130E402031CAF2C22
:10094000FA0A031DAF2CF90A031DAF2CF80A031D88
:10095000AF2CF70A0319B92CF80CF90CFA0C5A0849
:10096000E5005E08E506E51FB72CF817BD2CF81367
:10097000BD2CF701F801F901FA0108005A08031922
:100980002E2DE2005E0803192E2DE2070318CF2C4E
:100990007F30E202031C2E2D03192E2DD32C813023
:1009A000E20703182E2D6208F700F801F901FA0199
:1009B0005B08E600E6175C08E5005D08E400183017
:1009C000E200E301641CFC2C6108FA07031CEE2C16
:1009D000F90A031DEE2CF80A0319E3176008F9075A
:1009E000031CF52CF80A0319E3175F08DC00DC1779
:1009F0005C08F8070318E317E30DF80CF90CFA0C80
:100A0000E60CE50CE40C0310E20BE12C0130F707D7
:100A100003182E2DF81B132DE60DFA0DF90DF80D08
:100A2000F70303192E2DE61F242DFA0A031D242D8A
:100A3000F90A031D242DF80A031D242DF80CF90CC6
:100A4000FA0CF70A03192E2D5B08E3005F08E30692
:100A5000E31F2C2DF817322DF813322DF701F80172
:100A6000F901FA0108004908013A03193E2D033A39
:100A70000319412D013A0319442D472D0230A700D7
:100A8000472D0330A700472D0430A700472DA22093
:100A90003230D5008E2056237908FA0078080739BD
:100AA000D200D3015208D70098227A08CD007908E5
:100AB000CC007808CB007708CA002308FC3E031856
:100AC000DE2E043EE72E4D08D8004C08D7004B0818
:100AD000D6004A08D500D9237A08DC007908DB0063
:100AE0007808DA007708D900E001DF01DE018F30F5
:100AF000DD00F4237708D2007808D3007908D40009
:100B00007A08D500DD007908DC007808DB0077087A
:100B1000DA00E1012430E0007430DF009230DE00C2
:100B2000BE247708D2007808D3007908D4007A0868
:100B3000D500DC007908DB007808DA007708D900F6
:100B40008030E0009630DF001830DE009530DD00A8
:100B5000F4237A08D1007908D0007808CF0077080C
:100B6000CE00DE2E4D08D8004C08D7004B08D6002A
:100B70004A08D500D9237A08DC007908DB00780818
:100B8000DA007708D900E001DF01DE018F30DD00F7
:100B9000F4237708D2007808D3007908D4007A08C3
:100BA000D500DD007908DC007808DB007708DA0082
:100BB000E1012430E0007430DF009230DE00BE241A
:100BC0007708D2007808D3007908D4007A08D500D5
:100BD000DC007908DB007808DA007708D90080307B
:100BE000E0009630DF001830DE009530DD00F423A1
:100BF0007708D2007808D3007908D4007A08D500A5
:100C0000DD007908DC007808DB007708DA00E10114
:100C1000E001DF018030DE00BE247A08D1007908CF
:100C2000D0007808CF007708CE00DE2E4D08D8001F
:100C30004C08D7004B08D6004A08D500D9237A08BB
:100C4000DC007908DB007808DA007708D900E001D9
:100C5000DF01DE018F30DD00F4237708D200780851
:100C6000D3007908D4007A08D500DD007908DC00CB
:100C70007808DB007708DA00E1012430E000743006
:100C8000DF009230DE00BE247708D2007808D3005F
:100C90007908D4007A08D500DC007908DB007808F0
:100CA000DA007708D9008030E0009630DF00183095
:100CB000DE009530DD00F4237708D2007808D300F9
:100CC0007908D4007A08D500DD007908DC007808BE
:100CD000DB007708DA00E101E001DF018130DE00AE
:100CE000BE247A08D1007908D0007808CF007708B0
:100CF000CE00DE2E4D08D8004C08D7004B08D60099
:100D00004A08D500D9237A08DC007908DB00780886
:100D1000DA007708D900E001DF01DE018F30DD0065
:100D2000F4237708D2007808D3007908D4007A0831
:100D3000D500DD007908DC007808DB007708DA00F0
:100D4000E1012430E0007430DF009230DE00BE2488
:100D50007708D2007808D3007908D4007A08D50043
:100D6000DC007908DB007808DA007708D9008030E9
:100D7000E0009630DF001830DE009530DD00F4230F
:100D80007708D2007808D3007908D4007A08D50013
:100D9000DD007908DC007808DB007708DA00E10183
:100DA000E001DF018230DE00BE247A08D10079083C
:100DB000D0007808CF007708CE00DE2E4E08F7006E
:100DC0004F08F8005008F9005108FA0008000A100E
:100DD0008A140A158207632DB22D162E7A2EF7017A
:100DE000F801F901FA01E201E301E401E50161081A
:100DF00060045F045E0403192D2F2030E600031009
:100E0000DA0DDB0DDC0DDD0DE20DE30DE40DE50D7E
:100E100061086502031D162F60086402031D162F6A
:100E20005F086302031D162F5E086202031C272F52
:100E30005E08E2025F08031C5F0FE3026008031C08
:100E4000600FE4026108031C610FE5020314F70D53
:100E5000F80DF90DFA0DE60BFF2E623084008313B6
:100E600008008316861183128611E001DF01DE017E
:100E70000230DD000830E100552083168611831210
:080E800086158A110A16852D62
:101000000408D2005108D400031921285008DD003B
:101010004F08DC004E08DB004D08DA00E101E0017A
:101020002030DF008230DE008A11BE248A157A0863
:10103000D0007908CF007808CE007708CD00D40B17
:1010400006285008DD004F08DC004E08DB004D0884
:10105000DA005A08B63CDA00FA015B08DE00DB175A
:101060000310DB0CDC0CDD0CFA0CF90CF80CF70CA3
:10107000DA0B3028DE1F4728F709F809F909FA09C1
:10108000F70A0319F80A0319F90A0319FA0A7A0880
:10109000D0007908CF007808CE007708CD00D01FA7
:1010A0005E28D203D216CD09CE09CF09D009CD0AC8
:1010B0000319CE0A0319CF0A0319D00A3B30D9000D
:1010C0009A30D800CA30D700D6010A30D40051086F
:1010D0000319D20A5008DD004F08DC004E08DB007F
:1010E0004D08DA005908E1005808E0005708DF0011
:1010F0005608DE008A11EF268A150008CD00840A02
:101100000008CE00840A0008CF00840A0008D0003E
:10111000FD308407F708031DA028510A5402031963
:10112000A02852080319A2280F39540203199A283B
:101130000318DA28D21BDA28521BA2282030D42820
:101140002030D205D21EB228D2125108031DD2037C
:101150007708D2002D30DA008A11C4228A1552088D
:10116000F700D20151085402031DC2287708D200AB
:101170002E30DA008A11C4228A155208F700203076
:10118000D20500303030D21ED428D2125108031DAF
:10119000D2037708D2002D30DA008A11C4228A15D2
:1011A0005208F700D2013030F7077708DA008A11C9
:1011B000C4228A155908DD005808DC005708DB00F6
:1011C0005608DA00E101E001DF010A30DE008A1191
:1011D000EF268A157A08D9007908D8007808D70050
:1011E0007708D600D40B6A2808004A08FB3E03188B
:1011F0001D29053E132BA8011D29490B0229013089
:10120000A80004290930A8001D29490B0A29023029
:10121000A8000C290A30A8001D29490B1229033007
:10122000A80014290B30A8001D29490B1A290430E5
:10123000A8001C290C30A8001D294C08FB3E0318EF
:101240004529053E1C2BA70145294B0B2A290130B6
:10125000A7002C290930A70045294B0B3229023061
:10126000A70034290A30A70045294B0B3A2903303F
:10127000A7003C290B30A70045294B0B422904301D
:10128000A70044290C30A70045298A11A2208A15FD
:101290003230D5008A118E208A158A1156238A157C
:1012A0007908FA0078080739D500D6015508D70023
:1012B0008A1198228A157A08D0007908CF00780818
:1012C000CE007708CD002308FC3E03180A2B043E0D
:1012D000252B5008D8004F08D7004E08D6004D08DF
:1012E000D5008A11D9238A157A08DC007908DB0039
:1012F0007808DA007708D900E001DF01DE018F30DD
:10130000DD008A11F4238A157708D5007808D60005
:101310007908D7007A08D800DD007908DC00780861
:10132000DB007708DA00E1012430E0007430DF00F0
:101330009230DE008A11BE248A157708D50078081D
:10134000D6007908D7007A08D800DC007908DB00DD
:101350007808DA007708D9008030E0009630DF00A6
:101360001830DE009530DD008A11F4238A157A08E2
:10137000D4007908D3007808D2007708D1000A2B6E
:101380005008D8004F08D7004E08D6004D08D500A9
:101390008A11D9238A157A08DC007908DB007808DD
:1013A000DA007708D900E001DF01DE018F30DD00CF
:1013B0008A11F4238A157708D5007808D6007908B1
:1013C000D7007A08D800DD007908DC007808DB0057
:1013D0007708DA00E1012430E0007430DF00923059
:1013E000DE008A11BE248A157708D5007808D60059
:1013F0007908D7007A08D800DC007908DB00780883
:10140000DA007708D9008030E0009630DF0018302D
:10141000DE009530DD008A11F4238A157708D500A7
:101420007808D6007908D7007A08D800DD00790856
:10143000DC007808DB007708DA00E101E001DF0179
:101440008030DE008A11BE248A157A08D40079081B
:10145000D3007808D2007708D1000A2B5008D800B2
:101460004F08D7004E08D6004D08D5008A11D92361
:101470008A157A08DC007908DB007808DA0077083A
:10148000D900E001DF01DE018F30DD008A11F42395
:101490008A157708D5007808D6007908D7007A0829
:1014A000D800DD007908DC007808DB007708DA0076
:1014B000E1012430E0007430DF009230DE008A1158
:1014C000BE248A157708D5007808D6007908D70099
:1014D0007A08D800DC007908DB007808DA007708A1
:1014E000D9008030E0009630DF001830DE00953003
:1014F000DD008A11F4238A157708D5007808D60014
:101500007908D7007A08D800DD007908DC0078086F
:10151000DB007708DA00E101E001DF018130DE0065
:101520008A11BE248A157A08D4007908D300780875
:10153000D2007708D1000A2B5008D8004F08D700F6
:101540004E08D6004D08D5008A11D9238A157A088D
:10155000DC007908DB007808DA007708D900E001C0
:10156000DF01DE018F30DD008A11F4238A15770850
:10157000D5007808D6007908D7007A08D800DD00B1
:101580007908DC007808DB007708DA00E101243014
:10159000E0007430DF009230DE008A11BE248A152C
:1015A0007708D5007808D6007908D7007A08D800DF
:1015B000DC007908DB007808DA007708D900803091
:1015C000E0009630DF001830DE009530DD008A1133
:1015D000F4238A157708D5007808D6007908D70053
:1015E0007A08D800DD007908DC007808DB0077088D
:1015F000DA00E101E001DF018230DE008A11BE2461
:101600008A157A08D4007908D3007808D2007708C0
:10161000D1000A2B5108F7005208F8005308F900CE
:101620005408FA0008000A148A140A118207FB28D9
:10163000FD2805290D2915290A148A140A11820783
:10164000232925292D2935293D290A148A140A110F
:0A16500082076929C0292E2A9C2A6E
:10200000840183131F30830583168613831286177A
:10201000831686140610061183120611A0010130E2
:10202000A100A201A301A4002514A5102511A51546
:102030002516A5122517A5132610A6100530A700F2
:10204000A8002611A901AA010130AB00A611261291
:10205000AF01AE01AD01AC01A6120330B000B40176
:10206000B301B201B101B801B701B601B501B901BF
:102070002613A617BA01BC01BB0183160317090872
:10208000C039890003131F129F1200300317880004
:102090008312870188018901FF300313BD00831675
:1020A00003170908C039890003131F129F1200305B
:1020B00003178800831203131F139F1383169F13A4
:1020C00083121F149412BD123D08831687008312D9
:1020D0003D163D08831687008312BD113D08831607
:1020E00087000130831294000030831694000108A9
:1020F000C73908388100831290010030F80092003F
:1021000000308316920083123D153D088316870028
:102110008312970183169B019C0101309D0083125D
:102120000317870188018901003083160313880093
:102130000A1283127D200A16081288128813323080
:10214000D5000A128E200A160A127D200A16643063
:10215000D5000A128E200A1625170130A800043077
:10216000AA00A9010730AB00A6160230A300AF01F8
:10217000AE01AD01AC01B401B301B201B101B801CE
:10218000B701B601B5010A12ED200A166430D50078
:102190000A128E200A160A1274220A163230D5004C
:1021A0000A128E200A160A12852A0A16C830D5008D
:1021B0000A128E200A16881708160812F930F7003E
:1021C000F70BE028E32888168812E628E7280000A5
:1021D000881688121030F700F70BEC2800008816DC
:1021E0008812F228F32800000130D7000A12982242
:1021F0000A167A08C4007908C3007808C200770874
:10220000C1000230D7000A1298220A167A08C800C4
:102210007908C7007808C6007708C5000330D700E2
:102220000A1298220A167A08CC007908CB0078089E
:10223000CA007708C9000430D7000A1298220A168B
:102240007A08D0007908CF007808CE007708CD0052
:10225000043003178D0000308F0003100730031384
:10226000D1000A12E6220A164408D1003730D20003
:102270000A1235230A164308D1003730D2000A1259
:1022800035230A164208D1003730D2000A1235230E
:102290000A164108D1003730D2000A1235230A1637
:1022A0002030DA000A12C4220A164808D10037305A
:1022B000D2000A1235230A164708D1003730D2005F
:1022C0000A1235230A164608D1003730D2000A1206
:1022D00035230A164508D1003730D2000A123523BB
:1022E0000A162030DA000A12C4220A164C08D1005D
:1022F0003730D2000A1235230A164B08D100373086
:10230000D2000A1235230A164A08D1003730D2000B
:102310000A1235230A164908D1003730D2000A12B2
:1023200035230A162030DA000A12C4220A16500891
:10233000D1003730D2000A1235230A164F08D100D7
:102340003730D2000A1235230A164E08D100373032
:10235000D2000A1235230A164D08D1003730D200B8
:102360000A1235230A162030DA000A12C4220A168D
:102370008316861183128611C001B430C000E001BB
:10238000DF01DE014008DD000830E1000A125520BF
:102390000A16E001DF01DE01DD011030E1000A1262
:1023A00055200A167808BF007708BE0083168611EC
:1023B000831286153F0EF900FA010F30F9057908EE
:1023C0000139C100C201FA013F0CF900F90CF90C06
:1023D0001F30F90579080139C300C401FA013F0C27
:1023E000F900F90C3F30F90579080139C500C6013B
:1023F0000310FA013F0CF9000139C700C8013F0C76
:10240000FA003E0CF900FA0CF90CFA0CF90CFA0C73
:10241000F90CFA0CF90CFA0CF90C0330FA057908EE
:102420000739C900CA013F0CFA003E0CF900FA0C4A
:10243000F90CFA0CF90C1F30FA0579080739CB00B2
:10244000CC010A1256230A167908FA0078080739CF
:10245000CD00CE015B30DA000A12C4220A16103019
:1024600084004208D0004108CF000A1276230A16E1
:102470002030DA000A12C4220A1610308400440800
:10248000D0004308CF000A1276230A162030DA0063
:102490000A12C4220A16103084004608D0004508EB
:1024A000CF000A1276230A162030DA000A12C4225C
:1024B0000A16103084004808D0004708CF000A12DE
:1024C00076230A162030DA000A12C4220A161030C7
:1024D00084004A08D0004908CF000A1276230A1661
:1024E0002030DA000A12C4220A16103084004C0888
:1024F000D0004B08CF000A1276230A162030DA00EB
:102500000A12C4220A16103084004E08D0004D086A
:10251000CF000A1276230A165D30DA000A12C422AE
:102520000A160D30DA000A12C4220A160A30DA003E
:102530000A12C4220A160130C9000A1233250A16EB
:102540007708C1007808C2007908C3007A08C4007F
:102550000230C9000A1233250A167708C500780828
:10256000C6007908C7007A08C8000330C9000A12FB
:1025700033250A167708C9007808CA007908CB0005
:102580007A08CC00103003178D0000308F00031044
:1025900007300313D1000A12E6220A16893084009C
:1025A0004408D0004308CF004208CE004108CD00C7
:1025B0000730D1000A128A1500200A168A1120302D
:1025C000DA000A12C4220A16893084004808D000B2
:1025D0004708CF004608CE004508CD000730D1009F
:1025E0000A128A1500200A168A112030DA000A120F
:1025F000C4220A16893084004C08D0004B08CF0052
:102600004A08CE004908CD000730D1000A128A15C9
:1026100000200A168A112030DA000A12C4220A1693
:102620000D30DA000A12C4220A160A30DA000A1241
:10263000C4220A1625130530A800A7000130AA00FD
:10264000A9000730AB00A6160230A300AF01AE010F
:10265000AD01AC01B401B301B201B101B801B701E0
:10266000B601B5010A12ED200A166430D5000A122F
:102670008E200A160A1274220A163230D5000A1267
:102680008E200A16081288128813081688178816D2
:102690008812881308120130D7000A1298220A16ED
:1026A0007A08C4007908C3007808C2007708C1001E
:1026B0000230D7000A1298220A167A08C800790850
:1026C000C7007808C6007708C5000330D7000A1293
:1026D00098220A167A08CC007908CB007808CA003C
:1026E0007708C9000430D7000A1298220A167A081F
:1026F000D0007908CF007808CE007708CD001E30D2
:1027000003178D0000308F00031007300313D10032
:102710000A12E6220A164408D1003730D2000A1203
:1027200035230A164308D1003730D2000A12352368
:102730000A164208D1003730D2000A1235230A1691
:102740004108D1003730D2000A1235230A16203052
:10275000DA000A12C4220A164808D1003730D20023
:102760000A1235230A164708D1003730D2000A1260
:1027700035230A164608D1003730D2000A12352315
:102780000A164508D1003730D2000A1235230A163E
:102790002030DA000A12C4220A164C08D100373061
:1027A000D2000A1235230A164B08D1003730D20066
:1027B0000A1235230A164A08D1003730D2000A120D
:1027C00035230A164908D1003730D2000A123523C2
:1027D0000A162030DA000A12C4220A165008D10064
:1027E0003730D2000A1235230A164F08D10037308D
:1027F000D2000A1235230A164E08D1003730D20013
:102800000A1235230A164D08D1003730D2000A12B9
:1028100035230A162030DA000A12C4220A1683165B
:10282000861183128611C001B430C000E001DF01BF
:10283000DE014008DD000830E1000A1255200A16CA
:10284000E001DF01DE01DD011030E1000A12552058
:102850000A167808BF007708BE0083168611831217
:1028600086153F0EF900FA010F30F9057908013994
:10287000C100C201FA013F0CF900F90CF90C1F303C
:10288000F90579080139C300C401FA013F0CF900C8
:10289000F90C3F30F90579080139C500C60103106C
:1028A000FA013F0CF9000139C700C8013F0CFA00DA
:1028B0003E0CF900FA0CF90CFA0CF90CFA0CF90CB4
:1028C000FA0CF90CFA0CF90C0330FA0579080739FF
:1028D000C900CA013F0CFA003E0CF900FA0CF90CD1
:1028E000FA0CF90C1F30FA0579080739CB00CC0136
:1028F0000A1256230A167908FA0078080739CD001B
:10290000CE015B30DA000A12C4220A1610308400AD
:102910004208D0004108CF000A1276230A16203060
:10292000DA000A12C4220A16103084004408D000CB
:102930004308CF000A1276230A162030DA000A1262
:10294000C4220A16103084004608D0004508CF0083
:102950000A1276230A162030DA000A12C4220A1656
:10296000103084004808D0004708CF000A127623B0
:102970000A162030DA000A12C4220A161030840027
:102980004A08D0004908CF000A1276230A162030E0
:10299000DA000A12C4220A16103084004C08D00053
:1029A0004B08CF000A1276230A162030DA000A12EA
:1029B000C4220A16103084004E08D0004D08CF0003
:1029C0000A1276230A165D30DA000A12C4220A16A9
:1029D0000D30DA000A12C4220A160A30DA000A128E
:1029E000C4220A160130C900CA01CB00CC000A1269
:1029F0008A15F5200A168A117708C1007808C200E6
:102A00007908C3007A08C4000230C900CA01CB00AB
:102A10000130CC000A128A15F5200A168A117708AF
:102A2000C5007808C6007908C7007A08C8000130D8
:102A3000C900CA000230CB000130CC000A128A154E
:102A4000F5200A168A117708C9007808CA007908A3
:102A5000CB007A08CC002A3003178D0000308F009D
:102A6000031007300313D1000A12E6220A16893038
:102A700084004408D0004308CF004208CE0041083B
:102A8000CD000730D1000A128A1500200A168A11DB
:102A90002030DA000A12C4220A168930840048085D
:102AA000D0004708CF004608CE004508CD000730CB
:102AB000D1000A128A1500200A168A112030DA0085
:102AC0000A12C4220A16893084004C08D0004B0830
:102AD000CF004A08CE004908CD000730D1000A12C5
:102AE0008A1500200A168A112030DA000A12C42240
:102AF0000A160D30DA000A12C4220A160A30DA0069
:102B00000A12C4220A160A12312F0A1683168611D7
:102B100083128611C001B430C000E001DF01DE0184
:102B20004008DD000830E1000A1255200A16E001D5
:102B3000DF01DE01DD011030E1000A1255200A1626
:102B40007808BF007708BE008316861183128615A9
:102B50000130D7000A1298220A167A08C4007908B0
:102B6000C3007808C2007708C1000230D7000A12FB
:102B700098220A167A08C8007908C7007808C600A3
:102B80007708C5000330D7000A1298220A167A087F
:102B9000CC007908CB007808CA007708C900043057
:102BA000D7000A1298220A167A08D0007908CF00B6
:102BB0007808CE007708CD00383003178D0000303C
:102BC0008F00031006300313D1000A12E6220A1602
:102BD0004408D1003730D2000A1235230A164308C0
:102BE000D1003730D2000A1235230A164208D1002C
:102BF0003730D2000A1235230A164108D100373087
:102C0000D2000A1235230A162030DA000A12C42232
:102C10000A164808D1003730D2000A1235230A16A6
:102C20004708D1003730D2000A1235230A16460869
:102C3000D1003730D2000A1235230A164508D100D8
:102C40003730D2000A1235230A162030DA000A1271
:102C5000C4220A164C08D1003730D2000A1235239C
:102C60000A164B08D1003730D2000A1235230A1653
:102C70004A08D1003730D2000A1235230A16490813
:102C8000D1003730D2000A1235230A162030DA007C
:102C90000A12C4220A165008D1003730D2000A1294
:102CA00035230A164F08D1003730D2000A123523D7
:102CB0000A164E08D1003730D2000A1235230A1600
:102CC0004D08D1003730D2000A1235230A162030C1
:102CD000DA000A12C4220A163F0EF900FA010F3078
:102CE000F90579080139C100C201FA013F0CF90068
:102CF000F90CF90C1F30F90579080139C300C4013A
:102D0000FA013F0CF900F90C3F30F9057908013957
:102D1000C500C6010310FA013F0CF9000139C700D4
:102D2000C8013F0CFA003E0CF900FA0CF90CFA0C41
:102D3000F90CFA0CF90CFA0CF90CFA0CF90C03303A
:102D4000FA0579080739C900CA013F0CFA003E0CA0
:102D5000F900FA0CF90CFA0CF90C1F30FA05790895
:102D60000739CB00CC010A1256230A167908FA005B
:102D700078080739CD00CE012030DA000A12C422CB
:102D80000A165B30DA000A12C4220A1610308400D8
:102D90004208D0004108CF000A1276230A162030DC
:102DA000DA000A12C4220A16103084004408D00047
:102DB0004308CF000A1276230A162030DA000A12DE
:102DC000C4220A16103084004608D0004508CF00FF
:102DD0000A1276230A162030DA000A12C4220A16D2
:102DE000103084004808D0004708CF000A1276232C
:102DF0000A162030DA000A12C4220A1610308400A3
:102E00004A08D0004908CF000A1276230A1620305B
:102E1000DA000A12C4220A16103084004C08D000CE
:102E20004B08CF000A1276230A162030DA000A1265
:102E3000C4220A16103084004E08D0004D08CF007E
:102E40000A1276230A16523003178D0000308F00C5
:102E5000031404300313D1000A12E6220A16AC2828
:022E600063000D
:04400E00F22CFF3F52
:00000001FF
;PIC16F887
;CRC=E2AF CREATED="29-V-11 23:30"
/Modules/TDC/GP201A/SW/PICinterface/main.pjt
0,0 → 1,32
[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=main.h
3=C:\Program Files\PICC\devices\16F887.h
4=GP2.h
5=GP2.c
6=ds1820.c
7=1wire.c
8=
[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/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/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_TCYSLE_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/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);
}