Например TDA7294

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





Текущее время: Вт апр 16, 2024 14:50:37

Часовой пояс: 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 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 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" выражаю - БЛАГОДАРНОСТЬ!

:)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Акселерометр LIS302D
СообщениеДобавлено: Чт фев 08, 2018 23:41:46 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 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, тем самым разрешая автоинкремент адреса.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

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

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


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


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

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

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


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

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


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

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


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