Evgeniy
Какие то дикие косяки в схеме, без связи с ремонтом в падосе 😁
ㅤ
ㅤ
Мне помогла замена картошки. Как раз после ремонта в подъезде. Тоже такое было
Бублик
Какая схема? - питание и данные. Все работало и все заменил
Внешнее воздействие!
ㅤ
Бублик
Точно! Была дезинфекция. Обьявление еще висит. Но как жук может выдергивать провод?
Бублик
А я их припаял
ㅤ
Бублик
Советы принял - сам откушу жукам концы. Я быи вам пооткусывал, но папа не разрешит
Артем
Парни, нужен еще совет. В общем из того что вижу на столе, всё читается из кана (получаю сообщения Task Recieve processing message ID: 533 with data:), даже с скоростью 10мс, всё летит в входной буфер но дальше есп тормозит и ниче не выдаёт на выход при такой скорости входных данных, остальные процессы даже не запускаются, если совать только те пакеты которые ЕСП должно обработать, то процессы успевают стартануть но очередь на отправку в шину растёт с каждым сообщением Number of messages in TX queue: 297
Sergey
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);
}
Sergey
Принимаю, обрабатываю и отправляю
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);
}
Ну у тебя один и тот же код с двух сторон?
Sergey
А у тебя с двух сторон непонятно что
Артем
то есть?
Sergey
Нужен один работающий кан прибор
Sergey
Покупной
Артем
он и есть
Артем
я пишу в шину через canhacker ну или в авто
Sergey
Артем
тут вопрос именно в том, что запись буксует, если просто читать всё отлично работает
Sergey
Sergey
Артем
ㅤ
Артем
Sergey
ㅤ
по логу в сериал
По какому конкретно логу. Что тут должно печататься? И да почему утебя такие низкие таймауты приема и передачи из 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
Sergey
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
Артем
Sergey
Sergey
Артем
Артем
Артем
Артем
я не понимаю
Sergey
Соединяешь кан1 и кан2 и туда же твой девайс. В проге отправляешь сообщения и контролируешь их по второму каналу
Артем
да я и так их в этом же канале могу контролировать
Артем
софт позволяет
Sergey
Sergey
Вот, 2 шины у тебя, начало и конец. И переключатели для включения терминаторов
Артем
ок
Simba
Здравствуйте кто может помочь с программированием есп32 вроом32д
Евгений
Народ, кто работает в среде KeiL ?))