Работа с драйвером TM1629a
- Войдите на сайт для отправки комментариев
Пнд, 05/11/2018 - 15:04
Приветствую ВСЕХ!!!
Нужна помощь спецов!!!
Имеются весы китайского производства (рабочие, все ок), нужно получить информацию о весе на пк, центральный контроллер HT68F40 отправляет данные на драйвер TM1629A 3мя линиями STB, CLK, DIO. Данные выводят на восьмисегментные индикаторы (5 на вес, 5 на цену, 6 на стоимость).
мне бы только массу перехватить
задача №1: заставить Ардуину уно работать с TM1629A (библиотек не нашел, даташит http://nic.vajn.icu/PDF/opto/led7segment/TM1629A-en.pdf);
задача №2: как с помощью Ардуино можно считать сигналы STB, CLK, DIO и выписать в COM-порт (если возможно - поделитесь скетчем)
Судя по даташиту это примерно такая же микросхема, как и TM1628, и TM1668. Работать с нею нужно точно также. Разница там совсем незначительная - только в количестве подключаемых светодиодов и кнопок.
Примеры работы с первой (посмотрите. мы там её долго и по-разному мучали), а вто со второй.
Смотрите код, разбирайтесь. Ваша - такая же.
Спиасибо, Огромное!!!, Ваш код помог запустить половину дисплея, вторую половину не получилось.
Подскажите - где в этом коде отрегулировать идет запись регистра на 2ю часть
Кстати , цифра 7 и светодиод под ней светятся независимо от моих настроек, даже если
После перезагрузки 7 и светодиод под ней исчезли и более не включались
Да, так все и получилось, пока Вы писали ответ, я воспользовался Вашим кодом с поста 44, именно ивсе это было сделано)))
Т.е. у Вас горит ВСЁ? Я правильно понял?
Ну, тогда у Вас нет никаких проблем.
Убирайте по одному биту и смотрите (записывайте) какой сведиод погас. Вот и составите "карту". Вы понимаете как это делать? Если нет - не стесняйтесь. спрашивайте.
Когда составите полную карту, поймёте нужны ли Вам все 16 байтов или достаточно первых N - столько и оставите.
Да, все загорелось, и карта составлена
В строках 56-63, в комментариях карта сегментов (строка, столбец), следующим этапом думаю как развернуть программу, чтобы "слушать" нужный мне код, идущий от другого процессора, в последствии передавая его в Com порт, а далее - дело техники написать ПО
Я только просмотрел, что мне достаточно двух последних байтов
Ну, и отлично. Если какие-то байты не нужны,их можно не передавать. Там же при передаче указываешь адрес и потом шлёшь, разберётесь.
Теперь по поводу считывания, я так понял, что получаю не всю информацию, не все биты прописаны получаются:
вот что сыпеться в ком:
0x0043
16:45:17.164 -> 0x0001
16:45:17.164 -> 0x0000
16:45:17.164 -> 0x0008
16:45:17.164 -> 0x0003
16:45:17.164 -> 0x00c0
16:45:17.164 -> 0x0000
16:45:17.164 -> 0x0080
16:45:17.164 -> 0x0020
16:45:17.164 -> 0x00d0
16:45:17.164 -> 0x0000
16:45:17.164 -> 0x0001
16:45:17.164 -> 0x006f
16:45:17.164 -> 0x0031
16:45:17.164 -> 0x00a1
16:45:17.164 -> 0x00b4
16:45:17.164 -> 0x00ee
16:45:17.164 -> 0x00ea
16:45:17.164 -> 0x0084
16:45:17.164 -> 0x003e
16:45:17.164 -> 0x0007
16:45:17.164 -> 0x0010
16:45:17.164 -> 0x0000
16:45:17.164 -> 0x001c
16:45:17.164 -> 0x0030
16:45:17.164 -> 0x0026
16:45:17.164 -> 0x00e0
0x0027
0x0010
16:45:17.266 -> 0x0019
16:45:17.266 -> 0x00cd
16:45:17.266 -> 0x0064
16:45:17.266 -> 0x00a6
16:45:17.266 -> 0x0024
16:45:17.266 -> 0x00c1
16:45:17.266 -> 0x0099
16:45:17.266 -> 0x00f8
16:45:17.266 -> 0x0000
16:45:17.266 -> 0x000f
16:45:17.266 -> 0x004f
16:45:17.266 -> 0x0054
16:45:17.266 -> 0x0085
16:45:17.266 -> 0x00d0
16:45:17.266 -> 0x000e
16:45:17.266 -> 0x00b0
16:45:17.266 -> 0x001c
16:45:17.266 -> 0x003f
16:45:17.266 -> 0x0001
16:45:17.266 -> 0x0011
16:45:17.266 -> 0x0001
16:45:17.266 -> 0x000c
16:45:17.266 -> 0x0012
16:45:17.266 -> 0x0024
16:45:17.266 -> 0x00f8
0x0003
16:45:17.334 -> 0x0020
Не хватает пары байтов, Куда ковырять?
Вы читаете 1 байт. А там их 4. Просто прочитайте ещё три и их тоже печатайте.
Только Вы тут никакой команды чтения не деёте - на умолчание надеетесь. Лучше явно задайте (как у меня 0x42 было), а то там есть разница - чтение с инкременом адреса и без него. Хрен егознает, что по умолчанию - будете одно и тоже 4 раза читать.
Вот, кстати, более полный даташит. а то в том, что Вы дали, вообще ничего нет.
я прошу прощения за назойливость, но с портом я никогда не работал (с этой стороны), если не сложно поподробнее расскажите как?
Да, нормальный у Вас printf - он-то чем виноват.
Вы читаете один байт (я по ссылке, что давал, читал 2),а Вам надо для начала читать все 4. Потом разберётесь, какие не нужны.
Вот я переделал свою функция на 4 байта
А вызывать её будете так:
Вот и увидите 32 бита вместо нынешних 8-ми.
нашел проблему!, может повторюсь, но ардуинка у меня не занимает место ЦП,
система такая:
мне не нужно TM1629a опрашивать,
есть в весах свой проц, который посылает комманды на 2 табло.
я подключают ардуинку также как табло к процессору (как 3е табло),
но мне нужна именно та информация что на табло, только в ПК.
Изучив ПО что Вы создали, в Вашем случае идет прос драйвера.
В конечном итоге я хочу оставить весы такими как были, только добавить порт коммуникации
Ну, тогда думайте, смотрите. Если Весы как-то опрашивают, то значит, подключившись "параллельно" можно эту информацию тырить, наверное, тут я плохой помошник.
Евгений, БЛАГОДАРЮ ВАС, с Вашей помощью половину дела сделано, буду пытать далее по поводу перехвата данных
По теории, выше - попытался подключить ардуинку в "разрез" между табло и контроллером - результат говорит - что вероятность получить данные в этом месте почти 0;
при простом коде
получил хаотичное зажигание всех сегментов
мне кажеться что частота в том процессоре HT68F40 на порядок выше, чем у ардуинки, дайте знать - если что не так.
Да всё не так. Берете осциллограф или логический анализатор и смотрите частоту. Затем думаете - зачем пропускать через МК траффик, если его можно подслушать.
Осцилографа неимею, подслушать хотел, но отработать несмог, может есть какие наработки?
про драйвер почти все известно, а про HT68F40- мало, учитывая что там внутри
Осцилографа неимею, подслушать хотел, но отработать несмог, может есть какие наработки?
Наработки есть две, называются "осциллограф" и "логический анализатор".
Вот, допустим, кулинарный форум: люди обсуждают особенности температурного режима, применения специй и пр. И тут возникает некто, кто спрашивает: а как мне приготовить борщ без кастрюли, воды и огня?
Это вопрос для форума по выживанию в экстремальных ситуациях, а не для кулинарного форума.
Так же и здесь: как Вы собираетесь настраивать устройство без осциллографа?
(может, если нет осциллографа, хрустальный шар поможет?)
задача изначально была простая - Подключить весы к пк (стянуть информацию о весе)
вот и решил что в этом месте будет удобнее, если разобраться с TM1629A (т.е. какая информация ему нужна).с этим разобрался.
Я даже не догадывался что здесь могут понадобиться какие-либо другие приборы
Видите-ли, салат можно приготовить и без кастрюли, воды и огня. Но если Вы собираетесь заниматься приготовлением пищи, а не только салатов, то и кастрюля, и вода, и огонь Вам рано или поздно понадобятся.
И если Вы не разбираетесь в приготовлении какого-то конкретного блюда, вряд ли можете заранее определить, что из кухонной утвари Вам не понадобится.
тогда вопрос на засыпку - если подключить к тензодатчику 2 потребителя-считывателя - все живы остпнуться?
Евгений, добрый день! не смотря на давность поста, решусь написать.
У меня возникла следующая ситуация. Имеется устройство с установленными сегментниками, stm и tm1629A.
Задача заключается в подслушивании общения между stm и tm1629a, для дальнейшего понимания о отображенных данных на сегментниках.
На данном этапу было сделано и получено следующее:
1) сканирую передаваемые биты:
Почему так? Потому, что в исходной функции shiftIn я отключил отправку данных в CLK и заменил на чтение, т.к. отправлять данные мне никакие ну нежно а нужно их считать и разграничить. Возможно и не правильно. Для этого и пишу.
2) По итогу я получаю данные с кучей пропусков, мои подозрения падают на скорость работы кода в ардуинки.
Вот что я получаю в сериал порт:
Вопрос- как получить полный набор данных? Были подозрения что данные теряются из-за постоянного вызова сериал порта. Пробовал их выводить буфером, но к сожалению результат тот же.
Евгений, у меня к вам вопрос. Вопрос находится выше)