Evgeniy
Какие то дикие косяки в схеме, без связи с ремонтом в падосе 😁
ㅤ
Мне помогла замена картошки. Как раз после ремонта в подъезде. Тоже такое было
Бублик
Какая схема? - питание и данные. Все работало и все заменил Внешнее воздействие!
ㅤ
Какая схема? - питание и данные. Все работало и все заменил Внешнее воздействие!
По-любому. Наверное рабочие занесли колорадского жука
Бублик
Точно! Была дезинфекция. Обьявление еще висит. Но как жук может выдергивать провод?
Бублик
А я их припаял
ㅤ
Точно! Была дезинфекция. Обьявление еще висит. Но как жук может выдергивать провод?
Вот, а должна была быть дезинсекция. Пуская переделывают
Р368П
А я их припаял
Жук с паяльником. Бывает.
Бублик
Советы принял - сам откушу жукам концы. Я быи вам пооткусывал, но папа не разрешит
Артем
Парни, нужен еще совет. В общем из того что вижу на столе, всё читается из кана (получаю сообщения Task Recieve processing message ID: 533 with data:), даже с скоростью 10мс, всё летит в входной буфер но дальше есп тормозит и ниче не выдаёт на выход при такой скорости входных данных, остальные процессы даже не запускаются, если совать только те пакеты которые ЕСП должно обработать, то процессы успевают стартануть но очередь на отправку в шину растёт с каждым сообщением Number of messages in TX queue: 297
Sergey
Попробуй принимать, чтобы ack был на каждый твой пакет
Артем
Принимаю, обрабатываю и отправляю void twai_rx_task(void *arg) { twai_message_t twai_message; while (1) { // Receive message from TWAI if (twai_receive(&twai_message, pdMS_TO_TICKS(1)) == ESP_OK) { // Prepare the custom message format Message msg; msg.id = twai_message.identifier; // Use TWAI message ID for (int i = 0; i < 8; i++) { msg.data[i] = twai_message.data[i]; } //snprintf(msg.data, sizeof(msg.data), "Data: %s", twai_message.data); // Convert data to string UBaseType_t message_count = uxQueueMessagesWaiting(rx_queue); Serial.printf("Number of messages in rX queue: %d\n", message_count); Serial.printf("Task Recieve processing message ID: %d with data: %s\n", msg.id, msg.data); // Send received message to the processing queue switch (msg.id) { case REAR_PAM_ID: xQueueSend(rx_queue, &msg, portMAX_DELAY); break; case DIM: xQueueSend(rx_queue, &msg, portMAX_DELAY); break; default: ; } } } vTaskDelay(1); }
Артем
Ну у тебя один и тот же код с двух сторон?
нет, приходит сообщение например 114 я его обрабатываю и отправляю 113
Sergey
нет, приходит сообщение например 114 я его обрабатываю и отправляю 113
Это сложный путь. Надо чтобы с одной стороны для начала было проверенное решение
Sergey
А у тебя с двух сторон непонятно что
Артем
то есть?
Sergey
Нужен один работающий кан прибор
Sergey
Покупной
Артем
он и есть
Артем
я пишу в шину через canhacker ну или в авто
Артем
тут вопрос именно в том, что запись буксует, если просто читать всё отлично работает
Sergey
тут вопрос именно в том, что запись буксует, если просто читать всё отлично работает
В idf есть заводской пример, рабочий. Наверняка опять в ардуине все беды)
Артем
В idf есть заводской пример, рабочий. Наверняка опять в ардуине все беды)
в ардуине? Имеете ввиду ИДЕ? Сейчас собираю через platformio
Артем
Как это определяется?
по логу в сериал
ㅤ
В esp-idf в заводском исполнении
Да у него один хрен тут идф код, сути это не сильно меняет
ㅤ
по логу в сериал
По какому конкретно логу. Что тут должно печататься? И да почему утебя такие низкие таймауты приема и передачи из twai в 1 мс ?
ㅤ
И вообще функции twai - точно thread safe? Разрешено ли их вот так из разных тасок дергать без блокировок? И зачем вообще две таски на прием и передач? Почему это нельзя делать из одной не очень ясно
ㅤ
И ты же знаешь что twai_transmit фактически не отправляет сообщение
ㅤ
Просто смотри че у тебя может быть. У тебя таймаут 1ms. Возможно ты пытаешься положить в очередь еще одно сообщение пока то не отправилось. И вот внезапно он не дожидается осовбождения очереди (таймер то 1 мс) и соответственно ничего не делает
ㅤ
This function does not guarantee that the transmission is successful. The TX_SUCCESS/TX_FAILED alert can be enabled to alert the application upon the success/failure of a transmission.
Артем
я уже по разному пробовал
Артем
сообщение должно улетать почти в тот же момент когда пришло
ㅤ
Зачем вообще надо было дробить это аж на четыре таски
Артем
потому что задачи разные, у одной обработка одного сообщения у другой другого
ㅤ
потому что задачи разные, у одной обработка одного сообщения у другой другого
И что? Не вижу целесообразности городить тут многопоточность которая абсолютно не нужна
Артем
в однопоточке тоже не работало
ㅤ
Заменить пару байт в пакете да, это такая "задача" для которой аж отдельный таск нужен. Не ну хозяин барин, но это перебор. Это все в один таск успешно запихивается
ㅤ
У тебя больше оверхеда на очередях нежели на работе самих "задач"
Agent
И что? Не вижу целесообразности городить тут многопоточность которая абсолютно не нужна
Ты что! В статьях же пишут, что без нее тру-кодеры не пишут ничего))
ㅤ
в однопоточке тоже не работало
Ты сказал что у тебя что-то "тормозит", я не очень понимаю что ты в торможение вкладываешь. Маловероятно что сам чип виснет, крайне маловероятно. У тебя где-то оно думает. Расставь тогда временные метки. Пиши в юарт, что здесь стока секунд здесь стока.
ㅤ
И да, ты в void loop хоть какой нибудь delay загони. Негоже что оно по кругу крутится тратя такты Хотя я хз как там в ардуине, может у неё свой делей
Sergey
Да у него один хрен тут идф код, сути это не сильно меняет
Был бы идф код, все бы уже давно работало
Srrd
Всех приветствую. Перед подключением к шине can автомобиля решил попробовать протестить схему на «столе». Использовал схему и код с сайта: https://microkontroller.ru/esp32-projects/can-shina-v-esp32-maksimalno-podrobno-vse-aspekty/?amp=1 Но у меня модуль немного другой (показан фото). Проблема: данные отправляются, но не принимаются. Оконечные терминаторные резисторы присутствуют в самом модуле и равны 120 Ом. Чем интересно может быть связана данная проблема, что данные не принимаются?
Srrd
Srrd
ㅤ
Я не умею в идф код
Ты в идф и пишешь щас собственно
Артем
Кстати а может мне надо другой режим пользовать? Normal Mode (Обычный режим): В этом режиме контроллер TWAI может участвовать в действиях шины, таких как передача и получение сообщений/кадров ошибок. При передаче сообщения требуется подтверждение от другого узла. может оно не получает подтверждение какого то сообщения и падает?
Max
https://www.youtube.com/watch?v=4fA1bg4Iito
Max
ESP-NOW: Instant Wireless Communication for ESP32 Projects ESP-NOW makes wireless ESP32 communication simple. Broadcast sensor data or create device-to-device networks instantly, with minimal code. https://www.hackster.io/nickthegreek82/esp-now-instant-wireless-communication-for-esp32-projects-43247b
Артем
Должно получать, потому что если ты передаешь сообщения кан хакером, значит он тоже в режиме normal. Кстати а что за устройство у тебя управляется канхакером?
у меня на столе сборка 2 ардуины с MCP2515 которые создают 2 крайних точки кан шины, к ней подключен кан хакер и разрабатываемый модуль
Артем
Кан хакер у тебя чем управляет, ардуиной?
канхакер эмулирует сигналы записанные в авто
Sergey
канхакер эмулирует сигналы записанные в авто
Ну железо какое для кан хакера? Модель
Sergey
канхакер эмулирует сигналы записанные в авто
То есть у тебя сейчас 4 устройства подключены к шине? Это много, убери из цепочки 2 ардуины, они не нужны
Sergey
нужны, они делают начало и конец линии по 120Ом
Ну повесь отдельно резисторы, или хотя бы не подавай питание на них
Артем
Ну повесь отдельно резисторы, или хотя бы не подавай питание на них
ну они сейчас да, не подключены, висят как концы линии
Sergey
ну они сейчас да, не подключены, висят как концы линии
Короче, выкинь нафиг ардуины из цепочки, у тебя в кан хакере уже есть 2 кана и 2 резистора
Артем
я не понимаю
Sergey
Соединяешь кан1 и кан2 и туда же твой девайс. В проге отправляешь сообщения и контролируешь их по второму каналу
Артем
да я и так их в этом же канале могу контролировать
Артем
софт позволяет
Sergey
да я и так их в этом же канале могу контролировать
Говорю, убери лишние сущности пока не найдешь проблему
Sergey
Sergey
Вот, 2 шины у тебя, начало и конец. И переключатели для включения терминаторов
Артем
ок
Simba
Здравствуйте кто может помочь с программированием есп32 вроом32д
Евгений
Народ, кто работает в среде KeiL ?))