Схема контроллера I2C-USB и готовое ПО к нему

generals

Собственно есть микросхема, которая измеряет ёмкость, а выдаёт значение по интерфейсу I2C. Нужно чтобы это значение можно было как-то считать на компе. В идеале нужна схема контроллера I2C-USB и готовое ПО к нему. Но можно и другие варианты.
Я нашёл вот тут одну схемку с дровами и ПО, но почему-то не работает. Всё спаяно вроде как надо, микроконтроллер запрограммирован, но комп не видит устройства, точнее не правильно видит VID и PID (0x0000 и 0x0000)
Тут конечно не форум по радиоэлектронике, но может кто сталкивался в своей научной деятельности...

Serg1912

)

Из чего взяты ножки?
2) Windows?

natunchik

Я работал. Правда, с микропроцессора и только программной частью занимался, и то не до конца =)
Но если мне не изменяет память, такие извращения должны быть не нужны, выводишь какую-нибудь DTR/RTS и землю с последовательного порта и спокойно работаешь, напряжение там нужное, кажется, а стандартные тайминги были порядка нескольких десятков микросекунд, то есть даже под вендой с realtime priority и sleep между отдельными битами должно быть вполне нормально всё.

generals

) Хз. Я о ножках пока не заморачивался. Вроде винтики от компа, у нас такие в лабе где-то водятся.
2) Да, виндоус

generals

Что есть DTR/RTS?
Там две шины SCL и SDA. Вот только куда их в компе совать? Насколько я понял предлагаешь в COM или LPT а потом программно обрабатывать то что приходит? А в USB видимо сразу нельзя, не зря же люди контроллеры делают, да ещё и продают по 250 баксов если заводские брать.
Да и программист из меня хреновый, потому и ищу готовое ПО, а схему уж как-нить спаяю)

mama-aliny

Например дисплеи от сотовых (у них тоже обычно интерфейс I2C) можно подключить напрямую к COM или LPT порту: ссылка1 , ссылка2 , ссылки взяты отсюда: ссылка3 .
Как прошивали контроллер? Нашли "высоковольтный" программатор? Может все же контроллер непрошился?

Serg1912

Если windows,
то подумай о Direct Input/Output

generals

Программировали программатором Phyton ChipProg+ в обычном режиме. Зачем тут нужен HV? А как бы проверить правильно ли он прошился. У меня есть hex файл, который я заливал на контроллер и я могу считать с контроллера программу. Они должны совпадать?
Посмотрел про LCD. Во-первых, там программа заточена под показ определённых параметров компа. У меня как раз с программированием туго. Во-вторых, желательно всё-таки через УСБ, там скорость побольше. COM и LPT вряд ли тянут 400 кГц. Кроме того, в обсуждении статьи про дисплеи тоже написано, что можно сделать всё через МК. Так что видимо всё упирается именно в программу для МК, всё остальное просто чтоб контролировать напряжение и т.д.

generals

Ой, наврал. Действительно алгоритм "High Voltage"

terl

а fuse-bits ты ему прошил? он на 12 МГц работает?
я не большой спец по usb, но наверное какие-то тайминги контроллер блюсти должен. а usb там таки софтверный...

Serg1912

Как это софтверный USB? Насколько?

generals

Счас всё заработало. Ты прав, дело было во фьюзах. Я про них и не знал даже, но потом мне на другом форуме тоже подсказали и всё стало ок.
Работает на 12 МГц.
Теперь с ПО мучаюсь, тоже не легко с нуля разбираться в чужом коде. Но думаю эту задачу мы осилим.
Всем большое спасибо :) Если кому-нить понадобится инфа по такому контроллеру, обращайтесь. Думаю скоро во всём разберёмся!

terl

Как это софтверный USB?
Т.е. контроллер подключен к usb интерфейсу ногами ввода/вывода общего назначения, а весь протокол реализован программно (например есть такая гнутая либа - AVR-USB.). А есть контроллеры, где usb интерфейс реализован аппаратно, но они дороже.

terl

Удачи )

natunchik

Рад, что всё заработало, но всё же интересно.
I2C имеет двойку в названии потому, что общение с девайсами осуществляется по двум проводам, один из которых земля. Поэтому можно провод земли воткнуть в землю последовательного порта, а сигнальный в один из двух программируемых пинов - DTR (data ready) or RTS (ready to send) его же. И, соответственно, использовать и так имеющийся в наличии ПК вместо чипа-за-двести-баксов. При этом, конечно, придётся написать программу, реализующую сам протокол. И, наверное, спаять из одного диода развязку, чтобы иметь возможность и читать значение с провода тоже =). Фишка в том, что протокол там дичайше простой, что-то вроде "мастер опускает провод на 600 микросекунд - это старт посылки, затем периодически дёргает провод вниз на 100 или 30 микросекунд для посылки очередного бита, либо дёргает провод вниз на 100 микросекунд, считывая значение через 70 микросекунд для приёма очередного бита", плюс более высокоуровневая часть с определением адресов сидящих на проводе девайсов, что-то типа "посылаем очередной бит адреса, читаем бит подтверждения, если пришёл, значит, есть как минимум один девайс с текущим начальным префиксом адреса".
То есть я к тому, что это всё пишется довольно просто. Даже наверное несложно найти программиста, который это напишет довольно дёшево, или в интернетах найти что-нибудь, а то и заюзать бесплатных студентов с кафедры!

generals

Возможно я тоже что-то не понял. Вообще там две шины: SCL - serial clock, как я понял служит для синхронизации; и SDA - serial data, собственно данные. Не уверен, что можно кого-нибудь из них приравнять к земле. И посылаются там вполне конкретные слова из несколких бит, причём длительность импульса одного бита что-то около 1 мкс. Хотя подробное описание у меня в лабе, я дома о таких вещах предпочитаю не думать... :)

natunchik

А, действительно, видимо у меня какой-то другой протокол с ним частично слился =) Хотя про ту часть, где выясняются имеющиеся в сети устройства, я правильно вспомнил.
Впрочем, так ещё легче же, не надо так точно задержки отмерять. В последовательном порте два свободных пина (то есть две пары - входной и выходной). А напряжения, я посмотрел, вроде бы точно подходят.
Оставить комментарий
Имя или ник:
Комментарий: