[제품종류] IEC1000
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============ADS1115 칩 사용하고있구요..
기본예제 참고해서 이런식으로 작업하고 있습니다..
아직 실력이 부족해서 인지 도저히 감이 안옵니다.
결과값이 전압에 따라 움직입니다. 근데 16bit 인데 코드상 상위8bit만 받아서 표시되는것 같습니다.
데이터 시트도 첨부합니다 도와주세요..
// 24C16 EEPROM의 지정된 주소의 데이터를 읽어온다.
private void butMemRead_Click(object sender, EventArgs e)
{
byte iSlaveAddress;
byte iMemAddress;
byte iData;
// Device의 Slave Address를 읽어 온다
iSlaveAddress = Convert.ToByte(txtSlaveAddress.Text);
iMemAddress = Convert.ToByte(txtMemAddress.Text);
// ATMEA사의 24C16의 Data Sheet를 참조 하세요.
//smartIIC1.Start_Signal();
smartIIC1.Start_Signal();
smartIIC1.Write_Byte(0x90);// address = 0x90 | 0 -> write
smartIIC1.Write_Byte(0x01); // 0x01 -> config register
smartIIC1.Write_Byte(0xC1);// 1 -> os, 100 -> an0-gnd, 000 -> +-6.144 range, 0/1 -> continuous/single conversion
smartIIC1.Write_Byte(0x83);// default
smartIIC1.Stop_Signal();
smartIIC1.Start_Signal();
smartIIC1.Write_Byte(0x90);// address = 0x90 | 0 -> write
smartIIC1.Write_Byte(0x00);// 0x00/0x01 -> conversion/config register
smartIIC1.Stop_Signal();
smartIIC1.Start_Signal();
smartIIC1.Write_Byte(0x91);
iData = smartIIC1.Read_Byte(SmartX.SmartIIC.ACKSIG.NOACK);
smartIIC1.Stop_Signal();
iData = smartIIC1.Read_Byte(SmartX.SmartIIC.ACKSIG.ACK);
smartIIC1.Stop_Signal();
txtMemData.Text = iData.ToString();
}
=============== 답 변 ===============
안녕하세요...
문의하신 내용과 관련하여 아래의 수정된 코드를 적용하여 테스트 부탁드립니다.
또한 아래의 내용은 설정과 관련된 내용은 확인하지 않았으므로 만약 문제가 해결되지 안는 경우 Chip 초기화 부분도 점검하 셔야 할 듯합니다.
- 감사합니다.
byte iSlaveAddress;
byte iMemAddress;
byte iDataHigh;
byte iDataLow;
int iData;
// Device의 Slave Address를 읽어 온다
iSlaveAddress = Convert.ToByte(txtSlaveAddress.Text);
iMemAddress = Convert.ToByte(txtMemAddress.Text);
// ATMEA사의 24C16의 Data Sheet를 참조 하세요.
//smartIIC1.Start_Signal();
smartIIC1.Start_Signal();
smartIIC1.Write_Byte(0x90);// address = 0x90 | 0 -> write
smartIIC1.Write_Byte(0x01); // 0x01 -> config register
smartIIC1.Write_Byte(0xC1);// 1 -> os, 100 -> an0-gnd, 000 -> +-6.144 range, 0/1 -> continuous/single conversion
smartIIC1.Write_Byte(0x83);// default
smartIIC1.Stop_Signal();
smartIIC1.Start_Signal();
smartIIC1.Write_Byte(0x90);// address = 0x90 | 0 -> write
smartIIC1.Write_Byte(0x00);// 0x00/0x01 -> conversion/config register
smartIIC1.Stop_Signal();
smartIIC1.Start_Signal();
smartIIC1.Write_Byte(0x91);
iDataLow = smartIIC1.Read_Byte(SmartX.SmartIIC.ACKSIG.ACK);
iDataHigh = smartIIC1.Read_Byte(SmartX.SmartIIC.ACKSIG.NOACK);
smartIIC1.Stop_Signal();
iData = (iDataHigh << 8) | iDataLow;
txtMemData.Text = iData.ToString();