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

esaulenka

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные esaulenka


  1. On 4/11/2020 at 11:37 AM, esaulenka said:

    UART всегда и везде отправляет первым старший бит.

    Я вот тут фигню сказал, а меня никто не поправил. Правильно - в UART первым уходит младший бит. Предлагаю анализатор настроить так же.

    Подсчёт CRC, правда, будет по-другому. Как соберёте данные, попробую подобрать алгоритм.

     

    1 hour ago, MiD said:

    В атаче дамп, сюдя по всему без помех.

    Да, стало гораздо лучше.

    Channel3 - DE. Когда там единичка, пульт занимает линию, когда ноль - слушает.

    Channel5 - приемник, данные с нижней платы

    Channel7 - передатчик, данные с пульта.

     

    Идея с передачей данных с третьего устройства, скорее всего, потерпит неудачу - пульт отпускает DE очень редко, вероятность коллизий очень высокая.

    Можно попробовать пульт вовсе оторвать и "проиграть" в шину последовательность байт с 7-го канала (по возможности, выдерживая паузы).

  2. 22 minutes ago, MiD said:

    Честно говоря я слабо представлю что смогу куда-то тут подпояться до MAX

    Вообще-то тут полная халява - интерфейс на отдельной плате с огромными контактными площадками. Надо только разобраться, как они подключены. По картинке плохо понятно, нужен мультиметр.

    Ну или к MAX'у, к 1,3 и 4 ногам. Они достаточно большие и рядом есть пятачки (для ремонтников, видимо).

     

    PS Horizon Adventure 4 Plus стоит сотню килорублей. Жесть какая...

  3. Здравствуйте.

    подскажите, как ОТКЛЮЧИТЬ реакцию на VBus, который на этих контроллерах заведён на PA9 ?

    Remap для него не предусмотрен, переключение альт.функция/вход/выход на никак не влияет (это и по документации так).

    Программно делать коннект-дисконнект можно, но как только на PA9 появляется ноль, коннект сам собой рвётся.

  4. 40 minutes ago, MiD said:

    Я понял, сделаю разный набор больших дата сетов. и Результаты прогоню через макрос в Экселе.

    Подключитесь только нормально, на блоке кнопок между контроллером и драйвером. И помех не будет, и гадать, кто что передаёт, не надо.

    43 minutes ago, MiD said:

    купить переходник для RS485

    Да, однозначно. Программно, в принципе, сделать можно, но а) нетривиально б) защит никаких нет.

     

    46 minutes ago, MiD said:

    отправляет Арудино - "Least Significant Bit Sent"

    Вы что-то путаете. UART всегда и везде отправляет первым старший бит. Я не очень хорошо знаком с ардуино-библиотеками, но вряд-ли кто-то реализовывал переворот порядка бит "младшим вперёд".

  5.  
    1 hour ago, MiD said:

    А я могу отправлять пакеты подключившись парралельно

    Да, можно. Другой вопрос, что если два передатчика одновременно включатся, данные на шине побьются. Но это довольно штатная ситуация, сгореть ничего не должно

    Как на коленке решить эту проблему, не знаю - нужно писать софтинку, отслеживать "тишину".

    Да и вообще, как в данном конкретном случае организован доступ к шине, я не разобрался. Тайминги в снятом логе почему-то постоянно плавают...

     

     

    44 minutes ago, k155la3 said:

    ТУТ  выбирайте любой. Я пользую первый в списке.

    Bray terminal, хоть и достаточно удобен в плане интерфейса, с ком-портом работает через ж., т.е. побайтово. Грузит процессор и теряет символы при приёме на больших объемах, вставляет произвольные паузы при отправке. Я com port toolkit использовал, когда надо было пачку байт без пауз отправить.

     

    Ну или действительно сразу на каком-нибудь питоне ваять. 

     

    50 minutes ago, k155la3 said:

    утилиту + PC с двумя портами

    Сомневаюсь, что эта конструкция уменьшит количество коллизий.

  6. 12 minutes ago, MiD said:

    Вот мои выгрузки в Excel

    Ну так вы уже половину сделали.

    Мне кажется, уже пора скрестить пальцы и попробовать самому кидать эти пакеты в шину. Синхронизацию с "тишиной" в шине на коленке не сделаешь, высока вероятность коллизий, но для первого опыта пойдёт.

    Последний байт неинтересен, это контрольная сумма (алгоритм - в гугле, по слову 1-wire).

    Возможно, нажатая кнопка кодируется половинкой предпоследнего байта, вторая половинка значит что-то другое.

    4 minutes ago, MiD said:

    если я разрываю провода данных между верхним и нижнем блоком - дорожка сразу отключается

    Кстати, может быть полезным посмотреть обмен в этот момент.

  7. Имхо, исходя из рассматривания единственного лога.

    На шине общаются несколько устройств:

    - постоянно бегает пакет

    0x80 0x30 0x6F 0x00 0x45

     

    - также постоянно бегает пакет

    0x80 0x30 0x8F 0x00 0x30

     

    - и некое третье устройство (пульт?) изредка отправляет пакеты вида

    0x80 0x30 0x9F 0x40 0x00 0x15 0x86
    0x80 0x30 0x9F 0x40 0x00 0x15 0x86
    0x80 0x30 0x9F 0x40 0x00 0x35 0xA5
    0x80 0x30 0x9F 0x40 0x00 0xF5 0x6F
    0x80 0x30 0x9F 0x40 0x00 0xD5 0x4C
    0x80 0x30 0x9F 0x40 0x00 0x55 0xC0
    0x80 0x30 0x9F 0x40 0x00 0x25 0x38
    0x80 0x30 0x9F 0x40 0x00 0xA5 0xB4
    0x80 0x30 0x9F 0x40 0x00 0x65 0x7E

     

    Ждём выяснений, соответствует ли это нажатию одной кнопки, или это "нажал всё что было". 

  8. @MiD, у вас есть возможность подпаяться к драйверу и переснять логи?

    Анализатор уарта у салеае туповат (настоящий уарт такие помехи игнорирует). Рассматривать лог с кучей "левых" 0xFF не очень удобно.

  9. 1 hour ago, Captain777 said:

     На почти на всех современных авто это разные земли. Все датчики на двигателе сидят на своей общей земле. В разъеме OBDII 4й пин это кузов, 5й пин это земля датчиков.

    Вы не могли бы привести какую-то ссылку на первоисточник?

    Хотя бы схему подключения блоков. Ну или крупную фотку какого-нибудь ЭБУ, утыканного оптопарами.

     

     

    1 hour ago, ViKo said:

    листаю докУмент

    Мне кажется, докУмент врёт, и в реальной железке защит больше. Но для понимания, как оно себя ведёт, пока помех нет, сойдёт.

  10. 20 minutes ago, Alex B._ said:

    точно есть у GM в серии стандартов GMW

    Не подскажите закрома, где всё это можно найти?

    Я даже доку на банальный GMLan найти не смог (правда, не очень пытался - представление о параметрах можно получить из даташитов на трансиверы).

    7 minutes ago, ViKo said:

    И садится на общую землю (массу авто)?

    Да. Но для исключения земляных петель питание и земля датчика подключаются через ЭБУ.

  11. 1 hour ago, MiD said:

    тут хотел бы воспользоваться помощью тех кто разбирается.

    Создайте тему, например, здесь: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=forums&id=194

    И прилепите туда несколько capture анализатора. Что-нибудь типа "включил", "три раза нажал кнопку быстрее" и т.д.

  12. 
    class EcgReader:
    
        def __init__(self, settings_name: str, data_name: str):
            with open(settings_name, 'rb') as f:
                d = f.read()
                params = d[50:53]
                self.channels = params[0]
                self.accel_present = (params[1] != 0)
                self.block_size = params[2]
            self.data_file = open(data_name, 'rb')
            self.idx = 0
    
        def read(self):
            res = []
            for _ in range(self.channels):
                d = self.data_file.read(3)
                if len(d) != 3:
                    return None      # eof
    
                # данные согласно файлу "описалово"
                # num = (d[0] * 0x10000) + (d[1] * 0x100) + d[2]
    
                # данные согласно примеру
                num = (d[2] * 0x10000) + (d[1] * 0x100) + d[0]
    
                if num >= 0x800000:
                    num -= 0x1000000
    
                res.append(num)
    
            # skip accelerometer data
            self.idx += 1
            if self.idx == self.block_size:
                if self.accel_present:
                    self.data_file.read(4)
                self.idx = 0
    
            return res
    
    
    # some tests
    if __name__ == '__main__':
        reader = EcgReader('000_ecg.crd', '000_ecg.bin')
        print('settings:', reader.channels, reader.accel_present, reader.block_size)
    
        for _ in range(10):
        # while True:
            d = reader.read()
            if d is None: break
            print(d)
    

     

    Деньги перечислите, пожалуйста, куда-нибудь в благотворительный фонд.

  13. On 4/5/2020 at 4:52 AM, Fox_Sanchez said:

    Походу винда не знает что с ним вообще делать.

    Да, UART поверх BLE - это чисто нордиковское нестандартное изобретение.

    Почитайте их инфоцентр, там, насколько я помню, есть пример терминала для андроида. Под винду придётся самому что-то писать...

  14. @one_eight_seven, а вы для контроллеров на каком языке пишете?

    Я по большей части - на плюсах, и как-то так получается, что без синглтонов никуда.

     

    Можно использовать подход "как у больших" с динамическим созданием всего-всего и динамическими же связями, но для мелкоконтроллеров это перебор, на мой взгляд.

  15. 1 hour ago, one_eight_seven said:

    Отладка - вещь крайне редко полезная.

    Разговор про отладку начал я в соседней теме, когда автор сломал что-то в кишках flatbuffer'а. Что именно сломал, коллективный разум не понял (впрочем, никто из присутствующих не знаком близко с flatbuffer). Вот там без гуляний по шагам с пристальным просмотром всех переменных некомфортно.

     

    6 minutes ago, one_eight_seven said:

    Указатель на нестатический метод не передать.

    В комплекте из двух указателей - на экземпляр класса и на сам метод - можно и передать, и использовать.

    Тут даже где-то была тема про делегаты в с++, где мы это обсуждали.

     

    Но один указатель на "голую" функцию проще этой магии на порядок.

  16. Я с чем-то подобным сталкивался на STM32F105.

    Почему-то при использовании sleep'а консолька стала вести себя неадекватно. К сожалению, так и не дошли руки разобраться - в отладочной версии просто не использую __WFI().

     

    FAQ от сеггера также не рекомендует использовать энергосбережение.

  17. 7 hours ago, nanorobot said:

    Пользуясь  статьей

    Слегка не в тему. Вы под линуксом работаете, или под виндой?

    Не могу сказать, что я ОЧЕНЬ пытался, но собрать openocd под винду у меня не получилось...

     

    5 hours ago, nanorobot said:

    при оптимизации > 0 все поля равны 0

    init не вызывается?.. По идее, при первом же RTT_printf должен вызваться.

  18. 59 minutes ago, Darth Vader said:

    определитесь окончательно

    Ну вроде б очевидно, что вместе с чтением постов надо смотреть в хрустальный шар и гуглить по ключевым словам.

    Код из первого сообщения похож на официальный пример: https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiClientEvents/WiFiClientEvents.ino
    Можно предположить, что он работает.

    Какой магией при подключении wifi.h подтягивается соотв. кусок BSP - я не знаю. Изучение ESP в планах есть, но всё никак руки не дойдут...

  19. 16 minutes ago, k155la3 said:

    Мне подсказали, что c_str() это из std::string::c_str.  Там перегрузка есть.

    В данном случае c_str() это из гугловского flatbuffer::String::c_str.

     

    И любая перегрузка operator= - это для синтаксиса наподобие

    ла_ла_ла.c_str() = "ла-ла-ла", которого нет ни в стандартной библиотеке, ни (насколько мне известно) в велосипедах "по образу и подобию".

     

     

    Ну а автору я б посоветовал читать книжки (уже пора) и изучить слово GDB.

  20. Вы первоисточник читали? http://www.keil.com/dd/docs/datashts/infineon/c167cr_um.pdf раздел bootstrap loader.

    Или только чиптюнеров всяких?

     

    Я вот только сходу не понял: общение по uart надо начинать сразу же после отпускания ресета, или не раньше, чем сколько-то там микросекунд после отпускания.

     

     

    Но не проще будет найти где-нибудь программатор для параллельных ROM и паяльник?

×
×
  • Создать...