Problem with comparison.
/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/main.c
0,0 → 1,201
#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_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,511
:100000000A308A005D2A0000D434ED32321DA0127D
:1000100033173733A01233173733A0123317373360
:10002000A0060A00D434ED32311DA0123317373345
:10003000A01233173733A01233173733A0060A0044
:10004000D4326D383A10252658102526581025260A
:10005000581025265810800BA02D25267510252612
:100060007510252675102526751025267510252650
:1000700075102526F52EA0060A006108203C0319FC
:100080004828E200DD0DDE0DDF0DE00DE20B422819
:100090008316861406100611831206116108E20009
:1000A0000615E01F0610E01B0614DD0DDE0DDF0D4A
:1000B000E00D0611F70DF80DF90DFA0D861C7710FD
:1000C00086187714E20B50280800831686118312D5
:1000D0008611E001DF01DE015030DD000830E10073
:1000E0003D20831686118312861508005530840042
:1000F00083130008031989280630F800F701F70B6D
:100100007F28F80B7E287B30F700F70B8528800BC3
:100110007C2808008316861183128611E001DF0116
:10012000DE018130DD000830E1003D20E001DF012B
:10013000DE012708DD000430E1003D20E001DF01A1
:10014000DE012808DD000430E1003D2000302619E2
:100150000130D500E001DF01DE015508DD0001308E
:10016000E1003D20E001DF01DE010130DD00E100C2
:100170003D20E001DF01DE012908DD000330E10060
:100180003D20E001DF01DE012A08DD000330E1004F
:100190003D20E001DF01DE01DD010830E1003D200E
:1001A0008316861183128615080083168611831222
:1001B0008611E001DF01DE018030DD000830E10062
:1001C0003D20E001DF01DE012008DD000430E10018
:1001D0003D20E001DF01DE012108DD000430E10007
:1001E0003D20E001DF01DE012208DD000230E100F8
:1001F0003D20E001DF01DE012308DD000230E100E7
:100200003D20E001DF01DE012408DD000230E100D5
:100210003D20003025180130C100E001DF01DE0182
:100220004108DD000130E1003D200030A51801301B
:10023000C100E001DF01DE014108DD000130E10025
:100240003D20003025190130C100E001DF01DE0151
:100250004108DD000130E1003D200030A5190130EA
:10026000C100E001DF01DE014108DD000130E100F5
:100270003D200030251A0130C100E001DF01DE0120
:100280004108DD000130E1003D200030A51A0130B9
:10029000C100E001DF01DE014108DD000130E100C5
:1002A0003D200030251B0130C100E001DF01DE01EF
:1002B0004108DD000130E1003D200030A51B013088
:1002C000C100E001DF01DE014108DD000130E10095
:1002D0003D20003026180130C100E001DF01DE01C1
:1002E0004108DD000130E1003D200030A61801305A
:1002F000C100E001DF01DE014108DD000130E10065
:100300003D2083168611831286158A208316861156
:1003100083128611E001DF01DE018230DD00203032
:10032000E1003D20E001DF01DE012B08DD000330AC
:10033000E1003D200030A6190130C100E001DF01DD
:10034000DE014108DD000130E1003D200030261AC9
:100350000130C100E001DF01DE014108DD000130B4
:10036000E1003D202F08E0002E08DF002D08DE0010
:100370002C08DD001330E1003D2083168611831226
:1003800086158316861183128611E001DF01DE01D6
:100390008330DD002030E1003D20E001DF01DE019F
:1003A000DD010230E1003D200030A61A0130C1001D
:1003B000E001DF01DE014108DD000130E1003D2008
:1003C000E001DF01DE013008DD000230E1003D2008
:1003D0003408E0003308DF003208DE003108DD00B9
:1003E0001330E1003D208316861183128615831693
:1003F000861183128611E001DF01DE018430DD0009
:100400002030E1003D20E001DF01DE010430DD00AD
:100410000530E1003D203808E0003708DF003608ED
:10042000DE003508DD001330E1003D208316861123
:10043000831286158316861183128611E001DF016F
:10044000DE018530DD002030E1003D20E001DF01EC
:10045000DE013908DD000330E1003D200030261BBD
:100460000130C100E001DF01DE014108DD000130A3
:10047000E1003D200030A61B0130C100E001DF019A
:10048000DE014108DD000130E1003D20E001DF0137
:10049000DE013A08DD000330E1003D20E001DF012C
:1004A0003C08DE003B08DD001030E1003D208316F3
:1004B0008611831286150800831686118312861111
:1004C000E001DF01DE017030DD000830E1003D2099
:1004D00083168611831286150800831686118312EF
:1004E0008611E001DF01DE010130DD000830E100AE
:1004F0003D2083168611831286158A150A12322B27
:100500008316861183128611E001DF01DE01B4300B
:10051000DD000830E1003D20E001DF01DE01DD010A
:100520001030E1003D207808D6007708D50083160A
:100530008611831286155508F8005608F900080040
:1005400083168613831286130830F800A72A00004A
:10055000F817B82AF813DA0C03188617031C861349
:100560007817B82A7813F80BAB2AB62A000086173A
:10057000A7308400840BBA2ABD2AF81BAA2A781B4C
:10058000B22A0800D7010408D6005710831B57145D
:10059000500EF038D200D207E23ED300323ED500F2
:1005A00050080F39D307D307D507E93ED400D40745
:1005B000D4074F0E0F39D407D507D40DD50DD50963
:1005C000D50D4F080F39D507D20D0730D1000A30AD
:1005D000D507D403031CE82AD407D303031CEC2A51
:1005E000D307D203031CF02AD207D103031CF42A39
:1005F0005130840083130730560556138407553055
:100600000402031956170008F700031D0F2B561B91
:100610000F2B561A212BD6190F2B2030122BD61543
:1006200056123030F707D0010408CF005010831B5A
:1006300050147708DA00A0224F0884008313501862
:100640008317840A561FFF2A080083168611831217
:100650008611B0305707FF3EDC00E001DF01DE010C
:100660005C08DD000830E1003D20E001DF01DE0133
:10067000DD012030E1003D207A08DB007908DA0056
:100680007808D9007708D80083168611831286155A
:100690005808F7005908F8005A08F9005B08FA00F2
:1006A0000800B630F700FA01F901F80155085604C0
:1006B00057045804031D5E2BF7016B2B0310F81B26
:1006C0006A2BD50DD60DD70DD80DFA0DF90DF80DF5
:1006D000F70B5E2BF813080059080319312CE500BD
:1006E0005D080319312CE502031C7B2B7F30E507E5
:1006F0000318312C812B8130E502031C312C0319A6
:10070000312C6508F700F801F901FA01E4015A08F3
:10071000E300E3175B08E2005C08E1001930E50044
:100720006008E1020318A42B0130E2020318A42B95
:10073000E3020318A42BE4020318A42BE40AE30A3F
:10074000E20A6008E107D62B5F08E2020318BF2B1C
:100750000130E3020318BF2BE4020318BF2BE40AA5
:10076000E30A5F08E2076008E107031CD62BE20AF0
:10077000031DD62BE30A031DD62BE40AD62B5E08F5
:100780008038E3020318D52B0130E4020318D52B7F
:10079000E40A5E088038E3075F08E207031CB32B16
:1007A000E30A031DB32BE40AB32B7A14E50BD92B10
:1007B000E42B0310E10DE20DE30DE40D0310FA0D3F
:1007C000F90DF80DE60D902B661CEC2B0310F80CC0
:1007D000F90CFA0CE60CEF2BF7030319312CE61B8E
:1007E000182C0310E10DE20DE30DE40D6008E102A9
:1007F0000318042C0130E2020318042CE30203184E
:10080000042CE402031C272C5F08E20203180F2CBF
:100810000130E30203180F2CE402031C272C5E08AE
:100820008038E3020318182C0130E402031C272C43
:10083000FA0A031D272CF90A031D272CF80A031DA9
:10084000272CF70A0319312CF80CF90CFA0C5A086A
:10085000E5005E08E506E51F2F2CF817352CF81388
:10086000352CF701F801F901FA0108005A080319BB
:10087000A62CE2005E080319A62CE2070318472CF9
:100880007F30E202031CA62C0319A62C4B2C8130CE
:10089000E2070318A62C6208F700F801F901FA0133
:1008A0005B08E600E6175C08E5005D08E400183028
:1008B000E200E301641C742C6108FA07031C662C37
:1008C000F90A031D662CF80A0319E3176008F907F3
:1008D000031C6D2CF80A0319E3175F08DC00DC1712
:1008E0005C08F8070318E317E30DF80CF90CFA0C91
:1008F000E60CE50CE40C0310E20B592C0130F70771
:100900000318A62CF81B8B2CE60DFA0DF90DF80D2B
:10091000F7030319A62CE61F9C2CFA0A031D9C2C36
:10092000F90A031D9C2CF80A031D9C2CF80CF90CE9
:10093000FA0CF70A0319A62C5B08E3005F08E3062C
:10094000E31FA42CF817AA2CF813AA2CF701F8011E
:10095000F901FA0108004908013A0319B62C033AD3
:100960000319B92C013A0319BC2CBF2C0230A70083
:10097000BF2C0330A700BF2C0430A700BF2C8A2057
:100980003230D500762080227908FA0078080739BD
:10099000D200D3015208D70025237A08CD00790868
:1009A000CC007808CB007708CA002308FC3E031867
:1009B000562E043E5F2E4D08D8004C08D7004B0839
:1009C000D6004A08D50051237A08DC007908DB00FC
:1009D0007808DA007708D900E001DF01DE018F3006
:1009E000DD006C237708D2007808D3007908D400A2
:1009F0007A08D500DD007908DC007808DB0077088C
:100A0000DA00E1012430E0007430DF009230DE00D3
:100A100036247708D2007808D3007908D4007A0801
:100A2000D500DC007908DB007808DA007708D90007
:100A30008030E0009630DF001830DE009530DD00B9
:100A40006C237A08D1007908D0007808CF007708A5
:100A5000CE00562E4D08D8004C08D7004B08D600C3
:100A60004A08D50051237A08DC007908DB007808B1
:100A7000DA007708D900E001DF01DE018F30DD0008
:100A80006C237708D2007808D3007908D4007A085C
:100A9000D500DD007908DC007808DB007708DA0093
:100AA000E1012430E0007430DF009230DE003624B3
:100AB0007708D2007808D3007908D4007A08D500E6
:100AC000DC007908DB007808DA007708D90080308C
:100AD000E0009630DF001830DE009530DD006C233A
:100AE0007708D2007808D3007908D4007A08D500B6
:100AF000DD007908DC007808DB007708DA00E10126
:100B0000E001DF018030DE0036247A08D100790868
:100B1000D0007808CF007708CE00562E4D08D800B8
:100B20004C08D7004B08D6004A08D50051237A0854
:100B3000DC007908DB007808DA007708D900E001EA
:100B4000DF01DE018F30DD006C237708D2007808EA
:100B5000D3007908D4007A08D500DD007908DC00DC
:100B60007808DB007708DA00E1012430E000743017
:100B7000DF009230DE0036247708D2007808D300F8
:100B80007908D4007A08D500DC007908DB00780801
:100B9000DA007708D9008030E0009630DF001830A6
:100BA000DE009530DD006C237708D2007808D30092
:100BB0007908D4007A08D500DD007908DC007808CF
:100BC000DB007708DA00E101E001DF018130DE00BF
:100BD00036247A08D1007908D0007808CF00770849
:100BE000CE00562E4D08D8004C08D7004B08D60032
:100BF0004A08D50051237A08DC007908DB00780820
:100C0000DA007708D900E001DF01DE018F30DD0076
:100C10006C237708D2007808D3007908D4007A08CA
:100C2000D500DD007908DC007808DB007708DA0001
:100C3000E1012430E0007430DF009230DE00362421
:100C40007708D2007808D3007908D4007A08D50054
:100C5000DC007908DB007808DA007708D9008030FA
:100C6000E0009630DF001830DE009530DD006C23A8
:100C70007708D2007808D3007908D4007A08D50024
:100C8000DD007908DC007808DB007708DA00E10194
:100C9000E001DF018230DE0036247A08D1007908D5
:100CA000D0007808CF007708CE00562E4E08F70007
:100CB0004F08F8005008F9005108FA0008000A101F
:100CC0008A140A158207DB2C2A2D8E2DF22D83160D
:100CD00003178C170C14000000000318962E8312C3
:100CE0000C087F390313D20003170D080313D30038
:100CF00003170F080313D4005208DA00A022530888
:100D000003178D000313540803178F0083168C17E5
:100D10000C140000000083120313D10B902E932EAD
:100D200083160317962EB52E8316031783120C0D08
:100D30000E0D7F390313D20003170D080313D300E0
:100D400003170F080313D4005208DA00A022530837
:100D500003178D000313540803178F008D0A03191E
:100D60008F0A03100313D10B672E0800F701F80157
:100D7000F901FA01E201E301E401E501610860041F
:100D80005F045E040319F42E2030E6000310DA0D30
:100D9000DB0DDC0DDD0DE20DE30DE40DE50D61086D
:100DA0006502031DDD2E60086402031DDD2E5F0851
:100DB0006302031DDD2E5E086202031CEE2E5E0838
:100DC000E2025F08031C5F0FE3026008031C600F70
:100DD000E4026108031C610FE5020314F70DF80D2E
:100DE000F90DFA0DE60BC62E62308400831308005D
:100DF0000408D2005108D4000319172F5008DD0051
:100E00004F08DC004E08DB004D08DA00E101E0018C
:100E10002030DF008230DE0036247A08D0007908E6
:100E2000CF007808CE007708CD00D40BFE2E5008F6
:100E3000DD004F08DC004E08DB004D08DA005A08E0
:100E4000B63CDA00FA015B08DE00DB170310DB0CAE
:100E5000DC0CDD0CFA0CF90CF80CF70CDA0B262F75
:100E6000DE1F3D2FF709F809F909FA09F70A0319F6
:100E7000F80A0319F90A0319FA0A7A08D00079085E
:100E8000CF007808CE007708CD00D01F542FD203B2
:100E9000D216CD09CE09CF09D009CD0A0319CE0A41
:100EA0000319CF0A0319D00A3B30D9009A30D80071
:100EB000CA30D700D6010A30D40051080319D20A2B
:100EC0005008DD004F08DC004E08DB004D08DA005A
:100ED0005908E1005808E0005708DF005608DE0016
:100EE000B6260008CD00840A0008CE00840A000857
:100EF000CF00840A0008D000FD308407F708031DE6
:100F0000942F510A54020319942F52080319962F53
:100F10000F39540203198E2F0318C62FD21BC62F68
:100F2000521B962F2030C22F2030D205D21EA42F64
:100F3000D2125108031DD2037708D2002D30DA00F7
:100F4000A0225208F700D20151085402031DB22F0B
:100F50007708D2002E30DA00A0225208F7002030A5
:100F6000D20500303030D21EC22FD2125108031DDC
:100F7000D2037708D2002D30DA00A0225208F70001
:100F8000D2013030F7077708DA00A0225908DD00D7
:100F90005808DC005708DB005608DA00E101E001E0
:100FA000DF010A30DE00B6267A08D9007908D800B9
:100FB0007808D7007708D600D40B602F0800831676
:100FC000861183128611E001DF01DE010230DD00AF
:100FD0000830E1003D2083168611831286158A159C
:040FE0000A124F2E74
:101000004A08FB3E03182828053E1E2AA801282866
:10101000490B0D280130A8000F280930A800282806
:10102000490B15280230A80017280A30A8002828E4
:10103000490B1D280330A8001F280B30A8002828C2
:10104000490B25280430A80027280C30A8002828A0
:101050004C08FB3E03185028053E272AA7015028BC
:101060004B0B35280130A70037280930A70050283E
:101070004B0B3D280230A7003F280A30A70050281C
:101080004B0B45280330A70047280B30A7005028FA
:101090004B0B4D280430A7004F280C30A7005028D8
:1010A0008A118A208A153230D5008A1176208A1555
:1010B0008A1180228A157908FA0078080739D50044
:1010C000D6015508D7008A1125238A157A08D00041
:1010D0007908CF007808CE007708CD002308FC3EC1
:1010E0000318152A043E302A5008D8004F08D700AC
:1010F0004E08D6004D08D5008A1151238A157A086A
:10110000DC007908DB007808DA007708D900E00114
:10111000DF01DE018F30DD008A116C238A1577082C
:10112000D5007808D6007908D7007A08D800DD0005
:101130005708DC005608DB005508DA00E1012430CE
:10114000E0007430DF009230DE008A1136248A1508
:101150007708D5007808D6007908D7007A08D80033
:10116000DC005708DB005608DA005508D90080304B
:10117000E0009630DF001830DE009530DD008A1187
:101180006C238A157A08D4007908D3007808D20035
:101190007708D100152A5008D8004F08D7004E080C
:1011A000D6004D08D5008A1151238A157A08DC0033
:1011B0007908DB007808DA007708D900E001DF0160
:1011C000DE018F30DD008A116C238A157708D50087
:1011D0007808D6007908D7007A08D800DD005708CB
:1011E000DC005608DB005508DA00E1012430E0009D
:1011F0007430DF009230DE008A1136248A157708B9
:10120000D5007808D6007908D7007A08D800DC0025
:101210005708DB005608DA005508D9008030E00096
:101220009630DF001830DE009530DD008A116C2327
:101230008A157708D5007808D6007908D7007A088B
:10124000D800DD005708DC005608DB005508DA003E
:10125000E101E001DF018030DE008A1136248A15C9
:101260007A08D4007908D3007808D2007708D10032
:10127000152A5008D8004F08D7004E08D6004D0850
:10128000D5008A1151238A157A08DC007908DB0021
:101290007808DA007708D900E001DF01DE018F303D
:1012A000DD008A116C238A157708D5007808D600EE
:1012B0007908D7007A08D800DD005708DC00560806
:1012C000DB005508DA00E1012430E0007430DF0073
:1012D0009230DE008A1136248A157708D500780806
:1012E000D6007908D7007A08D800DC005708DB0060
:1012F0005608DA005508D9008030E0009630DF004B
:101300001830DE009530DD008A116C238A157708CD
:10131000D5007808D6007908D7007A08D800DD0013
:101320005708DC005608DB005508DA00E101E0014F
:10133000DF018130DE008A1136248A157A08D40054
:101340007908D3007808D2007708D100152A500810
:10135000D8004F08D7004E08D6004D08D5008A1196
:1013600051238A157A08DC007908DB007808DA0056
:101370007708D900E001DF01DE018F30DD008A113E
:101380006C238A157708D5007808D6007908D7002D
:101390007A08D800DD005708DC005608DB00550845
:1013A000DA00E1012430E0007430DF009230DE002A
:1013B0008A1136248A157708D5007808D60079086E
:1013C000D7007A08D800DC005708DB005608DA009E
:1013D0005508D9008030E0009630DF001830DE007C
:1013E0009530DD008A116C238A157708D5007808BE
:1013F000D6007908D7007A08D800DD005708DC004D
:101400005608DB005508DA00E101E001DF01823017
:10141000DE008A1136248A157A08D4007908D300B0
:101420007808D2007708D100152A5108F700520831
:10143000F8005308F9005408FA0008000A108A144A
:101440000A118207062808281028182820280A10C0
:101450008A140A1182072E28302838284028482864
:101460000A108A140A1182077428CB283929A7295F
:10147000D21B4C2A0F30F700510EF7050A307702C5
:101480000318452A3030F707472A5208F70777082C
:10149000DA008A11A0228A150F30D1050A305102D4
:1014A0000318542A3030562AD2135208D107510853
:1014B000DA008A11A0228A150800840183131F30E4
:1014C00083058316861383128617831686140610E7
:1014D000061183120611A0010130A100A201A3018F
:1014E000A4002514A5102511A5152516A51225174C
:1014F000A5132610A6100530A700A8002611A901E3
:10150000AA010130AB00A6112612AF01AE01AD0158
:10151000AC01A6120330B000B401B301B201B101B5
:10152000B801B701B601B501B9012613A617BA0172
:10153000BC01BB01831603170908C03989000313D6
:101540001F129F1200300317880083128701880141
:101550008901FF300313BD00831603170908C03942
:10156000890003131F129F12003003178800831293
:1015700003131F139F1383169F1383121F149412B8
:10158000BD123D088316870083123D163D08831661
:1015900087008312BD113D08831687000130831236
:1015A00094000030831694000108C7390838810080
:1015B000831290010030F8009200003083169200F0
:1015C00083123D153D088316870083129701831609
:1015D0009B019C0101309D00831203178701880144
:1015E000890100308316031388008A118312652055
:1015F0008A150812881288133230D5008A11762095
:101600008A158A1165208A156430D5008A117620E2
:101610008A1525170130A8000430AA00A901073057
:10162000AB00A6160230A300AF01AE01AD01AC01C4
:10163000B401B301B201B101B801B701B601B501FE
:101640008A11D5208A156430D5008A1176208A1532
:101650008A115C228A153230D5008A1176208A15CB
:101660008A116D2A8A15C830D5008A1176208A150C
:10167000881708160812F930F700F70B3D2B402B9E
:1016800088168812432B442B0000881688121030CD
:10169000F700F70B492B0000881688124F2B502BB0
:1016A00000008316861183128611C001B430C00079
:1016B000E001DF01DE014008DD000830E1008A11B1
:1016C0003D208A15E001DF01DE01DD011030E1007F
:1016D0008A113D208A157808BF007708BE0083165E
:1016E0008611831286153F0EF900FA010F30F905B5
:1016F00079080139C100C201FA013F0CF900F90C67
:10170000F90C1F30F90579080139C300C401FA0149
:101710003F0CF900F90C3F30F90579080139C50093
:10172000C6010310FA013F0CF9000139C700C801D6
:101730003F0CFA003E0CF900FA0CF90CFA0CF90C0B
:10174000FA0CF90CFA0CF90CFA0CF90C0330FA0546
:1017500079080739C900CA013F0CFA003E0CF900AC
:10176000FA0CF90CFA0CF90C1F30FA057908073954
:10177000CB00CC018A1180228A157908FA007808FA
:101780000739CD00CE015B30DA008A11A0228A151C
:10179000103084004208D0004108CF008A11C222D4
:1017A0008A152030DA008A11A0228A1510308400B0
:1017B0004408D0004308CF008A11C2228A15203085
:1017C000DA008A11A0228A15103084004608D00061
:1017D0004508CF008A11C2228A152030DA008A110A
:1017E000A0228A15103084004808D0004708CF0096
:1017F0008A11C2228A152030DA008A11A0228A15A5
:10180000103084004A08D0004908CF008A11C22253
:101810008A152030DA008A11A0228A15103084003F
:101820004C08D0004B08CF008A11C2228A15203004
:10183000DA008A11A0228A15103084004E08D000E8
:101840004D08CF008A11C2228A155D30DA008A1154
:10185000A0228A150D30DA008A11A0228A150A30DA
:10186000DA008A11A0228A150130C9008A11AB243E
:101870008A157708C1007808C2007908C3007A0881
:10188000C4000230C9008A11AB248A157708C5004C
:101890007808C6007908C7007A08C8000330C90074
:1018A0008A11AB248A157708C9007808CA0079081C
:1018B000CB007A08CC00043003178D0000308F0075
:1018C000031007300313D1008A1167268A15893067
:1018D00084004408D0004308CF004208CE004108ED
:1018E000CD000730D1008A11F8268A152030DA00A1
:1018F0008A11A0228A15893084004808D000470840
:10190000CF004608CE004508CD000730D1008A112F
:10191000F8268A152030DA008A11A0228A1589302B
:1019200084004C08D0004B08CF004A08CE0049087C
:10193000CD000730D1008A11F8268A152030DA0050
:101940008A11A0228A150D30DA008A11A0228A1588
:101950000A30DA008A11A0228A1525130530A80062
:10196000A7000130AA00A9000730AB00A61602307C
:10197000A300AF01AE01AD01AC01B401B301B201EE
:10198000B101B801B701B601B5018A11D5208A1598
:101990006430D5008A1176208A158A115C228A1556
:1019A0003230D5008A1176208A15081288128813E1
:1019B000081688178816881288130812831686114D
:1019C00083128611C001B430C000E001DF01DE01E6
:1019D0004008DD000830E1008A113D208A15E00151
:1019E000DF01DE01DD011030E1008A113D208A15A2
:1019F0007808BF007708BE0083168611831286150B
:101A00003F0EF900FA010F30F90579080139C100DC
:101A1000C201FA013F0CF900F90CF90C1F30F9056D
:101A200079080139C300C401FA013F0CF900F90C2F
:101A30003F30F90579080139C500C6010310FA01E4
:101A40003F0CF9000139C700C8013F0CFA003E0CF9
:101A5000F900FA0CF90CFA0CF90CFA0CF90CFA0C66
:101A6000F90CFA0CF90C0330FA0579080739C900AA
:101A7000CA013F0CFA003E0CF900FA0CF90CFA0C02
:101A8000F90C1F30FA0579080739CB00CC018A110F
:101A900080228A157908FA0078080739CD00CE012E
:101AA0005B30DA008A11A0228A15103084004208C7
:101AB000D0004108CF008A11C2228A152030DA00F6
:101AC0008A11A0228A15103084004408D0004308EF
:101AD000CF008A11C2228A152030DA008A11A02292
:101AE0008A15103084004608D0004508CF008A11BE
:101AF000C2228A152030DA008A11A0228A151030FD
:101B000084004808D0004708CF008A11C2228A15F5
:101B10002030DA008A11A0228A15103084004A0889
:101B2000D0004908CF008A11C2228A152030DA007D
:101B30008A11A0228A15103084004C08D0004B086E
:101B4000CF008A11C2228A152030DA008A11A02221
:101B50008A15103084004E08D0004D08CF008A113D
:101B6000C2228A155D30DA008A11A0228A150D3052
:101B7000DA008A11A0228A150A30DA008A11A0221E
:101B80008A150130C900CA01CB00CC0000207708BB
:101B9000C1007808C2007908C3007A08C400023086
:101BA000C900CA01CB000130CC0000207708C50075
:101BB0007808C6007908C7007A08C8000130C90053
:101BC000CA000230CB000130CC0000207708C900E9
:101BD0007808CA007908CB007A08CC0012300317C5
:101BE0008D0000308F00031007300313D1008A11DD
:101BF00067268A15893084004408D0004308CF0046
:101C00004208CE004108CD000730D1008A11F826E5
:101C10008A152030DA008A11A0228A1589308400C2
:101C20004808D0004708CF004608CE004508CD0040
:101C30000730D1008A11F8268A152030DA008A117F
:101C4000A0228A15893084004C08D0004B08CF00B0
:101C50004A08CE004908CD000730D1008A11F82685
:101C60008A152030DA008A11A0228A150D30DA0098
:101C70008A11A0228A150A30DA008A11A0228A1558
:101C80008A1165208A152514A5102511A5158A111C
:101C9000D5208A158A115C228A158A11DF2F8A15B0
:101CA0008316861183128611C001B430C000E00192
:101CB000DF01DE014008DD000830E1008A113D202F
:101CC0008A15E001DF01DE01DD011030E1008A113B
:101CD0003D208A157808BF007708BE00831686115C
:101CE000831286150130D7008A1125238A157A08B8
:101CF000C4007908C3007808C2007708C100023028
:101D0000D7008A1125238A157A08C8007908C700E8
:101D10007808C6007708C5000330D7008A1125234C
:101D20008A157A08CC007908CB007808CA007708B1
:101D3000C9000430D7008A1125238A157A08D000FB
:101D40007908CF007808CE007708CD00203003173F
:101D50008D0000308F00031006300313D1008A116C
:101D600067268A154408D1003730D200382243084C
:101D7000D1003730D20038224208D1003730D200AB
:101D800038224108D1003730D20038222030DA0022
:101D90008A11A0228A154808D1003730D200382293
:101DA0004708D1003730D20038224608D1003730FA
:101DB000D20038224508D1003730D20038222030F6
:101DC000DA008A11A0228A154C08D1003730D200DF
:101DD00038224B08D1003730D20038224A08D100CF
:101DE0003730D20038224908D1003730D2003822AB
:101DF0002030DA008A11A0228A155008D10037302D
:101E0000D20038224F08D1003730D20038224E0895
:101E1000D1003730D20038224D08D1003730D200FF
:101E200038222030DA008A11A0228A153F0EF900EC
:101E3000FA010F30F90579080139C100C201FA0130
:101E40003F0CF900F90CF90C1F30F905790801393C
:101E5000C300C401FA013F0CF900F90C3F30F90549
:101E600079080139C500C6010310FA013F0CF900D9
:101E70000139C700C8013F0CFA003E0CF900FA0C0A
:101E8000F90CFA0CF90CFA0CF90CFA0CF90CFA0C26
:101E9000F90C0330FA0579080739C900CA013F0C6B
:101EA000FA003E0CF900FA0CF90CFA0CF90C1F3090
:101EB000FA0579080739CB00CC018A1180228A15EE
:101EC0007908FA0078080739CD00CE012030DA0011
:101ED0008A11A0228A155B30DA008A11A0228A15A5
:101EE000103084004208D0004108CF008A11C2227D
:101EF0008A152030DA008A11A0228A151030840059
:101F00004408D0004308CF008A11C2228A1520302D
:101F1000DA008A11A0228A15103084004608D00009
:101F20004508CF008A11C2228A152030DA008A11B2
:101F3000A0228A15103084004808D0004708CF003E
:101F40008A11C2228A152030DA008A11A0228A154D
:101F5000103084004A08D0004908CF008A11C222FC
:101F60008A152030DA008A11A0228A1510308400E8
:101F70004C08D0004B08CF008A11C2228A152030AD
:101F8000DA008A11A0228A15103084004E08D00091
:101F90004D08CF008A11C2228A153A3003178D00EE
:101FA00000308F00031404300313D1008A11672618
:061FB0008A15092B6300F5
:04400E00F22CFF3F52
:00000001FF
;PIC16F887
;CRC=14CD CREATED="30-V-11 14:51"
/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=main.h
3=C:\Program Files\PICC\devices\16F887.h
4=C:\Program Files\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 //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/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);
}