/Modules/TDC/GP201A/SW/PICinterface/GP2.c
1,44 → 1,53
 
//struct {
unsigned int8 firenum;
unsigned int8 div_fire;
unsigned int8 calresnum :2;
unsigned int8 clkhsdiv ;
unsigned int8 start_clkhs:1;
unsigned int8 portnum :1;
unsigned int8 Tcycle :1;
unsigned int8 fakenum :1;
unsigned int8 selclkT :1;
unsigned int8 calibrate :1;
unsigned int8 disautocal :1;
unsigned int8 MRange :1;
unsigned int8 neg_stop2 :1;
unsigned int8 neg_stop1 :1;
unsigned int8 neg_start :1;
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 :4;
unsigned int hit1 :4;
unsigned int fast_init :1;
unsigned int sc :1;
unsigned int hitin2 :3;
unsigned int hitin1 :3;
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 :3;
unsigned int rfedge2 :1;
unsigned int rfedge1 :1;
unsigned int delval1 :3;
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 int en_err_val :1;
unsigned int tim0_mr2 :2;
unsigned int32 delval :7;
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;
 
//}TDC_registers;
 
 
119,29 → 128,71
 
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);
 
// update reg1
output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0x81,8);
spi_xfer(TDC_stream,reg1.*,24);
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);
 
