ㅤ
А частота есп32 какая?
Вадим
ㅤ
Вон элементарно в тактах посчитай сколько оно потоков по 125 вывезет
Артем
Артем
вот есп на выдачу заткнулся аш на 3 секунды
Артем
Вадим
125
это вообще ни о чем для ESP
ㅤ
Есп 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");
}
Zonder
Вадим
и для приема отдельный twai_message_t rxFrame
Zonder
Zonder
Артем
Переделаю, название только оставлю свое
//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
Артем
из странного дублируются сообщения
Артем
Вадим
Вадим
он хоть и заявлен как поддерживающий 3.3В но по факту наз чтобы было обозначение T/3
Вадим
а без него его надо питать 5В, а поддержка 3.3. вольта заключается в том, что он не спалит ваш ЕСП )))
Yurik
..всем привет, умные люди , в общем тема такая хочу через HAOS управлять dmx прожекторами для подсветки деревьев , но вот беда , в среде arbuino ни как не могу победить проблему с библиотеками dmx для платы esp 32 w roome буду вам очень признателен за помощь , с меня плюшки
Вадим
мой вам совет.. не мучайте ни себя ни кремний.. поменяйте на что-то более современное
ㅤ
Yurik
Не вставляется библиотека на эту плату
Вадим
ㅤ
Yurik
Говорит что ее физически нет , но я та знаю что она тама есть
ㅤ
Библиотека вставляется в плату. Это что-то новенькое, я ещё такого не слышал
ㅤ
Yurik
Дак вот на луне и то легче было
Yurik
Овне
Егор
Yurik
Извиняюсь
Артем
Yurik
5
ㅤ
ㅤ
Хоть бы делитель на линии rx/tx присрал или конвертер уровней на паре транзисторов
Артем
Yurik
У меня через max 485
ㅤ
ㅤ
теперь неудивительно что у тебя то есп виснет, то еще приколы. У тебя логика 5 вольтовая.
Yurik
Разверните тему
ㅤ
В есп32 пины (в отличии от stm32) не 5V толерант. Отсюда могут быть разные приколы
Yurik
Могу перейти и на три