XD
вот то что у меня сейчас
если 83 строку заменить на malloc(_countLeds * 3) то первый пиксель всегда белый даже если вызвать сетпиксель и задать ему другой цвет
XD
что у меня вообще никак не укладывается в голове с учетом того что с вариантом с calloc все работает отлично
ㅤ
нету ,да
Ну а вопрос в чем тогда?
ㅤ
Вон колодка по центру платы из 4 пинов. Скорее всего это 3.3/gnd/tx/rx
ㅤ
Либо припаяйся сам к чипу и шей его
scliva
Ну а вопрос в чем тогда?
как сбросить непонятно,перепрошить то всегда успеть можно
scliva
Что сбросить то?
часы же должны по вайфай синхронизироваться точки нет,к роутеру не подключены
ㅤ
часы же должны по вайфай синхронизироваться точки нет,к роутеру не подключены
Ну почитай документацию наверняка при старте удержать какую либо из кнопок
XD
Если с calloc он хоть иногда зажигается?
да, все так как и должно быть
ㅤ
да вот в том т ои дело,,что на али исчезли они
Ну просто удержи тупо одну или две кнопки и включай их. Да никуда они не исчезли, уверен что еще куча продавцов продают их. В конце концов напиши тому у кого покупал
ㅤ
что у меня вообще никак не укладывается в голове с учетом того что с вариантом с calloc все работает отлично
Как вариант сделай дамп буффера перед отправкой и погляди в чем различие
ㅤ
Ну сними батарейку и попробуй держать тоже какие либо из кнопок. Либо просто сними батарейку да вставь позже
ㅤ
Может он по сбросу RTC поймет что надо начать все заново
Алексей
да, все так как и должно быть
uint8_t green; green & 0xFF; //смысл этого для меня загадка Посмотри первые и последние 3 байта в массиве.
scliva
Может он по сбросу RTC поймет что надо начать все заново
не,ладно,придется шиться,в теории должна была точка доступа появиться,Но ее нету
ㅤ
не,ладно,придется шиться,в теории должна была точка доступа появиться,Но ее нету
Я более чем уверен что прошивка предусматривает режим сброса.
scliva
есть настройки непонятные мне dd df bp Ac
ㅤ
Я бы просто сдампил в лог содержимое буфера с разными вариантами
Алексей
И будет у uint8_t - 0xFF это максимальное значение. Смысла в этом нет. Хотя компилятор это должен убрать.
Алексей
у calloc первый аргумент количество элементов, второе их размер. по идее он просто должен выделить 1*_countLeds * 3, но какова реальная реализация этого, я не знаю.
XD
uint8_t green; green & 0xFF; //смысл этого для меня загадка Посмотри первые и последние 3 байта в массиве.
вроде все нормально, установил везде в 1 на синий здесь так и есть, сейчас заменю на маллок и проверю id: value
scliva
Ну почитай документацию наверняка при старте удержать какую либо из кнопок
https://www.elecbee.com/en-32975-1.2-Inch-Digital-Tube-with-Temperature-and-Time-Display-Alarm-Clocks-Module-Supports-WIFI-Network-Automatic-Time-Synchronization-5V-DC нашел,но про сброс и вайфай ничего и нет :))) как будто бы там чип просто так :) есть точно такая же модель без чипа esp :)) Часы могут синхронизироваться только с китайским сетевым временем сервера, поэтому будет отображать только текущее время в Китае.
Anton
я не могу даже её себе представить
Алексей
я ни разу не видел разницы
её и с malloc не должно быть
Anton
я с лентой мучиться не стал. обновил есп-идф до 4.4, там уже есть драйвер для ws2813b, при создании проекта выбрал "сделать из примера" и получил готовый рабочий код, который подогнал потом под себя
Алексей
и по идее там выделается через тот же malloc и обнуляется. Но просто попробовать, чтобы уж наверняка.
Anton
и по идее там выделается через тот же malloc и обнуляется. Но просто попробовать, чтобы уж наверняка.
на серьёзных осях бывают варианты, но на мк всё примитивно как мы это себе и представляем: нашли в куче свободное место, застолбили и обнулили
Anton
я видел авровский менеджер кучи -- примитевнее некуда, там даже не пытаются микрооптимизации делать
Алексей
Так AVR - это проще некуда.
Anton
Так AVR - это проще некуда.
ну я не только авровскую видел, это вот что из последнего помню
Алексей
А разве в китае не несколько часовых поясов?
Я слышал, что один. Но работают в разное время :)
Алексей
короче с маллок в буфере тоже все норм
Скорее всего баги в rmt_write_sample
XD
короче с маллок в буфере тоже все норм
Разница только визуальная , забавно однако
Anton
есп32 менеджер кучи сложнее изза того что там разные пулы памяти. что-то умеет дма, что то нет и пр
scliva
А разве в китае не несколько часовых поясов?
нет,вроде нет,но с нашим же не совпадает: ) ну неужели нету сброса:(
scliva
Можно в полночь выкл и вкл 🧠
я про сброс вайф фай%)
Anton
не знаю откуда у тебя маллок, стандартный пример из есп-идф выделяет буфер сам у себя внутри:https://github.com/espressif/esp-idf/blob/release/v4.4/examples/peripherals/rmt/led_strip/main/led_strip_main.c
XD
вот то что у меня сейчас
Вот мой вариант, здесь тот же пример но выкинул лишнее, так сказать подготовил чтобы обернуть в "матрицу" а не ленту
ㅤ
А разве в китае не несколько часовых поясов?
Нет. Стандартное пекинское время. Они хотели поделить но не поделили
Anton
// install ws2812 driver led_strip_config_t strip_config = LED_STRIP_DEFAULT_CONFIG(CONFIG_EXAMPLE_STRIP_LED_NUMBER, (led_strip_dev_t)config.channel); led_strip_t *strip = led_strip_new_rmt_ws2812(&strip_config); if (!strip) { ESP_LOGE(TAG, "install WS2812 driver failed"); } // Clear LED strip (turn off all LEDs) ESP_ERROR_CHECK(strip->clear(strip, 100));
Anton
и всё, память выделена, очищена, strip->set_pixel(strip, j, red, green, blue); значения записаны
Anton
CONFIG_EXAMPLE_STRIP_LED_NUMBER -- дебильный несколько пример конфигурации, но для примеров простительно
ok-home
Хай. У меня тут назрел вапрос, обосновнный скорее просто инетересом но если кто-то сможет пояснить буду благодарен, вообщем я делаю управление адресной лентой, нашел пример с esp-idf протестил что все работает, переписал весь код под себя зпустил и как выяснилось самый первый пиксель ленты стал всегда светить белым, начал построчно сверять свой код с кодом с примера и нашел причину, в коде с примера для буфера используется выделение памяти через calloc а я когда переписывал то сделал через malloc и соответственно когда в своем коде так же заменил на calloc все стало работать как нужно, изучил доку по этим двум функциям но так особо ничего и не понял, ну именно почему могло быть такое разное поведение.. может кто сможет обяснить
если говорим про esp idf - то в первоисточнике void* unity_calloc(size_t num, size_t size) { void* mem = unity_malloc(num * size); if (mem == NULL) return NULL; memset(mem, 0, num * size); return mem; }
ㅤ
Странная фигня получается
Просто ради интереса выведи содержимое буфера с обоими вариантами в юарт и все поймешь
ㅤ
Че гадать то
ok-home
Странная фигня получается
ну уже тогда если правите то правьте как положено uint16_t _countLeds; - вроде как это определение того чего выделяете, странно что оно вообще работает ))
scliva
Подпайвайся к пинам и прошивай
надо еще прошивку подобрать подобную,к 4 дисплеям сразу,там в родной приятные фишки ...
ㅤ
Мне кажется сброс nvram решит твою проблему
scliva
Ну сделай дамп родной прошивки.
вот кстати ни разу не делал дампы
ㅤ
это мне? но как?:)
Найти в прошивке где хранятся настройки вифи и прочее и заполнить эту хуйню нулями
ㅤ
А он подключается к твоей вифи сети?