Например TDA7294

Форум РадиоКот • Просмотр темы - Акселерометр LIS302D
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср июл 02, 2025 04:30:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Акселерометр LIS302D
СообщениеДобавлено: Ср фев 07, 2018 15:38:29 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: -1
Зарегистрирован: Сб мар 09, 2013 21:46:01
Сообщений: 60
Откуда: Уфа
Рейтинг сообщения: 0
Чтение и запись с авто- инкрементом для - “LIS302DL”

Для – квадратной(IIC & TWI) шины


Что-то похожие на перевод (авто)
(из серии “ – загрузить бревно запросов…”)

I 2 C, встроенный в LIS302DLH, ведет себя как подчиненное устройство и следующее
протокол должен соблюдаться. После условия запуска (ST) отправляется подчиненный адрес, ведомое подтверждение (SAK), передается 8-битный суб-адрес (SUB):
7 LSb представляют собой фактический адрес регистра, в то время как MSB включает автоматическое увеличение адреса. Если MSb поля SUB равно «1», SUB (адрес регистра) автоматически увеличивается до разрешить несколько чтения / записи данных получено.

I 2 C, встроенный в LIS302DLH, ведет себя как подчиненное устройство и следующее
протокол должен соблюдаться. После условия запуска (ST) отправляется подчиненный адрес, ведомое подтверждение (SAK), передается 8-битный суб-адрес (SUB):
7 LSb представляют собой фактический адрес регистра, в то время как MSB включает автоматическое увеличение адреса. Если MSb поля SUB равно «1», SUB (адрес регистра) автоматически увеличивается до разрешить несколько чтения / записи данных.


SAD + Модели чтения / записи

Команда SAD [6: 1] SAD [0] = SA0 R / W SAD + R / W ,
Читать 001100 0 1 00110001 (31 час)
Написать 001100 0 0 00110000 (30 часов)
Читать 001100 1 1 00110011 (33h)
Написать 001100 1 0 00110010 (32 часа)


----

Как это в коде будет выглядеть, а то каждый раз делать
Старт и стоп после каждой операции записи/чтения
Да и по времени очень долго(в тиках).

Код:
void lis302d_init(void){
     
      twi_start();
      twi_wr(lis302d_addrs_w);  // lis302d_addrs_w    0x38
      twi_wr(Ctrl_Reg1);  //0x20
      twi_wr(0b11000101);
      twi_stop();


     twi_start();
      twi_wr(lis302d_addrs_w);
      twi_wr(Ctrl_Reg2); //0x21
      twi_wr(0b01011100); 
      twi_stop();

      twi_start();
      twi_wr(lis302d_addrs_w);
      twi_wr(Ctrl_Reg3); // 0x22
      twi_wr(0b01110111);
twi_stop();

         twi_start();
      twi_wr(lis302d_addrs_w);
         twi_wr( FF_WU_THS_1);  ///порог, в регистре FF_WU_THS_1
         twi_wr(0b00100000);
        twi_stop();

 
         twi_start();
       twi_wr(lis302d_addrs_w);
        twi_wr(FF_WU_THS_2);  // прерывание  FF_WU_THS_2
        twi_wr(0b00100000);
        twi_stop();

        twi_start();
      twi_wr(lis302d_addrs_w); // 0x38 запись
twi_wr(Who_Am_I); 
 twi_start();
twi_wr(lis302d_addrs_r); // 0x39 чтение
           lis302d_id= (twi_rd(0));
twi_stop();


                twi_start();
      twi_wr(lis302d_addrs_w); // 0x38 запись
 
   …(init reg)
  twi_stop();


};



Как будет выгладить код, с запсь/чтение несколько регистров подряд?!
Стандартно как для «ds3231/ds1307» не катит!
Код:
twi_start();
      twi_wr(0xd0);
      twi_wr(0x00);
      twi_start();
      twi_wr(0xd1);

     *sec = bcd2bin(twi_rd(1));   // 1
     *minut = bcd2bin(twi_rd(1)); // 1
     *hour = bcd2bin(twi_rd(1));  // 1
     *day = bcd2bin(twi_rd(1));   // 1
     *date = bcd2bin(twi_rd(1));  // 1
     *month = bcd2bin(twi_rd(1)); // 1
     *year = bcd2bin(twi_rd(0));  //  0 no_ask

      twi_stop();

