using System; using System.Text; using System.Linq; using System.Drawing; using System.Diagnostics; using System.Windows.Forms; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; using Tango.PMR.Stubs; using Tango.Stubs; const Int32 F2_ANALOG_DYEINGH_TEMP1_1_TX_00 = 0x200 ; const Int32 F2_ANALOG_DYEINGH_TEMP1_1_TX_01 = 0x202 ; const Int32 F2_ANALOG_DYEINGH_TEMP1_1_RX_00 = 0x204 ; const Int32 F2_ANALOG_DYEINGH_TEMP1_1_RX_01 = 0x206 ; const Int32 F2_ANALOG_DYEINGH_TEMP1_1_AMT_OF_WORDS = 0x208 ; const Int32 F2_AN_ENCLOSURETEMP1_1_TX_00 = 0x210 ; const Int32 F2_AN_ENCLOSURETEMP1_1_TX_01 = 0x212 ; const Int32 F2_AN_ENCLOSURETEMP1_1_RX_00 = 0x214 ; const Int32 F2_AN_ENCLOSURETEMP1_1_RX_01 = 0x216 ; const Int32 F2_AN_ENCLOSURETEMP1_1_AMT_OF_WORDS = 0x218 ; const Int32 F2_ANALOG_DYEINGH_TEMP2_1_TX_00 = 0x220 ; const Int32 F2_ANALOG_DYEINGH_TEMP2_1_TX_01 = 0x222 ; const Int32 F2_ANALOG_DYEINGH_TEMP2_1_RX_00 = 0x224 ; const Int32 F2_ANALOG_DYEINGH_TEMP2_1_RX_01 = 0x226 ; const Int32 F2_ANALOG_DYEINGH_TEMP2_1_AMT_OF_WORDS = 0x228 ; const Int32 F2_AN_ENCLOSURETEMP2_1_TX_00 = 0x230 ; const Int32 F2_AN_ENCLOSURETEMP2_1_TX_01 = 0x232 ; const Int32 F2_AN_ENCLOSURETEMP2_1_RX_00 = 0x234 ; const Int32 F2_AN_ENCLOSURETEMP2_1_RX_01 = 0x236 ; const Int32 F2_AN_ENCLOSURETEMP2_1_AMT_OF_WORDS = 0x238 ; const Int32 F2_ANALOG_DYEINGH_TEMP3_1_TX_00 = 0x240 ; const Int32 F2_ANALOG_DYEINGH_TEMP3_1_TX_01 = 0x242 ; const Int32 F2_ANALOG_DYEINGH_TEMP3_1_RX_00 = 0x244 ; const Int32 F2_ANALOG_DYEINGH_TEMP3_1_RX_01 = 0x246 ; const Int32 F2_ANALOG_DYEINGH_TEMP3_1_AMT_OF_WORDS = 0x248 ; const Int32 F2_AN_ENCLOSURETEMP3_1_TX_00 = 0x250 ; const Int32 F2_AN_ENCLOSURETEMP3_1_TX_01 = 0x252 ; const Int32 F2_AN_ENCLOSURETEMP3_1_RX_00 = 0x254 ; const Int32 F2_AN_ENCLOSURETEMP3_1_RX_01 = 0x256 ; const Int32 F2_AN_ENCLOSURETEMP3_1_AMT_OF_WORDS = 0x258 ; const Int32 F2_ANALOG_DYEINGH_TEMP4_1_TX_00 = 0x260 ; const Int32 F2_ANALOG_DYEINGH_TEMP4_1_TX_01 = 0x262 ; const Int32 F2_ANALOG_DYEINGH_TEMP4_1_RX_00 = 0x264 ; const Int32 F2_ANALOG_DYEINGH_TEMP4_1_RX_01 = 0x266 ; const Int32 F2_ANALOG_DYEINGH_TEMP4_1_AMT_OF_WORDS = 0x268 ; const Int32 F2_ANALOG_DRYER_TEMP1_1_TX_00 = 0x270 ; const Int32 F2_ANALOG_DRYER_TEMP1_1_TX_01 = 0x272 ; const Int32 F2_ANALOG_DRYER_TEMP1_1_RX_00 = 0x274 ; const Int32 F2_ANALOG_DRYER_TEMP1_1_RX_01 = 0x276 ; const Int32 F2_ANALOG_DRYER_TEMP1_1_AMT_OF_WORDS = 0x278 ; const Int32 F2_ANALOG_DYEINGH_TEMP5_1_TX_00 = 0x280 ; const Int32 F2_ANALOG_DYEINGH_TEMP5_1_TX_01 = 0x282 ; const Int32 F2_ANALOG_DYEINGH_TEMP5_1_RX_00 = 0x284 ; const Int32 F2_ANALOG_DYEINGH_TEMP5_1_RX_01 = 0x286 ; const Int32 F2_ANALOG_DYEINGH_TEMP5_1_AMT_OF_WORDS = 0x288 ; const Int32 F2_ANALOG_DRYER_TEMP2_1_TX_00 = 0x290 ; const Int32 F2_ANALOG_DRYER_TEMP2_1_TX_01 = 0x292 ; const Int32 F2_ANALOG_DRYER_TEMP2_1_RX_00 = 0x294 ; const Int32 F2_ANALOG_DRYER_TEMP2_1_RX_01 = 0x296 ; const Int32 F2_ANALOG_DRYER_TEMP2_1_AMT_OF_WORDS = 0x298 ; const Int32 F2_ANALOG_MIXCHIP_TEMP_1_TX_00 = 0x2A0 ; const Int32 F2_ANALOG_MIXCHIP_TEMP_1_TX_01 = 0x2A2 ; const Int32 F2_ANALOG_MIXCHIP_TEMP_1_RX_00 = 0x2A4 ; const Int32 F2_ANALOG_MIXCHIP_TEMP_1_RX_01 = 0x2A6 ; const Int32 F2_ANALOG_MIXCHIP_TEMP_1_AMT_OF_WORDS = 0x2A8 ; const Int32 F2_ANALOG_DRYER_TEMP3_1_TX_00 = 0x2B0 ; const Int32 F2_ANALOG_DRYER_TEMP3_1_TX_01 = 0x2B2 ; const Int32 F2_ANALOG_DRYER_TEMP3_1_RX_00 = 0x2B4 ; const Int32 F2_ANALOG_DRYER_TEMP3_1_RX_01 = 0x2B6 ; const Int32 F2_ANALOG_DRYER_TEMP3_1_AMT_OF_WORDS = 0x2B8 ; const Int32 F2_SPI_Busy1_Direct = 0x090; // Reads the direct values that are currently being sent to the fpga. spi_busy15 spi_busy14 spi_busy13 spi_busy12 F2_AN_ENCLOSURETEMP3_1_BUSY F2_AN_ENCLOSURETEMP2_1_BUSY F2_AN_ENCLOSURETEMP1_1_BUSY F2_ANALOG_MIXCHIP_TEMP_1_BUSY F2_ANALOG_DYEINGH_TEMP5_1_BUSY F2_ANALOG_DYEINGH_TEMP4_1_BUSY F2_ANALOG_DYEINGH_TEMP3_1_BUSY F2_ANALOG_DYEINGH_TEMP2_1_BUSY F2_ANALOG_DYEINGH_TEMP1_1_BUSY F2_ANALOG_DRYER_TEMP3_1_BUSY F2_ANALOG_DRYER_TEMP2_1_BUSY F2_ANALOG_DRYER_TEMP1_1_BUSY const Int32 F2_Prescaler1_reg3 = 0x3e4; // Parameter for prescaler divisions - 3bit spi temp low duty cycle value for pmw rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv parambit2 parambit1 parambit0 const Int32 F2_Prescaler1_reg4 = 0x3e6; // Parameter for prescaler divisions - 3bit spi temp high duty cycle value for pmw rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv rsv parambit2 parambit1 parambit0 const Int32 ADS1220_RESET = 0x06 ; // RESET Reset the device 0000 011x const Int32 ADS1220_START_SYNC = 0x08 ; // START/SYNC Start or restart conversions 0000 100x const Int32 ADS1220_POWERDOWN = 0x02 ; // POWERDOWN Enter power-down mode 0000 001x const Int32 ADS1220_RDATA = 0x10 ; // RDATA Read data by command 0001 xxxx const Int32 ADS1220_RREG = 0x20 ; // RREG Read nn registers starting at address rr 0010 rrnn const Int32 ADS1220_WREG = 0x40 ; // WREG Write nn registers starting at address rr 0010 rrnn int ADS1220_Reset(Int32 Fpga, Int32 HighAdr, Int32 LowAdr) { //Amount of words = 1 Fpga_Write_Reg(Fpga, HighAdr+6, 0x1, 0); Fpga_Write_Reg(Fpga, HighAdr, (ADS1220_RESET ) << 8, 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); return 1; } Int32 ADS1220_LoadOutReg(Int32 Fpga, Int32 HighAdr, Int32 LowAdr, Int32 BusyBitNo) { int tmp3 = 0; Int32 temp = 0; //Amount of words = 4 Fpga_Write_Reg(Fpga, HighAdr+6, 0x4, 0); Fpga_Write_Reg(Fpga, HighAdr, (ADS1220_RDATA ) << 8, 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); tmp3 = (int) GetBit(Fpga, F2_SPI_Busy1_Direct, BusyBitNo); while ( tmp3 == 1) { tmp3 = (int) GetBit(Fpga, F2_SPI_Busy1_Direct, BusyBitNo); stubManager.Write("\n\nBUSY"); } var RV_High = Fpga_Read_Reg(Fpga, HighAdr+4, 0); var RV_Low = Fpga_Read_Reg(Fpga, LowAdr+4, 0); temp = ( (Int32) RV_High.Value << 16) + (Int32) RV_Low.Value; return temp; } int ADS1220_ReadReg(Int32 Fpga, Int32 HighAdr, Int32 LowAdr, Int32 RegAddr, Int32 BusyBitNo) { int temp = 0; int tmp3 = 0; //Amount of words = 2 Fpga_Write_Reg(Fpga, HighAdr+6, 0x2, 0); Fpga_Write_Reg(Fpga, HighAdr, (ADS1220_RREG + (RegAddr << 2 )) << 8, 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); tmp3 = (int) GetBit(Fpga, F2_SPI_Busy1_Direct, BusyBitNo); while ( tmp3 == 1) { tmp3 = (int) GetBit(Fpga, F2_SPI_Busy1_Direct, BusyBitNo); stubManager.Write("\n\nBUSY"); } var RV_High = Fpga_Read_Reg(Fpga, HighAdr+4, 0); var RV_Low = Fpga_Read_Reg(Fpga, LowAdr+4, 0); temp = ( (int) RV_High.Value << 16) + (int) RV_Low.Value; return temp; } int ADS1220_WriteReg(Int32 Fpga, Int32 HighAdr, Int32 LowAdr, Int32 RegAddr, Int32 Data) { int temp = 0; int tmp3 = 0; //Amount of words = 2 Fpga_Write_Reg(Fpga, HighAdr+6, 0x2, 0); Fpga_Write_Reg(Fpga, HighAdr, ((ADS1220_WREG + (RegAddr << 2) ) << 8) + (Data & 0xff), 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); return 1; } int ADS1220_StartSync(Int32 Fpga, Int32 HighAdr, Int32 LowAdr) { //Amount of words = 1 Fpga_Write_Reg(Fpga, HighAdr+6, 0x1, 0); Fpga_Write_Reg(Fpga, HighAdr, (ADS1220_START_SYNC ) << 8, 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); return 1; } /* int ADS1220_GetContiniuosConvertion(Int32 Fpga, Int32 HighAdr, Int32 LowAdr) { //Amount of words = 1 Fpga_Write_Reg(Fpga, HighAdr+6, 0x1, 0); Fpga_Write_Reg(Fpga, HighAdr, (ADS1220_START_SYNC ) << 8, 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); } */ Int32 ADS1220_GetConvertion(Int32 Fpga, Int32 HighAdr, Int32 LowAdr, Int32 BusyBitNo) { int tmp3 = 0; Int32 temp = 0; //Amount of words = 3 Fpga_Write_Reg(Fpga, HighAdr+6, 0x3, 0); Fpga_Write_Reg(Fpga, HighAdr, 0x0000, 0); Fpga_Write_Reg(Fpga, LowAdr, 0x0000, 0); tmp3 = (int) GetBit(Fpga, F2_SPI_Busy1_Direct, BusyBitNo); while ( tmp3 == 1) { tmp3 = (int) GetBit(Fpga, F2_SPI_Busy1_Direct, BusyBitNo); stubManager.Write("\n\nBUSY"); } var RV_High = Fpga_Read_Reg(Fpga, HighAdr+4, 0); var RV_Low = Fpga_Read_Reg(Fpga, LowAdr+4, 0); temp = ( (Int32) RV_High.Value << 16) + (Int32) RV_Low.Value; return temp; }