LSM303DLHC и MSP430
Добавлено: Ср апр 10, 2013 00:02:50
Здравствуйте уважаемые схемотехники, программисты и конструктора!
Работы с микроконтроллером MSP430 и магнитометром LSM303DLHC.
Этот магнитометр использует шину I2C для передачи данных. На микроконтроллере я реализовал программный I2C.
Приведу кусок кода. Не удивляйтесь (и не ругайтесь) наличием классов, среда разработки позволяет использовать С++'ные классы и так мне удобнее....
//Определим пины, которые будут играть свои роли - SCL и SDA, порта 11 бит 1 и бит 2.
i2c.Set_SDA(&P11OUT, &P11IN, &P11REN, &P11DIR, BIT2);
i2c.Set_SCL(&P11OUT, &P11IN, &P11REN, &P11DIR, BIT1);
//Настроем магнитометр
i2c.WriteData(0x00, 0x14);
i2c.WriteData(0x02, 0x00);
while(1)
{
//Считываем значения
Temp = i2c.ReadData(0x03);
Temp = i2c.ReadData(0x04);
}
Проблема заключается в том, что при считывании по этому адресу , TEMP = 0x00.
Хотя я перепроверял:
Temp = i2c.ReadData(0x00);
Temp после этого равен 0х14... значит I2C работает правильно и мы можем записывать и считывать. Получается, что проблема в инициализации...
Возможно я не прав. Помогите пожалуйста товарищи!)
Заранее спасибо!
Работы с микроконтроллером MSP430 и магнитометром LSM303DLHC.
Этот магнитометр использует шину I2C для передачи данных. На микроконтроллере я реализовал программный I2C.
Приведу кусок кода. Не удивляйтесь (и не ругайтесь) наличием классов, среда разработки позволяет использовать С++'ные классы и так мне удобнее....
//Определим пины, которые будут играть свои роли - SCL и SDA, порта 11 бит 1 и бит 2.
i2c.Set_SDA(&P11OUT, &P11IN, &P11REN, &P11DIR, BIT2);
i2c.Set_SCL(&P11OUT, &P11IN, &P11REN, &P11DIR, BIT1);
//Настроем магнитометр
i2c.WriteData(0x00, 0x14);
i2c.WriteData(0x02, 0x00);
while(1)
{
//Считываем значения
Temp = i2c.ReadData(0x03);
Temp = i2c.ReadData(0x04);
}
Проблема заключается в том, что при считывании по этому адресу , TEMP = 0x00.
Хотя я перепроверял:
Temp = i2c.ReadData(0x00);
Temp после этого равен 0х14... значит I2C работает правильно и мы можем записывать и считывать. Получается, что проблема в инициализации...
Возможно я не прав. Помогите пожалуйста товарищи!)
Заранее спасибо!