/* output_low(TDC_ENABLE);
spi_xfer(TDC_stream,0xB1);
// 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,0xB2);
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,0xB3);
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,0xB4);
output_high(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);
}
 
void TDC_set_firenum()
{
reg0.Tcycle=TDC_TCYCLE_SHORT;
}
/Modules/TDC/GP201A/SW/PICinterface/GP2.h
116,21 → 116,24
#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_256 0
#define TDC_TIM0MR2_1024 1
#define TDC_TIM0MR2_4096 2
#define TDC_TIM0MR2_16384 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_FIRE_PHASE 0
#define TDC_FIRE_PHASE_INV 1
#define TDC_REPEAT_FIRE_0 0
#define TDC_REPEAT_FIRE_1 1
#define TDC_REPEAT_FIRE_2 2
/Modules/TDC/GP201A/SW/PICinterface/main.c
19,13 → 19,18
setup_vref(FALSE);
 
TDC_reset();
//TDC_init();
hit1=TDC_MRANGE2_HIT1_START;
hit2=TDC_MRANGE2_HIT2_1CH1;
hitin1=TDC_HITIN1_2;
hitin2=TDC_HITIN1_0;
TDC_update_registers();
while(true)
{
TDC_init();
delay_ms(500);
printf("ret: %LX \n", TDC_get_reg1());
// printf("ret: %LX \n", TDC_get_measurement(1));
 
printf("measured: %LX, %LX, %LX, %LX \n", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
};
}
/Modules/TDC/GP201A/SW/PICinterface/main.hex
1,40 → 1,119
:10000000B9EF00F07265743A20254C58200A0000C0
:100010000E50200807E00F6E0A360B360C360D36F0
:100020000F2EFAD79382939093948A940EC00FF078
:100030008A840DAE8A900DBE8A800A360B360C3645
:100040000D368A94003601360236033681A20090BE
:1000500081B200800F2EECD7000C93968A960D6A21
:100060000C6A0B6A500E0A6E200E0E6ED1DF93964C
:100070008A86F4EF00F0EA6A0A0EE96EEF500DE0AE
:10008000060E016E006A002EFED7012EFBD77B0EF6
:10009000006E002EFED7EF2EF3D7F9EF00F0939607
:1000A0008A960D6A0C6A0B6AB50E0A6E080E0E6E01
:1000B000AFDF0D6A0C6A0B6A0A6A080E0E6EA8DFC3
:1000C000015000C009F093968A8609C001F0FCEF48
:1000D00000F0939E8A9E080E016E00D00000018EF3
:1000E0000ED0019E0D32D8B08A8ED8A08A9E018C87
:1000F00006D0019C012EF6D700D000008A8EA70EF4
:10010000E96EE92EFED700D001BEEBD701BCF1D7D6
:10011000000C0900F6CF0BF0F7CF0CF0F5CF0DF087
:10012000D8DF0BC0F6FF0CC0F7FF0A2EF2D705EFA1
:1001300001F00BBE0FD00F0E006E0A3800160A0E2B
:10014000005C03E2300E002602D00B50002600C0F7
:100150000DF0BFDF0F0E0A160A0E0A5C02E2300E27
:1001600002D00B9E0B500A260AC00DF0B2DF0AEF38
:1001700001F0F86AD09EEA6AE96A939E8A8E9382B9
:10018000939093948A94C150C00B0F09C16E070ECF
:10019000B46EC150C00B0F09C16EC090C092C09424
:1001A000C09EC2809698C69A949E93809392010EA8
:1001B000C66E000EC76ED190800ED56ECD6A000E51
:1001C000CA6E000ECB6E9484BD6AB76AB66A070E1B
:1001D000B46E9250926E100E006E002EFED700008C
:1001E000B450A19CB56A39D7020E096EFA0E0A6E98
:1001F00042D7092EFBD753D701C009F0040EF66E83
:10020000000EF76E050E0A6E84D709C00AF0370E8D
:100210000B6E8FD7200E0D6E5CDF0A0E0D6E59DF50
:04022000E3D703001D
:1000000077EF02F06D656173757265643A20254C77
:10001000582C20254C582C20254C582C20254C5849
:10002000200A00003750200807E0386E3336343697
:1000300035363636382EFAD79382939093948A9435
:1000400037C038F08A8436AE8A9036BE8A8033361E
:100050003436353636368A94003601360236033663
:1000600081A2009081B20080382EECD7000C9396CC
:100070008A96366A356A346A500E336E200E376EB1
:10008000D1DF93968A86DFEF02F093968A96366ADE
:10009000356A346A800E336E080E376EC3DF366AF7
:1000A000356A346A04C033F0040E376EBBDF366A3B
:1000B000356A346A05C033F0040E376EB3DF366A32
:1000C000356A346A06C033F0020E376EABDF366A2B
:1000D000356A346A07C033F0020E376EA3DF366A22
:1000E000356A346A08C033F0020E376E9BDF000EAB
:1000F00009B0010E366A356A346A336E010E376E06
:1001000091DF000E09B2010E366A356A346A336E29
:10011000010E376E87DF000E09B4010E366A356AAC
:10012000346A336E010E376E7DDF000E09B6010EA4
:10013000366A356A346A336E010E376E73DF000E2D
:1001400009B8010E366A356A346A336E010E376EAD
:1001500069DF000E09BA010E366A356A346A336EF9
:10016000010E376E5FDF000E09BC010E366A356A7C
:10017000346A336E010E376E55DF000E09BE010E74
:10018000366A356A346A336E010E376E4BDF000E05
:100190000AB0010E366A356A346A336E010E376E64
:1001A00041DF000E0AB2010E366A356A346A336ED8
:1001B000010E376E37DF93968A8693968A96366A53
:1001C000356A346A810E336E080E376E2BDF366A5D
:1001D000356A346A0BC033F0040E376E23DF366A9B
:1001E000356A346A0CC033F0040E376E1BDF000E24
:1001F0000AB4010E366A356A346A336E010E376E00
:1002000011DF366A356A346A010E336E376E0ADFE3
:10021000366A356A346A0DC033F0030E376E02DF7A
:10022000366A356A346A0EC033F0030E376EFADE72
:10023000366A356A346A336A080E376EF3DE93968F
:100240008A8693968A96366A356A346A820E336E47
:10025000200E376EE7DE366A356A346A0FC033F037
:10026000030E376EDFDE000E0AB6010E366A356AFF
:10027000346A336E010E376ED5DE000E0AB8010EF9
:10028000366A356A346A336E010E376ECBDE13C0C0
:1002900036F012C035F011C034F010C033F0130E38
:1002A000376EC0DE93968A8693968A96366A356A4A
:1002B000346A830E336E200E376EB4DE366A356ACA
:1002C000346A336A020E376EADDE000E0ABA010ED2
:1002D000366A356A346A336E010E376EA3DE366ACB
:1002E000356A346A14C033F0020E376E9BDE18C0D4
:1002F00036F017C035F016C034F015C033F0130EC9
:10030000376E90DE93968A8693968A96366A356A19
:10031000346A840E336E200E376E84DE366A356A98
:10032000346A040E336E050E376E7CDE1CC036F068
:100330001BC035F01AC034F019C033F0130E376EFD
:1003400071DE93968A8693968A96366A356A346AFF
:10035000850E336E200E376E65DE366A356A346A76
:100360001DC033F0030E376E5DDE000E0ABC010EB9
:10037000366A356A346A336E010E376E53DE000E0C
:100380000ABE010E366A356A346A336E010E376E64
:1003900049DE366A356A346A1EC033F0030E376EA2
:1003A00041DE366A356A20C034F01FC033F0100ECB
:1003B000376E38DE93968A86E6EF02F093968A9639
:1003C000366A356A346A700E336E200E376E2ADE56
:1003D00093968A86E7EF02F0EA6A220EE96EEF5002
:1003E0000DE0060E016E006A002EFED7012EFBD72F
:1003F0007B0E006E002EFED7EF2EF3D7ECEF02F04F
:1004000093968A96B00E2D24FF0F326E366A356AA7
:10041000346A336E200E376E05DE366A356A346A0A
:10042000336A200E376EFEDD015003C031F002C08A
:1004300030F001C02FF000C02EF093968A862EC0B7
:1004400000F02FC001F030C002F031C003F0000C0A
:10045000939E8A9E080E016E00D00000018E0ED081
:10046000019E3432D8B08A8ED8A08A9E018C06D0E4
:10047000019C012EF6D700D000008A8EA70EE96EEF
:10048000E92EFED700D001BEEBD701BCF1D7000C9E
:100490000900F6CF32F0F7CF33F0F5CF34F0D8DFE4
:1004A00032C0F6FF33C0F7FF312EF2D721EF03F051
:1004B00032BE0FD00F0E006E313800160A0E005CEF
:1004C00003E2300E002602D03250002600C034F085
:1004D000BFDF0F0E31160A0E315C02E2300E02D081
:1004E000329E3250312631C034F0B2DF000CF86A4F
:1004F000D09EEA6AE96A939E8A8E9382939093943F
:100500008A94046A056A066A076A010E086E098001
:100510000992099409860988099A098C099E0A900A
:100520000A92050E0B6E0C6E0A940D6A0E6A010E8D
:100530000F6E0A960A98136A126A116A106A0A9A6A
:10054000030E146E186A176A166A156A1C6A1B6A0B
:100550001A6A196A1D6A0A9C0A8E1E6AC150C00B6B
:100560000F09C16E070EB46EC150C00B0F09C16EEA
:10057000C090C092C094C09EC2809698C69A949E25
:1005800093809392010EC66E000EC76ED190800EBE
:10059000D56ECD6A000ECA6E000ECB6E9484BD6A15
:1005A000B76AB66A070EB46E9250926E100E006E65
:1005B000002EFED70000B450A19CB56A58D5010E9C
:1005C0000C6E020E0B6E0E6E0D6A5FD5F7D6020E24
:1005D000216EFA0E226E00D7212EFBD7010E2D6E52
:1005E0000FDF03C024F002C023F001C022F000C0DE
:1005F00021F0020E2D6E04DF03C028F002C027F0A8
:1006000001C026F000C025F0030E2D6EF9DE03C0F8
:100610002CF002C02BF001C02AF000C029F0040E1B
:100620002D6EEEDE03C030F002C02FF001C02EF0C0
:1006300000C02DF0040EF66E000EF76E0A0E316E3D
:1006400027D724C031F0370E326E32DF23C031F0AD
:10065000370E326E2DDF22C031F0370E326E28DFBA
:1006600021C031F0370E326E23DF2C0E346EF0DEF7
:10067000200E346EEDDE28C031F0370E326E18DFFA
:1006800027C031F0370E326E13DF26C031F0370E3F
:10069000326E0EDF25C031F0370E326E09DF2C0EC0
:1006A000346ED6DE200E346ED3DE2CC031F0370E21
:1006B000326EFEDE2BC031F0370E326EF9DE2AC00C
:1006C00031F0370E326EF4DE29C031F0370E326E63
:1006D000EFDE2C0E346EBCDE200E346EB9DE30C080
:1006E00031F0370E326EE4DE2FC031F0370E326E4D
:1006F000DFDE2EC031F0370E326EDADE2DC031F083
:10070000370E326ED5DE200E346EA2DE0A0E346E47
:060710009FDE5CD7030030
:020000040030CA
:0E00000027CC390E0087A1000FC00FE00F4083
:00000001FF
;PIC18F4550
;CRC=0372 CREATED="02-1-11 18:11"
;CRC=E935 CREATED="02-1-11 20:39"