реклама на сайте
подробности

 
 
> AVR+LPS001
aksmk
сообщение Jun 26 2012, 06:11
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 4-04-09
Пользователь №: 47 163



Кто нить работал с датчиком давления LPS001?
У меня не происходит инкремент адресов регистров при чтении.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GDI
сообщение Jul 2 2012, 12:26
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Тут клещи нужны. Вы задайте правильно вопрос, может и сами в процессе ответ найдете. Опишите проблему целиком, почему нужно догадываться что Вы там делали? Я вот не вижу что Вы ждете Аск после i2c_start(SAD_W);, а судя по даташиту его нужно ждать. А после "Low_P = " надо наоборот, не ждать Аск от слейва, а мастером Аск давать. Но я не силен в АВРГЦЦ, тожет i2c_start уже ждет Аск сама, а i2c_readAck отправляет Аск слейву.
Не пробовали по одному байту данные читать?



--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
aksmk
сообщение Jul 7 2012, 12:20
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 4-04-09
Пользователь №: 47 163



Цитата(GDI @ Jul 2 2012, 15:26) *
Тут клещи нужны. Вы задайте правильно вопрос, может и сами в процессе ответ найдете. Опишите проблему целиком, почему нужно догадываться что Вы там делали? Я вот не вижу что Вы ждете Аск после i2c_start(SAD_W);, а судя по даташиту его нужно ждать. А после "Low_P = " надо наоборот, не ждать Аск от слейва, а мастером Аск давать. Но я не силен в АВРГЦЦ, тожет i2c_start уже ждет Аск сама, а i2c_readAck отправляет Аск слейву.
Не пробовали по одному байту данные читать?


проблема оказлась в том, что при передаче адреса читаемого регистра нужно установить старшый битик в 1, чтобы прцес пошел с атоинкрементом адресов

#define I2C_AUTO_INCREMENT 0x80

i2c_start(SAD_W);
i2c_write(I2C_AUTO_INCREMENT|PRESS_OUT_L);
i2c_start(SAD_R);
Low_P = i2c_readAck();
Hi_P = i2c_readAck();
Low_T = i2c_readAck();
Hi_T = i2c_readNak();
i2c_stop();
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 03:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01662 секунд с 7
ELECTRONIX ©2004-2016