Не реагирует

Как выполнить этот «SAD + Модели чтения / записи»
???!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Акселерометр LIS302D
СообщениеДобавлено: Ср фев 07, 2018 18:11:59 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3732
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Если у Вас пин SDO подключён к земле, то для записи конфигурации начиная с регистра 0х20 с автоматическим инкрементом адреса следует подавать следующие команды:
Код:
twi_start();
      twi_wr(lis302d_addrs_w);  // lis302d_addrs_w    0x38
      twi_wr(Ctrl_Reg1+0x80);  // запись в регистр 0x20 с автоинкрементом адреса
      twi_wr(0b11000101);       // данные для регистра 0х20
      twi_wr(0b01011100);       // данные для регистра 0х21
      и т.д.
      twi_stop();

Чтение регистров Х/Y/Z ускорения с автоматическим инкрементом адреса делается так:
Код:
twi_start();
      twi_wr(lis302d_addrs_w);  // lis302d_addrs_w    0x38
     twi_wr(Х_Reg + 0х80);      // чтение из регистра Х с автоинкрементом адреса
      twi_start();
      twi_wr(lis302d_addrs_r);  // lis302d_addrs_r    0x39
       twi_rd                              // чтение данных
      и т.д.
      twi_stop();


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Акселерометр LIS302D
СообщениеДобавлено: Чт фев 08, 2018 23:27:41 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: -1
Зарегистрирован: Сб мар 09, 2013 21:46:01
Сообщений: 60
Откуда: Уфа
Рейтинг сообщения: 0
Если у Вас пин SDO подключён к земле, то для записи конфигурации начиная с регистра 0х20 с автоматическим инкрементом адреса следует подавать следующие команды:

да, пин "SDO" на массе

в итоге что получилось
Код:
      twi_start();       
      twi_wr(lis302d_addrs_w);    // lis302d_addrs_r    0x38
      twi_wr(Status_Reg + 0x80);    //
      twi_start();
      twi_wr(lis302d_addrs_r);
      reg_stat = (twi_rd(1));// Status_Reg r 27
      (twi_rd(1));           //  NU
      reg_x = (twi_rd(1));   // Out_X r 29
      (twi_rd(1));           //  NU
      reg_y = (twi_rd(1));   // Out_Y r 2B
      (twi_rd(1));           //  NU
      reg_z = (twi_rd(1));  //  Out_Z r 2D
      (twi_rd(0));           //  NU
       twi_stop(); 


странно, в - даташат-е, нечего не сказа вообще, про такую комбинацию, нужный регистр + 0x80 ...
даже в инете нечего нет , к примеру
http://easystm32.ru/sensors/49-lis302dl
фактически, это перевод.
получается, не все в документации - описали.

ВАМ "Ser60" выражаю - БЛАГОДАРНОСТЬ!

:)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Акселерометр LIS302D
СообщениеДобавлено: Чт фев 08, 2018 23:41:46 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3732
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Спасибо, но на самом деле ответ на Ваш вопрос содержится в ДШ акселерометра в параграфе

The I2C embedded inside the LIS302DLH behaves like a slave device and the following
protocol must be adhered to. After the start condition (ST) a slave address is sent, once a
slave acknowledge (SAK) has been returned, a 8-bit sub-address (SUB) is transmitted: the
7 LSb represent the actual register address while the MSB enables address auto increment.
If the MSb of the SUB field is ‘1’, the SUB (register address) is automatically increased to
allow multiple data read/write.


Добавка 0х80 к адресу регистра как раз и устанавливает его MSb в 1, тем самым разрешая автоинкремент адреса.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Акселерометр LIS302D
СообщениеДобавлено: Сб фев 10, 2018 10:08:20 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: -1
Зарегистрирован: Сб мар 09, 2013 21:46:01
Сообщений: 60
Откуда: Уфа
Рейтинг сообщения: 0
Цитата:
... но на самом деле ответ на Ваш вопрос содержится в ДШ акселерометра в параграфе
...
Добавка 0х80 к адресу регистра как раз и устанавливает его MSb в 1, тем самым разрешая автоинкремент адреса.


хроническое недосыпание, делает своё черное дело...
(понижение концентрации внимания... :facepalm: )


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y