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

 
 
 
Reply to this topicStart new topic
> 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
GDI
сообщение Jun 26 2012, 12:09
Сообщение #2


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

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



Подробности будут?


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





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



Цитата(GDI @ Jun 26 2012, 15:09) *
Подробности будут?


пишу в датчик адрес регистра потом считываю че в нем читает правельно.
Но при попытке считать даные давления и температуры выдает одно и тоже
значение, которое было в первоь регистре для всех четырех



[attachment=69531:lps1.txt]

Прикрепленный файл  lps1.txt ( 2.57 килобайт ) Кол-во скачиваний: 203


Сообщение отредактировал aksmk - Jun 29 2012, 16:22
Прикрепленные файлы
Прикрепленный файл  lps1.txt ( 2.57 килобайт ) Кол-во скачиваний: 21
 
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 2 2012, 12:26
Сообщение #4


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

Группа: Свой
Сообщений: 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
Сообщение #5





Группа: Новичок
Сообщений: 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 Текстовая версия Сейчас: 23rd June 2025 - 18:24
Рейтинг@Mail.ru


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