Перейти к содержанию
    

jur

Свой
  • Постов

    205
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о jur

  • Звание
    Местный
    Местный

Контакты

  • ICQ
    Array

Посетители профиля

1 533 просмотра профиля
  1. Черт его знает, глядя на эту документацию, - все может быть. Однако, если верить тому, что значение температуры хранится в старшем байте, то endianess тут не при чем. Равно как и отбрасывание каких-то битов. Попробую, конечно, но надежда слаба... Конечно, ведь 0xFF представляет из себя -1. Причем они специально пишут, что этот байт - целое со знаком. Темный лес...
  2. 1. Да, обновляются. Я написал командный файл, в котором записана последовательность команд записи/считывания I2C. Есть команда сделать паузу. Так вот, я читаю STATUS_REG_AUX и вижу, что бит готовности данных температуры установлен. Читаю два байта температуры (без автоинкремента, просто два отдельных чтения). Затем несколько раз снова читаю STATUS_REG_AUX (с интервалом ~20 мсек) и вижу, что он сначала сброшен, а потом снова устанавливается. (Микросхема работает в Continuous mode.) 2. Сделано с помощью командного файла. (Я сочинил в своей тестовой программе простейший интерпретатор.) Все то же самое. 3. У меня есть отдельный PDF на эту микросхему. Он уже не пререлизный (Revision 9, 09-Sep-2016). Значимых отличий не увидел. Этот бит выставлен и не меняется, т.к. Continuous mode. Я вставил чтение этого регистра для проверки. Да, я попробовал. Один хрен... Да, разумеется. Но что за чертовщина с данными?! Почему так холодно, а я не мерзну?! :-) И почему значение температуры "вылезает" в младший байт?... P.S. Кстати, я читаю регистры идентификации акселерометра и магнитометра. Они полностью соответствуют документации: read_register(): device addr 0x19, addr 0x0F, data = 0x33 read_register(): device addr 0x1E, addr 0x4F, data = 0x40
  3. Приветствую! Случилось мне познакомиться с датчиком LSM303AGR. Для экспериментов мы купили платку STEVAL-MKI172V1, очень удобно. Присоединил к микроконтроллеру, соединил все это с PC и начал ковыряться. Надо сказать, документация на это дело совершенно безобразная... Что дока на микросхему, что Application Note. В конце концов я это дело запустил, акселерометр с магнетометром прочитал, читаю температуру. А вот тут начинаются странности. Вот что написано в даташите на микросхему: 4.5 Temperature sensor The LSM303AGR is supplied with an internal temperature sensor. Temperature data can be enabled by setting the TEMP_EN[1:0] bits to ‘1’ in the TEMP_CFG_REG_A (1Fh) register. To retrieve the temperature sensor data the BDU bit in CTRL_REG4_A (23h) must be set to ‘1’. Both the OUT_TEMP_L_A (0Ch), OUT_TEMP_H_A (0Dh) registers must be read. Temperature data is stored inside OUT_TEMP_H as two’s complement data in 8-bit format left-justified. Далее в таблице Table 4. Temperature sensor characteristics написано, что формат данных 1 digit/°C. Запускаю считывание тепмературы. Вручную, нажимая кнопку в моем тестовом приложении. Смотрю на считанные данные. И вот что я вижу (адрес регистра 0x8C - это OUT_TEMP_L_A но с добавленным старшим битом автоинкремента, чтобы можно было прочитать два байта подряд): I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 FF I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 FF --- Тут я прикоснулся пальцем к микросхеме I2C Read: dev_address 0x19, reg_address 0x8C, data: C0 01 I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 03 I2C Read: dev_address 0x19, reg_address 0x8C, data: C0 03 I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 04 I2C Read: dev_address 0x19, reg_address 0x8C, data: 80 04 I2C Read: dev_address 0x19, reg_address 0x8C, data: C0 04 I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 05 --- Тут я палец убрал, микросхема начала остывать I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 04 I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 03 I2C Read: dev_address 0x19, reg_address 0x8C, data: 80 02 I2C Read: dev_address 0x19, reg_address 0x8C, data: 40 02 I2C Read: dev_address 0x19, reg_address 0x8C, data: C0 01 I2C Read: dev_address 0x19, reg_address 0x8C, data: 80 01 I2C Read: dev_address 0x19, reg_address 0x8C, data: 00 01 I2C Read: dev_address 0x19, reg_address 0x8C, data: 80 00 I2C Read: dev_address 0x19, reg_address 0x8C, data: 80 00 I2C Read: dev_address 0x19, reg_address 0x8C, data: C0 FF I2C Read: dev_address 0x19, reg_address 0x8C, data: C0 FF Вот что странно. Почему-то младший байт тоже заметно и согласованно меняется. А ведь в документации английским по белому написано: "Temperature data is stored inside OUT_TEMP_H". Так как же понимать полученные результаты? И почему, елки палки, температура держится в районе 0 градусов?! Поверьте, я работаю в помещении, температура примерно 22-23 градуса, а никак не нулевая или -1! Друзья, помогите разобраться, пожалуйста! Спасибо!
  4. А мне китайские друзья ответили! :-) Молодцы, большое им спасибо! Теперь задача упрощается: нужно расшифровать китайские тексты в потенциально интересующих файлах. Надеюсь, что какой-нить Гугл-транслейт мне поможет. (Они дали ссылку на здоровенный архив, который я не без серьезного труда смог скачать. Там дофига файлов, некоторые читабельны, но это описание команд SIM800 и т.п. фигня. Короче, буду разбираться дальше.) Сейчас немного отошел от этого дела, т.к. работаю с отличным шилдом от "Амперки", но и этот модем не выбрасывать же, буду запускать. Но немного позже. Большое спасибо, друзья, за верное направление поисков в сторону aliexpress-а! Там и нашел кончик ниточки :-)
  5. Спасибо! Да, придется прозвонить. На этой ноге не должно быть какой-то обвязки (типа транзисторного ключа), думаю найду. "Эт точно!" (С) тов. Сухов :-)
  6. Смущает самый нижний (по 2-й фотке) контакт. Латинская буква "P" - это POWERKEY, или что-то другое? Я пробовал замыкать его на землю на 1-3 секунды - никакой реакции, лампочки не горят, вообще ничего. Непонятно... Это дело отдаленного будущего :-) У меня пока задача гораздо проще: отсылать и получать SMS. Когда удастся его включить - дальнейших проблем не предвижу. P.S. Это мое двухсотое сообщение! По дороге домой нужно не забыть прикупить пивка! :-)
  7. Большое спасибо! Модем идентифицирован: вот ссылка. Однако, там нема никакой документации. Написал им слезное письмо, может ответят? :-) Простите, друзья, забыл сказать. Мне бы его просто включить. Собираюсь присоединить его к Arduino Mega 2560, которая имеется. Я уже подключал два других похожих модема (один из них - превосходный шилд от "Амперки"). Все работает нормально, проблем нет. Но к этой штуковине нет вообще ничего, даже распиновки разъема. На данный момент прояснилось только то, что на крайний сверху контакт (2-я фотка) подается питание 5 - 18 V. Как-то пока не хочется тестером звонить другие сигналы, вдруг удастся найти хоть какой-нибудь куценький PDF?
  8. Приветствую! Купил тут мне снабженец для экспериментов модем сотовой связи. Вот общий вид: А это вид спереди и сзади: К сожалению у продавца ни документов, ни даже точного названия сей поделки не было. Типа: "В Интернете все можно найти!". Ага. Счаз! :-) Помогите, пожалуйста, опознать сию зверушку! Что это за GPS/GPRS модем такой, где взять хоть какую-то документацию? Просто подача питания не помогла. Сильно много ковыряться методом тыка тоже как-то не хочется, сожгу еще чего-нить. Сам модем ничего так, компактный, вполне юзабельный. Может кто-нибудь сталкивался с этим изделием? Помогите! Спасибо!
  9. Спасибо за подсказку! Мне как раз всякие дополнительные моменты понадобятся, т.к. я приступаю к разработке тестовой пары передатчик-приемник. Тут мне понадобятся всякие прибамбасы с ивентами и т.п. А паузы я поборол! :-) Спасибо за помощь! "Собака порылась" в очень простой вещи: в NetBIOS-се. Я эту штуку на карте отдельного сегмента сети вырубил, а на основной карте она осталась. И получалось, что после приема пакета от клиента Wireshark показывал еще 5-6 пакетов NBNS от основной карты, и только потом отправляемый обратно мой пакет. P.S. Еще небольшая непонятка. Основной интерфейс (192.168.1.50) каждые ~35 секунд посылает широковещательный пакет. Это выглядит так: No. Time Source Destination Protocol Length Info 111 896.507917000 192.168.1.50 255.255.255.255 UDP 82 Source port: 1025 Destination port: 1947 112 930.686786000 192.168.1.50 255.255.255.255 UDP 82 Source port: 1025 Destination port: 1947 113 965.080060000 192.168.1.50 255.255.255.255 UDP 82 Source port: 1025 Destination port: 1947 Если я что-то передаю по тестовому сегменту, то широковещательные пакеты все равно вклиниваются: No. Time Source Destination Protocol Length Info 266 1275.393877000 192.168.147.2 192.168.147.1 UDP 142 Source port: 1666 Destination port: 1666 <- От клиента 267 1275.394245000 192.168.147.1 192.168.147.2 UDP 142 Source port: 1666 Destination port: 1666 -> Эхо клиенту 268 1275.489097000 192.168.1.50 255.255.255.255 UDP 82 Source port: 1025 Destination port: 1947 269 1275.719379000 192.168.147.2 192.168.147.1 UDP 142 Source port: 1666 Destination port: 1666 270 1275.719754000 192.168.147.1 192.168.147.2 UDP 142 Source port: 1666 Destination port: 1666 Погуглил насчет порта UDP/1025 - какой-то WIN-RPC (Windows RPC) (к чему он тут?), про порт UDP/1947 - вообще что-то невразумительное ("1947/TCP HASP SRM Работа и с сетевым, и с локальным ключами HASP происходит через локальный демон или службу по TCP/1947", но я-то вижу пакет UDP). Как это понимать? Наплевать и забыть?
  10. Продолжаю продираться через препоны к назначенной цели :-) Сначала столкнулся с проблемой, что при включении моего отдельного сегмента вырубается основная сеть. В смысле, сеть есть, а связи с Интернетом нет. Потом допетрил ("Семен Семеныч!" (С)) и сделал этот отдельный сегмент другой подсетью (основная 192.168.1.1, отдельная - 192.168.147.1(2)). Все стало работать нормально: Кесарю - кесарево, слесарю - слесарево. Спасибо, друзья, за подсказку! Позадавал и там, и там IP<->MAC с помощью команды arp. Запускаю мою пару клиент-сервер. Работает, передает, но все-равно остаются паузы между посылкой данных клиентом и их приемом сервером. Почитал еще раз про winsock и узнал, что данные командой sendto() не передаются, а буферируются системой. То же относится и к recvfrom(). Это убедило меня в необходимости дальнейшего углубления в winsock. Не знаю, поможет ли команда select(), но подозреваю, что должна быть возможность задать немедленную посылку данных. Что-то вроде флага "send immediately". В общем, продолжаю погружение... P.S. Для этих двух Ethernet-карт позапрещал все, кроме TCP/IP. Думал, что можно доустановить протокол UDP/IP, но система сказала: "Давай диск". Отказался...
  11. Да читал я... В "букварях" не описываются тонкости взаимодействия интерфейсов. К тому же, я хотел бы использовать UDP протокол. Он намного "легче" TCP. И я совсем не встречал ситуации соединения двух компьютеров без всей остальной тяжеловесной инфраструктуры. Меня как раз и интересует, как по-проще это сделать. Т.е. без Интернета, без всего остального громоздкого и сложного для понимания. Просто компьютер-компьютер и все.
  12. У меня плата не "молодая", не поддерживает, пробовал. Да, источника - прописан, но ведь сетевому уровню для Ethernet-фрейма нужен и адрес приемника? Насколько я понял, именно для этого и применяются отдельные запросы. Они постоянно валят, заразы... А как вообще организовать связь двух изолированных компьютеров? Нет DHCP, нет роутера - вообще никого больше.
  13. Да, я именно об этом и подумал. В общем-то мне именно это и нужно. Просто под рукой кросс-кабеля не нашлось :-) Но я его или найду, или сделаю сам. А как насчет ARP-пакетов? Они ведь останутся? Ведь, насколько я понял, клиенту MAC-адрес вынь да положь? Спускаться на уровень Ethernet-фреймов или как-то иначе?
  14. Немножко отошел от аппаратной части и занялся программной. Для начала установил Wireshark. Затем установил в компьютер отдельную сетевую плату. Это для того, чтобы промоделировать реальную систему. Скорость на данном этапе мне не важна, поэтому удовольствовался 100 MB. Подключил мой компьютер к другому компьютеру через коммутатор. Оба имеют свои IP, видят друг друга, все OK. Потом написал простой UDP Echo Server, а к нему соответствующий клиент. Пример взял отсюда: Самоучитель игры на WINSOCK. Запустил. Все красиво, все работает. Решил посмотреть, что там внутри творится. А там - полный кавардак! Постоянно валят какие-то TCP передачи, ARP пакеты и много всякого другого. Начал размышлять. Понятно, Винда желает быть ко всякой бочке затычкой, все ей неймется, всюду лезет. В общем, нормальная сетевая жизнь. Тогда я подумал: отсоединю-ка я проверочный сегмент от основной сети. Прописал фиксированные IP (как и будет в законченной системе), но не понял, что делать с Default Gateway. Оставил это поле пустым. Для начала посмотрел Wireshark'ом. Вроде все тихо. Запускаю сервер, запускаю клиент - нет передачи! Точнее есть, но с паузой в 7 секунд (видать некий таймаут). Получился какой-то затык... Wireshark показывает какие-то левые запросы (типа: Who is 192.168.1.51 (а это сервер, видать клиент не знает его MAC-адреса) и еще что-то). Посему вопросы: 1. Как же все-таки правильно сконфигурировать сегмент сети, чтобы он нормально работал? 2. Как сделать так, чтобы каналу передачи было ясно, куда и что посылать? Наверное нужно как-то указать физический MAC-адрес, чтобы почтальон не сомневался? 3. Может быть оставить все как есть? Но ведь тогда сеть будет отвлекаться на что-то лишнее, что "отгрызет" у меня немножко дорогого траффика... Разъясните, пожалуйста, начинающему, как мне правильно поступить? Спасибо! P.S. Гугл обычно рассматривает стандартную Сеть. TCP послал туда, IP по дороге разобрался/собрался, компьютер назначения получил вожделенную информацию. А вот чтобы детально рассмотреть вопрос - этого не видать...
  15. Исходя из скорости потока и расстояния передачи на PC с Виндой, я подумал, что Ethernet - это единственно возможный вариант. Я просто не знаю, какие еще неэкзотические решения тут применимы...
×
×
  • Создать...