i am using eCos (Embedded Configurable Operation System) running on a simple intel base computer
and want to read the calibration constt from EEPROM for NI PCI-6071E card.
but this code always return "myvalue=255". which is not the required value. can any body help me..
cyg_uint8 thisbit;
cyg_uint16 writevalue;
int myindex;
cyg_uint8 myvalue = 0;
writevalue=0x0BFC;//reading the NI-DAQ Board Code
//p_PCI_DIO96->io_address is the Base Add 1.
// 0x4 - chip select - enable EEPROM communciation
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x00);
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x00);
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x04);
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x04);
for (myindex = 15; myindex >= 0; myindex--)
{
thisbit = ((writevalue >> myindex) & 0x01) * 0x02;
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,(0x04 + thisbit)); // set data bit
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,(0x04 + thisbit));
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,(0x04 + thisbit + 0x1)); // set data bit and clock
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,(0x04 + thisbit + 0x1));
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x04);
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x04);
}
// read back PROMOUT (D7-D0) 8-bit result.
for (myindex = 7; myindex >= 0; myindex--)
{
// read bit
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x04); // set clock low
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x04);
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,(0x04 + 0x1)); // set clock high
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,(0x04 + 0x1));
HAL_READ_UINT8(p_PCI_DIO96->io_address+0x01,thisbit); // read data bit
thisbit &= 0x1;
myvalue |= thisbit << myindex;
}
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x00); // set rom low
HAL_WRITE_UINT8(p_PCI_DIO96->io_address + 0x0D,0x00);
printf("my Value = %d\n", myvalue);
printf("Execution completed");
/////////////////////////////////////