ㅤ
А частота есп32 какая?
ㅤ
Вон элементарно в тактах посчитай сколько оно потоков по 125 вывезет
Артем
Артем
вот есп на выдачу заткнулся аш на 3 секунды
Вадим
125
это вообще ни о чем для ESP
Вадим
вот есп на выдачу заткнулся аш на 3 секунды
а почему вы думаете, что это ЕСП заткнулся потому что неуспевает
ㅤ
Есп 3 секунды затыкается из-за 125 килобит?
Артем
а почему вы думаете, что это ЕСП заткнулся потому что неуспевает
потому что от ЕСП пакеты не приходят, а в шине всё ок, вторая ардуина видит весь трафик
Вадим
вам снять видео, где я своим ЕСП читаю ВСЮ машину сразу.. все е ДВЕ CAN шины 83К8 + 500К ?
ㅤ
Эм... ну хотя в этом чате пробегал помню один кадр. Говорил что ему есп8266 мало для обработки 5 кнопок, двух датчиков и экрана. Ему подавай 2 ядра а то и больше
ㅤ
Он целое ядро тока под опрос кнопок собирался выделять
ㅤ
Интересно через сколько лет в каждой лампочке будет стоять 14 ядерный мк который будет еле еле справляться со своим функционалом?
Артем
Вот например странность, пысылаю одни и те же пакеты один за одним, на выходе в какой то момент перестаёт идти обработка одного пакета, потом второго потом перерыв 3 секунды и опять
Артем
в шину летит повторяющаяся последовательность
Артем
Вот вызов хендлеров обработки if (twai_receive(&readM, pdMS_TO_TICKS(100)) == ESP_OK) { switch (readM.identifier) { case REAR_PAM_ID: handle_PamXC70(); break; case DIM: handle_SPEEDIHUXC70(); break; default: ; } } Вот отправка, 1 в 1 ваш пример void CAN_Send(int Pid, byte Len, byte * buf) { twai_message_t txFrame; txFrame.identifier = Pid; txFrame.rtr = 0; txFrame.data_length_code = Len; for (int i=0; i<Len; i++) { txFrame.data[i] = buf[i]; } txFrame.extd = false; esp_err_t result = twai_transmit(&txFrame, pdMS_TO_TICKS(1000)); } Вызов внутри функции такой CAN_Send(IHU,8,IHUSpeed.data);
Артем
переменные объявил полностью //IHU Theme IHUSpeed.identifier = IHU; IHUSpeed.data_length_code = 8; IHUSpeed.data[0] = 0x00; IHUSpeed.data[1] = 0x00; IHUSpeed.data[2] = 0x00; IHUSpeed.data[3] = 0x00; IHUSpeed.data[4] = 0xC3; IHUSpeed.data[5] = 0x00; IHUSpeed.data[6] = 0x00; IHUSpeed.data[7] = 0x00; IHUSpeed.rtr = 0; IHUSpeed.extd = false;
Вадим
ну вот уже лучше.. уже мы уверенно вычеркиваем одну из возможных причин проблемы.. здесь у вас все по букварю.
Вадим
и я третий день настаиваю, что у вас что-то не так с тем, ЧТО и КОМУ вы посылаете.
Артем
я даже выкинул сейчас весь лишний код из ПО, оставил только 2 свои функции (веб интерфейс не убирал, что бы тоже давал нагрузку на ядро, но если надо могу убрать)
Артем
всё точно как и должно быть. Могу для теста сейчас заменить пакеты отправляемые на какие то статичные
Артем
CAN_Send(IHU,8,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00});
Артем
типа такого
Вадим
нет, вы отправляйте заведомо несуществующий ID и его же читайте.. и отправку поставьте с интервалом в 50мс.. и выберите пид с несильно больший номером..
Артем
50мс долго, пакеты могут прилететь быстрее
Артем
в трафике есть пакеты 10мс
Вадим
а инит TWAI какой? не только слушать?
Артем
ща найду
Вадим
Артем
ESP32Can.begin(ESP32Can.convertSpeed(CAN_SPEED), CAN_TX, CAN_RX, 10, 10) инициацию пока не менял, такая
Артем
в либе описана так bool begin(TwaiSpeed twaiSpeed = TWAI_SPEED_SIZE, int8_t txPin = -1, int8_t rxPin = -1, uint16_t txQueue = 0xFFFF, uint16_t rxQueue = 0xFFFF, twai_filter_config_t* fConfig = nullptr, twai_general_config_t* gConfig = nullptr, twai_timing_config_t* tConfig = nullptr); // Pass frame either by reference or pointer; timeout in ms, you can pass 0 for non blocking inline bool IRAM_ATTR readFrame(CanFrame& frame, uint32_t timeout = 1000) { return readFrame(&frame, timeout); } inline bool IRAM_ATTR readFrame(CanFrame* frame, uint32_t timeout = 1000) { bool ret = false; if((frame) && twai_receive(frame, pdMS_TO_TICKS(timeout)) == ESP_OK) { LOG_TWAI_RX("Frame received %03X", frame->identifier); ret = true; } return ret; }
Вадим
я вам все на блюдечке готовое выдал. но вы упорно гнете свой код.. а зачем тогда спрашиваете? время у людей отнимаете7
Артем
я вам все на блюдечке готовое выдал. но вы упорно гнете свой код.. а зачем тогда спрашиваете? время у людей отнимаете7
Добавил в отправку задержку void CAN_Send(int Pid, byte Len, byte * buf) { twai_message_t txFrame; txFrame.identifier = Pid; txFrame.rtr = 0; txFrame.data_length_code = Len; for (int i=0; i<Len; i++) { txFrame.data[i] = buf[i]; } txFrame.extd = false; delay(50); esp_err_t result = twai_transmit(&txFrame, pdMS_TO_TICKS(1000)); } ВОт инициация twai_general_config_t g_config = TWAI_GENERAL_CONFIG_DEFAULT(GPIO_NUM_27, GPIO_NUM_25, TWAI_MODE_NORMAL); twai_timing_config_t t_config = TWAI_TIMING_CONFIG_125KBITS(); twai_filter_config_t f_config = TWAI_FILTER_CONFIG_ACCEPT_ALL(); if (twai_driver_install(&g_config, &t_config, &f_config) == ESP_OK) { Serial.println("CAN driver installed"); if (twai_start() == ESP_OK) { Serial.println("CAN driver started"); } } else { log_e("CAN driver NOT installed"); }
Вадим
и для приема отдельный twai_message_t rxFrame
Артем
Переделаю, название только оставлю свое //CanFrame readM; twai_message_t readM
Вадим
а напомните у вас esp32-S3 ?
Артем
а напомните у вас esp32-S3 ?
WROOM32 Chip is ESP32-D0WD-V3 (revision v3.1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz
Вадим
а какой трансивер вы используете?
Артем
https://www.chipdip.ru/product0/8010517844
Артем
из странного дублируются сообщения
Артем
Вадим
https://www.chipdip.ru/product0/8010517844
это потенциальнвя точка проблемы.
Вадим
он хоть и заявлен как поддерживающий 3.3В но по факту наз чтобы было обозначение T/3
Вадим
а без него его надо питать 5В, а поддержка 3.3. вольта заключается в том, что он не спалит ваш ЕСП )))
ㅤ
а без него его надо питать 5В, а поддержка 3.3. вольта заключается в том, что он не спалит ваш ЕСП )))
Да 5 вольт, как показала практика, входы есп не палит. Но плата может работать не корректно в том числе и подвисать, да
Yurik
..всем привет, умные люди , в общем тема такая хочу через HAOS управлять dmx прожекторами для подсветки деревьев , но вот беда , в среде arbuino ни как не могу победить проблему с библиотеками dmx для платы esp 32 w roome буду вам очень признателен за помощь , с меня плюшки
Вадим
мой вам совет.. не мучайте ни себя ни кремний.. поменяйте на что-то более современное
Yurik
Не вставляется библиотека на эту плату
Вадим
https://www.chipdip.ru/product0/8010517844
я пользую исключительно SN65HVD230DR
Yurik
Говорит что ее физически нет , но я та знаю что она тама есть
ㅤ
Библиотека вставляется в плату. Это что-то новенькое, я ещё такого не слышал
Артем
я пользую исключительно SN65HVD230DR
ну тут я сейчас ничего уже не могу поделать, плата разработана и в пром эксплуатации
Yurik
Дак вот на луне и то легче было
Yurik
Овне
Yurik
Извиняюсь
Вадим
ну тут я сейчас ничего уже не могу поделать, плата разработана и в пром эксплуатации
тогда вам будет боль.. соболезную. работать будет но с лагами вы уже знакомы. сколько вольт питаете?
Артем
Yurik
5
ㅤ
Ужас какой.
ㅤ
Хоть бы делитель на линии rx/tx присрал или конвертер уровней на паре транзисторов
Артем
Хоть бы делитель на линии rx/tx присрал или конвертер уровней на паре транзисторов
я в этом ничего не понимаю. Человек который делал тоже ничего не сказал
Yurik
У меня через max 485
ㅤ
теперь неудивительно что у тебя то есп виснет, то еще приколы. У тебя логика 5 вольтовая.
Yurik
Разверните тему
ㅤ
В есп32 пины (в отличии от stm32) не 5V толерант. Отсюда могут быть разные приколы
Yurik
Могу перейти и на три