Исходные данные: в роли программиста полный нуб в этом деле, в роли ide - eclipse, в роли контроллера плата с stm32f103c8t6 на борту, на котором крутится RTOS ChibiOS.
Нужно читать код с DS1990A(ключ-таблетка). однопроводный интерфейс многие реализуют через UART. Попробовал сделать и я так.
Сначала отправляем reset - для этого на скорости 9600 бод отправляем в порт 0xF0. Если пришло что-то другое, значит ответ есть. Потом посылаем команду READROM (0x33). Для этого на скорости 115200 посылаем 8 байт. 0x00 - 0, 0xFF - 1.
Это я ничего не напутал? Все так? После этого опять пишем в порт 0xFF, и если вместо 0xFF пришло 0,то и slave устройство отправляло 0.
Значит, если посылать reset, то результат есть. делаю я это так:
Результат смотрю терминалом. Если ключ подключен получаю E0. Если не подключен - F0.
А дальше не получается ничего. Нужно перезапустить драйвер с другим конфигом, на скорости 115200. А это уже требует несколько миллисекунд, что очень долго. Подозреваю, что ус-во не отвечает мне именно из-за этого, но может делаю что-то вообще не так. Есть чибиосоводы? Кто-то сможет помочь? Я готов и заплатить, если мне кто-то сделает этот кусок, но не откажусь и от помощи.
_________________ — Да не боись, всего двенадцать вольт… и восемьсот ампер.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Вы вообще, о чём ? Какой терминал ? Что читает ? Куда читает ? ... Судя по тексту из Вашего первого поста, проблем нет до этого момента :
WaL97 писал(а):
А дальше не получается ничего. Нужно перезапустить драйвер с другим конфигом, на скорости 115200. А это уже требует несколько миллисекунд, что очень долго.
Повторюсь. После ресета, устройство может ждать хоть 100 лет следующих команд. По этому, несколько миллисекунд - это не очень долго. Таймауты нужно выдерживать только в пределах тайм-слотов.
PS: Повторюсь №2. Почитайте протокол 1-Wire, чтобы такие элементарные вещи не вводили Вас в заблуждение и Вы не гадали - "может из-за этого", а "может из-за того" ... Ну и вопросы чтобы задавали адекватные, а не писали сумбур, который можно разгадать только экстрасенсам.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Вы вообще, о чём ? Какой терминал ? Что читает ? Куда читает ? ...
Сейчас подключаюсь таким образом и на компьютере в терминале смотрю, что отправляет микроконтроллер и какие изменения вносит ds1990.
Цитата:
Повторюсь. После ресета, устройство может ждать хоть 100 лет следующих команд. По этому, несколько миллисекунд - это не очень долго. Таймауты нужно выдерживать только в пределах тайм-слотов.
Спасибо, это понял. Значит проблема не в этом. иду дальше.
Делаю ресет путем отправки на юарт на скорости 9600 байта 0хF0. В терминале вижу, как таблетка реагирует. Затем я формирую массив из 72 байт первые 8 байт 0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00 - это команда 0х33 - ReadRom остальные 64 байта идут следом для чтения ответных 8 байт,которые пошлет таблетка.
P.S. Вроде проблему решил, пока писал ответ на форум. В общем, то ли большой массив бьется, то ли буфер переполняется. в итоге на uart приходила уже не та команда, которая отправлялась. Причем при массиве длиной 72 байта и при массиве длиной 64 байта бьются первые восемь. Пока проблему решил отправляя пачками по 8 байт. Так как мне сверхскорости не нужны, возможно так и оставлю
Сейчас этот форум просматривают: jurkom и гости: 31
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения